Legend of Grimrock 2 released!
Big news today in the dungeon crawler world, as the follow up to Legend of Grimrock hits the numeric shelves… News from development have been very encouraging and I cannot wait to play the game, as should anyone into the genre! Obviously, DarkDale is far from ready, so while you wait for our game to be developed, you should join in the Grimrock fest.
As for DarkDale, I haven’t posted in a while as life has been busy and I couldn’t devote as much time as I wish to the project these last 2 months. The game is progressing at a good pace however and many many details are fixed as it moves along. Here’s what is new since June:
New GUI framework
Since August, Unity has released a beta of its 4.6 version, which finally brings developers the long-due new GUI system. The new framework is so much better than the previous solutions, both in terms of ease of use and performance, that making the switch was an obvious decision, as the shipping date for the game is still far away. While redoing the GUI, I’m refactoring the UI systems of the game, basically rewriting them from scratch, in order to make them more performant and adaptable/extendable. Before, making even the smallest change to the UI, due to a change in design or after playtesting, was long and complicated, which is obviously not a good thing for a department which will still have many iterations until release. The GUI rewrite is still in process, but I hope to finish that work soon.
Along the way, there were some changes to the layout, the major one being the addition of a permanent console at the bottom of the screen. Although this reduces the viewport area a bit, compared to Legend of Grimrock which is full screen, the additional reliance of the game on text to convey mood, gameplay info about combat or other encounters, and pc/npc dialogue, made it the best solution. It also guarantees a widescreen ratio for the game view, which will make it easier to adapt the game to 4:3 resolutions. You can see the new layout in the window below.
Human enemies and combat
Is that a bandit in the screenshot above? Yes! There’s now human characters you can interact and fight with. The first quest, which is already all written out, involves finding out a bandit hideout in these sewers… Along the way, there was progress in items creation, for example, the bandit is wearing a suit of leather armor which is also an object the party can use if they find it.
New Lua framework
A friend from the Legend of Grimrock community, Marco Mastropaolo, has just written a new Lua interpreter in C#, called Moon#, and I have converted all the Lua bridging code of DarkDale to use this instead of NLua. Why? MoonSharp provides a much cleaner syntax compared with NLua, and while the initial loading of scripts is slightly slower, it gives better performance on execution. More importantly, MoonSharp .dll library can be bundled inside the Unity build, which allows it to be a true multi-platform solution, contrary to NLua which required individual builds of both NLua and the Lua 5.2 libraries to target Windows, OS X or Linux. Not to mention that knowing the developer means direct support, something which would have saved me days of work trying to incorporate NLua within Unity (while Moon# is specifically made to target the Unity platform and integrates like a breeze). Want to know more? Check out the homepage at moonsharp.org.
Graphics performance optimization
DarkDale had, until last week, a performance problem due to it’s design. The main issue is that as levels are generated at runtime in a modular fashion, the result is a very large number of small individual meshes, one for each floor tile, pillar, wall, window… Even if the geometry is fairly simple with a low vertex and triangles count, each one has to be sent to the graphics card (GPU) individually, resulting in what is called a “draw call”. Sending over 30-40 thousand individual objects, as was the case in the exterior city scenes, meant poor performance. After trying different techniques, such as geometry occlusion culling (which didn’t work in large open areas because it had to be dynamic and calculations were too complex in real time to be really worth it), I finally wrote a script which manages to combine static decoration elements together in large single meshes, when the levels are generated. Performance boost is terrific, passing in the worst areas from 9 FPS to about 35 FPS on my system (GTM750 2MB) on maximum settings. This means no problem with open areas, which the game is sure to feature a lot of!
So… back to development between two Grimrock 2 play sessions, and more news soon as the game progresses further on.