00:05 <+bridge> [ddnet] why store the cskin as a unique_ptr in unordered_map anyway? If it‘s just a cskin you can emplace and only the map allocates anything 00:06 <+bridge> [ddnet] Yeah, that’s sort of what I was thinking, but I decided I’ll just wait and see on the PR since it was a bit too vague of a question for me 06:53 <+bridge> [ddnet] And what do you use as key? 06:53 <+bridge> [ddnet] You could overload the hash to work with cskin 06:57 <+bridge> [ddnet] Tho the hash might calculate before inserting takes place 08:49 <+bridge> [ddnet] fixed size array with a cstr of the name of skin. 08:56 <+bridge> [ddnet] But then the string must be a heap object 08:58 <+bridge> [ddnet] I think arrays doent have std hash support 08:58 <+bridge> [ddnet] But if u have time to implement what u mean do it, bcs reading code is easier xd 09:00 <+bridge> [ddnet] In the end it doesn't matter too much. If it creates two pointers plus cskin in heap vs cskin and a 24 bytes array 11:05 <+bridge> [ddnet] Why are all source files in ddnet CMakeLists written manually and not e.g. using file()? 11:19 <+bridge> [ddnet] i have brought new SSD and just installed windows and some software. I tried to run DDNet but it doesn't start, maybe i have no software like directX, visual C++, Framework, etc? 11:19 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1030047192028827648/unknown.png 11:24 <+bridge> [ddnet] Amd GPU? 11:24 <+bridge> [ddnet] https://ddnet.org/news/amd-beta-opengl-crash/ 11:24 <+bridge> [ddnet] We don't use any redistributable 11:25 <+bridge> [ddnet] Ddnet is not compiled with windows tools 11:27 <+bridge> [ddnet] i don't see settings_ddnet.cfg there 11:27 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1030049012323201084/unknown.png 11:27 <+bridge> [ddnet] Create it 11:31 <+bridge> [ddnet] worked, thx) 12:43 <+bridge> [ddnet] You’ll have to ask @heinrich5991 but I think this was the recommended approach by cmake docs. 15:42 <+bridge> [ddnet] Found ictf based on ddnet, it has antispoof, you can host it 15:42 <+bridge> [ddnet] https://github.com/teeworlds-instagib-elo/iCTFX 15:48 <+bridge> [ddnet] however need to be modified 15:48 <+bridge> [ddnet] however needs to be modified 16:01 <+bridge> [ddnet] because that works better when the set of files change 16:01 <+bridge> [ddnet] is there an issue with it? 16:02 <+bridge> [ddnet] https://www.youtube.com/watch?v=Vhh_GeBPOhs 16:03 <+bridge> [ddnet] too lazy to add new files in alphabetic order 💤 16:04 <+bridge> [ddnet] I put the alphabetic order so we don't argue about the order ^^ 16:06 <+bridge> [ddnet] No, just question 16:19 <+bridge> [ddnet] But it's a different alphabetic order than vscode uses. If it wasn't changed already xd and that sucks xd 16:30 <+bridge> [ddnet] Vscodes is the weird one out iirc :/ 16:35 <+bridge> [ddnet] it works good otherwise too xd 16:36 <+bridge> [ddnet] let's puz reverse alphabetic order to even things 16:36 <+bridge> [ddnet] alwyas A first, never Z 16:37 <+bridge> [ddnet] I dunno i think had todo with underscores and stuff. It's more likely someone from vscode thought about a reason than us or not. But I'd need to check kde behaviour ^^ 16:38 <+bridge> [ddnet] It's not that complicated iirc. Vscode uses a locale when sorting. Cmake uses ascii order 16:39 <+bridge> [ddnet] Ok 16:39 <+bridge> [ddnet] Ok 16:40 <+bridge> [ddnet] Ok 16:41 <+bridge> [ddnet] is it ok to not have virtual destructors here? 16:41 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1030128188640206856/unknown.png 16:42 <+bridge> [ddnet] > Destructor of 'CLinearScrollbarScale' is public and non-virtual (fix available)clang-tidy(cppcoreguidelines-virtual-class-destructor) 16:47 <+bridge> [ddnet] Can you delete IScrollBarScale's destructor and see if it still complains? 16:47 <+bridge> [ddnet] I'll admit this is one thing I'm not too familiar with 16:47 <+bridge> [ddnet] I know you need a virtual destructor if you delete through the base class 16:49 <+bridge> [ddnet] if i add virtual ~IScrollbarScale() = delete; 16:49 <+bridge> [ddnet] to it 16:49 <+bridge> [ddnet] it doesnt complain 16:49 <+bridge> [ddnet] Attempt to use a deleted functionclang(deleted_function_use) 16:49 <+bridge> [ddnet] ui.h(37, 10): '~IScrollbarScale' has been explicitly marked deleted here 16:49 <+bridge> [ddnet] Try without the virtual 16:49 <+bridge> [ddnet] but CLogarithmicScrollbarScale breaks 16:49 <+bridge> [ddnet] without virtual it complains 16:50 <+bridge> [ddnet] Hm, why is the default destructor even needed for a pure virtual class I wonder 16:50 <+bridge> [ddnet] Yeah idk, I find OOP disgusting anyway 16:50 <+bridge> [ddnet] https://stackoverflow.com/questions/1219607/why-do-we-need-a-pure-virtual-destructor-in-c 16:50 <+bridge> [ddnet] yeah rust better 16:53 <+bridge> [ddnet] Oop best 16:54 <+bridge> [ddnet] After vulkan 16:54 <+bridge> [ddnet] :oop: 16:54 <+bridge> [ddnet] Which is better than rust 16:55 <+bridge> [ddnet] It's do good we even added an emote for it 16:55 <+bridge> [ddnet] Soo 16:56 <+bridge> [ddnet] we need a rusty emote when old players come back to game after some time 16:56 <+bridge> [ddnet] :rust: 16:57 <+ChillerDragon> :rustlang: 16:59 <+bridge> [ddnet] Then the question is, how does adding files manually work better than using file()? 17:02 <+bridge> [ddnet] you can copy files to have local modification without changing their extension 17:04 <+bridge> [ddnet] Wdym? 17:33 <+bridge> [ddnet] create file named test.c, test.c is not compiled with explicit file list 18:57 <+bridge> [ddnet] does someone have an idea on how to efficiently check how far a player on a map is? 18:57 <+bridge> [ddnet] given : an std::vector which stores the best path from start to finish and a vec2 which stores the position of the player. 18:57 <+bridge> [ddnet] ive tried to just to just loop over the vector and then return the smallest distance but its slow af...(even without square roots) 19:00 <+bridge> [ddnet] how about u make a structure that splits the map in chunks 19:00 <+bridge> [ddnet] then u only need to iterate over a few chunks, which only store a few std::vector 19:01 <+bridge> [ddnet] and then keeping track of which chunk the player is in? 19:01 <+bridge> [ddnet] u can simply calculate it on fly 19:02 <+bridge> [ddnet] smth like x % chunkwidth + y / chunkheight * chunkwidth 19:02 <+bridge> [ddnet] nice idea 19:02 <+bridge> [ddnet] dunno how much resources or programming time u want to spent 19:03 <+bridge> [ddnet] but if u go all in pre calculate which is the closest checkpoint for every tile 😄 19:03 <+bridge> [ddnet] that would be almost instant at runtime 19:04 <+bridge> [ddnet] just making a fitness function for my ai rn 19:05 <+bridge> [ddnet] ah nice 19:05 <+bridge> [ddnet] well then i'd precalculate as much as u can, bcs runtime is expensive for AI probs 20:50 <+bridge> [ddnet] what if the chunk the player is in doesnt have any pathtiles? 20:51 <+bridge> [ddnet] what if the chunk the player is in doesnt have any pathtiles? what chunk should it choose then? 20:56 <+bridge> [ddnet] Supervised or RL? 20:56 <+bridge> [ddnet] rl 20:56 <+bridge> [ddnet] nice :D 20:56 <+bridge> [ddnet] using NEAT 20:56 <+bridge> [ddnet] I am using PPO 20:57 <+bridge> [ddnet] neighbour chunks, or save in the chunks which have one 20:58 <+bridge> [ddnet] but tbh, just do it per tile and save the closest index of vector per tile 20:59 <+bridge> [ddnet] is this some machine learning blockchain buzzwords i dont know about? 21:00 <+bridge> [ddnet] xd 21:01 <+bridge> [ddnet] for what kind of mas are you doing it? gores,ddnet? or pvp? 21:01 <+bridge> [ddnet] for what kind of maps are you doing it? gores,ddnet? or pvp? 21:01 <+bridge> [ddnet] xD I am suprised too I only knew me and some other guys were working on ML but apparently there is Teero and someone else 21:01 <+bridge> [ddnet] gores 21:01 <+bridge> [ddnet] finished aip gores yet? xD 21:02 <+bridge> [ddnet] nope 21:02 <+bridge> [ddnet] still fixing the enviroment 21:02 <+bridge> [ddnet] in what language? 21:02 <+bridge> [ddnet] python sb3 21:02 <+bridge> [ddnet] did you just rewrite tw in python? xD 21:03 <+bridge> [ddnet] ah no the ddnet works in C/C++ 21:03 <+bridge> [ddnet] and the input ouput is handled by fifo files between the python and the ddnet 21:03 <+bridge> [ddnet] oh 21:05 <+bridge> [ddnet] i just made a new client with only the necessary physics and a gui with imgui and vulkan in cpp 21:05 <+bridge> [ddnet] wow nice 21:08 <+bridge> [ddnet] btw this eliminates 75% of the iterations. its nice 21:12 <+bridge> [ddnet] Use flow field pathfinding @Teero 21:23 <+bridge> [ddnet] what are the benefits? 21:23 <+bridge> [ddnet] It gives you direction to go and distance to finish 21:23 <+bridge> [ddnet] And fast 21:24 <+bridge> [ddnet] hmm 21:37 <+bridge> [ddnet] i would have to mix A* and flow field pathfinding 21:38 <+bridge> [ddnet] is it for gores? 21:38 <+bridge> [ddnet] y 21:38 <+bridge> [ddnet] Idk otherwise it's harder lol 21:38 <+bridge> [ddnet] Gores pathing is easy 21:38 <+bridge> [ddnet] Well unless there is unfreeze parts 21:39 <+bridge> [ddnet] Just ignore those 21:46 <+bridge> [ddnet] what if we had something like this? 21:46 <+bridge> [ddnet] only the bottom part would be affected, right? 21:46 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1030204788882800730/unknown.png 21:46 <+bridge> [ddnet] @Tater 21:47 <+bridge> [ddnet] it should work fine for that map 21:48 <+bridge> [ddnet] to my knowledge its just a grid of vectors which all point to their neighbor with the lowest cost, right? 21:49 <+bridge> [ddnet] sure but you can also store distance in that grid because 21:49 <+bridge> [ddnet] you start from the finish and then expand outwards by 1 tile at a time incrementing by one each pass 21:50 <+bridge> [ddnet] then you get a grid that has distance and you can do some checks to figure out where to go 21:57 <+bridge> [ddnet] how big is your vector for it to be slow? 21:57 <+bridge> [ddnet] even with a million entry, it should be fine (i.e. no more than few ms) 21:57 <+bridge> [ddnet] even with a million entry, it should be fine (i.e. no more than few 10s ms) 22:00 <+bridge> [ddnet] but with a AI u probs want to run as many entities as possible at once 22:01 <+bridge> [ddnet] or is it a simple AI 22:01 <+bridge> [ddnet] a "stupid" one 😄 22:02 <+bridge> [ddnet] maybe i live too much in a deeplearning bubble lol 22:03 <+bridge> [ddnet] ah no he said RL, so yeah makes sense to optimize it 22:09 <+bridge> [ddnet] @Tater ig i can just use the already made a* to guide the flow to the finish 22:10 <+bridge> [ddnet] anyways 22:10 <+bridge> [ddnet] gn 23:02 <+bridge> [ddnet] cmake has some problems with rebuilds and detecting changed files 23:06 <+bridge> [ddnet] A, okey