Sunday, July 17, 2011

Thinking about JADE 0.1.3

From now on I would like to change the development mode for JADE (barring problems like the one for JADE 0.1.1).

The major change according to my plans will be that I now want to work a lot more on the content of the game (and not just funky UI things, technical features and all that). From now on the actual game shall be the focus and I have a couple (not that surprising) plans for the next JADE versions:

  • First of all a lot more monsters must be added to remove the current boredom due to lack of beings. Since many special abilities are not yet implemented I will start with combat oriented beings and from there we grow.
  • Next the skill system needs to be activated as it is not really workable so far.
  • Then quite a few niggles with the actual rules need to be fixed - nothing major there but many tiny TODOs in the code ;-)
  • Then we have to have more items, items, items.
  • One major feature in the next version(s) will be story arcs that determine how the game begins. So far I have plans for but one beginning story arc but I'm pretty sure that you will like it.
  • And then there some nice extras like magma flows with floating isles I would like to try out.
  • And don't talk about workable country features.
So in other words: Content should be king from now on. Let's see how it works out for the next release.


  1. Sounds very exciting, Mr Biskup!
    I'll be looking forward to it! =)


  2. Just had a go with 0.1.2
    Looking good.
    Existing monsters seem a bit vain, they keep "noticing" themselves.

  3. Still noticing themselves? F***... must be a regression since I yesterday night fiddled with the senses implementations...

  4. We also need gold, to buy our items!

  5. Next version will/should have gold ;-)

  6. Just wanted to drop by and say how excited I am about Your continued work, have been playing ADOM since as long as I can remember, that game has been for me a standing stone of gaming greatness. The vast majority of multi-million AAA titles entertain for 6 hours and I'm done, ADOM still entertains after a decade ! JADE in all its promised glory will be a true work of art, a legacy to stand the test of time.

    You have more fans than meets the eye, greetings from Latvia.

  7. Do you use some scripting language to add new monsters? I can't believe you hardcode all of them...

  8. It's the creators style to hardcode everything.

    However it would be nice to see a raw like script support for things like creatures, items and quest lines. That way even a bare bones JADE could still support diverse community mods to fill the void while we all wait for official content to be added.

  9. Raw scripts IMHO are not flexible enough for truly interesting things though they might be useful for the trivial stuff. I contemplated adding some scripting support for that but currently still am in a state where most new items expose some cool new generic features and thus would make a truly worthwhile scripting language about as complex as hardcoding. For me there is not much of a difference ;-)

  10. Isnt it an overkill to have a separate class for every monster, instead of abusing handlers? What type of functionality is within the specific monster class, which cannot be added within a handler or a brain? From what I remember You have a relatively robust events and handlers system implemented. I tried a similar approach in one of my vapourware roguelikes and it was great, it covered a seemingly endless area of possibilities.
    I know it is seems great to be able just to add new classes to the classpath and *zap* a new monster appears. But, say, You want to add a number of typical basher monsters without even any skills like wolf, jackal, etc. How do You handle this? New class for every monster type? Or You dont add such monsters (or only a limited number of those).

  11. hugeowl:
    Why would you think that a separate class for every monster is overkill? In languages like Java or C#, Biskup is right, even in general. Assuming a well-designed architecture, there isn't much difference between scripting and "hard-coding".

  12. Because You have little to no benefit in doing this and it is later very difficult to manage large numbers of such "data". It is called code bloat - You write tons of code which doesn't give You any extra functionality. Lets say You want to have a goblin shaman, who is a goblin with "summon small animal" spell, and a goblin wizard - a goblin with "magic missile" spell. It is obvious that having separate classes for them doesn't give You any benefit plus it complicates the design. It is common for newbie programmers to overuse OOP, I wonder how TB feels about it. Of course it is not an accusation, it is his game and his design decision, Im just curious about it.

  13. Hugeowl:
    First of all, you don't give any reason why scripting would avoid the problems you perceive in adding classes for each monster. That data must go somewhere; why would it be "code bloat" if the only time you ever even notice its existence is when you are concerned with it.

    You also go on to demonstrate your ignorance by saying that "It is obvious that having separate classes for them doesn't give You any benefit plus it complicates the design."

    If you think that's obvious, then there's no arguing with you.

    Have a nice life.

  14. @Hugeowl:
    Currently I see several advantages in the class based approach, the most important one being that all refactoring operations can be applied to the classes. JADE is still in an early stage and there already have been a couple of very interesting feature suggestions that I never thought about. Implementing these things definitely will mean refactoring and I am already now refactoring pretty mercilessly whenever I find code I can improve in order to reduce code ageing as much as possible. With scripting languages there would be no refactoring support at all and I am doubtful that the abstraction layer provided by the scripting interface would be enough to compensate for the flexbility I have now.

    But I agree in one respect: handler patterns are a very good and viable approach for monsters that share only a limited set of common attributes (like e.g. "normal animals" as a category or "non-magical humanoids", etc.).

    In the end it probably all comes down to "I do not want to limit myself too soon in the things I might be able to do at some point because I can't yet imagine all the fantastic things that might be good to do". And I have learned from ADOM that the design limits you introduce early on cost you so much more in the end ;-)

    Nonetheless I am planning to run a kind of divided strategy - there will be a kind of handler pattern for common categories of beings, maybe even scripting them. I just have not yet decided on the details and right now also am trying to add "interesting" beings. Interesting in the sense that they help to complete features not yet in the game.

    Just to name an example: JADE has a very intricate and complex damage reduction and immunity system that already is in place. Skeletons will be the first monsters with which I am going to test it as they will be almost immune to piercing weapons and well protected from slashing weapons. But that's something new and as it is so new it doesn't fit well into a scripting engine as I am still lacking the experience about the best way to implement nifty features in JADE. Right now there are just some basic design ideas I am experimenting with and once all that is in place and feels stable enough it probably will be a breeze to add some kind of scripting support.

    Hope this clears up my point a bit.

    (BTW, while I think that OOP can be overused my experience proves that many people don't use OOP with enough consequence due to fear of overuse - I recommend examining the sources of the Spring framework as an example of a highly complicated and powerful framework with an immense amount of highly involved abstractions that nonetheless has one of the finest architectural designs I ever had the please to see - true beauty).

  15. P.S.: I especially mean the Spring Core framework... and I meant "...ever had the pleasure to see...". Oh well...

  16. thanks for a detailed answer. I am not a hater, like Your fanboys seem to think, I am just a very critical person and have some experience in progamming, that's all. Not overusing OOP is a sort of common knowledge, but it might be an overexagerated myth, like You say.

    My first thought about Your skeleton example is that You could obviously use handlers in this case, but on the other hand You are right that polymorphism would probably be a cleaner solution.

    I am very inspired by You releasing JADE even though it is quite limited and buggy. I want to try a similiar approach using reflection any way, especially that I have never used any heavy reflection so I guess learning some new JAVA areas might reinforce my interest in RL development. And all in all it seems a blast, even if I wont use it such extent as You.

  17. Suggestion regarding weapon marks and cross-training.

    Rather than the current cross-training system, simply have marks accrue in multiple weapon categories.

    So, for example, instead of having Axes (2H) provide virtual-skill at 1/2 level in Blunt Weapons, 1H Axes and 2H Swords, you could have each-mark-gained in Axes (2H) provide a 50% chance of a mark in each of those weapon categories as well. Or something more complicated, like a 1 - (2ndary skill level * 2)/(primary skill level) chance of gaining a mark.

    I think this would actually do more to encourage weapon switching, since, unless I'm mistaken, under the current system, you need to "catch up" in the alternative weapon category before you can get a higher bonus, which is what you really care about.

  18. @Sam I think it's intentional that you have to 'catch up'. Personally I think the current system is very good indeed. Your virtual weapon skills mean that at later levels you can switch weapons and still fight competently but it still offers big rewards for specialisation in a single weapon class which I think is very important. If you make it too easy to switch weapons then why have weapon class skills at all?

    I'm not too concerned about the limited number of monsters in the game at the moment. So long as they get tougher the deeper you go that's good enough for me for now.

    What I most want in the next version is some means of removing or detecting cursed items (if there is one already, I haven't found it). I'm finding that I quickly saturate all my equipment slots with cursed items. Since all there really is to do at the moment is dive deeper and accrue better stuff, I'm finding once I run out of non-cursed slots I get bored quickly.

    It would also be good to have at least 1 other means of dealing with enemies. At the moment the only options are brawl or run which isn't too satisfying. I'm assuming magic/music/scrolls/potions/deities etc are all a fair way off but perhaps ranged weapons would be an easier thing to implement to broaden your gameplay choices.

    I know you've heard this a million times but it's great to finally be playing JADE. The improvement in gameplay between 1.0 and 1.2 is really encouraging too.

    Donation coming on payday :)

  19. @obscenelygreen: I will take a little more time with 0.1.3 in order to add many basic fun factors. I want to have at least 20 new monsters before I release it, potions should be in the game (with some basic dipping and a limited selection), probably altars (still without praying but nonetheless) and there is a nice area concept coming up similar (but better) to the special rooms in JADE: SO hopefully 0.1.3 will be a lot more fun to play.

  20. @obscenelygreen: consider this, in the current system, yes, you can switch at mid-game (when you have 50% of the marks you will ever get) from a 2H-Axe to a 2H-Sword with a reduced penalty. But that penalty is going to be fixed for the balance of the game, which strikes me as wrong. You should improve with your 2H-Sword while you fight with it, rather than depending on your "ghost skill" of fighting with a 2H-Axe. Among other things, this is more-in-line with how people learn to do things in the real world; although yes I know in a fantasy setting that is never a *requirement*.

    If you want to make the reward for specialization stronger, just reduce the number of cross-training marks you hand out.

    But, if anything, I think the current system *over-rewards* picking up a single weapon type and just stabbing everything with it. It would be nice if Jade encouraged you to:
    - Switch to a Hammer or Axe to pierce the armor of heavily-fortified opposition,
    - Switch to a Sword when surrounded or outnumbered by lightly-armored foes,
    - Switch to 1H-weapons (with shield) when confronted by enemy archery,
    - Switch to a spear against cavalry or foes with reach advantage,
    etc. etc.

    This would not *actually* be that much work to implement, I say as the person who wouldn't have to do it. But if, as in Adom, you get huge bonuses for being at one with the spear for the entire game, this is never going to work out - you're going to end up picking a weapon and sticking with it.

    I'm less concerned with the "Ooh, this weapon is Adamantium!" problem than with painting the game into a corner with regards to making tactically significant differences among the weapons.

  21. water and altars (without praying at this point) would be good.
    I do like the idea of targets being weapon susceptible. So Trolls get hurt most by hammers and maces (bludgeoned) and very little by whips (slash/tear). Dragons might be more susceptible to piercing (arrows, sharp swords). Humanoids get stuffed by everything. Small fast creatures are more susceptible to flails (flaying across wider area than sword).
    Thomas I assume you don't want very condition specific bugs here do you ?

    All in all just looking better and better and can't wait for upgrades.

  22. Thinking about it, the piercing/slashing/blunt damage is basically geometry -- piercing hits with 0-dimensional point, slashing with 1D line and blunt with 2D area. (Would that mean that 4D creatures would have 1 more type?)

    So, logically, piercing weapons care most about where exactly they hit, meaning they should probably get better bonuses at high weapon skills. It should be possible to gouge out an eye with them, limiting opponent's perception and even blinding him with a second eye hit (first for cyclopses). Slashing weapons would get less precision bonuses and blunt even less -- on the other hand, they would be stronger at lower weapon skill: they are easier to use off the bat, but harder to improve significantly.

    Also, I wanted ask about weapons with more than one damage type. You can have, for example, a weapon whose head has a pick on one end and an axe-blade or hammer on the other. Real-life halberds often worked like that. The different sides could have not only different damage type, but even different modifiers. I'd suggest that at low weapon skill, the actual side used is selected at random (you're not skilled enough to choose). At higher level, you can set preferences how to use the weapon (with other ways of using it acessible from menu for one-time strikes). And at even higher level, the game will automatically pick the side that is better against the given opponent.

    Other hybrid weapons like that are swords with sharp end (used for slashing or stabbing) or kusarigama (can be used as a sickle or flail).

  23. As for monsters, I was thinking about griffins and their ilk -- since all birds and mammals have the same basic structure, it should be theoretically possible to have "individualized" griffins with various combinations, like:

    Parrot/cat combination useful for pets
    Carrion-eating vulture/hyena combo (carrion eating would mean that they get more satiation from rotten food)
    Intelligent griffins using humans or humanoids as their hindquarters
    Water-based penguin/dolphin griffins

    And that's just bird/mammal, other possibilities would include using bats or pterosaurs as the front part :)

  24. Will there be in the future support of languages in JADE except for English? The Russian interests.

  25. As a professional translator, I see major problems with that, Sorcessers. Russian especially comes with the problem of Cyrilic alphabet, but even without it, the syntax is different, you have inflexion with many different forms for nouns and verbs where English generally uses only a handful.

    "a mushroom", "you pick up a mushroom" and "you learn something about a mushroom" might all require different forms. The "cursed/uncursed/blessed" strings would have to differ based on the gender and case of the noun, etc.

    Plus, the translator would probably need to have the source code. Some translations would require to edit the code to change word order, for example.

  26. @Sorcessers: There are no plans to support languages other than English, sorry. The complexity involved is a lot more than I would want to have in the game. Already now it's exceptionally difficult to build correct sentences in English due to the fact that all sentences are constructured from a generalized view making no difference between the PC (first person) and other beings (third person). Even in a rather trivial language like English this creates a number of problems and having to cope with different grammaers probably would transform the code into a complete mess.

  27. Thomas, I am a long-time American player of ADOM - I started many moons ago when I was very young and you were still working on the game.

    I was very sad to find it out of development, and many promises of JADE. Year after year never seeing JADE made me sad, but on a whim I decided to come back to find that you have released it with already 3 updates!

    I just wanted to say thank you, you have done a wonderful job of making one of (if not THE) best Roguelike game in existence. I am looking forward to seeing what you come up with for JADE. Great job man!