00:07:16 @mumra, very cooL! 00:08:15 RE: player you, global initialization is always a bit... iffy 00:08:26 (e.g. initialization order, for example) 00:31:41 Unstable branch on cbro.berotato.org updated to: 0.33-a0-1051-g2fe43ac7d6 (34) 00:45:34 Monster database of master branch on crawl.develz.org updated to: 0.33-a0-1024-g4ee2c7fec9 00:49:30 grug (L1 MfFi) ASSERT(valid_cursor_pos(pos.x, pos.y, region)) in 'libutil.cc' at line 404 failed. (invalid cursor position -36,8 in region 2, should be 1,8 in region 3) (D:1) 04:31:52 Experimental (bcrawl) branch on underhound.eu updated to: 0.23-a0-5261-gd9800d219b 05:30:39 <06m​umra> And here it is ... 05:30:41 <06m​umra> https://cdn.discordapp.com/attachments/747522859361894521/1346822222496399401/image.png?ex=67c99570&is=67c843f0&hm=820bae6106f390b7d4804e31e42a4da76edc9d24cda9ad6f7115662b51efd99a& 05:30:48 <06m​umra> Full tiles build running 100% in browser 05:44:09 -!- Changesite1 is now known as Changesite 05:53:06 <06m​umra> Performance is ... totally playable, but still observably worse than desktop (or even webtiles). But to get it working i had to set a lot of compiler flags that are hurting potential performance. I don't know without benchmarking if it's redrawing that's slow or world updates. Anyway things can be optimised. Webtiles is actually super efficient at redraws as it's only rendering things that changed, but I think desktop is redrawing the 05:53:06 entire screen and UI every redraw. Font rendering might also be super inefficient through the Freetype port instead of just letting the browser render them which browsers are pretty good at generally 🙂 05:56:31 <06m​umra> Oh and nothing is persisted yet, if the browser crashes you lose your whole save. (Anyway the intent isn't for this to be a truly viable way to play the game, although that does seem within reach, it's more a proof of concept to show we could use actual tiles rendering for webtiles) 06:28:05 <09g​ammafunk> pretty cool, nicely done 06:35:09 <09g​ammafunk> I think the only-redraw-changes code in webtiles is a bit buggy though, as there's weird artifacting that still happens sometimes (which probably doesn't happen in tiles) 06:35:50 <09g​ammafunk> but yeah that is a good point about performance, perhaps this would be hard to make snappy without the help of someone who really understood low-level graphics performance issues well? 06:52:58 <06m​umra> So this is kind of the story of why I even started doing this ... for the lichen monsters I wrote this tiles effect where adjacent lichens appear connected so a large group of them merges together. It works by rendering patches at a 50% offset so they overlap two tiles ... loads more efficient than how e.g. tentacles work (those need silly numbers of sprites for all the different combinations, loads of tile flags, etc etc) But when i 06:52:58 looked at replicating this in webtiles i realised it's crazy hard ... as it relies on the zindex to layer things properly across multiple tiles, it'd be really tricky to get this to work at all in webtiles as things just have to be drawn in the right order, combined with this issue that you have to invalidate adjacent tiles due to the artifacting -- but that only works if you're invalidating tiles left or above the current tile, it's used like this 06:52:59 for weapons and pan lords, but it relies on the draw order of the grid; if you want to redraw the opposite tiles you have to invalidate everything in that direction otherwise you'd get pan lord heads disappearing and other glitches. 06:55:18 <06m​umra> Plus, there are other small graphical improvements i've had in mind that'd be fairly straightforward to add in opengl but are suddenly a nightmare if you have to deal with web canvas as well 06:59:24 <06m​umra> Now I've seen this works, it just seems a wayyyy better option than implementing a WebGL dungeon renderer and still having two codebases to maintain. Or, using such a webgl renderer in an Electron app, it still won't be as performant as wasm can be made to be 07:01:47 <06m​umra> (If there was a further plan to replace UI with html/css in an Electron, that'd still be possible to build out on top of this anyway, and keep the dungeon renderer in wasm; there's already an interface between wasm and js so you could e.g. drive a React UI from within the wasm code) 07:08:49 <06m​umra> I'm not jumping to conclusions about the performance. I suspect the main problem is actually something called Asyncify -- basically to make the game act like a synchronous program whilst not blocking the main thread, I had to add emscripten_sleep(0) inside input loops, and replace SDL_Delay with emscripten_sleep also. The asyncify build option turns these in asynchronous javascript timeouts which release the main thread; but to do this, 07:08:50 it has to fully unwind and rewind the entire stack (as I understand it), it's horribly inefficient. 07:23:03 <06m​umra> We could probably also apply the same principle as webtiles and only update screen regions that actually need it (and get a nice perf gain on desktop too) 15:36:41 <06m​umra> Which C++ is officially used? Is it 17? 15:43:19 <06m​umra> (Clearly not) Can't find anything in the docs that really clarifies the situation, and there are multiple seemingly contradictory comments and statements littered around. (But Makefile has C++11 ) It's relevant because an important macro provided by emscripten complain about needing C++20 ... 15:53:39 <03w​heals> c++11 15:55:19 <03w​heals> in libutil.h we define make_unique only if the version is less than c++14 so we do support compiling with later c++, but iirc we can't move support forward because no compiler with full c++14 support runs on cao 16:22:20 <06m​umra> > no compiler with full c++14 support runs on cao Surely that's a situation that can be resolved somehow? 16:23:31 <06m​umra> Things still seem to be working even with the warning I'm getting, just a bit annoying having a warning 🙂 emscripten can obviously build things at C++20 but then i get a ton of warnings about calling deprecated functions 16:27:47 <09g​ammafunk> advil has talked about how to improve the cao compiler via a scheme I think aidanh came up with 16:29:28 <06m​umra> (I have saves persisting in IndexedDB now. Just not sure why the des cache isn't persisting. Will post a demo link at some point soon, I just want things to be passable first. At this point I just want to see how far it can go, but I'm thinking there could be some really cool micro applications from having a crawl build embeddable in the browser ... e.g. imagine a "webarena" where you can run an embedded arena fight from a URL query 16:38:25 Unstable branch on underhound.eu updated to: 0.33-a0-1051-g2fe43ac7d6 (34) 17:13:45 <06m​umra> I feel like I'm missing something about why cao can't just be updated to newer stuff? 17:15:27 <09g​ammafunk> well, you work with servers all the time I assume, for all the usual reasons :gammafHeh: 17:16:48 <09g​ammafunk> it's a multi-use physical server with an old and perhaps somewhat esoteric setup and rax is worried about it breaking 17:17:45 <09g​ammafunk> obviously I'm talking about a necessary OS update; of course we can locally install things, but that's where we have to deal with the chroot properly 17:19:25 emclar (L25 KoAr) ASSERT(defender->alive()) in 'fight.cc' at line 411 failed. (Depths:4) 17:37:54 <06m​umra> Well yes I do, although I'm not the "server guy" ... the solution I'd jump to here is to set up a new crawl server, test the migration there, switch DNS over to the new server when everything is working. Everything else on the server can carry on as is 17:39:27 <06m​umra> I realise I'm simplifying something where each step there has multiple sub steps 😉 17:41:38 <09g​ammafunk> heh...I may be missing something, but in this hypothetical solution, where is this new physical server coming from? 17:42:32 <09g​ammafunk> Like in the end, CAO's server is the resource we have available that is paid for/hosted etc 17:43:07 <09g​ammafunk> there is is no secondary server we'd have without provisioning a virtual server, which would be expensive in its own right, since CAO does in fact have lots of cpu and disk resources 17:43:10 <09g​ammafunk> it's just an older machine 17:43:27 <09g​ammafunk> !lg * month s=src 17:43:28 <04C​erebot> 142940 games for * (month): 31778x cbr2, 28037x cao, 22876x cdi, 21144x cue, 20477x cnc, 11828x cxc, 4898x cpo, 1705x lld, 197x cdo 17:43:42 <09g​ammafunk> only cbr2 is really comparable, and cao is still our 2nd-busiest server 17:43:43 <06m​umra> from the millions of dollarbucks that all devs are receiving in steam royalties, obviously 17:43:48 <09g​ammafunk> oh, of course 17:43:54 <09g​ammafunk> I'll chip in my twitch bucks 17:44:21 <09g​ammafunk> but yeah, if you're used to corporate situations, obviously they have more money to throw at new hardware resources 17:46:21 <06m​umra> i mean, the cost of running a virtual server isn't that much and i'm sure you'd find people in the community to chip in, ... but i understand the barriers are bigger tham just that 17:46:23 <09g​ammafunk> I do agree we should try to work towards upgrading the CAO compiler at a minimum 17:47:48 <09g​ammafunk> well running one comparable to cao's resources would actually be quite expensive I think 17:49:12 <09g​ammafunk> hrm, I guess it's only 8 cores and 10GB ram 17:49:58 <09g​ammafunk> but that's still going to be expensive even on a cheaper platform like digital ocean 17:50:28 <09g​ammafunk> probably looking at the $96/mo price range for that 17:51:03 <09g​ammafunk> not to mention you'd have an immediate disk issue since cao's chroot alone is 1TB 17:51:19 <09g​ammafunk> and you only get 320GB for said plan 17:51:29 <09g​ammafunk> although thank god it would be an SSD upgrade from a hard drive 17:51:55 <06m​umra> to me 96 a month doesn't sound that expensive ... i think you'd find a few people might be prepared to chip in a bit per month 17:52:07 <09g​ammafunk> the thing is that I already run an official server 17:52:23 <09g​ammafunk> among a host of bots that I wrote myself and maintain which are also pretty critical (well, Cerebot is) 17:52:48 <06m​umra> what, your host of bots run your server/ 17:53:16 <09g​ammafunk> no, I mean I wrote Cerebot/beem/lomlobot and host them 17:53:21 <09g​ammafunk> in addition to hosting CDI 17:53:54 <09g​ammafunk> what I'm saying is that I'm not really wanting to take on responsibility for a second server necessarilly 17:54:04 <06m​umra> was a joke, not a very great one 17:54:18 <09g​ammafunk> yeah, perhaps in the future, I'm told, AI bots will host everything 17:54:21 <09g​ammafunk> and write the game for us 17:54:42 <09g​ammafunk> we'll all be out of jobs because AI will do it all! 17:55:29 <06m​umra> frequently now work are asking me to use AI to solve tasks 17:56:09 * geekosaur hears the freight train coming 17:56:30 <06m​umra> literally spending more time figuring out how to ask ai the right question than it'd take me to just write the code myself 17:57:48 <06m​umra> i think it 17:58:50 <09g​ammafunk> you think it? 17:59:01 <06m​umra> no i FUNK it 17:59:13 <09g​ammafunk> probably you need to adjust your gamma 17:59:43 <06m​umra> crawl should actually have a gamma setting 17:59:56 <06m​umra> it's very very dark on some monitors 18:00:11 <09g​ammafunk> shoals in tiles used to be horribly bright 18:00:23 <09g​ammafunk> we had to adjust the beach tiles 18:00:36 <06m​umra> yes i remember the eye pain 18:00:48 <06m​umra> these days we'd call it ipain 19:17:25 <09h​ellmonk> has anyone looked at this fair_adjacent_iterator pr 19:44:54 03dolorous02 07* 0.33-a0-1052-gfa27b1d1f1: Add more words to Crazy Yiuf's speech. 10(4 minutes ago, 1 file, 16+ 0-) 13https://github.com/crawl/crawl/commit/fa27b1d1f187 19:54:53 <06d​olorous_84348> I've noticed a possible nit with one name I added to coglin devices awhile back: trapovaloid. It's a portmanteau of oval and trapezoid, but the Australian term for trapezoid is trapezium. Reconstructing the portmanteau with that word in the same way would make the portmanteau trapovalium, which sounds like some kind of weird tranquilizer instead of could-be bizarre-tech, and I was going for the latter. Is this something I need to 19:54:53 fix, or is trapovaloid obscure enough (it's in only one FoxTrot strip, which I'd link to if I could find a direct link) that I can just leave it as-is? 20:45:39 <09g​ammafunk> thanks for looking through those old PRs, hellmonk, I was going to get to some of those myself 20:45:59 <09g​ammafunk> good to get that PR count down, going to merge/close a quick one right now 20:58:46 New branch created: vulnmessages (1 commit) 13https://github.com/crawl/crawl/tree/vulnmessages 20:58:47 03hellmonk02 07[vulnmessages] * 0.33-a0-1052-ge5eea33fba: Flaming/freezing warning trigger (alt #3868) 10(6 minutes ago, 2 files, 5+ 2-) 13https://github.com/crawl/crawl/commit/e5eea33fbaaa 20:58:48 New branch created: pull/4349 (1 commit) 13https://github.com/crawl/crawl/pull/4349 20:58:48 Branch pull/4349 updated to be equal with vulnmessages: 13https://github.com/crawl/crawl/pull/4349 20:59:48 <09h​ellmonk> lmk what you think of this relative to the np7 pr. I think this messaging is better but the fix is easy enough either way. 21:33:51 <09h​ellmonk> think this one is fine, I hope 21:34:38 03WizardIke02 {GitHub} 07* 0.33-a0-1053-gd93d3284e2: Simplify malign gateway targeting (#4045) 10(64 seconds ago, 5 files, 99+ 14-) 13https://github.com/crawl/crawl/commit/d93d3284e220 22:05:12 Very cool @mumra! 22:05:38 GL perf work in particular isn't something I specialize in 22:05:46 But perf work in general is something I definitely can attack 22:18:43 RE: chroots, much though I don't love docker, docker is probably the easiest way 22:19:14 But Debian 7 is about half a decade out of support, so you can't even run up to date docker: 22:26:31 GCC and CLang are both pretty forgiving in terms of minimum compiler versions... but.... 22:26:52 modern clang wants GCC 7.4+ or Clang 5+ 22:27:38 modern GCC wants GCC 5.4; you have to go back to GCC 15 before C++11 is enough 22:29:09 So, trying to even bootstrap to up to date compilers requires at least 1 intermediate compiler 22:29:33 And doing a dist-upgrade of than many versions is kinda... almost guaranteed to go wrong 22:36:15 wheezy -> jessie -> stretch -> buster -> bullseye -> bookworm 22:36:28 Could take you days if everything worked perfeclty :D 23:31:37 <04d​racoomega> I did, and I beleive I didn't understand the code well enough to verify anything that it did >.>; 23:31:51 <09h​ellmonk> same 23:32:23 <04d​racoomega> Like, it sounds good, but I wasn't comfortable merging anything that was opaque to me 23:35:08 <04d​racoomega> Er, I haven't finished reviewing all of it, but you... squashed the two malign gateway commits together, right? Isn't this comment in it (still preserved by that commit) supposed to be explicitly false now? // TODO: this actually has pretty wtf positioning that uses compass // directions, so this targeter is not entirely accurate. 23:37:53 <04d​racoomega> Some of this code is weirdly verbose, which makes what it's doing less clear than it would otherwise be, I think? (But I guess I can nudge some of it later, if I get around to it) 23:39:19 <09h​ellmonk> I believe the second gateway pull request supersedes the first one, if I understood it correctly 23:39:30 <09h​ellmonk> possible a comment is messed up somewhere though 23:41:22 <04d​racoomega> Also, looking at the both of them again, I think I like your flaming/freezing vulnerability message commit more, just due to its simplicity 23:42:41 <04d​racoomega> Maybe 'chills you terribly'? 23:42:51 <04d​racoomega> To be slightly closer to the old wording? 23:51:07 <04d​racoomega> Incidentally, I think I am probably almost done the refactoring of form/mutation interactions, which should mean (finally) being able to implement a bunch of these forms I've been sketching out for a while. Hopefully they are individually faster, but one never quite knows what new rabbit holes one can fall down along the way >.> 23:54:39 <09h​ellmonk> I think it needs to be "freezes" to hijack the normal weapon brand wording in the way I'm doing 23:55:29 <09h​ellmonk> though I suppose we can just have two very slightly different messages and make players who care about rcfile forcemores match both 23:56:42 <04d​racoomega> (I mean, isn't 'you terribly' an adequate match for both?) 23:57:19 <09h​ellmonk> perhaps? I don't know if that's used anywhere else