00:22 <+bridge> [ddnet] @deen hey, could you please allow cross-origin for https://ddnet.tw/testmaps/ and https://ddnet.tw/mappreview/ for my site https://mapview.patiga.eu ? :) 00:37 <+bridge> [ddnet] should work now @Patiga 00:37 <+bridge> [ddnet] thanks, will test in a sec! :heartw: 00:38 <+bridge> [ddnet] Seems to work: https://mapview.patiga.eu/?map=Tutorial.map 00:38 <+bridge> [ddnet] I'd suggest to focus on the start tile initially 00:39 <+bridge> [ddnet] those are local, `?ddnet=Tutorial` should work once I upload 00:39 <+bridge> [ddnet] thought the same, it will also center on the middle of all spawns 00:40 <+bridge> [ddnet] Doesnโ€˜t work on Safari mobile for me, Firefox desktop works fine 00:40 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995097151405309973/image.png 00:41 <+bridge> [ddnet] huh, interesting 00:41 <+bridge> [ddnet] Also, Rust to wasm, cool ๐Ÿ™‚ 00:43 <+bridge> [ddnet] aye, the most pain I had is figuring out mobile html ^^ 00:47 <+bridge> [ddnet] yay, works now https://mapview.patiga.eu/?ddnet=Tutorial ๐Ÿฅณ 00:50 <+bridge> [ddnet] https://mapview.patiga.eu/?ddnet-testing=Umbrella testing works too, noice 00:58 <+bridge> [ddnet] and for sites that allow cross-origin, this works https://mapview.patiga.eu/?url=https://heinrich5991.de/teeworlds/maps/maps/TEST5_7d7362b95d75318445ae42fd4722814e6aaa1fc81048ce0207fed91ac92cf02f.map 01:05 <+bridge> [ddnet] @Not Keks now that it works nicely on mobile, wanna have a look at my fully undocumented twgpu rust crate? ^^ 01:06 <+bridge> [ddnet] still only map renderer so far 01:07 <+bridge> [ddnet] will be away for the next few weeks, so I don't really have much time for implementing stuff, but feature requests are still very welcome :) 01:20 <+bridge> [ddnet] is the site down rn? 01:20 <+bridge> [ddnet] shows a white page for me 01:21 <+bridge> [ddnet] should be up 01:21 <+bridge> [ddnet] which link are you on, are you on mobile and on which browser? 01:21 <+bridge> [ddnet] pixel 4a https://mapview.patiga.eu/?map=Tutorial.map and on chrome 01:22 <+bridge> [ddnet] ah that is a dead link now, it happens so fast ๐Ÿ˜… 01:22 <+bridge> [ddnet] try https://mapview.patiga.eu/?ddnet=Tutorial 01:23 <+bridge> [ddnet] still white 01:24 <+bridge> [ddnet] ouch, I will need to have a look at it then 01:25 <+bridge> [ddnet] ah, there was also someone else for who the tilemaps didn't render 01:26 <+bridge> [ddnet] I'll have to learn what kind of devices have which problems, I think @Not Keks has experience in that direction ^^ 01:27 <+bridge> [ddnet] i lied it works now 01:27 <+bridge> [ddnet] yay :happy: 01:52 <+bridge> [ddnet] I don't see any tiles, firefox windows 02:00 <+bridge> [ddnet] don't see them in chrome either 02:00 <+bridge> [ddnet] did you wait? try scrolling maybe 02:01 <+bridge> [ddnet] i wanted to say that but i didnt know if it was supposed to be like that for now. It doesnt show the tiles for me either (chrome) 02:01 <+bridge> [ddnet] Doesn't load for me at all now with ?ddnet @Patiga `Uncaught LinkError: import object field '__wbg_screen_04bce210c29df7c4' is not a Function ` 02:01 <+bridge> [ddnet] I did wait quite a while 02:03 <+bridge> [ddnet] works for me in firefox for linux 02:04 <+bridge> [ddnet] works for me in chrome for linux 02:05 <+bridge> [ddnet] map_inspect_web.js:1497 Uncaught (in promise) Error: Using exceptions for control flow, don't mind me. This isn't actually an error! 02:05 <+bridge> [ddnet] at imports.wbg.__wbindgen_throw (map_inspect_web.js:1497:15) 02:05 <+bridge> [ddnet] at map_inspect_web_bg.wasm:0x1fe31a 02:05 <+bridge> [ddnet] at map_inspect_web_bg.wasm:0x1eb387 02:05 <+bridge> [ddnet] at map_inspect_web_bg.wasm:0xbc8f4 02:05 <+bridge> [ddnet] at map_inspect_web_bg.wasm:0x1d44bf 02:05 <+bridge> [ddnet] at map_inspect_web_bg.wasm:0x1a220d 02:05 <+bridge> [ddnet] at map_inspect_web_bg.wasm:0x1fcaa2 02:05 <+bridge> [ddnet] at __wbg_adapter_50 (map_inspect_web.js:222:10) 02:05 <+bridge> [ddnet] at real (map_inspect_web.js:199:20) 02:05 <+bridge> [ddnet] 02:05 <+bridge> [ddnet] Well, i do mind. :feelsbadman: 02:05 <+bridge> [ddnet] works for me in firefox for linux 02:05 <+bridge> [ddnet] eh ๐Ÿ˜„ wanted to say windows, but it's actually linux like I wrote 02:06 <+bridge> [ddnet] maybe it's a gpu thing 02:06 <+bridge> [ddnet] I'm on nvidia, gtx 1080 02:11 <+bridge> [ddnet] I offer GTX 760 02:12 <+bridge> [ddnet] Windows - Chrome - GTX 1050ti 02:17 <+bridge> [ddnet] Can someone explain why there are curly brackets after the method call? (void) 02:17 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995121450308608131/unknown.png 02:17 <+bridge> [ddnet] menus_ingame.cpp 02:32 <+bridge> [ddnet] I don't see curly brackets there 02:33 <+bridge> [ddnet] perhaps you could link the code on github instead of screenshotting btw 02:34 <+bridge> [ddnet] https://github.com/ddnet/ddnet/blob/master/src/game/client/components/menus_ingame.cpp 02:34 <+bridge> [ddnet] Line 403 02:35 <+bridge> [ddnet] How? 02:35 <+bridge> [ddnet] you can click on the line number 02:35 <+bridge> [ddnet] https://github.com/ddnet/ddnet/blob/5345e55b94c30b4d4d3fe9e5ec3b2c908a812f12/src/game/client/components/menus_ingame.cpp#L403= 02:35 <+bridge> [ddnet] ok thanks! 02:36 <+bridge> [ddnet] it's just a block 02:36 <+bridge> [ddnet] so you can just use curly brackets mid code without a context? 02:36 <+bridge> [ddnet] Is that just for encapsulation? 02:36 <+bridge> [ddnet] yes 02:37 <+bridge> [ddnet] it's just so that the variables inside don't live longer 02:37 <+bridge> [ddnet] Oh no wait i dont know if thats the right word. I mean like using in c#? 02:37 <+bridge> [ddnet] Oh no wait i dont know if thats the right word. I mean like the "using" statement in c#? 02:38 <+bridge> [ddnet] in c# you can also do blocks without context 02:38 <+bridge> [ddnet] Habe mit encapsulation gemeint dass der code abgeschottet vom รผbergeordneten code ist 02:38 <+bridge> [ddnet] didnt know that lol 02:38 <+bridge> [ddnet] aber hab gerade gegoogled und gemerkt dass encapsulation was anderes is xD 02:42 <+bridge> [ddnet] Anyways, why is only that particular part in a special block? What if you remove the braces 02:42 <+bridge> [ddnet] Anyway, why is only that particular part in a special block? What if you remove the braces 02:42 <+bridge> [ddnet] Anyway, why is only that particular part in a special block? What if you remove the brackets 02:43 <+bridge> [ddnet] like the "using" statement in c#? 02:44 <+bridge> [ddnet] it makes the `CUIRect Button` local to that block 02:47 <+bridge> [ddnet] oh so its just a way for reusing the name Button 02:55 <+bridge> [ddnet] is it possible to have a branch which represents the current deployed build of ddnet? Idk how to keep track of which commits dean cherry picks into the actual build 02:55 <+bridge> [ddnet] I imagine it would also be useful for debugging 03:05 <+bridge> [ddnet] hmm I found a solution to my issue but I still think this would be nice 03:05 <+bridge> [ddnet] I think(tm) we always run master on the servers unless something is broken in master 03:05 <+bridge> [ddnet] but client is different? 03:05 <+bridge> [ddnet] Yes, client can be behind 03:06 <+bridge> [ddnet] I guess it's not so simple then 03:06 <+bridge> [ddnet] Actually we probably don't update the servers unless there is a new commit we want in there, but if we ever do update it's always to master 03:06 <+bridge> [ddnet] we don't run a special branch with cherry picked stuff from master 03:06 <+bridge> [ddnet] Whats the solution? Can you clone a Tag like a branch? 03:07 <+bridge> [ddnet] I guess we can try to create a branch, but it'd be a manual thing we have to update, might forget, hmm 03:07 <+bridge> [ddnet] ``git fetch --tags upstream`` updates tags from upstream to my fork then I can rebase on 16.2.1 tag 03:07 <+bridge> [ddnet] but it would be nice if 16.2.1 was not a tag 03:07 <+bridge> [ddnet] just some branch that gets updated with client 03:08 <+bridge> [ddnet] you can check the deployed version by using `/info` on the server btw 03:08 <+bridge> [ddnet] it'll tell you the git commit we built 03:10 <+bridge> [ddnet] I don't really care about server build so much since it's always the most recent. but if for example I want to develop on the most recent stable release the only way to do that right now is to manually figure out which tag is the most recent and then rebase on it 03:11 <+bridge> [ddnet] I mean it could probably be automated somehow but still not ideal I think 07:33 <+bridge> [ddnet] yeah apple doesn't support webgl2 as the only player in the market as always xD 07:33 <+bridge> [ddnet] DDNet to wasm also doesn't work on safari's webkit, while it works on every other device i tested^^ 07:35 <+bridge> [ddnet] except apple devices (that use safari's webkit... so all mobile and safari desktop) 07:35 <+bridge> [ddnet] it should indeed work pretty much everywhere. The web "drivers" have some workaround for knows bugs afaik 07:35 <+bridge> [ddnet] @Patiga how can i toggle FPS ๐Ÿ˜„ 07:42 <+bridge> [ddnet] I assume it does not have mipmap support yet? ๐Ÿ˜„ 07:57 <+bridge> [ddnet] can't comile tho :/ 07:57 <+bridge> [ddnet] ``` 07:57 <+bridge> [ddnet] error[E0432]: unresolved import `web_sys::HtmlCanvasElement` 07:57 <+bridge> [ddnet] --> map-inspect-web/src/lib.rs:12:15 07:57 <+bridge> [ddnet] | 07:57 <+bridge> [ddnet] 12 | use web_sys::{HtmlCanvasElement, Response}; 07:57 <+bridge> [ddnet] | ^^^^^^^^^^^^^^^^^ no `HtmlCanvasElement` in the root 07:57 <+bridge> [ddnet] ``` 07:57 <+bridge> [ddnet] can't comile tho :/ 07:57 <+bridge> [ddnet] ``` 07:57 <+bridge> [ddnet] error[E0432]: unresolved import `web_sys::HtmlCanvasElement` 07:57 <+bridge> [ddnet] --> map-inspect-web/src/lib.rs:12:15 07:57 <+bridge> [ddnet] | 07:57 <+bridge> [ddnet] 12 | use web_sys::{HtmlCanvasElement, Response}; 07:57 <+bridge> [ddnet] | ^^^^^^^^^^^^^^^^^ no `HtmlCanvasElement` in the root 07:57 <+bridge> [ddnet] ``` 07:57 <+bridge> [ddnet] 07:57 <+bridge> [ddnet] I am on rust nightly 08:32 <+bridge> [ddnet] ``` 08:32 <+bridge> [ddnet] [2022-07-09T06:32:09Z ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-vkCmdCopyImage-srcImageLayout-00128 (0xef9e2bd6)] 08:32 <+bridge> [ddnet] Validation Error: [ VUID-vkCmdCopyImage-srcImageLayout-00128 ] Object 0: handle = 0x562d4c486300, name = Array Texture Creator, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0xef9e2bd6 | vkCmdCopyImage: Cannot use VkImage 0x1510000000151[Array Image generic_deathtiles] (layer=0 mip=0) with specific layout VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL that doesn't match the previous known layout VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL. The 08:32 <+bridge> [ddnet] [2022-07-09T06:32:09Z ERROR wgpu_hal::vulkan::instance] objects: (type: COMMAND_BUFFER, hndl: 0x562d4c486300, name: Array Texture Creator) 08:32 <+bridge> [ddnet] [2022-07-09T06:32:09Z ERROR wgpu_hal::vulkan::instance] VALIDATION [VUID-vkCmdCopyImage-srcImageLayout-00129 (0x85e93015)] 08:32 <+bridge> [ddnet] Validation Error: [ VUID-vkCmdCopyImage-srcImageLayout-00129 ] Object 0: handle = 0x562d4c486300, name = Array Texture Creator, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0x85e93015 | vkCmdCopyImage: Layout for VkImage 0x1510000000151[Array Image generic_deathtiles] is VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL but can only be VK_IMAGE_LAYOUT_GENERAL or VK_IMAGE_LAYOUT_GENERAL. The Vulkan spec states: srcImageLayout must be VK_IM 08:32 <+bridge> [ddnet] [2022-07-09T06:32:09Z ERROR wgpu_hal::vulkan::instance] objects: (type: COMMAND_BUFFER, hndl: 0x562d4c486300, name: Array Texture Creator) 08:32 <+bridge> [ddnet] ``` 08:33 <+bridge> [ddnet] vulkan not happy yet 08:38 <+bridge> [ddnet] your fps calculation seems slightly off xD 08:38 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995217373256753202/unknown.png 08:38 <+bridge> [ddnet] or is that CPU only? 08:39 <+bridge> [ddnet] zoom performance is really awesome, how did you do that? build the map borders as buffers on fly? 08:47 <+bridge> [ddnet] thats caching I think 08:49 <+bridge> [ddnet] weird, must've missed to add a feature to a dependency there. odd that it worked for me 08:50 <+bridge> [ddnet] yea ^^ 08:51 <+bridge> [ddnet] true, I blame wgpu ๐Ÿ˜› (although I could probably fix it, but it works riiiight? 08:53 <+bridge> [ddnet] hm yes, for 5 seconds I bump a counter for each render process I start, I suppose that is not the right way o.o 08:54 <+bridge> [ddnet] thats my version of tilemaps. those also make it less performant on smaller zoom steps (I think) 08:56 <+bridge> [ddnet] the tilemaps are each just a single quad that cover the screen, and in the fragment shader I figure out which tile it is + orientation to figureout the pixels color 08:57 <+bridge> [ddnet] @Patiga I don't see any tiles, only the quads and background? same on firefox/chrome 08:57 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995222077571342357/unknown.png 08:58 <+bridge> [ddnet] 3070/AMD 5600x if it helps 08:59 <+bridge> [ddnet] thanks! don't yet know what causes that 09:00 <+bridge> [ddnet] I only see one error in console 09:00 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995222931930095686/unknown.png 09:03 <+bridge> [ddnet] https://mapview.patiga.eu/?ddnet=Tutorial empty white page for me on iOS safari 09:03 <+bridge> [ddnet] yea those are normal for now ๐Ÿ˜… 09:04 <+bridge> [ddnet] chillerdragon: safari apparently doesnt support webgl as well as the other browsers 09:06 <+bridge> [ddnet] webmetal when 09:11 <+bridge> [ddnet] but one "tilemap" is a collection of multiple tiles? 09:15 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995226654546862101/screenshot_2022-07-09_08-34-48.png 09:15 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995226654752378920/unknown.png 09:16 <+bridge> [ddnet] 3.5k fps is max for me on your renderer, vs 10-11k on ddnet 09:19 <+bridge> [ddnet] but urs also does the surface conversion, that probs costs quite a lot of frames, probably atleast 100% 09:19 <+bridge> [ddnet] so i assume yours can do at least 6-7k 09:21 <+bridge> [ddnet] would it be possible to do the tile rendering in ddnet by just putting all the tiles into some sort of texture atlas then running a compute/fragment shader to lookup the texture per pixel? 09:21 <+bridge> [ddnet] Wait, that's YOU?! 09:21 <+bridge> [ddnet] Wait, that's YOU?! 09:21 <+bridge> [ddnet] Wait, this is totally off topic, my bad. 09:21 <+bridge> [ddnet] lol 09:22 <+bridge> [ddnet] possible yes, if its a good solution is another question tho 09:22 <+bridge> [ddnet] it would get good zoom performance I guess 09:22 <+bridge> [ddnet] yes 09:22 <+bridge> [ddnet] but would defs kill non zoom performance 09:22 <+bridge> [ddnet] yeah 09:23 <+bridge> [ddnet] big zoom is not used that often anyway ingame 09:23 <+bridge> [ddnet] i'd defs like to improve it sooner or later tho 09:23 <+bridge> [ddnet] i see other problems with texture usage tho, e.g. it must look relativly good 09:24 <+bridge> [ddnet] but on which zoom level do you create the textures? 09:24 <+bridge> [ddnet] rerender at every zoom step change? 09:24 <+bridge> [ddnet] mipmaps will suck hard if you dont do that 09:24 <+bridge> [ddnet] but rerendering will create a lag everytime you change the zoom step 09:24 <+bridge> [ddnet] hmm 09:25 <+bridge> [ddnet] @Patiga 's solution might work 09:26 <+bridge> [ddnet] which textures? I only have an additional texture for the srgb redirection 09:26 <+bridge> [ddnet] I'm not very familiar with how the current system works tbh, I looked at it a big then gave up. 09:26 <+bridge> [ddnet] the tilemaps render directly to the target 09:26 <+bridge> [ddnet] tilemap = textures? 09:26 <+bridge> [ddnet] yea I rerender every frame 09:26 <+bridge> [ddnet] ah yes 09:26 <+bridge> [ddnet] those ones 09:26 <+bridge> [ddnet] they are just static, its basically the same tilemap as on the cpu 09:26 <+bridge> [ddnet] with some value changes 09:27 <+bridge> [ddnet] but how did you solve the border? 09:27 <+bridge> [ddnet] why is it so efficient 09:27 <+bridge> [ddnet] when I index into the tilemap, I clamp the index to the min and max index 09:27 <+bridge> [ddnet] do you use a geometry shader? 09:27 <+bridge> [ddnet] https://gitlab.com/Patiga/twgpu/-/blob/master/twgpu/src/map/tilemap_shader.wgsl#L66 09:28 <+bridge> [ddnet] i dont understand why instanced rendering is so slow vs your approach 09:28 <+bridge> [ddnet] u basically do everything on the GPU right? 09:28 <+bridge> [ddnet] yep 09:28 <+bridge> [ddnet] so it creates the borders itself 09:29 <+bridge> [ddnet] yes, it renders the same way as the normal tiles 09:29 <+bridge> [ddnet] this feels like it should be a solved problem, aren't there lots of games that use tile rendering? 09:30 <+bridge> [ddnet] i am just suprised that it works out so well compared to instanced rendering 09:30 <+bridge> [ddnet] to me it sounds relativly similar 09:30 <+bridge> [ddnet] if it creates the vertices on the GPU, or if it uses one vertex and moves it around 09:33 <+bridge> [ddnet] but you enter the fragment shader twice? 09:33 <+bridge> [ddnet] at least sounded like that last time we talked about it 09:33 <+bridge> [ddnet] once for each tilemap 09:34 <+bridge> [ddnet] the vertex buffer (that contains the quad that covers the screen) is actually shared between all tilemaps, the parallax and so on all happens in the vertex shader 09:35 <+bridge> [ddnet] ok understandable 09:36 <+bridge> [ddnet] but still i am mostly interested in the borders 09:36 <+bridge> [ddnet] are they part of the vertex buffer? 09:36 <+bridge> [ddnet] fully extended? 09:37 <+bridge> [ddnet] wait you create a texture for the whole map? 09:38 <+bridge> [ddnet] pls explain before i learn rust syntax xddd 09:47 <+bridge> [ddnet] I'm not very familiar with how the current system works tbh, I looked at it a bit then gave up. 09:58 <+bridge> [ddnet] yes, the entire cpu tilemap is also on the gpu (with some adjusted values) 09:58 <+bridge> [ddnet] yes 09:58 <+bridge> [ddnet] as texture right? 09:58 <+bridge> [ddnet] one pixel per thing 09:58 <+bridge> [ddnet] per tile 09:58 <+bridge> [ddnet] the vertex buffer is simply a quad that always covers the entire screen, no further than that 09:58 <+bridge> [ddnet] yup 09:58 <+bridge> [ddnet] ok 09:58 <+bridge> [ddnet] i understand that part 09:58 <+bridge> [ddnet] just not the borders 09:58 <+bridge> [ddnet] ๐Ÿ˜„ 09:59 <+bridge> [ddnet] so for any given pixel on the screen I need to figure out which tile it is on 09:59 <+bridge> [ddnet] for that I floor the position and have that as the index for the tile 09:59 <+bridge> [ddnet] hey that's what I suggested 09:59 <+bridge> [ddnet] xd 10:00 <+bridge> [ddnet] I use that to access the tilemap 10:00 <+bridge> [ddnet] to support the border, I clamp the index between 0 and the tilemap bounds 10:00 <+bridge> [ddnet] ok i understand 10:01 <+bridge> [ddnet] nice 10:01 <+bridge> [ddnet] maybe wrote a bit hectic, gotta pack my rucksack rn ^^ 10:03 <+bridge> [ddnet] what is meant by "tilemap" ? 10:03 <+bridge> [ddnet] it's a texture? 10:04 <+bridge> [ddnet] yes 10:04 <+bridge> [ddnet] 1 pixel per tile 10:04 <+bridge> [ddnet] so in back in time 3 you'll probably get a 1500x4000 texture 10:04 <+bridge> [ddnet] it's like a lookup table for the texture? 10:05 <+bridge> [ddnet] each pixel in the tilemap contains an index to a texture? or something else 10:06 <+bridge> [ddnet] u basically see the world as pixels too 10:06 <+bridge> [ddnet] and then overlay the tilemap texture and clamp on the edges 10:06 <+bridge> [ddnet] or see the world as tiles which refer to 1 pixel on the tilemap 10:08 <+bridge> [ddnet] ok I get that but you go from screen pixel -> tile coords -> tilemap -> ?? 10:08 <+bridge> [ddnet] where do the actual tile textures come in 10:09 <+bridge> [ddnet] u go from screen -> tile that would map the screen -> some offset etc calculation to know where the tile is on the pixelmap (clamp if outside) 10:09 <+bridge> [ddnet] atleast that's how i imagine it 10:09 <+bridge> [ddnet] screen pixel -> tile coords -> tilemap -> tile id -> tilemap array texture 10:10 <+bridge> [ddnet] ok I understand 10:12 <+bridge> [ddnet] so you only render a single fullscreen quad per layer? 10:12 <+bridge> [ddnet] exactly :) 10:12 <+bridge> [ddnet] I think we could do that in ddnet client 10:12 <+bridge> [ddnet] but the computations in the fragment shader are expensive 10:13 <+bridge> [ddnet] ah 10:13 <+bridge> [ddnet] yeah it leaves everything to the GPU 10:13 <+bridge> [ddnet] 10:13 <+bridge> [ddnet] but at a certain zoom level it might still be worth it to use a similar approach for the borders only 10:13 <+bridge> [ddnet] the computations are expensive or the texture lookup is expensive? 10:13 <+bridge> [ddnet] I thought you just do simple math 10:13 <+bridge> [ddnet] it's clearly faster than instanced rendering 10:14 <+bridge> [ddnet] @Not Keks you have a quad for each tile, couldn't you also add just 8 quads for each border segment? those could just all be activated when any border is seen, that shouldn't be expensive, no? 10:15 <+bridge> [ddnet] i tried that yes 10:15 <+bridge> [ddnet] it gives bit more fps than the native driver, but still sucks too hard 10:15 <+bridge> [ddnet] i assume the vertex shader overhead is just too huge 10:15 <+bridge> [ddnet] it has to rasterize a few thousand quads 10:15 <+bridge> [ddnet] more like then thousands 10:16 <+bridge> [ddnet] that's generally the pro side of your approach 10:16 <+bridge> [ddnet] ah, okay 10:16 <+bridge> [ddnet] it's cheap on vertex stage 10:16 <+bridge> [ddnet] but expensive on fragment 10:16 <+bridge> [ddnet] so a toggle at a certain zoom level would make sense 10:17 <+bridge> [ddnet] yes its pretty simple math with a few io thingies. you want the fragment shader as short as possible though, it has to be computed for each pixel it is triggered for, so each line in the fragment shader adds up (as far as I understand it) 10:18 <+bridge> [ddnet] in my experience doing a single texture lookup is way more expensive than doing a moderately large amount of math 10:18 <+bridge> [ddnet] actually lemme just look 10:18 <+bridge> [ddnet] is that so? 10:19 <+bridge> [ddnet] i mean reading from VRAM at some level yes 10:19 <+bridge> [ddnet] but the gpu cores are also rather slow 10:19 <+bridge> [ddnet] it depends on many things 10:19 <+bridge> [ddnet] yeah probably ๐Ÿ˜„ 10:20 <+bridge> [ddnet] if this is all the math you're doing then it's basically free 10:20 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995243120268681247/unknown.png 10:20 <+bridge> [ddnet] idk if I'm missing something 10:21 <+bridge> [ddnet] that could be a big slowdown, not just having to sample the mapres but also indexing into the tilemap 10:21 <+bridge> [ddnet] yes 10:21 <+bridge> [ddnet] thats all the math 10:21 <+bridge> [ddnet] https://www.youtube.com/watch?v=7YPPFIqUN84 10:24 <+bridge> [ddnet] i wouldnt call it free tho ๐Ÿ˜„ 10:24 <+bridge> [ddnet] not all that video is relevant 10:24 <+bridge> [ddnet] it still probs around half as fast as ddnet, which uses even less math ๐Ÿ˜„ 10:24 <+bridge> [ddnet] hmm 10:25 <+bridge> [ddnet] it goes into a GPU bottleneck 10:25 <+bridge> [ddnet] i only get a CPU bottleneck with ddnet 10:25 <+bridge> [ddnet] I think it probably bottle necks on memory tho 10:26 <+bridge> [ddnet] radeontop says the pipeline is at 100% 10:26 <+bridge> [ddnet] i can certainly imagine its already on the GPU cores 10:26 <+bridge> [ddnet] well idk it doesn't even run on my pc xd 10:26 <+bridge> [ddnet] xD 10:29 <+bridge> [ddnet] @Tater if you want you could try to compile it if you haven't already 10:29 <+bridge> [ddnet] seems like jupstar already figured it out ^^ 10:29 <+bridge> [ddnet] I guess the performance also scales linearly with number of layers regardless of layer content? does ddnet renderer do that? 10:29 <+bridge> [ddnet] ok I'll try 10:29 <+bridge> [ddnet] yes, thats another big factor I think 10:30 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995245523978158171/Screenshot_20220709_102921.png 10:30 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995245524334690314/Screenshot_20220709_102948.png 10:31 <+bridge> [ddnet] Grafik 10:31 <+bridge> [ddnet] left you see the usage of the GPU 10:32 <+bridge> [ddnet] that's a cool tool 10:32 <+bridge> [ddnet] I guess amd only? 10:32 <+bridge> [ddnet] yes radeontop 10:32 <+bridge> [ddnet] so the GPU cores and the VRAM fetching both go up 10:32 <+bridge> [ddnet] @Not Keks have you compiled in release mode btw? 10:32 <+bridge> [ddnet] yes 10:32 <+bridge> [ddnet] cargo b --release 10:33 <+bridge> [ddnet] nice ๐Ÿ‘ 10:38 <+bridge> [ddnet] I think it's building :o 10:40 <+bridge> [ddnet] well anyway really amazing work, its cool to see it working with vulkan and webgl without major problems. I cannot judge how well it compares to native vulkan only, but it seems like the shaders are on a level at least that of higher OpenGL version like, GLES 3 maybe? 10:40 <+bridge> [ddnet] ddnet's vulkan outperforms its opengl backends just bcs of the CPU bottleneck 10:41 <+bridge> [ddnet] in fact RADV is slower than radeonsi on GPU bounds for me 10:41 <+bridge> [ddnet] aah :( 10:41 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995248230877110432/unknown.png 10:41 <+bridge> [ddnet] just ignore the web inspector 10:41 <+bridge> [ddnet] it also doesnt build for me 10:41 <+bridge> [ddnet] oh 10:41 <+bridge> [ddnet] as long as the other tool runs ๐Ÿ˜„ 10:44 <+bridge> [ddnet] which is the other tool? 10:44 <+bridge> [ddnet] twgpu-map-inspect 10:46 <+bridge> [ddnet] what is MAPRES_DIRECTORY 10:46 <+bridge> [ddnet] the editor mapres 10:46 <+bridge> [ddnet] in /data in ur ddnet dir 10:52 <+bridge> [ddnet] omg I works 10:52 <+bridge> [ddnet] omg it works 10:52 <+bridge> [ddnet] how do I move the camera 10:53 <+bridge> [ddnet] oh nvm the mouse moves forever 10:53 <+bridge> [ddnet] yeah the mouse bit buggy xD 10:53 <+bridge> [ddnet] bcs its not clamped inside the window ๐Ÿ˜„ 10:53 <+bridge> [ddnet] perf seems good but I don't have the fancy tool 10:54 <+bridge> [ddnet] u on intel? 10:54 <+bridge> [ddnet] nvidia 10:54 <+bridge> [ddnet] which? 10:54 <+bridge> [ddnet] 3070 10:54 <+bridge> [ddnet] ok so also high end 10:54 <+bridge> [ddnet] would like to know on a "bad" GPU ๐Ÿ˜„ 10:54 <+bridge> [ddnet] ah 10:57 <+bridge> [ddnet] you can double-click for fullscreen 10:57 <+bridge> [ddnet] maybe that helps with the mouse issue 10:57 <+bridge> [ddnet] I'm using desktop version 10:57 <+bridge> [ddnet] web was broke for me 10:59 <+bridge> [ddnet] ohh a rust renderer 10:59 <+bridge> [ddnet] there are some funny artifacts on the end of the map xD 10:59 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995252966011437146/unknown.png 11:03 <+bridge> [ddnet] btw, I managed to bring down the rust code size when building statically 11:04 <+bridge> [ddnet] so now it's okay at a couple of hundred kilobytes 11:04 <+bridge> [ddnet] :PepeA: 11:04 <+bridge> [ddnet] the trick was enabling LTO for the final artifactโ€ฆ 11:04 <+bridge> [ddnet] i.e. in CMakeLists.txt 11:04 <+bridge> [ddnet] oh yeah 11:04 <+bridge> [ddnet] also mentioned on min-sized-rust doc 11:05 <+bridge> [ddnet] not really 11:05 <+bridge> [ddnet] I enabled it in Cargo.toml, but it's no good there because we're producing a static library 11:05 <+bridge> [ddnet] (min-sized-rust only talks about Cargo.toml wrt. LTO) 11:05 <+bridge> [ddnet] ah yeah 11:05 <+bridge> [ddnet] I needed it in the final artifact 11:05 <+bridge> [ddnet] i guess lto makes more sense in the final binary 11:06 <+bridge> [ddnet] ye 11:06 <+bridge> [ddnet] so, do you have an idea where I could implement something small in rust? 11:07 <+bridge> [ddnet] hmm 11:07 <+bridge> [ddnet] a chat command? 11:08 <+bridge> [ddnet] I suppose, sounds good 11:09 <+bridge> [ddnet] @heinrich5991 if u want to use the gameserver in the chat command 11:09 <+bridge> [ddnet] do u have to define the whole gameserver interface in rust? 11:09 <+bridge> [ddnet] xD 11:09 <+bridge> [ddnet] sounds like some work 11:09 <+bridge> [ddnet] ah, maybe a chat command isn't the best start ๐Ÿ˜„ 11:09 <+bridge> [ddnet] hmm 11:10 <+bridge> [ddnet] u can just pass the chat text 11:10 <+bridge> [ddnet] and pass smth back 11:11 <+bridge> [ddnet] the http downloader maybe 11:11 <+bridge> [ddnet] if thats not too big already ๐Ÿ˜„ 11:13 <+bridge> [ddnet] word filter for client 11:13 <+bridge> [ddnet] ez 11:23 <+bridge> [ddnet] @Patiga I think you could return 0 on air tile to skip texture, might get some performance 11:24 <+bridge> [ddnet] GPUs heavily rely on predication 11:24 <+bridge> [ddnet] they don't use jmp opcodes like CPUs do so heavily 11:25 <+bridge> [ddnet] makes sense bcs there is only 1 instruction register for multiple shader cores 11:25 <+bridge> [ddnet] oh interesting, TIL 11:25 <+bridge> [ddnet] predication? 11:25 <+bridge> [ddnet] prediction 11:25 <+bridge> [ddnet] or prediction 11:25 <+bridge> [ddnet] ah 11:25 <+bridge> [ddnet] > Definition of predication 11:25 <+bridge> [ddnet] > 1 archaic. a : an act of proclaiming or preaching. b : sermon. 2 : an act or instance of predicating: such as. a : the expression of action, state, or quality by a grammatical predicate. 11:25 <+bridge> [ddnet] xD 11:26 <+bridge> [ddnet] i think its called predication 11:26 <+bridge> [ddnet] https://en.wikipedia.org/wiki/Predication_(computer_architecture) 11:26 <+bridge> [ddnet] interesting 11:26 <+bridge> [ddnet] from predicate 11:26 <+bridge> [ddnet] then I even misunderstood you because I "autocorrected" predication to prediction. thanks for the question @Ryozuki 11:28 <+bridge> [ddnet] > a predicated move instruction (a conditional move) will only modify the destination if the predicate is true. Thus, instead of using a conditional branch to select an instruction or a sequence of instructions to execute based on the predicate that controls whether the branch occurs, the instructions to be executed are associated with that predicate, so that they will be executed, or not executed, based on whether that predicate is true or 11:32 <+bridge> [ddnet] wikipedia really explains that in the most confusing way possible 11:32 <+bridge> [ddnet] you could try to enhance it once you understand 11:33 <+bridge> [ddnet] xd 11:33 <+bridge> [ddnet] 11:33 <+bridge> [ddnet] to sum it up: 11:33 <+bridge> [ddnet] early discards(returns) are basically a jump 11:33 <+bridge> [ddnet] so all other instructions might(depending on the processor) result in predications 11:33 <+bridge> [ddnet] 11:33 <+bridge> [ddnet] So in the end you might not gain as much performance as you hope you gain. But test it out, then you know for sure, tho on mobile it might be completly different 11:34 <+bridge> [ddnet] i'd generally minimize if conditions or put them at the very end of a function as much as possible 11:35 <+bridge> [ddnet] also as wikipedia says, the instructions are bigger, bcs they require extra encoding 11:35 <+bridge> [ddnet] yeah I was aware of that when I made the suggestion, but if all threads in a group discard early then you save a lot of performance 11:36 <+bridge> [ddnet] if the gpu can detect that ๐Ÿ˜„ 11:36 <+bridge> [ddnet] detecting it also costs resources 11:36 <+bridge> [ddnet] you have to test 11:36 <+bridge> [ddnet] afaiui, you can't "discard" early? 11:36 <+bridge> [ddnet] wdym? 11:36 <+bridge> [ddnet] well, Jupstar says something different 11:36 <+bridge> [ddnet] but my understanding based on what Jupstar said above was: you always run the program from start to end 11:37 <+bridge> [ddnet] yes 11:37 <+bridge> [ddnet] it's more complex than that I think 11:37 <+bridge> [ddnet] so your "early return" just means that a lot of instructions get skipped due to the conditions 11:37 <+bridge> [ddnet] but they still have to get skipped individually 11:37 <+bridge> [ddnet] and unless all the tiles with shared instruction pointer are empty, you even have to wait for the instructions to execute 11:38 <+bridge> [ddnet] threads are groups by nearby pixels, so it's not random that all threads in a group share a code path 11:38 <+bridge> [ddnet] but still detecting if all groupped pixels are discarding also costs 11:38 <+bridge> [ddnet] maybe even more then just run it 11:38 <+bridge> [ddnet] you skip a texture lookup tho 11:39 <+bridge> [ddnet] but all pixels are slower generally 11:39 <+bridge> [ddnet] yes 11:39 <+bridge> [ddnet] they have a predicate, if true or not 11:39 <+bridge> [ddnet] it's data dependent 11:39 <+bridge> [ddnet] if your map has no air it will be slower 11:39 <+bridge> [ddnet] anyway, just test it out, it's more meant as a reminder 11:39 <+bridge> [ddnet] but i'd defs test it on embedded devices 11:39 <+bridge> [ddnet] they usually have fewer instructions 11:50 <+bridge> [ddnet] hmm this may actually be illegal in webgpu, you can only call texturelookup in "uniform" control flow 11:55 <+bridge> [ddnet] ah I think it just requires textureSampleLevel instead of textureSample to remove implicit mip 11:55 <+bridge> [ddnet] maybe you could already discard the vertices itself, e.g. in a geometry shader 11:55 <+bridge> [ddnet] but it's a fullscreen quad? 11:55 <+bridge> [ddnet] yeah u'd need to split it 11:56 <+bridge> [ddnet] but probs adds to much pressure on the vertex stage again 11:57 <+bridge> [ddnet] well i assume this is simply the downside of the approach along with the texture sizes the tilemaps can have 11:57 <+bridge> [ddnet] 11:57 <+bridge> [ddnet] but maybe we can still integrate a similar yet not as powerful approach to our border rendering 11:57 <+bridge> [ddnet] bcs that's still the most unefficient call in ddnet 11:58 <+bridge> [ddnet] https://opengles.gpuinfo.org/displaycapability.php?name=GL_MAX_TEXTURE_SIZE&esversion=3 11:58 <+bridge> [ddnet] even for GLES 3 still 1k reports chill on only 4096 for texture sizes 11:59 <+bridge> [ddnet] @Patiga ^ maybe also interesting for you 11:59 <+bridge> [ddnet] but i assume you could split the texture if needed ๐Ÿ˜„ 11:59 <+bridge> [ddnet] 11:59 <+bridge> [ddnet] i think u have like 16 texture units garantueed in one shader stage with GLES 3 12:00 <+bridge> [ddnet] @Not Keks you wanna test it with your fancy tool? I can't get any fps counter to work 12:00 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995268103900499968/tilemap_shader.wgsl 12:00 <+bridge> [ddnet] sure ๐Ÿ˜„ 12:00 <+bridge> [ddnet] do i need to rebuild? 12:00 <+bridge> [ddnet] I think so 12:00 <+bridge> [ddnet] or is the shader build on fly 12:00 <+bridge> [ddnet] ok 12:02 <+bridge> [ddnet] also idk if there is any difference between ``discard`` and ``return vec4(0.,0.,0.,0.`` 12:02 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995268661860388996/unknown.png 12:02 <+bridge> [ddnet] also idk if there is any difference between ``discard;`` and ``return vec4(0.,0.,0.,0.);`` 12:03 <+bridge> [ddnet] is it exactly the same? 12:03 <+bridge> [ddnet] i dunno, i can just run the old i guess 12:03 <+bridge> [ddnet] It's possible it does nothing, I just assume air tile is 0 12:03 <+bridge> [ddnet] xd 12:05 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995269488826138654/unknown.png 12:06 <+bridge> [ddnet] ok the other was few pixels bigger 12:06 <+bridge> [ddnet] but its relativly similar 12:06 <+bridge> [ddnet] it looks the same fps? 12:06 <+bridge> [ddnet] I probably messed up and it does nothing at all 12:07 <+bridge> [ddnet] but i also dunno how the shader file is embedded into the rust code 12:07 <+bridge> [ddnet] does it know when it needs to rebuild? 12:07 <+bridge> [ddnet] idk it knew I had errors when I built it with a bad shader 12:07 <+bridge> [ddnet] xd 12:08 <+bridge> [ddnet] i changed the shader files but it didnt go into the linking stage again 12:09 <+bridge> [ddnet] maybe it just caches both files? well anyway patiga will know ^^ 12:10 <+bridge> [ddnet] more important is, how much does to_srgb cost, @Patiga is it only run for the web edition? 12:14 <+ddnetuser> hey 12:15 <+bridge> [ddnet] hai 12:15 <+ddnetuser> How do I change the server_ip in ddnet? 12:15 <+bridge> [ddnet] in the UI? 12:15 <+ddnetuser> In self-hosting 12:15 <+bridge> [ddnet] the binding IP? 12:15 <+ddnetuser> Yes 12:16 <+ddnetuser> couldn't find it in docs 12:16 <+bridge> [ddnet] https://ddnet.tw/settingscommands/ 12:16 <+bridge> [ddnet] 12:16 <+bridge> [ddnet] i dunno if it exists, but here are all commands 12:16 <+bridge> [ddnet] `bindaddr ` 12:16 <+ddnetuser> okay thanks 12:16 <+bridge> [ddnet] but you'll only be able to assign IP addresses that you can bind on, obviously ๐Ÿ˜‰ 12:17 <+ddnetuser> Gotcha 12:44 <+ddnetuser> > [net]: failed to bind socket with domain 10 and type 2 (99 'Cannot assign requested address') 12:44 <+ddnetuser> I'm getting this, 12:45 <+ddnetuser> even tho I do have access ti the address: 12:45 <+ddnetuser> inet 10.8.0.2/24 scope global tun0 12:46 <+ChillerDragon> I ran fine so far ignorning that warning :) it mostly still works 12:46 <+ChillerDragon> check `ss -lt` if it is bound 12:47 <+ChillerDragon> uhm `ss -lu` i mean 12:48 <+ddnetuser> > UNCONN 0 0 10.8.0.2:8303 0.0.0.0:* 12:48 <+ddnetuser> It is 12:48 <+ddnetuser> thank you 12:48 <+ddnetuser> let me try connecting 13:14 <+ChillerDragon> oof 25 minutes waiting on da macOS pipeline on github https://zillyhuhn.com/cs/.1657365263.png 14:11 <+ChillerDragon> my plan to improve my pipeline situation on gitlab is also not going too well so far https://zillyhuhn.com/cs/.1657368639.png 14:13 <+bridge> [ddnet] do they have a limit for public repos? 14:26 <+ChillerDragon> Not sure but my use case is a private repo anyways. So i probably should host some own runners. 14:26 <+ChillerDragon> .. or open source my bots axaxaxax 14:56 <+bridge> [ddnet] https://www.reddit.com/r/rust/comments/vuysxf/into_future_has_been_stabilized/ 14:56 <+bridge> [ddnet] poggers 14:56 <+bridge> [ddnet] https://refaktory.net/blog/posts/into-the-future-with-intofuture-improving-rust-async-ergonomics 15:04 <+bridge> [ddnet] :Celebrate: 15:10 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995316016655634582/unknown.png 15:22 <+bridge> [ddnet] Was this made in php I wonder, who even uses php for this kind of application though? :think: 15:24 <+bridge> [ddnet] He used single quotes outside to be allowed the double inside, but single quotes disable string interpolation 15:24 <+bridge> [ddnet] @deen xD I know now why I did overwrite the prediction with the snap data. But I will do a new solution for this, that do not modify the prediction system. 15:24 <+bridge> [ddnet] I used the data for the jump display to calculate if someone did use his ground jump. (But we do not want to display the ground jump now anyway (only if you have one jump), but that will be done in an different PR). And also I used that data for the active weapon display. (Both cases only if you spectate others, because then it is not predicted) .... I will do a fix PR, sorry for not telling clear in first place that I want to do more tests 15:26 <+bridge> [ddnet] I have seen PHP in a lot of ticket systems, for like cinemas, But I guess that is only a test by a dev, because the price is also fiction.... 15:27 <+bridge> [ddnet] xDD even funnier the website at the bottom xD that provides secure home solution has no TLS 15:30 <+bridge> [ddnet] lmao 15:30 <+bridge> [ddnet] so php is just like bash 15:30 <+bridge> [ddnet] i knew it 15:34 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995322047762808864/redditsave.com_s21mpb8bsea91.gif 15:43 <+bridge> [ddnet] @Aoe hi I have a question 15:44 <+bridge> [ddnet] wrong channel probs 15:48 <+ChillerDragon> #aoe is the channel u want 16:07 <+bridge> [ddnet] wtf, u destroyed discord 16:07 <+bridge> [ddnet] ez 16:07 <+bridge> [ddnet] interesting that if u include a URL in the title it gets parsed as URL by discord 16:11 <+bridge> [ddnet] github/.com 16:56 <+bridge> [ddnet] ๐Ÿ‘€ 17:27 <+bridge> [ddnet] what is a "inline namespace" 17:27 <+bridge> [ddnet] in cpp 17:29 <+bridge> [ddnet] > DDNet-Server goes from 1.9 MiB to 6.6 MiB, and DDNet goes from 3.9 MiB to 8.6 MiB. 17:29 <+bridge> [ddnet] honestly in these days this is still a rly small binary 17:30 <+bridge> [ddnet] discord dll is 3.3mb, for doing basically nothingxd 17:30 <+bridge> [ddnet] xd 17:31 <+bridge> [ddnet] eldenring.exe is 80mb 17:31 <+bridge> [ddnet] @Ryozuki `inline namespace` is not visible to the library using it, but it'll end up in the mangled name. this way, c++ libraries can break API without breaking ABI 17:32 <+bridge> [ddnet] @Ryozuki `inline namespace` is not visible to the program using the header, but it'll end up in the mangled name. this way, c++ libraries can break API without breaking ABI 17:32 <+bridge> [ddnet] i see 17:32 <+bridge> [ddnet] and eldenring itself is probs like 200gb? xdd 17:33 <+bridge> [ddnet] if we include UHD data files at some point it will increase anyway 17:33 <+bridge> [ddnet] xd 17:34 <+bridge> [ddnet] I wonder if including an svg renderer would be smaller 17:34 <+bridge> [ddnet] then it could build the PNGs of the right size on launch in the background 17:40 <+bridge> [ddnet] yeah would probs still cache the results: 17:40 <+bridge> [ddnet] 17:40 <+bridge> [ddnet] `../scripts/build.sh 3840 2160 .. 49,92s user 2,97s system 1446% cpu 3,658 total` 17:40 <+bridge> [ddnet] 17:41 <+bridge> [ddnet] that is with using inkscape. Dunno if its better than other SVG renderers tho 17:41 <+bridge> [ddnet] https://github.com/RazrFalcon/resvg 17:42 <+bridge> [ddnet] `../scripts/build.sh 4096 2160 .. 38,04s user 2,64s system 189% cpu 21,423 total` 17:42 <+bridge> [ddnet] single threaded 17:42 <+bridge> [ddnet] if that renders correctly... 17:42 <+bridge> [ddnet] even firefox has bugs in SVG rendering 17:42 <+bridge> [ddnet] @Not Keks it renders better probs 17:42 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995354236013510737/unknown.png 17:42 <+bridge> [ddnet] pases more tests 17:42 <+bridge> [ddnet] than firefox 17:42 <+bridge> [ddnet] ok 17:42 <+bridge> [ddnet] they state correctness as design goal at the very least 17:43 <+bridge> [ddnet] i just wonder why inkscape should be below firefox 17:43 <+bridge> [ddnet] i experienced multiple bugs with firefox but not with inkscape xD 17:44 <+bridge> [ddnet] "Designed for edge-cases" 17:44 <+bridge> [ddnet] xD 17:44 <+bridge> [ddnet] > While resvg is not the only SVG library written in Rust, it's the only one that is written completely in Rust. There is no non-Rust code in the final binary. 17:44 <+bridge> [ddnet] poggers 17:44 <+bridge> [ddnet] one thing if we use rust, we should be careful with our libraries, i saw many rust libs under AGPL like 17:45 <+bridge> [ddnet] there's some tool to check them 17:45 <+bridge> [ddnet] or rather a couple of them ^^ 17:45 <+bridge> [ddnet] not rly 17:45 <+bridge> [ddnet] most use MIT + Apache 2.0 17:45 <+bridge> [ddnet] maybe the bigger ones yeah 17:45 <+bridge> [ddnet] but its the one most ppl use 17:45 <+bridge> [ddnet] anyway if we can check it, fine 17:46 <+bridge> [ddnet] cuz rust itself uses that 17:46 <+bridge> [ddnet] so they follow 17:46 <+bridge> [ddnet] yeah good ๐Ÿ˜„ 17:46 <+bridge> [ddnet] all current dependencies that I added are under both MIT and Apache 2.0, at one's choice 17:47 <+bridge> [ddnet] but would there be a problem with using AGPL libraries? 17:47 <+bridge> [ddnet] we are full open source anyway 17:47 <+bridge> [ddnet] yes, but then all downstream users have to comply with AGPL, too 17:47 <+bridge> [ddnet] stallman would like that hehe 17:47 <+bridge> [ddnet] i.e. if there's a reason we're not under the AGPL, then we shouldn't use AGPL libraries either 17:51 <+bridge> [ddnet] CC0 best, bcs sounds coolest, like some special secret orginanization 17:51 <+bridge> [ddnet] xd 17:51 <+bridge> [ddnet] idk about using cc0 on code 17:51 <+bridge> [ddnet] law is so complicated 17:52 <+bridge> [ddnet] patents stuff etc 17:52 <+bridge> [ddnet] yeah best is idc just dont annoy me xd 17:52 <+bridge> [ddnet] the jupstar license, no license 17:54 <+bridge> [ddnet] I added a deny.toml, now you can issue `cargo deny check licenses` to check if we include some weird licenses 17:54 <+bridge> [ddnet] epic 17:54 <+bridge> [ddnet] oh cargo itself does that? 17:54 <+bridge> [ddnet] no, cargo-deny does 17:54 <+bridge> [ddnet] cargo deny isn't cargo 17:55 <+bridge> [ddnet] `sudo pacman -S cargo-deny` 17:55 <+bridge> [ddnet] ah true 18:03 <+bridge> [ddnet] what about the freeze stars now? im not up to date ๐Ÿ˜„ 18:04 <+bridge> [ddnet] will they come back or will i use older versions forever ๐Ÿ˜› 18:06 <+bridge> [ddnet] best about rust is really cargo, finally i can add regex lib xdd 18:07 <+bridge> [ddnet] i think other ppl around here wanted to wait at least one full week 18:07 <+bridge> [ddnet] until then u should use the new client and try if u get used to it, or if you have other ideas to improve it 18:07 <+bridge> [ddnet] 18:07 <+bridge> [ddnet] e.g. could add a small star at the freeze bar for every second xddd, then u have ur stars back 18:16 <+bridge> [ddnet] tooling* 18:20 <+bridge> [ddnet] hm ok but i prefer older version then ๐Ÿ˜„ 18:20 <+bridge> [ddnet] freeze bar is pure shit 18:43 <+bridge> [ddnet] do you have a reason why that is the case? 18:48 <+bridge> [ddnet] its my opinion 18:50 <+bridge> [ddnet] so unfortunately no reason 18:51 <+bridge> [ddnet] no reason to remove it xd 18:51 <+bridge> [ddnet] there is a reason; code maintainability 18:52 <+bridge> [ddnet] obviously, you can ask whether code maintainability is worth more than this particular feature, but that's where the tradeoffs start 18:53 <+bridge> [ddnet] i just want an option to change it back xd 18:54 <+bridge> [ddnet] I understood that. you claimed that there's "no reason to remove it", I just gave you one reason to show that "no reason" is definitely wrong 18:56 <+bridge> [ddnet] ill just wait or use old versions ๐Ÿ˜„ 19:08 <+bridge> [ddnet] Excellent feedback 19:15 <+bridge> [ddnet] I mean, in the end its just an animation. Code maintainability should still be there even if you change the "animation" right? 19:20 <+bridge> [ddnet] he means the options to disable it 19:21 <+bridge> [ddnet] i think 19:48 <+bridge> [ddnet] How can I customize like the video I sent ? ๐Ÿ‘‡ 19:48 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/992055164087324702/995327285966155806/dd.mp4 19:48 <+bridge> [ddnet] If you can help me, thank you ๐Ÿ™ 20:06 <+ChillerDragon> imo the freeze bar is too intense. Its visually bloating. 20:08 <+bridge> [ddnet] make smaller, less alpha i dunno, just try some stuff out 20:08 <+bridge> [ddnet] nothing is perfect from start 20:12 <+bridge> [ddnet] how is it more intense than several bright yellow stars popping out of nowhere and spinning? xd 20:21 <+bridge> [ddnet] It even gets less intense with each second, the intensity of the freezbar stays the same form 100-0% x) 20:21 <+bridge> [ddnet] It even gets less intense with each second. The intensity of the freezebar stays the same between 100-0% x) 20:23 <+bridge> [ddnet] I just played with the freezebar for the first time 20:23 <+bridge> [ddnet] it's really amazing 20:23 <+bridge> [ddnet] I have no idea why you'd want to go back to the stars 20:23 <+bridge> [ddnet] one issue with stars is too much movement, the bar just appears and stays mostly static so it's way less distracting 20:24 <+bridge> [ddnet] https://discord.gg/XTDQgJ9YMp 20:24 <+bridge> [ddnet] https://discord.gg/XTDQgJ9YMp 20:24 <+bridge> [ddnet] I think the freezebar is nice too. But people just have their preferences tho, some can play better with the stars, some like the freezebar more. We should let them choose 20:24 <+bridge> [ddnet] I think the freezebar is nice too. But people just have their preferences tho, some can play better with the stars, some like the freezebar more. We should let them be able choose 20:25 <+bridge> [ddnet] it's not sustainable to add configs for everything. why is this special and which config can we delete in order to make space? 20:25 <+bridge> [ddnet] i personally prefer thiner bars, like in most games 20:26 <+bridge> [ddnet] very thin bar 20:29 <+bridge> [ddnet] IMO we could delete the whole freezebar in freeze config because when you are in freeze you can see it because your sword isnt there anymore 20:29 <+bridge> [ddnet] we should rather delete some setting that has extra code paths 20:29 <+bridge> [ddnet] But why do we need to make space already? The average config still has reasonable size i think 20:29 <+bridge> [ddnet] the freezebar setting is at least just a single parameter 20:30 <+bridge> [ddnet] But why do we need to make space already? The average config-file still has reasonable size i think 20:30 <+bridge> [ddnet] cl_useoldfreezeanim 0|1 20:31 <+bridge> [ddnet] or cl_usestars would also be 1 value 20:31 <+bridge> [ddnet] or cl_usestars would also be one parameter* 20:32 <+bridge> [ddnet] merge all "old style" configs into `cl_i_hate_change 1` 20:32 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995397080367517696/unknown.png 20:33 <+bridge> [ddnet] but also chat 20:34 <+bridge> [ddnet] yea, that might actually be doable 20:34 <+bridge> [ddnet] develop the new UI and keep the old UI frozen 20:34 <+bridge> [ddnet] nah please dont merge 20:34 <+bridge> [ddnet] why not merge? 20:34 <+bridge> [ddnet] I can live with it xd 20:34 <+bridge> [ddnet] or make a fork with old chat 20:35 <+bridge> [ddnet] Then the whole point of customization is gone. Some people like the new chat but the old freezeanim for example 20:35 <+bridge> [ddnet] it's generally the same few people who hate anything new tho 20:35 <+bridge> [ddnet] Then the whole point of customization is gone. Some people like the new chat but also the old freezeanim for example 20:35 <+bridge> [ddnet] but the my point is that customization is hard to maintain 20:35 <+bridge> [ddnet] hence I'm against adding more options 20:35 <+bridge> [ddnet] just for comparision 20:35 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995397921287712798/unknown.png 20:36 <+bridge> [ddnet] like 90% on blocking servers hating on the new hud and freeze 20:36 <+bridge> [ddnet] looks cleaner IMHO 20:36 <+bridge> [ddnet] btw is there any way to change freeze to the old star one? 20:36 <+bridge> [ddnet] no, there currently isn't 20:37 <+bridge> [ddnet] ok i see what you mean. 20:37 <+bridge> [ddnet] the hud is not for block :thonk: 20:38 <+bridge> [ddnet] yea but it still is enabled for the block servers since most people use ddnet client 20:38 <+bridge> [ddnet] the HUD is also for block 20:39 <+bridge> [ddnet] doesn't block have their own weird tiles and not really use solo etc? 20:39 <+bridge> [ddnet] depends on what block we're talking about 20:39 <+bridge> [ddnet] ddnet also hosts block servers 20:40 <+bridge> [ddnet] those probably have the new UI 20:40 <+bridge> [ddnet] the other block servers probably don't 20:40 <+bridge> [ddnet] blmapchill does 20:41 <+bridge> [ddnet] yeah new hud things just useless 20:41 <+bridge> [ddnet] Can someone please explain in a short and easy way how the server controlls the HUD on the clientside? 20:42 <+bridge> [ddnet] @Cรธke please stop non-constructively shitting on other people's work 20:42 <+bridge> [ddnet] @Cรธke please stop non-constructively saying bad things about other people's work 20:44 <+bridge> [ddnet] fine: I don't like the new HUD things 20:44 <+bridge> [ddnet] not fine: the new HUD things are just useless 20:45 <+bridge> [ddnet] the new hud is honestly pretty good. like i get why people wouldnt want it but for me it's really helpful 20:46 <+bridge> [ddnet] i doubt most ppl talk about the HUD tho 20:46 <+bridge> [ddnet] the old HUD was actually useless for ddrace 20:46 <+bridge> [ddnet] while the new provides useful information, and if u dont need it disable it 20:46 <+bridge> [ddnet] most are angry bcs of the stars 20:47 <+bridge> [ddnet] it sends the tee's state, and the client displays it 20:47 <+bridge> [ddnet] maybe I don't quite get the question 20:48 <+bridge> [ddnet] and if you dont like the new HUD , for whatever reason, you can disable it. I also think most mean the freezeanim 20:48 <+bridge> [ddnet] yeah ๐Ÿ˜„ 20:48 <+bridge> [ddnet] you could skin it as such, no? we have asset files 20:49 <+bridge> [ddnet] Yes, and whats the server providing? I saw something about flags? 20:49 <+bridge> [ddnet] Ah you already did ๐Ÿ˜› 20:50 <+bridge> [ddnet] it's providing all that. e.g. how long the unfreeze will take, if you are in solo, how many jumps you have, if you have portal guns, โ€ฆ 20:50 <+bridge> [ddnet] noo wym? how are they supposed to know their health now? 20:50 <+bridge> [ddnet] ah yeah 20:50 <+bridge> [ddnet] The flags allow the server to enable parts of the HUD as needed 20:50 <+bridge> [ddnet] their 7 kitties lifes 20:51 <+bridge> [ddnet] thats what i mean, but the code side of it 20:51 <+bridge> [ddnet] I'm waiting for the "shields > bar" argument 20:52 <+bridge> [ddnet] what would be the flag for the jump indicator? 20:52 <+bridge> [ddnet] just for example? .-. 20:53 <+bridge> [ddnet] `HUD_HEALTH_ARMOR` for health and shields, `HUD_AMMO` for ammo count, `HUD_DDRACE` for weapons and jump 20:54 <+bridge> [ddnet] Why they didn't split up `HUD_DDRACE` into `HUD_JUMPS` and `HUD_WEAPONBAR` idk, maybe to conserve flag space? 20:56 <+bridge> [ddnet] Ez, if you don't have shields you can't move, because it'd be dangerous to move without protection. So when you have no shields it intuitively and obviously means you can't move 21:01 <+bridge> [ddnet] thanks 21:03 <+bridge> [ddnet] I still dont really get how server and client go together but i think i will figure it out by the time 21:04 <+bridge> [ddnet] Movements, HUD, freeze and so on. I never made a multiplayer game, so i guess i should XD 21:04 <+bridge> [ddnet] they should bring back the animation; like hammering while going into freeze.. the little moment of ninja 21:05 <+bridge> [ddnet] its so nostalgic and kinda usefull 21:06 <+bridge> [ddnet] if we should get rid of anything it would be the bug making hooks/grenades/shotguns weaker or stronger depending on the id placement 21:06 <+bridge> [ddnet] HUD, freeze, hook and so on. I never made a multiplayer game, so i guess i should XD 21:12 <+bridge> [ddnet] We should what?:thonk: 21:12 <+bridge> [ddnet] kill strong/weak hook 21:13 <+bridge> [ddnet] or make it a toggle or something 21:13 <+bridge> [ddnet] Its an essential part of DDRace wdym "kill" 21:13 <+bridge> [ddnet] its essential because people built maps around it 21:14 <+bridge> [ddnet] If you want weak hook just type /kill, 21:14 <+bridge> [ddnet] If you want strong hook, your partner just types /kill 21:14 <+bridge> [ddnet] what about in middle of race? 21:14 <+bridge> [ddnet] Would be kinda annoying if people switched between strong and hook 21:14 <+bridge> [ddnet] not really 21:15 <+bridge> [ddnet] how so exactly? 21:15 <+bridge> [ddnet] Rather ask, why do you wanna be able to toggle it mid race? 21:16 <+bridge> [ddnet] well some prefer psydo fly with weak hook as to speedfly with strong hook 21:16 <+bridge> [ddnet] and not everyone knows how to do both 21:17 <+bridge> [ddnet] and also blocking maps; creates an unfair advantage having strong hook but you can argue it makes it the fun of being the one that hasnt killed the longest 21:17 <+bridge> [ddnet] but not only is it hooks that are effected its grenades and shotguns as well 21:18 <+bridge> [ddnet] Would be kinda annoying if people switched between strong and weak 21:18 <+bridge> [ddnet] or add /spec to all maps (make it a client feature, instead of map feature) 21:19 <+bridge> [ddnet] i think either of these changes would greatly make ddrace better 21:20 <+bridge> [ddnet] this one I guess we could bring back as a gimmick, it didn't really have much value, it was just an animation bug 21:21 <+bridge> [ddnet] yeah its so nice having that little ninja "boost" i've been doing it for as long as i can remember ๐Ÿ˜ฉ 21:23 <+bridge> [ddnet] Well i think for blocking maps it makes sense to have a general strength. 21:24 <+bridge> [ddnet] as for ddrace i understand where you're coming from but its only essential because strong/weak has been in the game since caveman ages 21:25 <+bridge> [ddnet] so mappers took advantage and made it necessary 21:25 <+bridge> [ddnet] it might be too late to get rid of it completely. which you can do server sided so block is still saveable. but as for ddrace there should be a toggle or /spec atleast 21:25 <+bridge> [ddnet] I mean you would kinda change an important part of the game and many people wouldnt like it. The other thing is that the implementation of the toggle can be kinda tricky based on how it works atm 21:26 <+bridge> [ddnet] i understand. i've had this argument plenty of times lol but its only my opinion on the matter 21:27 <+bridge> [ddnet] You can open an Issue on Github and it can be marked as a discussion ^^ 21:27 <+bridge> [ddnet] https://github.com/ddnet/ddnet/issues 21:27 <+bridge> [ddnet] meh we've already discussed this for years and the general population wants to keep it 21:27 <+bridge> [ddnet] i wont bother but just wanted to state my opinion cuz im bored 21:28 <+bridge> [ddnet] folks dont like change im afraid 21:30 <+bridge> [ddnet] besides the issues count is too perfect lol 21:30 <+bridge> [ddnet] besides the issues count is too perfect lol ( sorry for spam everyone ) 21:48 <+bridge> [ddnet] the bar being thinner is a rly good idea 21:48 <+bridge> [ddnet] actually a 1 pixel line would be the best 21:56 <+bridge> [ddnet] this one 21:56 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/995418086347911268/crop.mp4 21:58 <+bridge> [ddnet] i love doing that in fng. 21:58 <+bridge> [ddnet] i love doing that in fng. it's like you're a comet 21:59 <+bridge> [ddnet] yes, but i only figured this out yesterday or today. i think it's only when you use antiping 22:00 <+bridge> [ddnet] and others don't see it ๐Ÿ˜ฆ 23:08 <+bridge> [ddnet] I sadly don't have a geometry shader afaik, only vertex and fragment 23:09 <+bridge> [ddnet] remove weak hook 23:09 <+bridge> [ddnet] on build it embeds the shader as a string, it will only update on rebuild 23:11 <+bridge> [ddnet] my struct `RgbaSurface` abstracts the srgb out of the chosen textureformat. if the format is non-srgb, it renders directly. if it is a srgb format, it renders to a texture and then to the surface 23:11 <+bridge> [ddnet] (and on web it currently only supports srgb formats) 23:25 <+bridge> [ddnet] We could also add an other usless dashing animation... But since you do not really dash... it is pretty useless 23:28 <+bridge> [ddnet] I guess that is old, at least I think I have seen this years ago 23:33 <+bridge> [ddnet] i think i never noticed it, cause i never had antiping enabled 23:39 <+bridge> [ddnet] I have one question, will it be possible to switch the design of the Assets in the top left to the ones before again or do we have to use the new one? Cant you add the option to decide which of the 2 Designs we want 23:40 <+bridge> [ddnet] i said its useless for me, the icons are cool and i like voxels work 23:40 <+bridge> [ddnet] indeed interesting that it only works with antiping... probably prediction error, because of ninja. I guess it should not predict ninja but somehow it does it anyway 23:41 <+bridge> [ddnet] i have no clue what you are talking about xd 23:41 <+bridge> [ddnet] I mean its helpfull for some players i understand that but i would appreciate if we could switch between both of those but if not im fine it with it too 23:41 <+bridge> [ddnet] why would you want to have hearts and shields back? Is there one good reason? 23:43 <+bridge> [ddnet] I wonder if you can also ninja dash in ddnet freeze without antiping 23:43 <+bridge> [ddnet] or if it works there too also with antiping 23:43 <+bridge> [ddnet] without it never works i think 23:44 <+bridge> [ddnet] or if it works there too also only with antiping 23:44 <+bridge> [ddnet] just tried it, you just scream 23:45 <+bridge> [ddnet] yes scream gets generated. But dash effect is probably mispredicted, somehow the actiontick gets copied into the render information 23:45 <+bridge> [ddnet] interesting 23:45 <+bridge> [ddnet] yes scream gets generated. But dash effect is probably wrong predicted, somehow the actiontick gets copied into the render information 23:47 <+bridge> [ddnet] then say it's useless for you, not it's useless 23:47 <+bridge> [ddnet] action tick? xd 23:47 <+bridge> [ddnet] You didn't need antiping enabled to see the ninja's dash particles before, if I'm understanding this conversation correctly 23:47 <+bridge> [ddnet] well many players got used to those shields and liked them more what i heared from friends we understand that the new interface is helpful for some players but some players prefere the old interface too so i just wanted to ask if you could add both but if not its too fine too 23:48 <+bridge> [ddnet] btw you have to use old client for testing xD new client has no ninja animation 23:48 <+bridge> [ddnet] well many players got used to those shields and liked them more what i heared from friends we understand that the new interface is helpful for some players but some players prefere the old interface too so i just wanted to ask if you could add both but if not its fine too 23:48 <+bridge> [ddnet] I made the bar intentionally a little bit clunky to match the rest of tw ui, might try making a more minimalistic hud skin one day 23:48 <+bridge> [ddnet] this is my case: i only see dash on fng server with antiping enabled with hammer weapon selected when i press fire button 23:49 <+bridge> [ddnet] hmm, i pull latest changes 23:49 <+bridge> [ddnet] action tick (correctly attacktick) is the tick in that you started your attack, so you started your dash attack. But in freeze you should not be allowed to attack. 23:49 <+bridge> [ddnet] you could use 16.1 or older for testing... 23:50 <+bridge> [ddnet] i still have *my* minimalistic hud skin 23:51 <+bridge> [ddnet] what do you mean "for testing"? i am just playing. 23:51 <+bridge> [ddnet] If this question is can you do it before these changes without antiping, then yes. 23:52 <+bridge> [ddnet] I mean normal minimalistic, not scifi looking 23:52 <+bridge> [ddnet] i wouldn't consider my hud skin sci fi but i get that 23:53 <+bridge> [ddnet] ahh, i get what you mean, so on old clients, it could be that dash also works on non fng servers? because i think latest ddnet client still does ninja dash animation in fng 23:53 <+bridge> [ddnet] but it's removed in the new hud change? 23:53 <+bridge> [ddnet] looks a bit scifi to me but it's cool 23:54 <+bridge> [ddnet] im on latest master and dash works in fng 23:55 <+bridge> [ddnet] but also I'd like to try thin bars and other stuff that I don't think would fit as default 23:55 <+bridge> [ddnet] I guess most people are not angry about the missing shields and hearts Display. But about the new freeze animation. They say they want the old HUD back but they mean they want the old freeze animation back. and the "counter using shields" ... 23:55 <+bridge> [ddnet] 23:55 <+bridge> [ddnet] We will first concentrate in improving these things before adding an option for old stuff (e.g. allow to show stars instead of freezebar). 23:56 <+bridge> [ddnet] it would be cool if these people would say exactly what they don't like and not just ask how to get the old one 23:56 <+bridge> [ddnet] We did that a lot of times. 23:57 <+bridge> [ddnet] I guess most people are not angry about the missing shields and hearts Display. But about the new freeze animation. They say they want the old HUD back but they mean they want the old freeze animation back. and the "counter using shields" ... 23:57 <+bridge> [ddnet] 23:57 <+bridge> [ddnet] We will first concentrate in improving these things before adding an option for old stuff (e.g. allow to show stars instead of freezebar). i don't even want to think about building an option for it for now. There should simply be a good solution that you can be happy with. 23:57 <+bridge> [ddnet] Okay i understand that but is it possible to lower the Ice Particles atm cause it feels like there a little to much ice particles falling from the Tees 23:57 <+bridge> [ddnet] I don't like how bright the freezebar is, and how it sticks to the tee. I can tolerate it sticking to the tee if it was smaller and transparent. Transparency slider is a must outside of freeze as well 23:57 <+bridge> [ddnet] I guess you mean they cover the face to much? 23:58 <+bridge> [ddnet] sometimes you cant see, if a player is spectating or not, due to too many particles, yes 23:58 <+bridge> [ddnet] you can edit hud.png to get that 23:58 <+bridge> [ddnet] is already in work, nearly merged 23:58 <+bridge> [ddnet] in fast gameplay 23:58 <+bridge> [ddnet] already did 23:58 <+bridge> [ddnet] then why complain about it 23:58 <+bridge> [ddnet] what skeith says is still useful feedback 23:58 <+bridge> [ddnet] Because new players can be affected by it too, people that won't change such things 23:58 <+bridge> [ddnet] or wont think to do so 23:58 <+bridge> [ddnet] so we can improve the general case 23:59 <+bridge> [ddnet] Well not that its just that there are like constantly 4-5 ice particles on the Tee falling from it down i mean like make the cooldown for ice particles to fall down or do 2-3 ice particles on the Tee instead of 5 23:59 <+bridge> [ddnet] if u understand what i mean 23:59 <+bridge> [ddnet] yes, we should defnitly work on that, I think too that the face should be more clearly viewable if you sit in freeze