22 May 2011 development release

Collapse
X
 
  • Time
  • Show
Clear All
new posts

  • d_m
    replied
    Originally posted by Derakon
    Sounds like you ought to be able to fix this by treating icky tiles and all non-border permanent walls as passable for your connectivity checker.
    It turns out it was a slight bit more complicated than I thought.

    The core function (join_region) isn't trying to connect to the vault... but instead trying to connect regions on both sides of the vault. It was first written for use with caverns (which don't currently have vaults) and didn't realize that it had to go around permanent walls/icky squares.

    This is now fixed in staging (I confirmed it by generating vaults until I found one with regions on both sides and a weird tunnel going around the vault to connect them) closing ticket #1455.

    Leave a comment:


  • Derakon
    replied
    This was with the most recent version. I went ahead and wizard-scummed until I got another vault showing the behavior. This time it's a missing column, and it does indeed coincide with a corridor:



    Sounds like you ought to be able to fix this by treating icky tiles and all non-border permanent walls as passable for your connectivity checker.

    Leave a comment:


  • d_m
    replied
    Originally posted by Derakon
    Vaults seem to periodically be missing entire rows of blocks, replaced by empty space. E.g. I found a Bubbles vault that was missing its top row, and I know I've found vaults missing rows through the middle. Don't think I've seen any vaults missing columns. It's actually a bit interesting since it breaks up the flow of the vault, but it's still a bug.
    This would be the fault of the function ensure_connectedness() which I've added. It's supposed to ignore "icky" squares to prevent vaults from being mauled, but I definitely believe that it could be messing up somehow.

    Do you remember which version of the game generated that level (I assume it was pretty recent)? Also, do you remember how the vault connected with the result of the level? Usually there is a passage leading to some random part of the GV and then the player has to tunnel into it. I've been trying to replicate this without success (so far) so I'm curious if you remember any more details (or maybe even have a screenshot)?

    Thanks for your feedback!

    EDIT: Of course, after generating 15 Bubbles vaults that are fine (and posting this) I find one that has a column removed! So... clearly I *can* reproduce this. Sorry for the noise

    Leave a comment:


  • Magnate
    replied
    Originally posted by Derakon
    Sounds very interesting though, and I'd love to be able to query that database, maybe make some plots tracking stats against dungeon level and suchlike.
    When I've created it, I'll make it public. It'll be a slow download, but it won't go anywhere. In fact instead of ppl needing to download it I'll put up a web interface for querying it (with some help from myshkin and d_m!).
    Any plans to have a version that uses randarts instead? I know the randart generator is expensive to run, though. Given that you're just tracking the artifact index number, maybe it'd be possible to generate a set of randarts, use them as the artifact set for a series of runs (maybe only a few hundred), save stats, generate a new set of randarts, etc. The goal would be to see how randarts track compared to standarts on various metrics, if there's something they consistently do better or worse in (e.g. off-weapon damage boosts, elemental immunities, pConf...).

    Even without randarts I'm sure this will provide much interesting data. Best of luck!
    It can already deal with randarts via the -r subopt to -mstats. The problem is that the current randart generator is dog slow, and slows down the runs by a factor of 10-20. (You can still do ~1000 runs in about six hours though.) This is on my to-do list for 3.4 though.

    But no, the idea is not to sim randarts specifically. Your goal can be achieved by doing the runs with randarts and comparing the total availability of OF_FOO with the total availability using standarts. There is no need to compare standarts directly with randarts without looking at what's actually available in the dungeon, IMO. If there is, it would be much quicker and simpler to write a dedicated sim.

    It would be quite easy to set a number of runs between each new set of randarts (it currently defaults to 1, which simulates real games), but the problem would be writing out the intermediate data.

    Let's see how we get on.

    Leave a comment:


  • bulian
    replied
    A million seems like a nice round number, though I wonder how your distributions will change as you increase the number of iterations. You might want to check your results periodically, by perhaps looking at the distribution of a relatively common object, say !CCW, and a relatively rare object, say BoS, and see at what number of iterations the distributions stop changing shape. You may find that you have sufficient data after 10,000 or 100,000 simulations, which could save yourself some time and some money on your electric bill.

    Leave a comment:


  • Derakon
    replied
    Yowza. I recommend saving results files to disk every hour or so; wouldn't want to get to iteration 999000 only to have it crash!

    Sounds very interesting though, and I'd love to be able to query that database, maybe make some plots tracking stats against dungeon level and suchlike.

    Any plans to have a version that uses randarts instead? I know the randart generator is expensive to run, though. Given that you're just tracking the artifact index number, maybe it'd be possible to generate a set of randarts, use them as the artifact set for a series of runs (maybe only a few hundred), save stats, generate a new set of randarts, etc. The goal would be to see how randarts track compared to standarts on various metrics, if there's something they consistently do better or worse in (e.g. off-weapon damage boosts, elemental immunities, pConf...).

    Even without randarts I'm sure this will provide much interesting data. Best of luck!

    Leave a comment:


  • Magnate
    replied
    Originally posted by jens
    So, how is the stat generation coming along? If you can generate stats including 'mon_rating' and 'obj_rating' for each level, and send me a spreadsheet with that data, I wouldn't mind tinkering with some formulas for generating mon-/obj-feelings. Unless you are sure the current formulas are ideal that is ;-)

    Another thing I have wanted a long time, that I don't know if you are doing:
    Stats for how an individual (ego) item plays out depending on generating lvl. Something like generating 100 specimens of a specified (ego) item at each dlvl were it can be generated. That way it would be easier to tinker with the ego_items and balance them according to depth etc. Useful when using more complicated randomizer functions including the M-function.
    Thanks for your interest. The stats function is written, and is successfully running in the thousands of sims - we had to fix some memory leaks and still have some to fix before we can run millions. It takes 1.2GB of RAM to run (which is three orders of magnitude less than when I first wrote it and wondered why it crashed), and captures almost every scrap of data:

    On every level it captures:
    - every level feeling
    - every gold drop (with its origin)
    - every monster generated
    - every artifact generated (with its origin - artifact index only, i.e. for tracking standarts)
    - every consumable generated (with origin)
    - every wearable generated (with origin), broken down into
    -- object kind
    -- dice (if any)
    -- plusses to-hit and to-dam
    -- total AC
    -- ego index (if any)
    -- flags
    -- pvals

    The only thing it doesn't yet capture is the generation of pits and vaults, as these require some more serious adjusting of generate.c, but this will come later (and will have a negligible impact on the memory requirement).

    This will give you an overall picture of what is available in the game. It will *not* be useful for simulating 1000 of a specific ego type or 1000 sets of randarts, but it is easy to write standalone sims for these. It *will* tell you that if you adjust the rarity of a particular object/ego/artifact, what the *overall* impact of that change is on the availability of stuff like +dam, resistances, brands, +con etc. etc. So we can assess whole bunches of changes together - like, for example, balancing things for a release ...

    There's a slight snag though. We don't yet have a way to *interrogate* all this data. But we will - myshkin is working on it right now. It will be a ~2GB sqlite database, which we'll then be able to query with any sqlite tools we want (draw graphs etc.). My intention is to do a million sims once 3.3 is out, and then keep that as a definitive reference against which 3.4's changes are measured. My best PC does about one run a second, so a million sims would take about 12 days (if we've fixed all the memory leaks).

    Leave a comment:


  • jens
    replied
    Originally posted by Magnate
    This. Thank you for pointing it out - I had noticed that the monster feelings were far less well distributed than the object feelings, and this is the reason.

    Your third suggestion is good, but further off. I am working with myshkin on some really serious improvements to stats, after which it might be possible.
    So, how is the stat generation coming along? If you can generate stats including 'mon_rating' and 'obj_rating' for each level, and send me a spreadsheet with that data, I wouldn't mind tinkering with some formulas for generating mon-/obj-feelings. Unless you are sure the current formulas are ideal that is ;-)

    Another thing I have wanted a long time, that I don't know if you are doing:
    Stats for how an individual (ego) item plays out depending on generating lvl. Something like generating 100 specimens of a specified (ego) item at each dlvl were it can be generated. That way it would be easier to tinker with the ego_items and balance them according to depth etc. Useful when using more complicated randomizer functions including the M-function.

    Leave a comment:


  • Derakon
    replied
    Originally posted by SSK
    OIC but that requires allowing the other nasties a turn on you... or do they have 0 energy when summoned and you can often double-move them?
    I've described this before a few times, but it doesn't hurt to recap. Fight in a destructed area. All the debris means that a phase door is practically guaranteed to take you out of line of sight of everything. Morgoth is the fastest monster around, plus he can bore through rock, so he'll be the first to catch up with you and thus be readily exposed to Teleport Other. It can help to carry scrolls of Mapping to properly manipulate LOS, since his earthquakes remove your map knowledge.

    This strategy is consistent and works well regardless of what class you are. Warriors and rogues have to rely on ?Destruction; everyone else can cast the spell. I had 7 going into this last fight and burned 6, including one for initial setup; that's significantly worse than usual. I've had fights with Morgoth where I've only used 2.

    Leave a comment:


  • SSK
    replied
    Originally posted by Derakon
    Destruction doesn't hit the entire level.

    (Use Teleport Other on Morgoth first)
    OIC but that requires allowing the other nasties a turn on you... or do they have 0 energy when summoned and you can often double-move them?

    Leave a comment:


  • Derakon
    replied
    Destruction doesn't hit the entire level.



    (Use Teleport Other on Morgoth first)

    Leave a comment:


  • SSK
    replied
    Originally posted by Derakon

    * The difficulty of the fight with Morgoth depends heavily on how often he summons and how many uniques you've left alive...I had to spend 6 Destructions just clearing out summons that time. Scrolls of Destruction are far more dear than potions of *Healing*, at least for me. Never did find any potions of Life...
    I agree about the summons.
    But how do you use *destruction* vs Morgoth's summons? I tried it once and it destructed Morgoth himself after I'd gotten him down to like 50% HP--I was so pissed. So I had to fight him again and I'd already spent my runes of protection (fortunately the character was already too strong anyway and this wasn't a problem). I concluded *destruction* is only useful as an escape when you are in big trouble; when you're winning the fight best to use banish evil--Morgy will find you in due time while the summons usually won't.

    Leave a comment:


  • Derakon
    replied
    The last notes from this character, who has gone on to record my fastest win yet (in 413k game turns).

    * I got a bus error when recording a note. Unfortunately I don't have any repro case or useful log messages, so I doubt there's anything to be done here.

    * In the entire game, I found only two randart hats (one helm, one crown) and one shield. This is out of about 50 artifacts found (20 of which came from a single Bubbles vault...). I put the artifact spoilers up here. Looks like I just got unlucky...especially since this meant I was without telepathy most of the game, only finding it just before fighting Sauron.

    * The first time I went to level 100, Morgoth wasn't generated. I think it was a cavern level, but I'm not certain. The second time (on a normal level) he showed up right off.

    * The difficulty of the fight with Morgoth depends heavily on how often he summons and how many uniques you've left alive...I had to spend 6 Destructions just clearing out summons that time. Scrolls of Destruction are far more dear than potions of *Healing*, at least for me. Never did find any potions of Life...

    I put the character dump up here so you can admire his rings and hammer. Note the bug in Grond's blows description.

    Leave a comment:


  • takkaria
    replied
    * Crossbows and crossbow bolts have exactly the same drop frequency. Is that really intended?
    Nope! Tweaked a bit but I rather suspect not enough. We'll see with stats...

    * Charge-for-charge, scrolls of Mapping are much cheaper than staves of Mapping. The staves' only advantage is that they can be recharged by the magic store.
    Reduced the price of the staff a bit.

    Leave a comment:


  • takkaria
    replied
    Originally posted by kaypy
    "would need much more than a simple tweak" translates roughly as "I'm not holding my breath for this to happen" 8-) Truth be told I hand-hacked the .prf file about 4 nightlys ago and then forgot all about it till the wall-graphics thread turned up...

    Having had a quick glance over that code, it looks decidedly non-trivial...


    I think that's the third "or am I just lucky" report, so no, it looks like this build is just MontyHaulBand

    Edit:

    OK, its hacky and not particularly intuitive, but it works-ish, which is enough for me to be amazed...
    [ATTACH]679[/ATTACH]

    Is there anything other than a global variable I could hook my lighting toggle to?
    Not sure there is right now. It'll do though, I'll get that into 3.3, thanks.

    Leave a comment:

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