19 August, 2011

Alpha 11

Just a minor update. Apparently, the versions up to now crash or just don't work at all when fed invalid XML, and generally behave badly when the XML does not exactly contain what is expected. If someone wants to write something by hand without using the editor (and since the editor does not support every single option perfectly that can make sense), this can easily happen. While the Alpha-10 update will not magically get broken content to work, it will at least recover gracefully from many problems, and log them in the Debug view.

In addition, there is new feature, which was explicitly requested. It is now possible to have conditions in texts (but only in reward texts, not in titles or anything else), and to refer to other text ids. You can now also declare a naked text-node with an id, and then refer to it from anywhere else by its id. Note that the id must always start with a #.

[Determination<13|I'm afraid!]
[Reflexes > 99|incredible, not]
[Luciditiy = 1|Whuuuut?]
[Trauma@Crippled|Oh shit I am crippled]
[Gender¬Male|I ain't a man]

They can be a bit fickle when spaces are used, so I suggest not using any at all in the conditions (except for those that cannot be avoided, when a stat-name has a space in it, for example). It is possibly to do something like [a>3|[b>3|Hello]] for very complex choices, although generally speaking, if you catch yourself writing more than a handful of them, you might want to split your Action into more than one and differentiate by Requirement instead.

There is no post for alpha 10, because I've written two releases before I had this post finished.

13 comments:

  1. CGuy4chan@hotmail.com19 August, 2011 23:02

    fyi: requirements with tags are always passing.

    that is tag="female" and tag="male" both pass.

    ReplyDelete
  2. <requirements>
    <stat tag="Brave">Determination</stat>
    </requirements>

    Works perfectly well for me. Note that you must have a stat of at least 1 exp, since stats with level:0 and exp:0 cannot have tags, because they do not exist.

    ReplyDelete
  3. Is there anyway to make a simple integer that is tested in the requirements tag? Something that can be negative, zero and positive. That would also be possible to reward values to. Not through experience.

    In items you have an amount tag, but that adds and subtracts from the item. What if I just want it to equal something?

    ReplyDelete
  4. Items are just integers, and they can be negative too. But it is true, you cannot set them to a fixed value, you can only add or subtract.

    Do you really need that? I find it hard to imagine that there is a useful case for that functionality. If you can make one, I'll rethink it.

    ReplyDelete
  5. Below I have a text redirection set up to describe a character's armor. When the player buys an armor from a shop, he is free to purchase any one armor he feels he needs. He can buy lv2 armor right away, or he can save his money for the lv3 armor when he has the money.

    Armor lvs should be independent from the players last set of armor. Using only addition I would have to restrict the player to buying each armor sequentially. This is not what I want. The player should be able to buy armor out of order if he wants. And once he has purchased the armor he should have the freedom to choose which armor he wears. So going fr 1 to 4 and back to 2, becomes complicated using exp of stats or the amount of items.

    I'm sorry if I'm pushing but I don't know how to set stats any other way, except exp. Its a wonderful mechanic for rpgs. Plz show me a way to assign levels in stats without using exp, that can go both forward(1-4) and backward(3-2). I'm frustrating myself over inflexibility.

    #armortxt -> [armorLv=1|#armorLv1txt] -> really bad armor
    [armorLv=2|#armorLv2txt] -> decent armor
    [armorLv=3|#armorLv3txt] -> pretty good armor
    [armorLv=4|#armorLv4txt] -> [armorLv@fancy|wonderful armor]
    [armorLv@power|powerful armor]

    ReplyDelete
  6. I see. You could do it like this: Write four actions, which each upgrade your armor, instead of replace it. That way, you can do it easily with exp. You cannot skip a level, that is true. But do you really need to?

    Your version's costs: 100, 200, 300, 400.
    My version's cost: 100, +100, +100, +100.

    The cost is identical on all levels. It basically just includes the resale value. "Do I save my money or do I buy the mediocre item now?" is rarely an interesting choice, because nearly every game allows you to grind out more money anyway.

    Second version, do it with items instead. Allow the player to buy three items (the three armor sets), and then write an action to take off a set of armor (Requirement: Armor Level > 0, result: armor level 0 (just subtract 100'000 exp, that will always end up with 0)), and write one action to put on one set of armor for each armor (Requirement: Armor Level = 0, reward: Armor Level +x). Yes, doing something really complex like multiple pieces of layered armor will be difficult (you would need to write one "take off" and one "put on" action for each, and then use clever locking to prevent the wrong items from stacking). But then again, this was not meant to be another Diablo or Neverwinter Nights where you spend all your time in repetitive combats.

    ReplyDelete
  7. How about this for an interesting choice. Do I stay human or become a Cyborg? And how much am I a Cyborg? The player can decide on full enhancements right then, or can save his humanity, his choice.

    #cybrogvendtxt -> [cyborLv=1|#cybrogvendLv1txt] -> You buy your goods from the vending machince, how droll.
    [cyborLv=2|#cybrogvendLv2txt] -> You start to wonder where your money goes.
    [cyborLv=3|#cybrogvendLv3txt] -> You secertly adrime your friend-machines tireless efforts of service .
    [cyborLv=4|#cybrogvendLv4txt] -> The vending friend-machince gives you extra credit. It wants to see you later.

    Yes I need to skip levels. I need a way to assign variables with values. You have to give me a way to do this. Either through stats, or items, or a whole different variable tag. And have them be testable.

    Giving people a space to declare their own variables. And then giving them the ability to increase/decrease/assign as they like will open up modding opportunities for everybody. More people will want to use this.

    For now tell me if this is what you are suggesting:
    1) strip all exp form the cyborLv stat
    2) increase cyborLv stat exp by right amount
    for each operation?

    If so can I do that in one action
    stat exp="-100000"\>cyborLv<\ stat
    stat exp="400"\>cyborLv<\ stat

    ReplyDelete
  8. Even in your example, you could easily get by with 4 actions, describing the four transitions: 0->1, 1->2, 2->3, 3->4. It's exactly as much work as writing four actions doing 0->1, 0->2, 0->3, 0->4 directly, and as a bonus, you can write the text in a way that explicitly references the one before, without confusing the player, but instead showcasing the change (rather than hoping he can intuit what would have happened at the levels he skipped). If you get yourself cyborged up, it only makes sense that you say "Okay, I kinda need a new eye after the acid-incident." and then after you've used it for a while, you go "This bionic eye is fantastic, can I get a few more parts like that?" and have the change happen gradually.

    I am still torn. I find it weird that I have an engine which does not allow variable assignments, but on the other hand, I have not yet seen a single convincing example where this functionality was needed.

    It's written (because that took all of five minutes anyway) now, but I'm not sure I like it.

    ReplyDelete
  9. Think about it like this. Multiple ways of doing the exact same thing is not a bad thing. In fact giving people options is the best thing you can do. Its why we have x++ & x = x+1. Both have the exact some functionality. People use both because they love having the option. To be terse, or to be explicit.

    You want people to use the tools your create to forward their ideas. You're incredible keeping with this project. You're pushing it beyond your first ideas of how it would/should work. Your making it much more flexible and inviting for other modders.

    Now tell me what you've made, and how I use it. Oh yeah, make what you did applicable for those awesome brackets >> [] <<

    capata: thingons, what the hell are thingons?

    ReplyDelete
  10. More options are not necessarily a good thing. If there are two options, of which both work equally fine, but one of them is very unsafe and can easily break a lot, then it is highly questionable whether that option should exist in the first place. It's the classic "C++ is a chainsaw"-issue.

    That said, it works as follows:
    In a reward, you can use this:
    <stat set="5">Determination</stat>
    <item set="5">Gold Bars</item>

    The editor is currently missing fields for this.

    I don't see how that could be used for the [] feature, which already supports [a=5|...]

    I also want to point you to this:
    <stat level="5">Determination</stat>
    It will give out exactly the amount of exp needed to go from level 4 to 5, but decrease it by 20% for each level above 5. Which means using this will put a soft cap on how useful something is for higher leveled characters. You should pretty much use this on every challenge failure at its test difficulty, to allow the player to keep up.

    ReplyDelete
  11. As long as I can set levels willy nilly like a lumberjack accountant. I'm happy.

    I use the [] as they are happily.

    And the last point is a good idea to keep moving the player along to harder challenges.

    ReplyDelete
  12. By the above above comment, to be perfectly clear. I was wondering if [] will be use with items.

    ReplyDelete
  13. Right now you cannot. It's a matter of syntax, I would have to do it like this then:

    [stat:Reflexes > 5|Ninja]
    [item:Gold Coins = 10|Money]

    It's coming, probably.

    ReplyDelete