Faerghail (Remake)

Started by Krischan, June 10, 2017, 13:17:09

Previous topic - Next topic

Krischan





My current Blitzmax project beside Extrasolar Origin is a old one - I started 8 years ago with simple Blitz3D tests and now it's becoming better and better. A remake of the old Amiga RPG "Legend of Faerghail" from 1990. Well, I'm getting very familar with OpenB3D now, got my shaders running and I'm still optimizing the BSP loader. At the moment I only have a video and a few screenshots to show the progress, it's still not optimized enough to post a running demo (click images for high resolution).

The torchlight is actually a type 3 spotlight which looks much better than a type 2, all textures use normalmaps and I have a lot of alpha brush models and additional custom B3D models loaded in this level (the knights and the chandliers are plain B3D models (with a shader, too) while the piano and the table are precalculated in the BSP map with a lightmap assigned). I'm not using any dynamic lights except the player torch and a "ambient light torch" to lighten up very dark areas with a decent dark blue tone. The candles, the torches and the fireplaces are simple sprites, not optimized in a single surface mesh yet. The level is absolutely dark except where your "torch" lights it up or the lightmap exists, hard to describe but looks very realistic.

The demo currently runs at 2560x1440 with 280 FPS and has been created using Microsoft Excel ;-) for the basic 2D level structure, a highly sophisticated CSV to MAP tool I wrote myself and the detailed work / compile has been done with a Netradiant fork and Q3MAP2. I'm using 105 different shaded surfaces right now but hope to decrease this number implementing a better shader cache for the BSP meshes like I already did with the B3D models. See some statistics below the screenshots.











Excel view of the level (just basic infos and height information are set)


Output of my CSV2MAP tool (starting a the green square at the top, looking south). All Walls, Doors, Event fields, treasure chests and lights are placed automatically by just parsing the CSV file. The compiled MAP file is then imported into Netradiant, adding more brush detail, models and lights and compiled with the Q3MAP2 tool to a BSP and a lightmap. The BSP is parsed by the engine, building the level structure, adding models/Entities and applying shaders.


If you're interested how it's done here is the Blitz3D source of it (still hadn't time to convert this to BMAX), the original Excel Map and the CSV output used as input:
Download CSV2MAP.bb
Download castle1.xlsx
Download castle1.csv

Netradiant view of the level


BSP Size: 6.820.596 Bytes

Parsing BSP Entities...
1 worldspawn
249 misc_gamemodel
46 func_door
67 info_event
3 info_darkness
3 info_vortex
3 info_trap
4 info_stair
266 light
1 info_player_start
3 fireplace
9 info_candle
10 func_brush
665 Entities found.

Final Map statistics:
Total BSP Surfaces: 94
Total BSP Vertices: 136149
Total BSP Triangles: 45383
Total BSP Models: 57
Solid BSP Level Meshes: 7
Alpha BSP Level Meshes: 50
Level Shaders: 94
Ingame Models (unique): 8
Ingame Models (reused): 241 in Instances
Model Shaders (unique): 11
Model Shaders (reused): 274
Torch Sprites: 16
Candle Sprites: 257
Fireplace Sprites: 3
Parse Time: 831ms
Assemble Time: 189ms
Total Build Time: 1020ms

Update 10.06.2017: there is a *lot* of work to do and unfortunately my three week vacation ends tomorrow. First I ported the whole project to my own OpenB3D Framework as it became too large and I needed to structure it. Then I had to rewrite the whole BSP loader to reuse the Type construct loading another level and added a basic main menu functionality. But I still have a big problem with unloading textures in OpenB3D and there are some nasty memory leaks when I load/reload a level. As soon as these problems are solved and I've added at least the functionality like in my very old B3D demo I'll post a running demo.
Kind regards
Krischan

Windows 10 Pro | i7 9700K@ 3.6GHz | RTX 2080 8GB]
Metaverse | Blitzbasic Archive | My Github projects

MikeHart

That really looks awesome. Great artwork!

EdzUp

Looking really good what platforms will this be released on, taking into consideration that OSX will become 64bit on for apps and games as of the end of 2018. Vanilla BlitzMax wont cut it on there which is a shame.

dawlane


Krischan

Quote from: EdzUp on June 10, 2017, 20:03:24
Looking really good what platforms will this be released on, taking into consideration that OSX will become 64bit on for apps and games as of the end of 2018. Vanilla BlitzMax wont cut it on there which is a shame.

Platforms: currently Windows (X86) only, but could be ported to OSX and Linux as it is written Blitzmax. But for this I must take a look at NG first and if and how it works with OpenB3D. Beside that some good news, I could fill some memory leaks (hunted 90% down) and made the level loader running in the rewritten BSP parser. And I could even solve my "Multi-Lightmap-Problem" I mentioned in the bb.com thread but for the sake of using more shaders than intended (one per surface). That's not a very elegant solution but for now it is working at all and it's still fast. And added dynamic size buttons to the main menu and a spinning cartwheel loader 8)
Kind regards
Krischan

Windows 10 Pro | i7 9700K@ 3.6GHz | RTX 2080 8GB]
Metaverse | Blitzbasic Archive | My Github projects

Steve Elliott

Some lovely graphics.  Maybe add to the Gallery?
Win11 64Gb 12th Gen Intel i9 12900K 3.2Ghz Nvidia RTX 3070Ti 8Gb
Win11 16Gb 12th Gen Intel i5 12450H 2Ghz Nvidia RTX 2050 8Gb
Win11  Pro 8Gb Celeron Intel UHD Graphics 600
Win10/Linux Mint 16Gb 4th Gen Intel i5 4570 3.2GHz, Nvidia GeForce GTX 1050 2Gb
macOS 32Gb Apple M2Max
pi5 8Gb
Spectrum Next 2Mb

MikeHart

Quote from: Steve Elliott on June 11, 2017, 10:12:18
Some lovely graphics.  Maybe add to the Gallery?


You can't upload to the gallery atm. I wrote a PM to Qube about it.

Steve Elliott

Oh ok, thanks Mike.  I see you've got something to put in the gallery too  ;)
Win11 64Gb 12th Gen Intel i9 12900K 3.2Ghz Nvidia RTX 3070Ti 8Gb
Win11 16Gb 12th Gen Intel i5 12450H 2Ghz Nvidia RTX 2050 8Gb
Win11  Pro 8Gb Celeron Intel UHD Graphics 600
Win10/Linux Mint 16Gb 4th Gen Intel i5 4570 3.2GHz, Nvidia GeForce GTX 1050 2Gb
macOS 32Gb Apple M2Max
pi5 8Gb
Spectrum Next 2Mb


Krischan

Bump. There is now a techdemo download available:
http://www.christianhart.de/bmax/lof/LOFdemo.zip

This is my old framework, in the meantime I've ported it to a more sophisticated and object-oriented framework still using BMAX+OpenB3D and I'm working hard on the engine and the data. Don't ask for a release date, not in this decade :D Attached are some screenshots of the new version.
Kind regards
Krischan

Windows 10 Pro | i7 9700K@ 3.6GHz | RTX 2080 8GB]
Metaverse | Blitzbasic Archive | My Github projects

Yue

Hi I tried the demo, but the character goes very fast. You can hear the footsteps but in a moment you cross a room.

Krischan

If the FPS in the upper left text info is over 60 try to set your Vsync flag in your graphic card settings. The demo should run at 60FPS by default (can be switched with the V key to unlimited) but this old framework code is not very smart, the new version uses a multiplicator instead to handle it. Sorry for that.
Kind regards
Krischan

Windows 10 Pro | i7 9700K@ 3.6GHz | RTX 2080 8GB]
Metaverse | Blitzbasic Archive | My Github projects

therevills

#12
Downloading now! :)

Edit: I agree with Yue that the player does move quickly even when locked to 60FPS. It plays better when in old skool mode. Would love to wander about in the castle in VR!

iWasAdam

the map 'ball' is a brilliant move. everything looks really crisp and attractive :)

Krischan

Thanks. The crystal sphere existed in the original game, too - but only as a icon and a standard blocky 2D map, so I decided to create a variant how it would look like in 3D. Together with the hand model, a light and some blending it really looks like a magic glass ball with a minimap, and I think the distortion looks ok, too. It is only a sphere mesh with two pixel-perfect aligned 2D sprites for the glow and the glassy look. The map is a grabbed top view 2nd camera applied as a texture to the sphere. It moves smoothly with the player and the torchlight affects the sphere, too.

In the new framework the move speed is adjustable, currently I need to walk very fast through the levels to reach destinations of interest very quickly. This is only one half-finished map of about 29 in total! Lots of work. :o
Kind regards
Krischan

Windows 10 Pro | i7 9700K@ 3.6GHz | RTX 2080 8GB]
Metaverse | Blitzbasic Archive | My Github projects