00:08:10 -!- svendre_ is now known as svendre 00:34:26 Allies can't be spawned on traps 13https://crawl.develz.org/mantis/view.php?id=11883 by CanOfWorms 00:41:38 03gammafunk02 07* 0.24-a0-116-gd3e027d: Don't let vampirism drain temporary monsters (blorx1) 10(85 minutes ago, 5 files, 36+ 14-) 13https://github.com/crawl/crawl/commit/d3e027da1558 00:41:38 03gammafunk02 07* 0.24-a0-117-g53b5160: Tidy up a monster class method 10(37 minutes ago, 1 file, 18+ 6-) 13https://github.com/crawl/crawl/commit/53b51606c3e9 01:07:05 Unstable branch on crawl.kelbi.org updated to: 0.24-a0-117-g53b51606c3 (34) 01:28:22 Unstable branch on crawl.develz.org updated to: 0.24-a0-117-g53b5160 (34) 01:59:37 Windows builds of master branch on crawl.develz.org updated to: 0.24-a0-117-g53b5160 03:00:05 Monster database of master branch on crawl.develz.org updated to: 0.24-a0-117-g53b5160 03:20:59 D:1 monsters differ between Webtiles and Windows offline tiles on the same seed 13https://crawl.develz.org/mantis/view.php?id=11884 by NormalPerson7 03:30:50 Fork (bcrawl) on crawl.kelbi.org updated to: 0.23-a0-1729-gdd55c3d1e3 03:42:14 Ozocubu's Refrigeration's damage is one third of what it used to be 13https://crawl.develz.org/mantis/view.php?id=11885 by NormalPerson7 03:44:58 FWIW it works here with pyyaml 3.11 (which dates from 2014, so I suspect your problem is not "not new enough") 03:45:06 ECHAN 10:02:43 !tell gammafunk critical update: did a second gauntlet, had a great time, didn't die this time. I ended up approaching it pretty differently than last time, but still felt challenged. Mino was still scary. 10:02:44 Lasty: OK, I'll let gammafunk know. 12:27:16 Unstable branch on crawl.akrasiac.org updated to: 0.24-a0-117-g53b5160 (34) 13:02:50 great, the seeding bug NP7 just found seems to be specific to cross-compiled builds 13:02:58 that'll make it fun to track down 13:08:14 also, the very same seed demonstrates that any randomization in the des cache is potentially bad 13:13:33 so I guess I have two options: 1. protect every single random call in des with is_validating, or disable randomness entirely during validation 13:14:04 *or 2. 13:25:11 does validation determine what tags the vault will have? 13:25:41 yes, but I've already dealt with all the tags case 13:25:43 s 13:25:44 nice 13:26:21 I had thought other stuff wouldn't matter, but I think any additive tag potentially does; the one that comes up here is onia_arrival_zoo_common 13:26:25 yeah seems like preventing randomization during validation would be ok if there's nothing about that necessary for setting up vault selection 13:26:37 !vault onia_arrival_zoo_common 13:26:38 1/1. https://github.com/crawl/crawl/blob/master/crawl-ref/source/dat/des/arrival/small.des#L2436 13:27:24 right, that looks like typicall placement time selection stuff 13:27:24 if it rolls the 1/10 thing seeds that try to place it can be completely different 13:27:26 which we definitely want to allow that randomization to happen at placement time 13:27:31 but don't need it before then 13:27:33 yeah 13:28:02 oh that's the infamous "Crawl" vault 13:28:06 yep 13:28:15 this is the seed that broke manman's streak, incidentally 13:28:54 well in terms of arrival vault terrain it's fairly typical 13:29:07 NP7 noticed it's different on windows cross-compiling than on servers (or linux/os x generally I think, and on windows when I've built it myself) 13:29:09 that vault is bad for other reasons, but obviously we need to allow the kind of randomization it's doing there 13:30:04 yeah, what I mean is that if it rolls "crawl" during des validation, the behavior when placing it is completely different regardless of the reroll 13:30:20 well, maybe not 13:30:21 hm 13:30:35 I might have tested for this wrong 13:31:10 anyways, I still have no clue why the cross-compiled builds do something different 13:35:30 ok yeah, this des cache randomization worry was a false alarm, I was just making a stupid mistake in my testing 16:28:25 advil: not sure if you've seen this, but this is an amazing bug: https://cdn.discordapp.com/attachments/325651923514556417/546805049070845993/unknown.png 16:46:53 WHAT 16:53:02 I'm OK with that 16:59:20 hah yep 16:59:42 it's actually been around for a little while 17:01:28 https://crawl.develz.org/mantis/view.php?id=11615 17:02:02 I was able to replicate it at one point, but then I took a break from crawl for a few months and haven't gotten back to it 17:02:26 yeah, at least I put some replication instructions into that issue 17:02:40 gonna form part of the basis of my upcoming crawl-integrated twitch bot 17:03:12 donate bits to send buff or debuffs to the player, debuffs include god wrath, xom effects, zot trap effects, forced ascii mode 17:03:34 Thank you, SLEX 17:04:07 they actually have something like said bot for super mario world and some other classic console roms 17:05:23 advil: I think I understand what is causing some identical qw runs to diverge. Shaft traps can change the order of generation 17:05:27 ah, that'll do it 17:05:59 qw got more deterministic with these changes but there probably are still things that draw on the gameply rng that aren't stable 17:06:33 I wonder if traps could use the some sort of consistent hashing so that the squares which are trapped can become deterministic 17:07:07 ...I half said "like magic mapping" and half left the question open 17:07:41 it's doable, I'm not actually sure I would want that to be stable across instances of a seed though 17:09:35 -!- slphil1 is now known as slphil 17:09:55 well, having randtrap location be stable if the sequence of actions is identical seems reasonable (I just know I haven't achieved that because I've ignored trying to work on random calls in things that don't have to do with levelgen) 17:11:13 yeah. It took me a while for "trap reform" to connect with "rng" while staring at these morgues 17:11:39 the good news is I ran qw across seeds 1-1000 and the win rate was identical despite this. It's just the specific won games changed :D 17:11:53 "score_mean": 362420, 17:11:55 "score_median": 86151, 17:11:57 vs 17:11:59 "score_mean": 362251, 17:12:01 "score_median": 87579, 17:12:22 if you run it with pregen, that should avoid all of this (and take not much more time in aggregate) 17:14:39 what was most impressive to me about the xp bug is how *good* the map display looks in that popup 17:15:04 compared to glyphs mode 17:21:39 average run takes about 6mins, so pregen would slow down tests by a reasonable amount sadly 17:27:50 well, it's just frontloading levelgen that would mostly still happen 17:28:07 you could disable e.g. hells and tomb if you wanted, but those aren't much time 17:29:04 e.g. generating depths levels takes the same amount of time whether it's done up front or one by one 17:30:05 jfc trying to replicate this seeding bug is really annoying, it takes me like 20 minutes to do the cross-compiled build and I've gotten it wrong how to get a cross-compiled debug build at least three times so far 17:30:55 well, they have all replicated the bug, but with no new info 17:37:48 advil: curious, why does it take 20 minutes? do you not do native cross-compilation from OS X? 17:37:52 using mingw 17:38:08 or are you building from a VM with msys2 or something like that? 17:57:36 I'm building in a docker container, I haven't been able to get it to work natively on os x 17:58:03 pretty sure it's not impossible but needs some makefile tweaking 17:58:34 I can't actually replicate this bug when building directly in msys2 in a windows vm, only by cross-compiling 18:03:19 oh, that's interesting to know; I sort of assumed if you had mingw set up on os x that crosscompilation would work 18:06:09 I think it's because the build system needs to use pkg-config to build the tilegen util when cross-compiling, but os x for historical reasons never uses pkg-config 18:06:57 so I could either change it to allow pkg-config, or change it to build a non-cross-compiled version of contrib libpng for tilegen, but at that point it seemed easier just to do it in a container 18:07:50 in retrospect that was maybe wrong, but too late 18:08:18 anyways, 1 episode of dragon prince season 2 = 1 cross-compiled build 18:15:11 Lasty: thanks for the feedback re: gauntlets, glad you found it fun 18:17:14 gammafunk: np. I think they're looking pretty solid. Interesting choices, some good layouts, a good level of threat / terrain that can be managed but usually not without cost. 18:22:50 Unstable branch on underhound.eu updated to: 0.24-a0-117-g53b51606c3 (34) 18:24:24 gammafunk: how're you feeling about them? 18:25:08 definitely like it's a success; one direction I might go in is to not have the map fully revealed, but to have them so that there are sections 18:25:08 at each section you get some kind of vault choice + exit 18:25:18 so you can't fully see ahead 18:26:12 if you don't reveal the map and don't have exits when you do progressively reveal sections, you have a problem 18:26:22 in that it's impossible to know the worst case you'll face 18:26:48 which is a problem in terms of spoilers and not giving weaker chars a chance to try the portal 18:26:59 but if you have an exit at each section that's not such an issue 18:27:01 That's not necessarily a problem if it's easy enough to back out 18:27:06 yeah 18:27:24 elliptic suggested the portal would be better if it were structured this way 18:27:37 and he's probably right about about that 18:27:51 It would fight the current "check all vaults and loot and think carefully" piece that you get now 18:27:52 but other than maybe trying that at some point (would take some significant work), pretty happy with it 18:27:54 which can be slow 18:27:58 yes 18:28:48 I think it's in a good state that's better than most other portals, so maybe some other portals could get some attention (and of course crawl has lots of other areas to work on) 18:28:58 would love to see some species reform for some of our 28 species 18:29:06 as well as some more god reforms (I'm looking at you, Fedhas) 18:29:18 yeah, that's fair 18:29:49 Clearly the answer to species reform is to merge all the simple species together, all the intermediate ones together, etc. 18:29:55 three is more than even 18:29:55 good idea 18:30:35 Weak Slime / Squishy Slime / Tough Slime / The Royal Jelly 18:30:40 the 4 crawl species 18:31:30 I do have a kind of grand vision for how I'd like branches to have some meaningful gameplay differentiation in terms of unique branch mechanics and kind of pair that will general shortening of the game 18:31:43 smaller levels with a lot less trivial fights and popcorn monsters 18:31:57 but that's a really big and general idea 18:32:40 that definitely seems like a good ambition 18:37:22 I still want to fix ranged combat and luring, but lately I've wanted to just refactor stuff. Like moving damage 100% into an object. 21:49:59 what even 21:50:02 volatile union luai_Cast u; u.l_d = (d) + 6755399441055744.0; (i) = u.l_l; 21:50:15 I'm pleased to say that that is *not* crawlcode 22:02:21 what's up with (d) 22:09:46 it's in a macro def 22:10:05 #define lua_number2int(i,d) \ 22:10:05 { volatile union luai_Cast u; u.l_d = (d) + 6755399441055744.0; (i) = u.l_l; } 22:10:34 but you didn't guess that *that* is what it's doing 22:11:10 <|amethyst> I also like that this is just a block, not a do-while(0) 22:11:11 this is because some lua hacker, at some point in the past, deemed casting to int too slow (and, presumably, safe) 22:11:45 the bug I am chasing down turns out to be because cross-compiled builds (and only those) use this particular macro, everything else is falling back on casting 22:14:11 |amethyst I think that's just because it's called from exactly one place where that is safe 22:14:33 this is in luaconf.h so it's intended to be replacable in case you come up with something better(??) 22:15:20 using a block would be unsafe sometimes? 22:16:08 I'm guessing the whole i vs u business is some kind of lua stack thing 22:16:41 https://stackoverflow.com/questions/1067226/c-multi-line-macro-do-while0-vs-scope-block 22:17:59 gah, right 22:20:34 if I'm right (doing the final check now) I think I might just remove this stuff from being even possible in the contribs 22:20:51 the problem (95% sure) is that the different cast methods they provide have different rounding behaviors 22:22:13 which of course can have major butterfly-style effects on levelgen from stuff like layout_rooms, which passes all sorts of fractional numbers back to c++ code 22:23:11 I wonder if this all evens out or if this has led to some qualitative differences in how these layouts play out in cross-compiled windows builds vs other platforms 22:24:24 heh, sort of thing that we'd never really know unless someone was playing on windows and online and *really* paid attention, I guess 22:26:15 yeah, I have no idea if it would even be noticeable 22:26:47 the two layout_rooms that result are structurally similar, I think the "room" parts are the same in fact, but the paths are quite different 22:27:08 both look like "normal" crawl levels to me though 22:28:16 !time 22:28:18 Time: Feb 18, 2019, 03:28:17 AM, UTC. The 2019 0.23 tournament ends in 6 days, 16 hours, 31 minutes and 42 seconds. 22:28:52 wow so crawl will need to fork its own lua and not use the system one to fix this? 22:29:07 uh good point I guess people might use lua from pkg-config? 22:29:24 it might not be an issue except for some windows builds 22:29:43 hrm 22:29:45 looks like cwz being down causes the tournament scripts to not continue processing 22:29:51 tbh I haven't figured out why it's triggered on cross-compiling but not anything else 22:30:04 (we already do fork our own lua though) 22:30:16 that needs to be changed to just have it continue processing the sources that do work 22:30:45 might it happens that cwz has been down for an hour so no updates 22:30:55 I guess I'll go to a one-off without cwz enabled 22:32:07 yep, it's exactly this rounding behavior 22:35:08 can anyone who knows about gcc provide any guesses as to why the checks at the following link seems to be true specifically on the cross-compiled builds right now? https://github.com/crawl/crawl-lua/blob/master/src/luaconf.h#L557 22:35:15 as compared to building directly in msys2 22:36:19 or anything else for that matter, I have no clue when stuff like __i386__ is or isn't set 22:39:25 <|amethyst> Do the native msys2 builds use 64-bit? 22:39:42 I thought both do but I'm also not 100% sure how to tell 22:39:51 I'm more sure that the native ones do 22:40:36 <|amethyst> what arch is used for the CROSSHOST? 22:40:42 CROSSHOST=i686-w64-mingw32 22:41:28 <|amethyst> that's 32-bit (i686) 22:42:20 <|amethyst> and also I guess i686 is old enough it includes pre-Pentium 4 archs that don't have SSE2 22:43:00 oh yeah the native build is using x86_64-w64-mingw32 22:43:10 <|amethyst> which would mean that one of those __i386__ things is defined (32-bit Intel architecture), and __SSE2__ isn't defined 22:43:18 <|amethyst> which would trigger that #if 22:43:28 yeah, I see, I had just missed that those were in fact different 22:45:41 we specifically do 32-bit builds for our official once since 32-bit windows tablets and such are still in wide use 22:45:51 I switched to x86_64-w64-mingw32 only for one release and people complained 22:46:22 hm ok doesn't seem like there's an easy way to do this for non-contribs builds (for contribs builds it's easy, and that covers all windows builds) 22:46:34 <|amethyst> could do -msse2 maybe 22:46:38 ah 22:46:42 we used to do both 32-bit and 64-bit but it's just such a hassle since it's twice the number of builds and people don't care about any performance difference 22:46:58 <|amethyst> assuming none of these tables use something older than Pentium M or Pentium 4 22:47:05 <|amethyst> s/bles/blets/ 22:49:42 <|amethyst> you might also need -mfpmath=sse 22:50:23 <|amethyst> probably not to get that #if to trigger, but not doing so might result in different behaviour between x86 and x86_64? 22:50:38 ugh 22:52:26 <|amethyst> AIUI the 387, which is what gcc uses on non-Darwin x86-32 targets, uses 80 bits for intermediate results when working with doubles, while sse2 is 64-bit all the way through 22:53:36 it seems like if I just change the contrib to remove that #ifdef, that leaves in the worst case whoever is still doing 32bit builds on linux 22:53:56 we also probably want to prevent whatever tf the msvc branch there is doing, too 22:54:17 <|amethyst> debian etc do still do 32-bit linux Crawl builds 22:54:19 <|amethyst> hm 22:55:13 we actually do them ourselves! 22:55:31 I do both 32-bit and 64-bit debs with every release for the cdo repo 22:55:46 by we I guess I mean me, but yeah we do make those 22:56:18 cdo also does regular trunk debs still I think, don't know if it does 32-bit or what though 22:57:33 ah, perhaps we don't 22:57:38 last ones I see are 0.15 22:57:49 but for those I do see both archs 23:02:11 ok, reading the docs I think I'd be comfortable adding `-mfpmath=sse -msse2` 23:02:20 sse2 is from 2000 23:02:29 looks like http://crawl.newtzie.com/ stopped doing those android tiles builds back in june 23:02:44 maybe something broke because we didn't update it 23:02:46 I think they broke and no one fixed them 23:02:53 with the sdl2 update iirc 23:03:03 would make sense 23:03:13 he came in channel and said something, but there wasn't much we could do ourselves 23:04:16 in fact, not using x87 could cause some seeding issues in and of itself, to the extend we use floating point math in levelgen 23:04:25 *extent 23:04:33 er 23:04:39 *using x87 23:05:46 while you're talking makefile issues, it would be nice if AUTO_OPT to set -march=native worked or was removed 23:06:05 (immediately below the check for that variable, the -march=native value is overridden with a CFOPTIMIZE := -O2 -parallel