Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  
Pages: 1 2 [3] 4

Author Topic: Dwarf Fortress 0.44.09 Released  (Read 76414 times)

lethosor

  • Bay Watcher
    • View Profile
Re: Dwarf Fortress 0.44.09 Released
« Reply #30 on: April 14, 2018, 06:10:49 am »

Why does SDL vs other stuff, cause unique crashes and effect the seed?
Crashes due to SDL can only be caused by SDL. SDL shouldn't affect anything gameplay-related, though. Any specific issues you're referring to?
Logged
DFHack - Dwarf Manipulator (Lua) - DF Wiki talk

There was a typo in the siegers' campfire code. When the fires went out, so did the game.

Shonai_Dweller

  • Bay Watcher
    • View Profile
Re: Dwarf Fortress 0.44.09 Released
« Reply #31 on: April 14, 2018, 06:47:25 am »

Why does SDL vs other stuff, cause unique crashes and effect the seed?
Crashes due to SDL can only be caused by SDL. SDL shouldn't affect anything gameplay-related, though. Any specific issues you're referring to?
Was wondering about that too.
Toady from page 1 of this thread:
Quote
Ran this through in legacy and it ended successfully at year 177 (megabeast percentage?)  In the SDL version, it crashed at year 156.

Tried it myself. World crashes in sdl, not in legacy. But the issue is a worldgen one (faliure to place religious relic due to lack of temple) so it must be using the seed slightly differently.
« Last Edit: April 14, 2018, 07:24:17 am by Shonai_Dweller »
Logged

Shonai_Dweller

  • Bay Watcher
    • View Profile
Re: Dwarf Fortress 0.44.09 Released
« Reply #32 on: April 14, 2018, 06:50:50 am »

I, yeah, when I did the fix, I noticed that any destroyed world gen temple that then gets a relic attempt from an hf adherent to that religion attempting to gift an artifact would cause the crash (so hopefully this explains other world gen crashes.)  At that point I decided not to revert and investigate the details, since it would take some hours to run the gen several times.
Thanks for looking at that! Good to know the crash is fixed (just got another one, hopefully same reason).

Might be being enhanced by my atheist minotaurs being constantly at war with humans, destroying their temples and taking over their towns leaving a bunch of homeless priests behind them.
Logged

Toady One

  • The Great
    • View Profile
    • http://www.bay12games.com
Re: Dwarf Fortress 0.44.09 Released
« Reply #33 on: April 14, 2018, 10:56:23 pm »

It was a crash based on the improper use of a null pointer, so while not an expert, I imagine stuff can start to get platform-dependent there?  Windows sometimes doesn't care if you run out of bounds on arrays as well, whereas Linux tends to die (see the recent Linux-only freeze from army battles.)

I vaguely remember some years back also having a compiler optimization change the behavior of world gen based on the platform by changing whether or not a call to the RNG happened (whether that's supposed to happen spec-wise or not), which might still happen as far as I know...  I really don't remember the details though or what it ended up being, if anything.  Correcting for that kind of thing would be too time-consuming, since it involves finding random patches of code over and over.
Logged
The Toad, a Natural Resource:  Preserve yours today!

lethosor

  • Bay Watcher
    • View Profile
Re: Dwarf Fortress 0.44.09 Released
« Reply #34 on: April 15, 2018, 12:56:20 am »

Tried it myself. World crashes in sdl, not in legacy. But the issue is a worldgen one (faliure to place religious relic due to lack of temple) so it must be using the seed slightly differently.
Ah, thanks. Generally, dereferencing null pointers should crash, but if it's an uninitialized pointer, it would be more undefined behavior. While that's usually unpredictable, it can tend to be more consistent on the same OS/build/etc., and the number of different libraries loaded in the SDL vs. legacy builds could affect uninitialized memory contents, for example. I'm fairly sure that the core DF code (at least worldgen stuff) is the same across all builds, so SDL isn't directly responsible for worldgen crashes, but it can indirectly affect them.

As for RNG stuff, the only (vague) suggestions I have are to make sure you're not calling RNG functions more than once between sequence points, and make sure calls aren't getting inlined (probably not an issue if function bodies aren't in headers, but not sure about MSVC).

Anyway, good to hear about crash fixes, stress fixes, etc. as usual.
Logged
DFHack - Dwarf Manipulator (Lua) - DF Wiki talk

There was a typo in the siegers' campfire code. When the fires went out, so did the game.

Toady One

  • The Great
    • View Profile
    • http://www.bay12games.com
Re: Dwarf Fortress 0.44.09 Released
« Reply #35 on: April 15, 2018, 03:36:08 am »

Hmm, I wonder how many times I run afoul of the + operator there.  Fortunately I think it's mostly average like random(10)+random(10), where the call order is undetermined but also doesn't matter.  But it's quite possibly I have some more involved functions where it is adding something together up top.  I suppose at some point in the future I can see if my list of ambiguity issues is low enough to fix and try to figure out what my most common bad patterns are.
Logged
The Toad, a Natural Resource:  Preserve yours today!

Starver

  • Bay Watcher
    • View Profile
Re: Dwarf Fortress 0.44.09 Released
« Reply #36 on: April 15, 2018, 04:48:37 am »

I presume (for seeded-PRNG repeatability) your random(10) call(s) work off of an evolving data element that provides the basis of each chaotic-but-deterministic leap around the RNG-space (maybe a Linear Feedback Shift Register, at its heart, either of your own deliberate devising or through a library).

As such, you probably have to be sure that maybe-concurrent calls to the code that contains the stateful memory item don't (say) copy the value, transform it and then copy it back for the 'next' call, without a safeguard against interleaving these atomic operations. (Or half-n-halfing the write-back of the multibyte changed state, sending you off into a totally different part of the long-cycle stream of 'random' numbers, or even onto the 'null-value' that doesn't evolve and normally is not visited.)

That it doesn't crop up often enough to totally break the premise of the same-seed-same-result aim makes me think that you're protected by compiler/processor sanity regarding how such function calls get processed, perhaps the homegrown/library function deliberately introducing what are effectively sequence-stops and buffers against such weirdness.

Still, occasional flightiness might arise from happenstance unintended parallelisms, especially if different processing architectures get involved. Horrible to debug that sort of thing. Imma gonna assume I'm using my imagination too much, and that it isn't actually a problem at all. I'm sure you shouldn't worry about it. Much.
Logged

Orkel

  • Bay Watcher
    • View Profile
Re: Dwarf Fortress 0.44.09 Released
« Reply #37 on: April 15, 2018, 12:11:48 pm »

Regarding the new memory system, as the devlog says, this is going to require player testing in "long" forts that Toady doesn't have the time to do.

I am expecting that 10-20 year old forts will end up having either too many negative memories or too many positive memories, causing either unavoidable tantrum spirals overtime, or the situation we already have now (nobody ends up sad). Getting the balance right in this is going to be really hard because of how long it will take to test (my record fort is 15 years old and that's weeks of intermittent play for me), and how different every fort is and how many combinations there can be for memories to form.

It's time for Science!
Logged
Quote from: madjoe5
Dwarf Fortress: The game in which people place abducted children in a furnace to see what happens.

thvaz

  • Bay Watcher
    • View Profile
Re: Dwarf Fortress 0.44.09 Released
« Reply #38 on: April 15, 2018, 01:46:00 pm »

Toady said nothing about it, but as he worked on "Return of minor disruptive behavior and arrests" I hope he managed to consider bar fights as offenses worth of prison time.
Logged

Orkel

  • Bay Watcher
    • View Profile
Re: Dwarf Fortress 0.44.09 Released
« Reply #39 on: April 15, 2018, 02:02:46 pm »

Toady said nothing about it, but as he worked on "Return of minor disruptive behavior and arrests" I hope he managed to consider bar fights as offenses worth of prison time.

Although that would be cool, I'd rather he prioritized fixing loyalty cascades (or vengeance-cascades when a friend's friend joins the brawl and it spirals out of control) caused by bar brawls, and nerf the "force transfer" damage so not every bar brawl ends up with broken joints, bones, and dead dwarves from snapped necks after a child punched someone's toe or nose. "Non-lethal" combat is kinda messed up because of the force transfer being so immensely powerful.

Probably sometime in the next months before Myth update work begins, hopefully.
« Last Edit: April 15, 2018, 02:10:41 pm by Orkel »
Logged
Quote from: madjoe5
Dwarf Fortress: The game in which people place abducted children in a furnace to see what happens.

Toady One

  • The Great
    • View Profile
    • http://www.bay12games.com
Re: Dwarf Fortress 0.44.09 Released
« Reply #40 on: April 15, 2018, 02:17:10 pm »

Toady said nothing about it, but as he worked on "Return of minor disruptive behavior and arrests" I hope he managed to consider bar fights as offenses worth of prison time.

Ah, yes, changed the "erratic behavior" completely so that it aligns with tantrums in dwarves that like to fight, so all the criminal code is the same.  What I still need to do is change tantrums fistfights to be more two-sided, optionally, based on the reaction of the victim (do they like to fight?  are they drunk?  etc.)  Right now they are all one-sided attacks again.  I should get to it before release, and it'll also impact regular tantrum fights.
Logged
The Toad, a Natural Resource:  Preserve yours today!

thvaz

  • Bay Watcher
    • View Profile
Re: Dwarf Fortress 0.44.09 Released
« Reply #41 on: April 15, 2018, 03:22:58 pm »

Toady said nothing about it, but as he worked on "Return of minor disruptive behavior and arrests" I hope he managed to consider bar fights as offenses worth of prison time.

Ah, yes, changed the "erratic behavior" completely so that it aligns with tantrums in dwarves that like to fight, so all the criminal code is the same.  What I still need to do is change tantrums fistfights to be more two-sided, optionally, based on the reaction of the victim (do they like to fight?  are they drunk?  etc.)  Right now they are all one-sided attacks again.  I should get to it before release, and it'll also impact regular tantrum fights.

Cool, very nice. Thanks! I suppose visitors could be arrested also? They sometimes start brawls at the taverns.

Toady said nothing about it, but as he worked on "Return of minor disruptive behavior and arrests" I hope he managed to consider bar fights as offenses worth of prison time.

Although that would be cool, I'd rather he prioritized fixing loyalty cascades (or vengeance-cascades when a friend's friend joins the brawl and it spirals out of control) caused by bar brawls, and nerf the "force transfer" damage so not every bar brawl ends up with broken joints, bones, and dead dwarves from snapped necks after a child punched someone's toe or nose. "Non-lethal" combat is kinda messed up because of the force transfer being so immensely powerful.

Probably sometime in the next months before Myth update work begins, hopefully.

Yeah, the force transfer thing is a bit off. Though I like the fact it nerfed armor a lot. Some balance is needed, though. What I would like to see is that civilians would run away from dangers like sieges and monsters again.
Logged

strainer

  • Bay Watcher
  • Goatherd
    • View Profile
Re: Dwarf Fortress 0.44.09 Released
« Reply #42 on: April 15, 2018, 08:49:45 pm »

The development of the stress mechanic is especially interesting and remarkable that it exists along side a well working 'focus' system.

I have been searching for good names to label the score that is the 'stress counter' in condensed dwarf summaries, but one that is a glass-half-full and more lyrical word than "stress" to play with.
I called it "keep" while it seemed like it was a mostly just a historic tally of experience. Now it is being enhanced and made more effective I am thinking of words like spirit, beard, stomp, fizz, pep ... still searching, there might be a gem of word...
Logged
Klok the Kloker !

Shonai_Dweller

  • Bay Watcher
    • View Profile
Re: Dwarf Fortress 0.44.09 Released
« Reply #43 on: April 15, 2018, 09:27:13 pm »

The development of the stress mechanic is especially interesting and remarkable that it exists along side a well working 'focus' system.

I have been searching for good names to label the score that is the 'stress counter' in condensed dwarf summaries, but one that is a glass-half-full and more lyrical word than "stress" to play with.
I called it "keep" while it seemed like it was a mostly just a historic tally of experience. Now it is being enhanced and made more effective I am thinking of words like spirit, beard, stomp, fizz, pep ... still searching, there might be a gem of word...
WAY.
(To enlightenment, insanity, and all those tragedies and joyous interludes in between that a dorf must pass through in their brief mortal lives).
Logged

FantasticDorf

  • Bay Watcher
    • View Profile
Re: Dwarf Fortress 0.44.09 Released
« Reply #44 on: April 16, 2018, 07:14:26 am »

Ah, yes, changed the "erratic behavior" completely so that it aligns with tantrums in dwarves that like to fight, so all the criminal code is the same.  What I still need to do is change tantrums fistfights to be more two-sided, optionally, based on the reaction of the victim (do they like to fight?  are they drunk?  etc.)  Right now they are all one-sided attacks again.  I should get to it before release, and it'll also impact regular tantrum fights.

I would still think that the infamous violence that fortress guards have with punishment beatings in past versions may be too extreme now the propensity to commit criminal behaviour may be moved back into the game to interact with the new lethality systems, have you had a opportunity to test whether dwarven fortress guards carry out the correct lethality punishments to bruise but *ideally* not kill their opponent?

(not that there is a shortage of volunteering players who will investigate as many aspects of the build as possible to report back on)

I do hope that working prisons helps drive towards other prominent development goals by getting bearings on how the old system adjusts/breaks new mechanics.

Spoiler (click to show/hide)
« Last Edit: April 16, 2018, 07:19:52 am by FantasticDorf »
Logged
Pages: 1 2 [3] 4