We are now ramping up development of the yet unannounced “new Grimrock project” and we thought we could share some tidbits of development goodness to you. This week I’m going to talk a little about the changes under the hood of the engine.

Up to now mostly everything in the dungeon has been scriptable. This means that we (and modders) can spawn and destroy alcoves, pressure plates, monsters, items and so on at will. This has proven to be tremendously useful. But one thing has been lacking: the dungeon walls themselves have been living outside the realm of scripting. In fact, for performance reasons they were originally implemented as a special case making them completely static. So, for example, spawning an alcove on top of a wall results in the alcove overlapping with the wall since the wall and alcove share the same space.

We thought about various ways to workaround this problem, but quickly we realised that fixing this problem once and for all means that we should have access to the walls from script and being able to dynamically destroy them. And this is exactly what I have been working on this week. Now everything, including the walls, floors, ceilings and pillars are fully scriptable entities. It is now possible to retrieve the wall entity from the dungeon and call methods such as “destroy” on it. In fact, spawning an alcove now takes care of destroying the wall automatically, so we (or modders) don’t even need to bother with deleting it using script. Likewise, spawning a wall on top of an alcove destroys the alcove automatically. This works for pressure plates and everything else that should replace the existing object automatically. (In modding terms: this works because the alcove and wall entities have the “replacesWall” property set and alcoves and walls have both wall placement.)

We have also added all walls, floors and ceilings to the editor as placeable entities. This way it is very easy to mix and match different wallsets. Another improvement is the addition of onInit hooks to all entities. The hook is called when the map has been loaded and it allows customizing the dungeon geometry easily. For example, we wanted to have huge chasms that span multiple squares with custom objects that are placed at the boundary of the chasm. Placing the objects manually by hand is tedious work so we added a small piece of script that automatically adds them.

What this means in practice? Simply put dungeons can now be much more dynamic and scripting possibilities have been much improved.

  9 Responses to “Everything is scriptable”

  1. I wonder how that will be apparent in the new dungeons..

  2. Great! I can already imagine some particularly devious uses for dungeon geometry that changes in real-time :) . Not simply teleporting around to different parts of the dungeon but the dungeon itself changing, sort of being alive. Wicked ;) Good stuff! Hopefully people will make use of this feature.

  3. It would be nice to have and spacial script to allow video clips or cut scenes like intro and finale in the middle of the game.

    For example if you open some door or press some button or pressure plate or pass a square to be able to see some cut scene or cinematic or video.

  4. I had the same idea too. Rare videos inside the game it would be great! Maybe and some dialogues..

  5. So any chance of seeing Grimrock on Steam for Linux any time soon?

  6. That is indeed very interesting :D

    Only one thing I am concern about….. When are the bugs on the Linux version going to be fixed?
    1) The Dungeon Editor crashes when you load your own custom map
    2) The interactive view (holding down the right click)… it does not work property.

    Bye and please let me know because I would like to create my own Dungeon :)

  7. You need to obtain the correct providers with regard to vibram five fingers.

  8. Thansk admin sohbet good text

  9. Sounds great just wondering when this was all going to happen, am particularly keen on the replacesWall feature?

   
© 2013 Almost Human Ltd. Suffusion theme by Sayontan Sinha