My variant development journal

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • CJNyfalt
    Swordsman
    • May 2007
    • 289

    My variant development journal

    So, I got started on my variant. Since there's a lot of thought going on about the project, and a lot of ideas that it would be nice to get some comments on, it seemed best to me to start a thread to contain the discussion, instead of spreading it out. Well, enough rambling about that, on the first subject.

    Name
    All projects need a name, but unfortunately the name is usually not clear from the beginning. Well, since I had to pick something I choose to name the svn tree iBand. A suitable name, since it doesn't sound too lame, and has to be replaced before the first release.

    Setting
    Custom. I will move away from anything that has copyright issues, and try make something original. The Tolkien stuff will be removed gradually.

    Races
    This one is tricky, I want to avoid stock D&D races and furries, while not being limited humans. The Half-anything races will be axed first, since they annoy me.

    GPL & dual licensing
    Luckily the Sangband code is nearly completely dual-licensed. Fortunately the issue was clearly described in an e-mail from Leon:
    The first and more important is that, although the Angband code
    used in Sangband is very nearly GPL, "very nearly" isn't the same is
    "fully". There are at least four people who contributed code to Angband
    and/or Sangband who have not been found:

    1. Randy Hutson worked with BEN to code the Angband RNG.

    2. Ross E Becker is mentioned as a contributor in main-win.c

    3. Angband uses some code by Eric Bock. Sangband uses quite a bit.

    4. Angband uses some code by Takashi Mogami. Sangband uses more.

    (there are also three people who worked on maid-x11 or main-xaw who
    haven't been found, but this doesn't affect Sangband now)
    Since then Hutson and Mogami has been found, and given permission. We figured out that main-win has been rewritten be Leon and should be clean.
    At least the X11 and Xaw ports will be axed, so the only missing person is Eric Bock.

    Fortunately his contributions are clearly described so they can be axed if necessary. But, hopefully someone knows how to contact him or he shows up some day.

    Stats
    I will get rid of the 18/XX notation, now that there's no conservative maintainer that can stop me.
    However the number of stats, that's another issue. I have thought about everything from 3 to 7 stats. There's two issues here really: 1. Charisma has to either be made useful or go. I'm considering the idea of adding some kind of charm effect/skill to make it useful. (As has been done in other variants.) 2. Wisdom & Intellect, in most cases you need one, but not the other one. I'm think I'd either takes a WoW approach of Spirit & Int or makes Wis handle spells, while Int handles rogue and crafting skills.


    Whew! Glad to get that out and off my brain. Time to go back to coding.
  • Nick
    Vanilla maintainer
    • Apr 2007
    • 9634

    #2
    Originally posted by CJNyfalt
    Setting
    Custom. I will move away from anything that has copyright issues, and try make something original. The Tolkien stuff will be removed gradually.

    Races
    This one is tricky, I want to avoid stock D&D races and furries, while not being limited humans. The Half-anything races will be axed first, since they annoy me.
    If you don't have a custom setting in mind already, something 'futuristic' would open up the choice of races. Plus it hasn't really been done (although Steamband has elements like that).

    However the number of stats, that's another issue. I have thought about everything from 3 to 7 stats. There's two issues here really: 1. Charisma has to either be made useful or go. I'm considering the idea of adding some kind of charm effect/skill to make it useful. (As has been done in other variants.) 2. Wisdom & Intellect, in most cases you need one, but not the other one. I'm think I'd either takes a WoW approach of Spirit & Int or makes Wis handle spells, while Int handles rogue and crafting skills.
    How you treat stats would be fairly heavily dependent on your setting. I tend to think of Wisdom as traditional knowledge and Intelligence as street smarts. I've also thought of using two stats for spellcasting (maybe one for mana and one for fail rates); in FA, that would be INT+DEX for mages, INT+CHR for necros, WIS+CHR for priests and WIS+DEX for druids.
    One for the Dark Lord on his dark throne
    In the Land of Mordor where the Shadows lie.

    Comment

    • CJNyfalt
      Swordsman
      • May 2007
      • 289

      #3
      Originally posted by Nick
      If you don't have a custom setting in mind already, something 'futuristic' would open up the choice of races. Plus it hasn't really been done (although Steamband has elements like that).
      I consider it, and haven't ruled it out. There are several problems with a 'futuristic' setting however. The most troublesome is that guns are too strong.

      Onward to todays thoughts:

      C++
      I have a long time been an advocate for using C++ in *bands. Today I converted the program to be in C++ and added the first class. The good thing a about a C to C++ conversion is that it can be done gradually. For others seeking to make their programs use objects I would recommend to start with the small stuff, taking a bottom up approach. Starting with a large struct could easily lead to a mess that would take forever to clear up.

      CMake
      I don't like having to keep track of dependencies manually, and using GNU Autohell is worse. So I made the same decision as KDE an use CMake to create makefiles.

      More on stats
      I converted the stats to use a natural notation (..., 18, 19, 20, ...). Was saved the hassle of creating a converter by doing it right from the start.
      Still there's more to do with stats. For example, I would prefer the stats to have a linear instead of exponential behavior. Also, one stat consists of several values (birth, current, max, ...), so a stat should probably be a class.
      Finally, I noticed 18 + 100, the natural stat maximum, hardcoded in several places in the code, so I added a STAT_MAX constant.

      Comment

      • CJNyfalt
        Swordsman
        • May 2007
        • 289

        #4
        Elements and resistances
        Some thoughts:
        - What's an element should be defined clearly.
        - Resists needs to be made numerical in some way, except for fear, blind and confusion.
        - Dark and Nether should be merged.
        - Shards shouldn't have a resist, AC should reduce shard damage instead.
        - Nexus, Chaos and probably Disenchant will be toned down or removed. This isn't Warhammer. The stat-shuffling part of nexus is already removed.
        - Most of the very exotic, non-resisted elements will be removed (Gravity, Time, Inertia, ...), at least as direct damage.
        - In most other variants I would remove them directly, but it seems like S has most spells associated with an element. For example all teleportation seems to be nexus.

        C++ effort
        I added a stat class today. Stat-shuffling was removed in this process. For now it only covers the old stat_birth, stat_max and stat_cur variables and STAT_MAX and STAT_MIN constants. I haven't decided if adding stat_use, stat_ind and stat_add variables and the tables to the class is useful or not.

        Comment

        • xxitheworld
          Rookie
          • Feb 2008
          • 19

          #5
          - Dark and Nether should be merged.
          - Shards shouldn't have a resist, AC should reduce shard damage instead.
          - Nexus, Chaos and probably Disenchant will be toned down or removed. This isn't Warhammer. The stat-shuffling part of nexus is already removed.
          - Most of the very exotic, non-resisted elements will be removed (Gravity, Time, Inertia, ...), at least as direct damage.
          No offence but I think this would remove some cool elements of the game and somehow make it a little boring, you'd need to compense with other new nice stuff

          - Resists needs to be made numerical in some way, except for fear, blind and confusion.
          I think making it too numerical (Percentages for example), could make the game a little too number-oriented and again take out the fun of it
          What I would suggest is a few levels of resistance like
          Weak Resistance
          Medium Resistance
          Good Resistance
          Immunity
          Last edited by xxitheworld; March 18, 2008, 02:29.

          Comment

          • zaimoni
            Knight
            • Apr 2007
            • 590

            #6
            Originally posted by CJNyfalt
            Elements and resistances
            Some thoughts:
            - ...
            - Dark and Nether should be merged.
            XP-draining blinding breath...ouch. Think about the play balance of this one.
            Originally posted by CJNyfalt
            - Shards shouldn't have a resist, AC should reduce shard damage instead.
            Mortal wounds are just that: mortal. They do not naturally heal. This change will make potions that heal cuts far more important.
            Originally posted by CJNyfalt
            - Nexus, Chaos and probably Disenchant will be toned down or removed. This isn't Warhammer. The stat-shuffling part of nexus is already removed.
            The actual source of the exotic breaths (other than the basic five: fire, cold, electricity, acid, poison) is the defunct I.C.E. RPG set in Middle Earth, which fell afoul of contractual differences with the Tolkein estate.
            Zaiband: end the "I shouldn't have survived that" experience. V3.0.6 fork on Hg.
            Zaiband 3.0.10 ETA Mar. 7 2011 (Yes, schedule slipped. Latest testing indicates not enough assert() calls to allow release.)
            Z.C++: pre-alpha C/C++ compiler system (usable preprocessor). Also on Hg. Z.C++ 0.0.10 ETA December 31 2011

            Comment

            • CJNyfalt
              Swordsman
              • May 2007
              • 289

              #7
              Thanks for the comments they really stimulated my thoughts on the issues.

              Originally posted by zaimoni
              XP-draining blinding breath...ouch. Think about the play balance of this one.
              This comment shows how useful it is to get feedback. Not that I care about balance at this point, no.
              What it really brought to mind was the difference on how we think about the breaths and their elements. You think about secondary effects, I think about source of the damage.

              Breaths, elements and resists
              - It seems like there are two ways, at least, on how a resist can be considered. Either you resist the magic that causes the effect or you resist the effect itself. This is something I have to think about some more.
              - I might keep nexus in some form, now that I have removed what I hated most about it.
              - Chaos has to go as a damage source, and what isn't damage about it fits under confusion.

              It's about the character, not the gear
              Expect that it will become more important how you build your character and less important what gear you have. Stat potions will be removed, and replaced with stat points gained by experience. Exp draining will probably be replaced by stat draining. The skill system will also get a major overhaul at some point.

              Stats
              The question that troubles me about stats at this point is what's the bottom?
              How far down should a stat be drainable and what should the effects at the lowest point be? For example: the jump from -5 to you are disabled/dead as you go from 1 to 0 in the d20 system doesn't make sense to me. A solution would be to allow stats to go into the negative as far as data type restraints allows, but then it doesn't make sense that 10 and not 0 is the normal baseline.

              Comment

              • Patashu
                Knight
                • Jan 2008
                • 528

                #8
                Originally posted by CJNyfalt
                I consider it, and haven't ruled it out. There are several problems with a 'futuristic' setting however. The most troublesome is that guns are too strong.
                There's always retro-futurism; add in aspects of technology that you like, whatever that may be, while leaving out troublesome things like guns.
                My Chiptune music, made in Famitracker: http://soundcloud.com/patashu

                Comment

                • andrewdoull
                  Unangband maintainer
                  • Apr 2007
                  • 872

                  #9
                  Originally posted by Patashu
                  There's always retro-futurism; add in aspects of technology that you like, whatever that may be, while leaving out troublesome things like guns.
                  You might want to look at these poll results on Ascii Dreams for inspiration.

                  Andrew
                  The Roflwtfzomgbbq Quylthulg summons L33t Paladins -more-
                  In UnAngband, the level dives you.
                  ASCII Dreams: http://roguelikedeveloper.blogspot.com
                  Unangband: http://unangband.blogspot.com

                  Comment

                  • CJNyfalt
                    Swordsman
                    • May 2007
                    • 289

                    #10
                    Originally posted by andrewdoull
                    You might want to look at these poll results on Ascii Dreams for inspiration.

                    Andrew
                    Hmm, there's nothing that really stands out to me on the list.
                    Maybe a mix of Fantasy, Steampunk and Alien, but then I have to avoid making it too close to Steamband.


                    On the coding front, I have now converted both skill structs to classes.

                    What I'm now pondering is the oaths. Which are a kind of pseudo character-classes in Sangband. I don't like them, and will probably remove them, unless someone have a good argument for keeping them. (That they disallow a character from mastering everything isn't a good argument.)
                    Maybe if they were changed so they more about granting extra powers, and less about restricting skill access?

                    Comment

                    • kathoum
                      Rookie
                      • Jan 2008
                      • 12

                      #11
                      Originally posted by CJNyfalt
                      Maybe if they were changed so they more about granting extra powers, and less about restricting skill access?
                      Also don't forget to consider O/FA specialty abilities, at least if you want to preserve the class system. They add a lot to character customizability, and you could tune their impact on gameplay to make them as powerful as oaths or D&D-style feats.

                      In a classless system I think they would become less important for customizability, and more suitable for balancing (as it happens with TOME abilities).

                      Dario

                      Comment

                      • CJNyfalt
                        Swordsman
                        • May 2007
                        • 289

                        #12
                        Originally posted by kathoum
                        Also don't forget to consider O/FA specialty abilities, at least if you want to preserve the class system. They add a lot to character customizability, and you could tune their impact on gameplay to make them as powerful as oaths or D&D-style feats.

                        In a classless system I think they would become less important for customizability, and more suitable for balancing (as it happens with TOME abilities).

                        Dario
                        Yes, that's really something to consider.


                        Skills

                        So, I removed all restrictions on putting points in a skill, except the restriction on having both piety and blood domination at the same time. And even that is not unthinkable since I have played WoW priests.

                        Now, to other things to consider regarding the skill code. First we have the cost reduction from similar skills. This code is ugly and I don't like it at all, I would rather remove it. For some of the skills it makes sense to remove the cost reduction (ranged, forging), but for other it's harder finding rationale (melee, rogue). One way of reducing this trouble would be to add general combat skills, and go for a more tree-like approach to skills, like Steamband.

                        Second there's the case of code organization. As it's now, the skill system uses two classes, one for the static info and one for the dynamic info. Having the static info class be a member of the dynamic info one would make sense, but that might be memory-inefficient if I decide that there should be more than one PC in the future. There's also a lot of code in skills.cc that I would prefer to be member methods of the classes. Now, the trouble with doing this merger is that these functions use the power/exp tables and stuff that doesn't belong in a skill class. The worst offender in teh constant PY_MAX_POWER that's all over the place.

                        Comment

                        • zaimoni
                          Knight
                          • Apr 2007
                          • 590

                          #13
                          Originally posted by CJNyfalt
                          As it's now, the skill system uses two classes, one for the static info and one for the dynamic info. Having the static info class be a member of the dynamic info one would make sense, but that might be memory-inefficient if I decide that there should be more than one PC in the future.
                          A static member of the class won't be any less memory efficient with multiple PC's. That's what I've done somewhat in Zaiband.
                          Zaiband: end the "I shouldn't have survived that" experience. V3.0.6 fork on Hg.
                          Zaiband 3.0.10 ETA Mar. 7 2011 (Yes, schedule slipped. Latest testing indicates not enough assert() calls to allow release.)
                          Z.C++: pre-alpha C/C++ compiler system (usable preprocessor). Also on Hg. Z.C++ 0.0.10 ETA December 31 2011

                          Comment

                          • CJNyfalt
                            Swordsman
                            • May 2007
                            • 289

                            #14
                            Originally posted by zaimoni
                            A static member of the class won't be any less memory efficient with multiple PC's. That's what I've done somewhat in Zaiband.
                            Well, that would work if each of the different skils was different classes, but they are objects of the same class. So, the problem is that it's a two-dimensional setup and the static-ness is only allowed across one of the dimensions.
                            Hmm, what about something like this:
                            Code:
                            class s_static{
                              skill_static st[NSKILLS];
                            };
                            
                            class s_dynamic{
                              skill_dynamic sd[NSKILLS];
                            };
                            
                            class skills{
                              static s_static sst;
                              s_dynamic ssd;
                            };
                            That would allow me to declare the static part static, but one the other hand member functions that needs both parts would then need to be part of whole skill package instead of part of the individual skills.
                            I have to think about it.

                            Comment

                            • CJNyfalt
                              Swordsman
                              • May 2007
                              • 289

                              #15
                              So, I started developing a variant again.

                              Since I noticed I had this thread, it's better to dust it off than start a new one.
                              The last effort was eaten by WoW.
                              Most things does after all apply, except for the C++ stuff, which I will wait with. I want to focus on the gameplay stuff, and avoid getting tied down with technicalities, since that tends to kill off my inspiration.

                              This new effort is also based on Sangband, just like the last one.



                              What I have done so far:

                              License and copyright related:

                              - Removed .mid music files whose legality was suspect.

                              - Updated license information for source code which now have GPL
                              permission.

                              Bugfixes:

                              - Set player_egid in SDL port.

                              - Monster memory had RF&_DARKNESS twice, second one fixed to RF6_CURSE.

                              Id:

                              - Get average feelings from also weak pseudo-id.

                              - Removed amnesia.

                              - Id spells now work like *Id*. Scrolls of *Id* removed.

                              Stats:

                              - Removed Mushrooms of Metamorphosis.

                              - Removed stat shuffling from Nexus.

                              - Removed traps of remold player.

                              - Use natural stat notation instead of 18/xxx.

                              Other gameplay changes:

                              - Artifacts made immune to disenchant.

                              - Removed teleport level attacks from monsters.

                              - Removed possibility that portal traps teleport player to another
                              level.

                              - Disabled trap doors.

                              - Nexus no longer set recall or teleport player to another level.

                              - Weapons and armor are no longer destroyed by elemental attacks when
                              in inventory.

                              - Improved infravision. Cave features can now be seen by it.

                              I will cover my plans in my next post.

                              For now I'm interested in comments and questions about my changes. I'm also interested in issues that people have with Sangband 1.0.0 final, which is what I'm basing this variant on.

                              Lastly I want to state that this will not be an improved Sangband, I plan to make this variant quite original once I'm able to.

                              Comment

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