Monday, October 3, 2011

Introducing a whole new dimension of interaction...

Sometimes in programming there are very special moments. I just experienced one such moment. While working on the new construction system for JADE I suddenly noticed that all the ground work for complex interactions already exists in JADE (and I always thought I would need to implement that at some point). In the old (currently sadly down) blog I explained the function of so-called awarenesses.

Awarenesses in JADE are an abstraction for a kind of event/interception mechanism. If you e.g. wear a ring of defense and the ring is 'DVModifierAware' it can provide you with an extra DV bonus while worn. There exist dozens such awareness to modify and intercept all kinds of places in the game.

For the new construction system I introduced things like 'ProcessingAware' (for the use case that you try to process something in order to e.g. transform a rock into a couple of stone blocks or a 'fire opal' into 'mana powder'). Then I added code to allow to select such aware things in your vicinity (either your direct environment or your equipment), choose one from it and execute the special function on it.

And then it dawned on me that the existing awarenesses actually are the perfect abstraction for any kind of interaction with the game world. Here are a few examples:

  • When just implementing the new pick axe item type for the next release I noticed that things in the environment (especially walls) should be 'BurrowingAware' so that the pick axe wielder upon usage can choose where he wants to burrow.
  • There soon will be a 'KickAware' which will allow you to kick with more precision (e.g. you can select a door, a stack of items or a single item from that stack if they are kickable).
  • There is a new 'PowerTriggerAware'. I hope to post a video about that soon. Basically it allows you to active such aware things by triggering a power (mana) blast. Which means that you could trace a connected series of tiles with 'mana powder', activate the very first bit of mana powder by 'imbuing it with power' (the new skill mentioned here) and choosing a set number of power points to activate it (some of them being used to delay activating, others being used to increase the activation power). The mana powder then after the given delay will activate and again send power trigger events to its immediate vicinity which again activate other 'power trigger aware' things - like e.g. in turn a fire opal which might generate a lava blast. Which basically allows you to build highly elaborate and interactive traps. Which you also might encounter in the dungeon.
Ok, I'll stop babbling as I am not sure if this is understandable to anyone who is not a programmer (or even to programmers) but I am really excited right now as this new technical feature will make JADE so much more intricate and detailed by allowing a vast number of new combination tricks and actions.

So in summary: JADE will allow you to pull more tricks out of the hat than any other roguelike game (or any other game) I have ever seen (which doesn't need to mean much as I'm not much into playing other games these days) - at least for JADE this is a very major step.

Naturally not all that detail will be right away available in the next release since adding content takes time but there will be some more content and I now have the infrastructure to add a lot more of that stuff in very little time. Which means that JADE will be able to evolve even faster in the near future into new previously undreamed of directions.

Stay tuned!


  1. "JADE will allow you to pull more tricks out of the hat than any other roguelike game (or any other game) I have ever seen" -- beat Dwarf Fortress and I'll eat my hat :>

  2. dwarf fortress is probably going to be in development for the next 20 years, but im hopeful jade wont take as long

  3. Sounds really exciting!

    It sounds like you can also use that to implement flammability and conductivity, so that a fire bolt hitting an elven wooden house will set the whole house aflame, and a lightning bolt will propagate underwater or through metal parts of the dungeon (metal veins?)

  4. @Al-Khwarizmi: Yeah, that could work actually. I have taken a note for the time when spells get added :-)

  5. Admittedly, being a non-programmer, the exact significance of this post is lost on me. But what it sounds like is that your game engine was strong enough that implementing some things was significantly easier than you thought. Which is good in my book!

    I do love the way how items have multiple uses - how stones can be thrown or turned/used as materials, a log can be used to build a bridge or block an anthill, and gems give you the choice of selling them for a good amount of cash or using in construction. It's good that way.

  6. I love the idea of the crafting, and all the new modifiers for awareness.

    However, I have a slightly different question to ask you; what happened to releasing as often as you could? The first few releases were so close together that it feels more like you put out a demo, than are releasing regular iterations of the game. Especially with so many dozens of new features going in.

  7. @RonarsCorruption: We will get back to "release early, release often" with 0.2.0. I don't want to stress folks patience with endless alpha releases. JADE 0.2.0 (the next release) will be the first real "game" version of JADE (with all the well-known races, four professions, more than a hundred new items, dozens of new monsters and a chance to "win" the game).

    From that point on I will switch back to faster, small releases. I just felt that too many test release eventually will start to bore people...

    JADE 0.2.0 already will be a game and then it's a lot more fun to release new versions as you out there won't just be able to test it but really play it. It's a bit like "JADE 0.1.0 being necessary to finally be out". JADE 0.2.0 (with the longer pause) is necessary to finally be a game :-) Hope you understand!

  8. My programming skills a little rusty,but it does look like component driven or/and data based game engine, right ?
    Just asking as somebody who still needs bend his head around object oriented programming, and sees some vocal enthusiasts of the data based architecture. :)

    A question i got reading the last post about crafting and the discussions following it. Do you plan to put an overaching plot/mechanics which puts time constrains on the player (like corruption) in JADE ?

  9. I totally understand, I was just worried we'd be waiting years again before it came out. ;)