An Indie Oldschool Role-Playing Game

Legend of Grimrock 2 released!

Legend of Grimrock 2 released!

on Oct 15, 2014 | 6 comments

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.

The new console panel at the bottom of the screen.

The new console panel at the bottom of the screen.

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

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.


  1. NLua can also be uses with pure C# version 🙂 . Of course is much slower if you compare with the Native version.
    Also NLua integrates read/write/trigger calls, events, properties, delegates e fields from C# seamlessly (you don’t need to register anything, you can simply call and NLua will match the proper call using reflection), and provide a much more robust runtime library.
    Using the native version you are sure you are using the latest version of the runtime programmed along the last 21 years (more than JS) 😉 (with all features coroutines, debug, runtime library). And even Marco admitted he is taking pieces from KopiLua to put inside MoonSharp.

    So. I think your comparison was quite unfair =)


    Vinicius Jarina

    October 18, 2014

    • Wow, I’m honored you actually noticed my site! I didn’t intend any bad “comparison” with NLua: it’s a great software and I used it with success, but found some things hard to understand at first (I am way below your or Marco’s level in terms of programming). I found Moon# so far to be easier to deal with, but that may be subjective… To understand how to deal with certain things, like returning multiple values from C# to Lua, took me a lot of searching through the NLua test files and the solution is much less intuitive to me than Moon# where I can construct the whole “package” on the C# side and return it easily. The syntax feels more natural.

      I am also glad to help a friend by testing his work in a “real” environment, which has proven quite useful so far for optimization. As for speeds, our current tests showed that initial parsing is much slower unfortunately, by the order of 2.5-3 times, but subsequent execution and calls are around 90% of NLua time with some optimization tricks, like caching userdata, so it kind of evens out.

      Georges Dimitrov

      October 18, 2014

  2. Hello there,

    thanks for you work and dedication, Georges, I am so glad to see Darkdale is still on tracks.
    Ever consider a Kickstarter ?
    Whatever, thank you, I really wish you the very best, and a huge success for this game.


    February 19, 2015

    • Hi Cernunos!

      Sorry I just discovered your comment was lost in the comment Queue, I apologize it took 3 months to get it approved.

      I am still working on it, will post a new post here soon!

      Georges Dimitrov

      June 5, 2015

  3. Hi Georges.

    It´s been a long time since your last post, would love to hear anything, about your great project.


    June 5, 2015

    • Hi axs!

      Glad to hear from you and your interest… I had a very busy winter and couldn’t continue working on DarkDale for a few months, unfortunately. But I’ve settled now back to working on it very regularly for the last month and will put up a new post soon to tell about how it is progressing.

      Georges Dimitrov

      June 5, 2015

Leave a Reply to axs Cancel reply

Your email address will not be published. Required fields are marked *