[Announce] Cthangband 6.0 ("20th Anniversary Edition") Released

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Dean Anderson
    Adept
    • Nov 2009
    • 193

    #16
    Originally posted by codetaku
    I'd not played Cthangband before, and just came across this release the other day. I've played Angband and ZAngband a bunch. So far I'm liking Cthangband and having fun with it, but I think I ran into a couple things that might be bugs (they might just be my misunderstanding, though).
    Since it's been such a huge re-write, it wouldn't surprise me at all if there are some new bugs I've introduced and not found/fixed yet.

    First, I had come across 30 Rounded Pebbles (+4, +1). I was only level 3 or so, and had been given them by a god upon levelling up. Not being a sling user, I figured it would be some nice cash. Went to the shop and they offered me 540 gold. I thought that was marvelous, so accepted. But then noticed I only had 265 or so gold total. I checked the message log and it said I told the 30 pebbles for 18 gold. 18 * 30 = 540, the value I had seen. I don't know exactly how much I actually received, but it was obviously substantially less. My charisma is pretty low, so maybe I got what my charisma deserved but it displayed something higher incorrectly? Really not sure what happened, it was just confusing.
    Yep - found and fixed, thanks. It was offering the correct total price for the bundle of items sold together, but only actually giving you the money for one item.

    Until there's a new release, the work-around is to either sell them individually or just not care because it's pretty insignificant amounts of money.

    Second, I ventured out of the town of Ignarok. I headed north toward the 'home of the gods' place, not knowing what it was. I made it there, found trolls that would easily kill me if spooked. So I read a scroll of word of recall. Recalled into the sewers underneath Ignarok. Relieved, I poked around a bit then took stairs back up. I emerged into.... Ignarok? But not? The game says I am in Ignarok. The map says I am in Ignarok. The mobs are town mobs from Ignarok. But... it is just an empty box like the 'home of the gods' I had come from. No shops, etc. Pretty sure this one is a bug even if I'm not confident of the recall mechanics.
    Yep. Also a bug - this one was a bit of an obscure one. It only happens when you have recalled from town A to dungeon B, when dungeon B is underneath town C, and then exited dungeon B via the stairs rather than by recalling back out.

    It would get confused, and although it tells you that you are in town C (and, in fact, you are in town C) when it generates the town level it gives you the shops for town A.

    The work-around for this one until it is fixed is to simply exit the town by walking out of it (rather than going back downstairs), and then immediately walk back in. That should re-set things and it will no longer be confused.

    Oh, and is there any possibility of getting some settings in the future? I really prefer to not have the display center on the character, and usually play with the extended ascii characters that use the shaded blocks rather than octothorpes for the walls and such. No big deal if not, I was just surprised at there not being any real settings at all after coming from ZAngband and similar that have lots of settings.
    One of the things I did before switching from C to C# was to simplify everything by taking out the six(!) pages of options and all the conditional code that they required, making everything much simpler to convert.

    I might toy with putting the blocky wall graphics back in, although to be honest I quite like the "pure" ASCII look.

    I know documentation is no fun, but like someone else in this thread I got the 'SM: 111%' notification and was completely mystified. I still don't know what 'SM' could possibly stand for, though I did figure out it has to do with being over-encumbered.
    "SM" stands for "Slow Movement", and "FM" stands for "Fast Movement". "SM: 111%" means that you're moving more slowly so each move takes 110% of a turn.

    I still haven't figured out why I keep getting told "You suddenly feel almost lonely."
    You've been given a mutation. If you check your mutation list ('J' for the journal, then 'm' for mutations) you'll see - possibly amongst others - "You sometimes cause nearby creatures to vanish". This means that occasionally all the nearby monsters will be banished. The "You suddenly feel almost lonely." message is what it says each time that happens.

    There are ninety six mutations that you can get in total, and unlike spells or powers they don't actually have names (well, they do in the code, but there's nowhere player-facing in which they're named).

    Thirty two of them are passive mutations that change your stats or give you resistances or vulnerabilities or whatever.

    Thirty two of them are activatable mutations that you access with 'P' along with your racial power (if any) if you want to use them.

    Thirty two of them are random mutations that mostly go off on their own at random times making something happen. There are a few exceptions here, since one of these goes off when you go up a level and five of them occasionally go off when you make an attack.

    Comment

    • Dean Anderson
      Adept
      • Nov 2009
      • 193

      #17
      Having fixed those two bugs, I've just had a look at using the extended characters for walls and things...

      ...and it looks horrible.

      The problem is that the graphics system I'm using is Windows Presentation Framework (WPF). It's not the best, but it's native to C# without needing additional libraries and it's much, much faster than actual Console code - and also has the advantage of using both hardware acceleration and OpenType to display fonts, so it's crystal clear at any resolution.

      That's great for standard ASCII display, but due to the way WPF works I've got the display split into a grid of 80x25 cells, each of which holds a single character. The issue is that the cells are based on the screen size, and they therefore don't quite match the aspect ratio of a single character.

      Normally, you don't notice. The background colour for all characters is black, and the gaps between the cells are black, so if there's a pixel or so space between characters in one direction or the other you don't see it. Similarly, if there's a slight overlap you don't notice because none of the glyphs for the characters reaches the very edges of the cell.

      Unfortunately, when you try to use extended characters that fill the whole character space - such as the blocks used for walls - the occasional one-pixel gaps (and occasional one-pixel overlaps) are very apparent and make the screen display look awful.

      So at some point I may change the display system to a new one (I was originally thinking of using Unity and going full-graphics), but until then we're stuck with '#'s for walls rather than blocks.

      Comment

      • jevansau
        Adept
        • Jan 2009
        • 200

        #18
        Firstly, thanks for the release Dean - it has been fun so far. Playing with a golem chosen one.

        A couple of bugs I've noticed.
        Shooting speed on a launcher changes the Attack Speed display rather than the Shot Speed line.
        A rod of detection only seems to detect traps and doors/stairs.
        Armour of Yith gets a rBase and a stealth bonus, but no additional resistance. Armour of resistance seems to get an extra resistance.

        How is damage calculated for melee and missiles? The damage display looks different to what I would expect.

        A feature request - please allow floor item selection. This is really annoying for pickup and identification.

        Some quick method of moving between known towns would be nice too. Gets tedious once you are past the early levels.

        Speaking of identification, Vanilla style runeid would be a nice alternative.

        Comment

        • Dean Anderson
          Adept
          • Nov 2009
          • 193

          #19
          Originally posted by jevansau
          A couple of bugs I've noticed.
          Shooting speed on a launcher changes the Attack Speed display rather than the Shot Speed line.
          Yep - it's accidentally printing the shoioting speed on the wrong line, which overprints the attack speed. I've fixed that now.

          A rod of detection only seems to detect traps and doors/stairs.
          Fixed. It was a bug in the logic in the "DetectAll()" function.

          It was supposed to "or" together the results of all the detection functions in turn and return if any of them detected anything. When converting from C to C# I'd used the wrong operators, and the compiler was "helpfully" optimising it by stopping after the first function in the chain that returned true, since there was "no need" to call the others as it knew by that point what the return value would be.

          I've changed the logic to make sure it explicitly calls all the detect functions and doesn't allow the expression evaluation to be short-circuited.

          Armour of Yith gets a rBase and a stealth bonus, but no additional resistance. Armour of resistance seems to get an extra resistance.
          Yes. They both get the basic four resists (Fire, Electric, Acid, Cold), then "of Resistance" has a chance of also resisting Poison and "of Yith" also gives you a bonus to stealth.

          That's not a bug. It's just how the two items work.

          How is damage calculated for melee and missiles? The damage display looks different to what I would expect.
          The base damage for a weapon is XdY where X and Y are based on the weapon type, and then your various plusses are added. That's not changed.

          I had a look at the display code, and found a bug in it - your damage bonus wasn't being multiplied.

          So if you did 2d5+8 damage and had three attacks per round it would say "6d5+8" rather than "6d5+24" for your damage per round.

          I've fixed that now.

          Also, don't forget that because of the way the speed system works "attacks per round" is subjective. having "Attacks per round: 4" doesn't actually mean that a single attempt to attack an enemy will take a round and will hit them four times. What it actually means is that a single attempt to attack an enemy will only hit them once, but will take 25% of a round. So if you're alternating between moving, attacking, and casting spells then in any given "round" the actual number of attacks you make will vary.

          A feature request - please allow floor item selection. This is really annoying for pickup and identification.
          It should already allow that. I'll look into it.

          Some quick method of moving between known towns would be nice too. Gets tedious once you are past the early levels.
          I've been toying with the idea, but I haven't yet come up with a solution I like. I don't want to make it too simple to bypass the wilderness.

          Don't forget that Word of Recall can be used to cross the wilderness if you plan it (it's easier once you've bought a house, but possible before).

          Speaking of identification, Vanilla style runeid would be a nice alternative.
          I've not seen that system. How does it work?

          Comment

          • jevansau
            Adept
            • Jan 2009
            • 200

            #20
            Yes. They both get the basic four resists (Fire, Electric, Acid, Cold), then "of Resistance" has a chance of also resisting Poison and "of Yith" also gives you a bonus to stealth.

            - OK - this just wasn't what I was expecting where elvenkind always got a high resistance.



            The base damage for a weapon is XdY where X and Y are based on the weapon type, and then your various plusses are added. That's not changed.

            I had a look at the display code, and found a bug in it - your damage bonus wasn't being multiplied.

            So if you did 2d5+8 damage and had three attacks per round it would say "6d5+8" rather than "6d5+24" for your damage per round.

            I've fixed that now.

            - Great - I wasn't sure if it was deliberate or not.

            It should already allow that. I'll look into it.

            - Some actions allow selection, but default pickup and identify don't.

            I've been toying with the idea, but I haven't yet come up with a solution I like. I don't want to make it too simple to bypass the wilderness.

            Don't forget that Word of Recall can be used to cross the wilderness if you plan it (it's easier once you've bought a house, but possible before).

            - True, one system used by the Cheng branches is to be able to pay to teleport to a town, but only ones you have visited overland. I'd say having to make a payment in a town to have it added to the list would work.

            I've not seen that system. How does it work?

            - Each item property is associated with a rune. Once you have identified a rune, you know it on all future items. Curses are also associated with a rune. The other changes were to allow identification by use, and also making magic identification fairly rare and expensive. Each identify only identifies 1 random property of an item.
            It means that identification can be a challenge early but becomes a non-issue later when "too much junk" tends to become the main problem.

            Comment

            • Derakon
              Prophet
              • Dec 2009
              • 9022

              #21
              Note that Vanilla rune-ID is just one part of a general streamlining of the identification process, which also includes removing the most punishing bad items (like ?Curse Weapon, !Death, !Detonations, !Weakness, sticky curses, etc.). The general intent is to a) encourage the player to experiment with items in the early game, by making it safe to do so, and b) keep the player from having to tediously identify gigantic piles of crap treasure in the late game.

              The latter is done not just by pre-identifying things for them, but also by simply reducing the amount of items that are dropped. Back in the Vanilla 2.9 days (IIRC about when Zangband branched off) an Ancient Dragon might drop upwards of 15 items; in modern Vanilla you'll rarely see them drop more than 3. I believe this is done by generating items as normal, and then stochastically deleting too-shallow items from the drop. It may be limited to only operating on equipment, to avoid squelching e.g. ?Phase; I haven't looked at the code.

              Comment

              • jevansau
                Adept
                • Jan 2009
                • 200

                #22
                One other problem I noted is that Cthangband uses a lot of CPU (~30%) on my 2 core system, just sitting idle from the first screen on.
                My suspicion is that the input routine is in a tight loop checking for input. If so, adding even a small sleep into the loop would help greatly.

                Comment

                • Dean Anderson
                  Adept
                  • Nov 2009
                  • 193

                  #23
                  Originally posted by jevansau
                  Each item property is associated with a rune. Once you have identified a rune, you know it on all future items. Curses are also associated with a rune. The other changes were to allow identification by use, and also making magic identification fairly rare and expensive. Each identify only identifies 1 random property of an item.
                  It means that identification can be a challenge early but becomes a non-issue later when "too much junk" tends to become the main problem.
                  The basic idea sounds interesting. So you might get something like a "cloak [2, +5] "XE-JAR-KO-NOI-PA", which when you examine it says something like "it has five unknown properties". Then after you've cast Identify on it once and discovered that the "JAR" rune resists fire; and cast Identify on something else and learned from that that the "KO" rune resists cold, the item would then be "a cloak [2, +5] "XE-jar-ko-NOI-PA" (showing that you've identified "jar" and "ko") and if you examine it you'd be told "it resists fire, it resists cold, and it has three unknown properties".

                  Is that the basic mechanism? I quite like that.

                  Originally posted by Derakon
                  Note that Vanilla rune-ID is just one part of a general streamlining of the identification process, which also includes removing the most punishing bad items (like ?Curse Weapon, !Death, !Detonations, !Weakness, sticky curses, etc.). The general intent is to a) encourage the player to experiment with items in the early game, by making it safe to do so, and b) keep the player from having to tediously identify gigantic piles of crap treasure in the late game.
                  Yeah. That's a step too far for me. I like the older "only try unidentified things as a last resort" style. I prefer it to being encouraged to experiment. That's not to say that you can't safely experiment with anything in Cthangband; wands are pretty safe providing you try them out on something that you don't mind getting hasted or healed or polymorphed, for example.

                  The latter is done not just by pre-identifying things for them, but also by simply reducing the amount of items that are dropped. Back in the Vanilla 2.9 days (IIRC about when Zangband branched off) an Ancient Dragon might drop upwards of 15 items; in modern Vanilla you'll rarely see them drop more than 3. I believe this is done by generating items as normal, and then stochastically deleting too-shallow items from the drop. It may be limited to only operating on equipment, to avoid squelching e.g. ?Phase; I haven't looked at the code.
                  Interestingly, I always resisted adding the 'squelch' options to Cthangband, and when I did eventually add them in version 6.0 I deliberately didn't go down the route of suppressing 'squelchable' items from being generated or being displayed. They still drop, and you can still see them on the floor - it's just that when you walk on them you stomp on them (destroying them) rather than picking them up.

                  I've never liked items being filtered out so you only see the couple of good items rather than looking through the pile of trash items to find the good ones. To me, finding something good amongst the dross is more enjoyable than only getting given the good stuff.

                  Comment

                  • Derakon
                    Prophet
                    • Dec 2009
                    • 9022

                    #24
                    Your understanding of rune-based ID is correct.

                    If you haven't played modern Vanilla, I'd encourage you to give it a shot, if only so you can do a fair comparison between the way your game works and the way Vanilla works. I'm not saying you'll change your mind, just that lots of people hear how Vanilla works and think "ugh, that sounds horrible", then they play it and think "hey actually, this lets me focus on the parts of the game I find the most fun."

                    And to be clear, Ancient Dragons still drop a lot of crap even in modern Vanilla. They just don't drop quite as much crap. There's basically zero reason to be generating {average} daggers past 1000 feet, for example. So now instead of spending twenty minutes sifting through all the drops after clearing an angel pit, you spend five.

                    Comment

                    • wobbly
                      Prophet
                      • May 2012
                      • 2627

                      #25
                      Got a chance to play briefly. Trying out the warrior mage in the hope it's not as disappointing as other Z-variants. Love the manual by the way, "welcome this manual hasn't been written yet. Anyway I suspect I'll have more comments and bugs when I play more, but a couple of things first. Interface seems frustrating, any plans for keymaps/macros or the equivalent? The game changed my screen resolution. Both in and outside the game. That's no biggy for me but I suspect some people will not be happy with their desktop settings being mucked with. Anyway going to play some more, congrats and good luck!

                      Comment

                      • wobbly
                        Prophet
                        • May 2012
                        • 2627

                        #26
                        Well played for a while. Start seems super rough. Not necessarily a good or bad thing & I remember Z was similar. Then I kill something and I seem to shoot up multiple levels quite quickly. Go from about 10 to 70 hps in a few kills. The lack of examine working on items is a little frustrating, I drank slime mold & it restored dex. I have no idea whether that's a bug or intended game play. Got a special feeling at the bottom of the sewers but found neither unique nor artifact. The light wand animation felt slow. It's ok but it's going to be slow going for anyone device heavy. I think that's it for now.

                        Playing a caster was a bit irritating with the whole library thing. You said there was not much reason to visit town without it. That's precisely what's going to annoy people about the mechanic.

                        Comment

                        • Dean Anderson
                          Adept
                          • Nov 2009
                          • 193

                          #27
                          Originally posted by wobbly
                          Got a chance to play briefly. Trying out the warrior mage in the hope it's not as disappointing as other Z-variants. Love the manual by the way, "welcome this manual hasn't been written yet.
                          Yeah, I wouldn't have included the unwritten manual at all if it weren't for the fact that it includes the changelog and history.

                          I'm not sure what to do about the manual. I have a lot of changes planned for the next version, including a completely new UI, so I'm reluctant to spend days writing a load of stuff for the manual that's immediately obsolete.

                          But on the other hand, since the next version with the new UI may take a while, I want to release a quick bugfix release of this version first - and it would be nice to have a manual for the bugfix version.

                          Anyway I suspect I'll have more comments and bugs when I play more, but a couple of things first. Interface seems frustrating, any plans for keymaps/macros or the equivalent?
                          I have plans for macros, yes. Unless the new UI makes them obsolete.

                          The game changed my screen resolution. Both in and outside the game. That's no biggy for me but I suspect some people will not be happy with their desktop settings being mucked with.
                          That's... really weird, because theres no code in the game to do that!

                          The game runs in a .NET WPF form, and it either sets the size of the form based on what you've told it to or it tells the form to become borderless and to maximise itself to fill the screen as if you'd hit the maximise button in the top right of the window.

                          At no point does it ever do anything with your screen resolution or try to exclusively take over the graphics device or anything like that. There's no code in there to tell it to do any of those things. It doesn't even check your screen resolution. It just tells the system to maximise the window.

                          Are you running on Windows? Or with some third party WPF emulation library on another system?

                          Originally posted by wobbly
                          Well played for a while. Start seems super rough. Not necessarily a good or bad thing & I remember Z was similar. Then I kill something and I seem to shoot up multiple levels quite quickly. Go from about 10 to 70 hps in a few kills.
                          It all depends on what you kill, of course. It's not unusual for characters to jump up the first few levels quite quickly if they get a couple of lucky kills on out-of-depth creatures, but others will still have to carefully crawl up those same first few levels.

                          It all evens out by about level ten, due to the diminishing returns of experience points.

                          The lack of examine working on items is a little frustrating, I drank slime mold & it restored dex. I have no idea whether that's a bug or intended game play.
                          There is an examine command, but you need to have *Identify*ed an Item for it to give you information about it. This is because the game uses the traditional identify mechanics rather than the newer ones that more recent versions of Angband now uses.

                          As for the slime mold, that's by design - a few versions ago I put in a change that I referred to in the change log as "The slime mods are revolting!" as a bit of an in-joke for Angband players used to slime molds being a food source. Basically, there are slime mold monsters as well as slime mold food, and eating a slime mold (or drinking slime mold juice) will have the effect of a random potion. You might get lucky, as you did, but you might have got the Potion of Death or Potion of Detonations effect and died. Basically, it's not safe to eat slime molds or drink their juice.

                          Got a special feeling at the bottom of the sewers but found neither unique nor artifact.
                          Unique monsters don't give you a special feeling. An artifact will always give you a special feeling and a vault/pit will sometimes give you one (the chance varies depending on depth - if you were still in a sewer then a vault/pit would be pretty much guaranteed to give you one).

                          Comment

                          • wobbly
                            Prophet
                            • May 2012
                            • 2627

                            #28
                            Windows 7 Nividia. I'm not that surprised it's not coded to do this. I imagine other variants aren't programed to start iTunes playing on exit. Yet if iTunes is open in the background and I quit it starts playing. Haven't tried with Cth but the rest all do it

                            Comment

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