Customization of gamedata files

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • tangar
    Veteran
    • Mar 2015
    • 1004

    #46
    lol t4nk please could you leave me alone and do not send insults in my PM Thank you.

    some 'if' conditions for you:

    if you don't have arguments - you start insults.. it won't make you right, dude.

    if you have nothing to say - better to be silent, then you could look like a smart person (tm)
    https://tangaria.com - Angband multiplayer variant
    tangaria.com/variants - Angband variants table
    tangar.info - my website ⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽
    youtube.com/GameGlaz — streams in English ⍽ youtube.com/StreamGuild — streams in Russian

    Comment

    • t4nk
      Swordsman
      • May 2016
      • 336

      #47
      Originally posted by tangar
      lol t4nk please could you leave me alone and do not send insults in my PM Thank you.
      It was a PM for a reason. You can also reply using a PM.

      some 'if' conditions for you:

      if you don't have arguments - you start insults.. it won't make you right, dude.

      if you have nothing to say - better to be silent, then you could look like a smart person (tm)
      Thank you for your wisdom.

      Comment

      • tangar
        Veteran
        • Mar 2015
        • 1004

        #48
        Originally posted by t4nk
        It was a PM for a reason. You can also reply using a PM.
        No thank you, sir, I do not want to answer on your insults via PM or in any other way of correspondence. Let's just leave this tiny unpleasantness behind and do not repeat it again.


        ==

        Back to gamedata customization.. Some new stuff were added @ trac, such as 'Make hunger a timed effect'. It could look tiny thing, but actually it would bring huge possibilities to make hunger system more flexible. New objects (eg RNG food items which could be sometimes bad and sometings good), curses, traps, types of attacks.. It's quite revolutionary to food managment system Huge thanks to devs that they approved this!

        Next question (or /rfe) is about DoT (damage per time) type of damage. I wonder, is it possible to assign such effect to monsters and player attacks or to the objects? So it would work like 'poison', but would be different type, eg give possibility to add 'burning' or damaging curse effect?
        https://tangaria.com - Angband multiplayer variant
        tangaria.com/variants - Angband variants table
        tangar.info - my website ⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽
        youtube.com/GameGlaz — streams in English ⍽ youtube.com/StreamGuild — streams in Russian

        Comment

        • tangar
          Veteran
          • Mar 2015
          • 1004

          #49
          damm. this toxic person (t4nk) continues to write insults in PM. Dear moderators, is there way to block PM somehow? Please help to solve this nasty issue. Thanks.

          p.s.
          It's appeared that t4nk is Russian-speaking (as I am) and he's got some problems I'm not aware of. Please do not judge all Russian-speaking people by such behaivour. Several years ago I've recording video: "Why players hate RUSSIAN gamers?": https://www.youtube.com/watch?v=UYsA7t-LYNQ which explains a bit a source of this issues.. But I didn't expect to meet such person in this nice community. I'm sorry for this inconvenience.

          Actually it's quite typical problem for Russian-speaking people - when one meet another abroad in real-life or at international web platform - they could start hating behaivour. An interesting social phenomena. USSR heritage.
          https://tangaria.com - Angband multiplayer variant
          tangaria.com/variants - Angband variants table
          tangar.info - my website ⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽
          youtube.com/GameGlaz — streams in English ⍽ youtube.com/StreamGuild — streams in Russian

          Comment

          • Derakon
            Prophet
            • Dec 2009
            • 9022

            #50
            Originally posted by Pete Mack
            By and large, separation of code and data is very much a usual design goal.
            I would say rather, you want separation of logic and data. That is, there's the data, which is in one place, and then there's the stuff that operates on that data, which is elsewhere. But they can both be "code" (i.e. compiled into the same binary). This can be tempting especially when you're in a language as archaic as, what, C89? Which lacks many tools that make parsing data files easier.

            In general I feel that devolving more attributes to the data files is a good thing, but I'm definitely sensitive to the fact that we don't want to be making a DSL (domain-specific language) just for Angband data.

            Comment

            • takkaria
              Veteran
              • Apr 2007
              • 1951

              #51
              Originally posted by tangar
              Next question (or /rfe) is about DoT (damage per time) type of damage. I wonder, is it possible to assign such effect to monsters and player attacks or to the objects? So it would work like 'poison', but would be different type, eg give possibility to add 'burning' or damaging curse effect?
              That is a bit outside the realm of what can be done in the gamedata files, I'm afraid.
              takkaria whispers something about options. -more-

              Comment

              • Nick
                Vanilla maintainer
                • Apr 2007
                • 9647

                #52
                I thought a brief history of the data files might be helpful here. I'll describe four stages, focusing on wands:
                1. 2.4.fk - in the beginning, there was a single .c file that handled wands, wands.c, calling it's effects from spells.c. Everything hard-coded, no mucking about.
                2. 2.8.3 - now we have a text file containing all the objects, k_info.txt, but it's not really very readable. In particular, note the "I" line, for example
                  Code:
                  I:65:18:0
                  for wands of fire bolts. The 65 meant it was a wand, and the 18 meant fire bolts; the game looked these up in a big master list, defines.h, and then used the values as an index when it was producing the effect in the file which dealt with item use, cmd6.c.
                3. 3.2.0 - the text file, object.txt, is getting more readable. It still has a lot of coded fields, but they are explained at the top of the file, and our wand of fire bolts now has a line
                  Code:
                  E:FIRE_BOLT2
                  to indicate that it uses the effect FIRE_BOLT2. The way the game does that is to look up that effect in effects.c, which codes that particular effect. Note that effects.c also has FIRE_BOLT, FIRE_BOLT3 and FIRE_BOLT72, which produce fire bolts for a rod or a spell or an activation, but with different parameters.
                4. current master - now object.txt has the lines
                  Code:
                  effect:BOLT_OR_BEAM:FIRE
                  dice:12d8
                  which tell the game to produce a bolt (or beam), make it of fire, and give it power 12d8. The bolt effect is in effects.c, but now in a function which takes its parameters from the object.txt file, rather than being hard-coded.


                So gradually more and more data has made its way from being hard-coded in .c and .h files to being in the user-editable-without-recompiling data files. Which is best is a matter of opinion.
                One for the Dark Lord on his dark throne
                In the Land of Mordor where the Shadows lie.

                Comment

                • tangar
                  Veteran
                  • Mar 2015
                  • 1004

                  #53
                  My previous message was posted just a few seconds before Takkaria's answer, so it could be lost; so I'll post it there with some addition info


                  /rfe add:
                  Code:
                  effect:TIMED_INC:DRAIN_STAT:<STAT>
                  dice:XdX  [I]# value of debuff[/I]
                  time:X     [I]# there is 'time' already for recharging.. this particular time means for how much turns effect would be applied[/I]
                  eg:
                  Code:
                  effect:TIMED_INC:DRAIN_STAT:WIS
                  dice:5d2
                  time:15
                  background:
                  With this effect it would be possible to implement interesting short-term effects. Right now in most cases we should use small values of debuffs cause they all are permanent (btw it's great that lvlup cures this, great mechanics). Eg it could be interested to lower character strength -10 in certain situation for a few turns.

                  And it's not only such 'powerful' effects like -10... Also it could be used to add some moderate stuff to make some objects more 'spicy'; eg I've made booze to have a lot of different random effects.. Among them there are effect: DRAIN_STAT: .. It would be great to have possibility to make this as temp effect - hangover hehe
                  Last edited by tangar; February 7, 2019, 09:31.
                  https://tangaria.com - Angband multiplayer variant
                  tangaria.com/variants - Angband variants table
                  tangar.info - my website ⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽
                  youtube.com/GameGlaz — streams in English ⍽ youtube.com/StreamGuild — streams in Russian

                  Comment

                  • fph
                    Veteran
                    • Apr 2009
                    • 1030

                    #54
                    Angband messages, as they work now, look like a nightmare for translation. Languages like German or Russian have cases, so in sentences like "the orc hits you", "you hit the orc", "you throw an arrow at the orc" the word "orc" needs to be translated in three different ways, and these should be stored separately for each monster since they may behave irregularly. So instead of singular/plural you have to store in the gamedata six or more versions of each monster name (and possibly handle other exceptions). As well as its grammatical gender, since that may affect other random bits of the sentence. Not even gettext is equipped to handle this, as far as I know (it can only switch singular/plural based on a variable number, basically).

                    You essentially need a full-blown DSL just for that (and the project Takkaria suggested seems to be one, essentially).
                    --
                    Dive fast, die young, leave a high-CHA corpse.

                    Comment

                    • t4nk
                      Swordsman
                      • May 2016
                      • 336

                      #55
                      So calling someone an idiot via PM is "harrassing", but incredibly scummy and insulting posts like this are tolerated? Wow, that's pretty lowly. I thought better about the moderator.
                      Since the moderation policy of this forum doesn't suit me at all, I'm out of here.

                      Comment

                      • tangar
                        Veteran
                        • Mar 2015
                        • 1004

                        #56
                        Originally posted by t4nk
                        So calling someone an idiot via PM is "harrassing", but incredibly scummy and insulting posts like this are tolerated? Wow, that's pretty lowly. I thought better about the moderator.
                        Since the moderation policy of this forum doesn't suit me at all, I'm out of here.
                        Moderators asked me not to reply to your posts, but I'll just note for the last time..

                        I didn't said anything bad directly towards you, except 'toxic' word - after you repeated offence via PM. I'm sorry for it.

                        Also I'm sorry if I hurt your feelings with my video, but I'm Russian-speaking too and I do not see anything scummy and insulting in video which I posted. It's just my point of view, impersonal toward anyone at this forum, as I've recorded that video long time ago (2015), long time before this nasty situation.

                        As I said before in this topic:

                        Originally posted by tangar
                        Let's just leave this tiny unpleasantness behind and do not repeat it again.
                        So I suggest just to ignore each other - I won't reply to your posts ever; if you would do the same to me - we could both to have comfortable communication within this forum.

                        Kind regards,
                        Tangar
                        Last edited by tangar; February 7, 2019, 22:55.
                        https://tangaria.com - Angband multiplayer variant
                        tangaria.com/variants - Angband variants table
                        tangar.info - my website ⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽
                        youtube.com/GameGlaz — streams in English ⍽ youtube.com/StreamGuild — streams in Russian

                        Comment

                        • tangar
                          Veteran
                          • Mar 2015
                          • 1004

                          #57
                          Return back to this idea:

                          Originally posted by tangar
                          What about to give a possibility to assign an object to tileset 'quick&dirty' way (actually it nice and clean.. ), right in gamedata file? eg:

                          where:
                          tile:[number of tileset]:[x]:[y] , so in eg above 'tile:3' is Gervais tileset; 'tile: 4' - Nomad.

                          and make it override tileset .prf files. Such addition would make adding and assigning new object to tileset very pleasant and easy

                          Right now to add or reassign object you need to edit 5 different .prf files with the same name.. It's hell mess. Even if it's only 1 tileset to modify - having everything in one file is so great DD
                          Originally posted by takkaria
                          I think it would be a mistake to have both systems in place. Having it in object.txt is quite elegant. But it depends who you're optimising for - existing tileset maintainers or new tileset producers. If the latter, you want tilesets as modular as you can get them; if the former, you want everything in one place.
                          This is very good question: maintainers or producers?

                          So it depends on how often do you change stuff. If you do it from time to time - it's ok to have stuff in nice separate folders. But for daily work when you juggle tiles now and then - editing .prf files is hell. Could it be 'conditional' stuff? I mean - lets .prf files stay as they are, but if user defined particular tile in gamedata file - let's it override .prf file.

                          But actually after Takkaria's post, I'm not sure that it was so good idea.. Another problem is that config files would become bigger, so it would be a bit harder to work with them - less space visible on the screen.. It could look like tiny problem at first, but who know what else would be added to config files in future, so maybe it's good to have each entry as 'short' as it could be, while it's possible.
                          https://tangaria.com - Angband multiplayer variant
                          tangaria.com/variants - Angband variants table
                          tangar.info - my website ⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽
                          youtube.com/GameGlaz — streams in English ⍽ youtube.com/StreamGuild — streams in Russian

                          Comment

                          • tangar
                            Veteran
                            • Mar 2015
                            • 1004

                            #58
                            Angband’s objects customization

                            Just a tiny example of customization which is already possible within current system:

                            Code:
                            name:& Flask~ of Whisky
                            graphics:,:y
                            type:food
                            properties:0:5:100
                            alloc:40:0 to 50
                            effect:NOURISH
                            dice:500
                            effect:TIMED_INC:CONFUSED
                            dice:8+1d8
                            effect:TIMED_INC:BOLD
                            dice:30+1d20
                            effect:RESTORE_STAT:CON
                            effect:RESTORE_STAT:STR
                            effect:DRAIN_STAT:INT
                            dice:1
                            effect:DRAIN_STAT:WIS
                            dice:1
                            effect:RANDOM
                            dice:2
                            effect:TIMED_INC_NO_RES:PARALYZED
                            dice:11+1d8
                            effect:TIMED_INC:BLIND
                            dice:11+1d8
                            effect:TIMED_INC:IMAGE
                            dice:11+1d8
                            effect:TIMED_INC:AMNESIA
                            dice:11+1d8
                            effect:TIMED_INC:POISONED
                            dice:8+1d8
                            effect:TIMED_INC:SLOW
                            dice:11+1d11
                            effect:RANDOM
                            dice:6
                            msg_self:*Hic*.. *Hic*....
                            desc:It's pretty strong and could raise your spirits.
                            This is just a laugh, a small test for Angband Online, but it's already makes some interesting changes:

                            1) drinking Whisky restore STR/CON (important for newbie players who attacked wrong monster in melee and have -5 speed for example and can't continue playing), but could make you stupid OR less wise (logical lol).
                            2) it makes you bold (@ Angband Online it's pretty useful, eg to fight VS Maggot who is living at -50 and could 'fear' you sometimes)
                            3) it makes you confused (you drunk lol)
                            4) it produce certain random effects (drinking booze in magical world should be more interesting than in real life)
                            5) it nourishing.. and in Angband Online it's very important as you can not buy food in the shops. Whiskey also could found only during adventures.

                            Why I posting this? Just to show that working toward enhancing customization is important. So having:

                            Originally posted by tangar
                            It would be great to add 'simple' condition's system to gamedata customization. It would be give wide possibilities, eg to make different races to react differently at stuff.

                            It could be called: flagcheck
                            ....
                            Would really open 'third' eye in Angband development.

                            Originally posted by takkaria
                            At some point, if you start adding checks to gamedata files, you end up with a (hard to understand and nonstandard) scripting language...
                            The question is:

                            What is easier: to hardcode new objects' properties or to add them in object.txt ?

                            For example:

                            You have 50 objects, something like this tiny Whiskey flask, which you wish to customize with some 'checks'. What would you prefer - to hardcode it or to have them all in one place in object.txt?

                            And what about adding 51 object? 52? 153?

                            Having objects customization in one place - it's how it should be to move forward. Forward towards roguelike way - which is different from modern graphic RPGs with faceroll 3-buttons gameplay.

                            Why Angband implement new objects very rare? Answer is simple - because there are low possibility of such items customization. Monsters - ok, work is going on. Classes too. Their gamedesign potential are very high already and Angband using it's 5% (or even less), so there are loads of space left for their development. Monsters and classes got loads of properties and very high 'degree of freedom' as monsters are controlled by AI and classes are enhanced by players bahaviour.

                            But for objects, which got the only way to act - when you use them - there are lack of options. Enhancing this particular direction would bring game to the next level.
                            Last edited by tangar; February 11, 2019, 10:35.
                            https://tangaria.com - Angband multiplayer variant
                            tangaria.com/variants - Angband variants table
                            tangar.info - my website ⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽
                            youtube.com/GameGlaz — streams in English ⍽ youtube.com/StreamGuild — streams in Russian

                            Comment

                            Working...
                            😀
                            😂
                            🥰
                            😘
                            🤢
                            😎
                            😞
                            😡
                            👍
                            👎