00:30:48 Unstable branch on cbro.berotato.org updated to: 0.33-a0-1024-g4ee2c7fec9 (34) 00:55:50 Monster database of master branch on crawl.develz.org updated to: 0.33-a0-1024-g4ee2c7fec9 01:33:54 Stable (0.32) branch on cbro.berotato.org updated to: 0.32.1-6-ge8736a44df 01:40:15 03DracoOmega02 07* 0.33-a0-1025-g1347f3dca7: Fix Dream Dust having 1/10th the intended duration (CarefulOdds) 10(4 minutes ago, 1 file, 1+ 1-) 13https://github.com/crawl/crawl/commit/1347f3dca709 01:40:15 03DracoOmega02 07* 0.33-a0-1026-g9f28e2c356: Silence a warning 10(80 seconds ago, 1 file, 1+ 1-) 13https://github.com/crawl/crawl/commit/9f28e2c3566b 01:45:20 FR: Don't recommend 'zerker on vine stalker. No invocations and no spellcasting = no mana = no spirit shield = death 03:46:04 New branch created: pull/4340 (1 commit) 13https://github.com/crawl/crawl/pull/4340 03:46:05 03mumra02 07https://github.com/crawl/crawl/pull/4340 * 0.33-a0-1025-g72ac465602: Avoid crash when clockwork bee falls in deep water 10(9 hours ago, 1 file, 14+ 4-) 13https://github.com/crawl/crawl/commit/72ac46560277 03:46:23 <06m​umra> @dracoomega ^ fix for that segfault as i was looking at the file anyway .. would just merge it but i don't quite have time to test properly rn and also not sure if you made a fix separately 05:29:41 Stable (0.32) branch on crawl.akrasiac.org updated to: 0.32.1-6-ge8736a4 08:44:38 Hi everyone. I'm a developer, I'd like to help with translations in different languages, especially italian. Where can I find some documentation about which source code parts I need to edit in order to implement translations? 08:48:40 <06m​umra> All the translatable text is held in text files: mainly in /crawl-ref/source/dat/database and /crawl-ref/source/dat/database. Each locale has a subfolder underneath these. 08:49:41 <06m​umra> Sorry one of those should be descript instead of database 08:54:33 <06m​umra> The problem you'll find is that a huge amount of in-game text doesn't come from those files, it's scattered all over the C++ codebase composing strings with mprf and a whole bunch of helper functions for things like pluralisation, apostrophising, etc etc. It's not practical to translate any of this without a major overhaul of how text generation works unforunately. 09:01:05 <06m​umra> Amazingly, even basic UI like the "new character" screen has never been made to support localisation, although the tutorial has some translations 12:52:50 <06m​umra> Trying a small experiment: building crawl tiles using emscripten. So this compiles C++ into WASM which can run in the browser. It supports sdl2 and will use webgl to render everything. This would essentially mean we can drop the current webtiles frontend and render it with real crawl UI code instead - modify the websocket IO so it syncs real game state across (map knowledge, player, monster infos, ui state). 13:04:45 <12g​e0ff> Having one tiles frontend is a more sane long term approach, although i'd rather go the opposite way and have local tiles done via Electron.js. Doing UI in SDL (especially without extra libraries) is pain and suffering, compared to what can be done with HTML/CSS/JS. 13:26:33 <12g​e0ff> raw SDL is for people who write game engines in their spare time, not for regular devs 13:50:44 <09g​ammafunk> No, I can do it! I can write a game engine in my spare time! 13:52:12 <09g​ammafunk> well, regarding this, the current front end does in fact sync real game state across. What do you mean exactly by syncing "real game state" in the context of the websocket approach 13:53:03 <09g​ammafunk> another question about this is how does it relate to the current model of the game process running completely on the server? 13:53:28 03nicolae02 07* 0.33-a0-1027-g87e8ae5f2c: Add a couple decor vaults 10(2 minutes ago, 1 file, 63+ 0-) 13https://github.com/crawl/crawl/commit/87e8ae5f2ca6 13:55:27 <09g​ammafunk> sounds vaguely like you mean that we'd sort have the front end contain all UI code somehow and the crawl binary would be sending some kind of representation of the c++-side data over the web socket....but that's sort of how the current frontend already works. 14:03:00 yes, that sounded a bit confused. compiling crawl to wasm would mean the entire binary was running in the player's brpwser and the only syncing would be in the opposite direction (e.g. milestones) 14:06:22 <12g​e0ff> if it runs locally, the player could just edit memory to make the game a bit easier 14:06:50 <09g​ammafunk> right, shifting the game logic to run client-side would be a radical shift in our online game model that I'm not sure we can entertain 14:07:31 <08n​icolae> okay, so i'm going through my various vaults-in-progress, as you may have guessed from the commit 15 minutes ago. q: a while back i made an early-game shop that sold only mundane aux slot armors. given that poltergeists exist now, is this a bit much, or are poltergeists going to be doing okay anyway thanks to floorgod 14:07:50 <09g​ammafunk> for one, it's completely the opposite of how console could ever work (I think? I'm not sure that WASM could ever help is with console) 14:08:47 <08n​icolae> ah, i'm in the middle of something, 14:09:12 <09g​ammafunk> yes! be gone, mortal! we're having a wizard battle! do not return for another 27 days! 14:09:18 <09g​ammafunk> I think as long as a shop like this is uncommon, it's fine. It's no more a problem than e.g. a shop selling early-ish dragon scales! 14:09:19 <08n​icolae> 😭 14:09:37 <09g​ammafunk> oh I didn't mean to end that reply with a ! 14:09:42 <08n​icolae> hm, good point. 14:09:50 <09g​ammafunk> but I hope it conveyed my love a dragon scales 14:10:04 <08n​icolae> that's all right, i enjoyed the enthusiasm 😌 14:11:23 <09g​ammafunk> I'll wait for mumra to elaborate before going into much more detail on the client-side vs server-side thing 14:39:14 03Isaac Clancy02 07https://github.com/crawl/crawl/pull/4337 * 0.33-a0-1015-gec6798dd20: Allow coglins to benefit from two spectral weapons (jejorda2) 10(23 hours ago, 11 files, 242+ 53-) 13https://github.com/crawl/crawl/commit/ec6798dd209c 15:03:09 03nicolae02 07* 0.33-a0-1028-gbc49e453e1: Add some shops 10(3 minutes ago, 1 file, 269+ 0-) 13https://github.com/crawl/crawl/commit/bc49e453e156 15:17:35 04Build failed for 08master @ bc49e453 06https://github.com/crawl/crawl/actions/runs/13609207895 15:31:01 * geekosaur shakes fist at species.o 15:42:20 New branch created: nicolae_vaultsvaults_mar25 (1 commit) 13https://github.com/crawl/crawl/tree/nicolae_vaultsvaults_mar25 15:42:21 03nicolae02 07[nicolae_vaultsvaults_mar25] * 0.33-a0-1029-g3be7da0beb: Add some themed little-v vaults to big-V Vaults 10(2 minutes ago, 2 files, 314+ 0-) 13https://github.com/crawl/crawl/commit/3be7da0bebec 15:44:32 New branch created: pull/4341 (1 commit) 13https://github.com/crawl/crawl/pull/4341 15:44:32 Branch pull/4341 updated to be equal with nicolae_vaultsvaults_mar25: 13https://github.com/crawl/crawl/pull/4341 15:44:49 <08n​icolae> well, now that i've pushed my vaults to commits, i'll probably end up having more vault thoughts 15:44:51 <08n​icolae> that's how it goes 15:45:33 <08n​icolae> anyway, i've got pull requests for lair decor (not sure why i didn't just push them, maybe there's so many?) and some themed vault vaults, both from @regret-⸸nde※ requests from eons past 15:47:18 <06r​egret-⸸nde※> There's... a few small syntatic tweaks for those Lair decor vaults, which I should properly write up at some point, but I've been physically ailing for quite a while and thus focused what little energy I had the dual issues of getting prelminary tiles ready for DracoOmega's forms plus getting Necropolis any close to ready for this version. 15:48:14 <08n​icolae> that's fair, i am also plagued with a lack of energy, for various reasons 15:49:19 <06r​egret-⸸nde※> (All those vaults_hard vaults are making me feel a little bad the... four new V monsters and four V monster reworks have been so long delayed, but I guess they can readily be mostly emphasized over in the regular vaults_room subvaults instead.) 15:49:58 <08n​icolae> tbf these vaults have also been long delayed, i forget when i started working on 'em but it was... some time ago. at least last year 15:50:35 <08n​icolae> i did a run through to make sure everything at least still loaded correctly (which is where i noticed it's not ident:type no more) 15:50:39 <08n​icolae> oh right, gotta fix that 15:53:14 03nicolae02 07* 0.33-a0-1029-g95e74fc971: Update docs for changes to pre-id vault syntax 10(30 seconds ago, 1 file, 1+ 6-) 13https://github.com/crawl/crawl/commit/95e74fc971fb 16:39:44 Unstable branch on underhound.eu updated to: 0.33-a0-1029-g95e74fc971 (34) 16:48:07 What mumra describes does make sense to me, but as gammafunk points out, can only move the UX to the client side 16:48:11 can't move the game logic 16:49:18 Ge0ff 's suggestion re: Electron.JS IMO is also pain. I'm not saying I like SDL, but shipping an entire browser, especially the size of chrome, ick 16:49:27 to all the weird platforms we support? 16:50:10 But it is technically viable 16:51:09 But yeah, I don't think sending the in-memory state itself across maeks sense 16:51:11 JSON, sure 16:51:22 something binary formatted but structured, sure 16:51:56 But as a proof of concept, I do think trying to get the entire binary to compile to emscripten is interesting 16:52:06 can then compile less of it for the web ux 17:05:59 <09g​ammafunk> For platforms, I don't think we have an imperative to support anything beyond linux, macOS, Windows, and android. 17:06:30 <09g​ammafunk> But the architecture of the app is pretty important in that it has big implications for the fidelity of online scoring 17:06:46 Agreed RE: fidelity of online scoring 17:07:03 RE: platforms: I don't disagree, nor am I saying that you owe anyone anything 17:07:43 But if you couple to electron, you're coupling to "can run chromium efficiently, and can only use chromium versions that are well supported on as old systems as you want" 17:09:00 <09g​ammafunk> yeah, although probably this is also an issue if you use technologies like WASM? 17:09:12 https://github.com/electron/electron Big Sur and up, WIndows 10 and up, Ubuntu 18.04 or Debian 10 17:09:16 Well, not necessarily 17:09:31 I think what Mumra's proposing, which I've muttered about a little in the past 17:09:43 is not to eliminate a flavor 17:09:49 you still have tiles, webtiles, and console 17:09:59 but to simply reduce code involved to make all those work 17:11:10 local tiles will not have a new WASM dependency; it would be silly / needless to compile for WASM for local (at that point, you're likely doing e.g. Electron, but now with extra complexity of also compiling C++ to WASM) 17:11:21 but webtiles would 17:11:45 But granted, it's possible we'd be breaking webtiles users on ancient systems 17:12:35 We just wouldn't be taking away the ability to run local tiles for those users 17:13:32 But then again, they can always do local console, and anything tiles could be browser based (electron for local, normal browser for web) 17:15:42 <09g​ammafunk> Well my concern is that WASM is being used to effectively move the game process model client side. Secondarily we can't easily retire the "old" js webtiles due to old versions 17:16:24 <09g​ammafunk> I'm not sure how a transition would work where those old js webtiles versions were still playable and we didn't have maintenance problems 17:16:35 <09g​ammafunk> maybe that's mostly fine since of course those old versions don't change 17:17:33 <09g​ammafunk> but at a minimum we'd need our webtiles server to continue serving old js webtiles for the foreseeable future if we wanted to support older crawl versions 17:18:15 Definitely can't move the game process to client side, agreed 17:18:25 It "just" would be a matter of moving the UX state 17:18:30 and UX rendering code 17:18:43 the "what did that action do" would have to remain server side 17:21:07 03Isaac Clancy02 07https://github.com/crawl/crawl/pull/4337 * 0.33-a0-1015-g201dc803e6: Allow coglins to benefit from two spectral weapons (jejorda2) 10(25 hours ago, 11 files, 246+ 53-) 13https://github.com/crawl/crawl/commit/201dc803e604 17:29:42 In other words, I agree the architecture shouldn't change, could replace JavaScript with WASM tho 17:32:57 Still would need the whole JSON or other format based back and forth over websockets or whatever 18:43:32 03Isaac Clancy02 07https://github.com/crawl/crawl/pull/4337 * 0.33-a0-1015-gb73ce53293: Allow coglins to benefit from two spectral weapons (jejorda2) 10(27 hours ago, 11 files, 254+ 53-) 13https://github.com/crawl/crawl/commit/b73ce5329302 19:05:12 @mumra - I gave it shot for fun as well https://github.com/Cgettys/crawl/tree/emscripten 19:05:18 doesn't even compile, but is maybe close 19:06:45 or rather, let me be more specific 19:06:47 does compile 19:06:49 fails to link 19:09:43 also currently has rltiles hacked off 19:35:32 03gammafunk02 07* 0.33-a0-1030-g170f05ed26: Fix the altar count of a temple map (🝀) 10(7 minutes ago, 1 file, 6+ 6-) 13https://github.com/crawl/crawl/commit/170f05ed26f9 20:31:55 Moober (L18 PoGl) ERROR in 'mon-util.cc' at line 4890: bogus mc (no monster data): invalid monster_type 1000 (1000) (Spider:2) 21:35:30 <06m​umra> I got to a similar point as well (a load of undefined gl* symbols?) 21:43:43 <06m​umra> @gammafunk I think I didn't explain well to be honest. I'm not talking about moving important game logic to the client and enabling a situation where players can cheat (neither by modifying values nor accessing information they shouldn't have access to). It's the same model as existing webtiles, the game is running on the server, and it's sending state to the client which is just what is needed to render the game, and the client is 21:43:44 sending commands back to the server. But, if you're building the client with emscripten, it means you can offload more of the rendering logic to the client. Currently we convert the map to a load of package cells, and these packed cells are marshalled to json (in yet another slightly different model tho) and that gets send to the client. The client doesn't get any of the monster_infos, it only sees the final result of the tiles, so in the case of 21:43:44 e.g. an animated monster you have to keep sending over the updated tile, instead of the client knowing what monster it is and just being able to animate it. monster_info is safe to send to the client, it's already designed to avoid infor leaks. if you send across the whole map knowledge and monster info, then you can do interesting things like spectators could actually inspect monsters, even open up menus themselves (something which has been requested 21:43:45 before) - maybe even inspect the player's inventory, spells./ 22:07:05 <06m​umra> What I'm trying to do right now is, yes, get the entirety of crawl running in the browser, this is more just to prove that it can work at all, and for the same reason people get doom running in the browser just because they can. (And it's still rather interesting to have a build of crawl that can just run in a browser without any other dependencies, but yeah the client/server architecture needs a distinct line drawn between what runs 22:07:05 on the server and what runs in the client) 22:08:35 Sorry, lost connection there for a minute @mumra... 22:08:40 I got past undefined gl* 22:09:28 That just needed 22:09:41 -sLEGACY_GL_EMULATION 22:10:11 (it should be possible to just use like, -sFULL_ES2 instead, I think? but couldn't get it to work) 22:10:18 it's literally just this one one about shared memory getitng me 22:10:44 <06m​umra> hmm, that didn't work for me but maybe because i'm using emscripten's built-in SDL? 22:10:51 I tried -pthread -sSHAREDMEMORY etc 22:10:57 nah I was using that too 22:11:03 <06m​umra> the command line i use with emcc and em++ is -sUSE_ZLIB=1 -sUSE_SDL=2 -sUSE_SDL_IMAGE=2 -sUSE_SDL_MIXER=2 -sUSE_FREETYPE=1 22:11:16 <06m​umra> so you don't have to build zlib or freetype either 22:11:20 I was building our zlib and freetype, but was meaning to try that too 22:11:34 I was using emmake make 22:11:50 also had fixups to use emar and emranlib or whatever 22:13:12 <06m​umra> wait, i realised a mistake maybe 22:13:57 <06m​umra> i just modified the makefile to use emcc instead of gcc and em++ instead of g++ 22:14:08 that's supposed to work too 22:14:19 tho you need to do ar and ranlib too 22:14:48 At lesatin theory 22:20:02 Dunno 22:20:05 got really close 22:27:44 <06m​umra> @ge0ff Being able to use web frameworks to render UI would be amazing yes, but it's also a complete rebuild of significant areas of the game into, say, typescript/react; and the canvas renderer used by webtiles currently is seriously limited so we'd want to rebuild that into typescript/webgl too. but there's no reason why this kind of thing couldn't exist in parallel with using emscripten to build non-ui parts of the frontend 22:27:45 (particularly cell rendering, but also e.g. the ability to generate strings from database txt including execution of potentially embedded lua) 22:28:33 <06m​umra> electron is also as cgettys points out, a huge resource hog 22:28:49 Also, ick, JavaScript and react :D 22:29:08 (just not my cup of tea, that's all. TypeScript is _tolerable_... but yeah) 22:29:48 But in my view, the point would be the simplification, one way or the other 22:30:00 not having to maintain 3 different UI in favor of just 2 22:32:02 anyway @mumra if you link me you branch on GH I'll see if your version works better than mine 22:32:14 it's so close I could taste it :D 22:32:25 <06m​umra> maybe there's a lighter-weight webview available that could achieve the same thing but yeah ... all the in-game data structures required by the ui have to be marshalled to a format for javascript to process, and it'd make things really hard for any non-web-frontend-develoeprs to then modify any UI. so i don't know if it's the best overall strategy for most crawl devs 22:32:34 Tauri 22:32:38 springs to mind 22:33:15 22:33:36 it uses whatever system webkit is around instead of bringing its own 22:34:06 (and unlike electron, that means you might have multiple browsers to think about, but then again... so does webtiles) 22:34:36 But somewhat similar limitations on supported platforms 22:34:37 <06m​umra> (I am a typescript/react dev in my regular work btw, so I don't have any issue with stack like this) 22:34:55 (Tauri is Win7+ tho, bit better than Chromium there) 22:35:15 No offense intended to you then.My condolences / you're a braver dev than I :D 22:35:51 Frontend in general, or graphics, just really isn't an area I do well 22:36:22 Don't know what I'd do without folks who actually enjoy and are good at the frontend side :D 22:38:32 <06m​umra> Modern web standards are so good these days that almost everything works as expected cross browser, especially for the subset of html/js/css required; crawl's UI is not super complicated. 22:39:29 <06m​umra> Main annoying difference you still frequently get is font rendering; sub-pixel differences on different systems add up to linewraps happening in expected places 22:39:44 <06m​umra> (Mainly OSX being the culprit there) 22:49:47 <06m​umra> i get very close now 22:50:07 <06m​umra> wasm-ld: error: --shared-memory is disallowed by ability.o because it was not compiled with 'atomics' or 'bulk-memory' features. 23:12:01 Right, that's exactly where I got stuck too 23:12:08 exactly what object moves around a bit if I try different objections 23:12:13 But I haven't been able to get it to work 23:14:05 -sSHARED_MEMORY or -pthread should be the final ticket 23:14:11 but doesn't seem to be 23:24:25 <06m​umra> I got past the error in crawl's code with -pthread, then it errors on SDL_atomic ... I tried BUILD_SDL2 instead and the build fails with a type error related to thread->handle 23:34:26 Right, I can repro the SDL_atomic one 23:34:29 which seems really weird 23:34:47 I also tried -sSHARED_MEMORY=1 or whatever 23:36:45 https://emscripten.org/docs/porting/pthreads.html 23:37:07 ah, may need an =1 but not that either 23:39:22 Also @mumra, hav eyou seen this one? sometimes i see it sometimes I don't and haven't work how how I broke things 23:39:23 error: ability.o: undefined symbol: __llvm_profile_runtime