00:00 <+bridge> [ddnet] There has to be a trick to move the stupid shared libs towards the end 00:00 <+bridge> [ddnet] 32 bit = 4,294,967,296 bytes (4 Gigabytes) 00:00 <+bridge> [ddnet] 64 bit = 18,446,744,073,709,551,616 (16 Exabytes) 00:00 <+bridge> [ddnet] the difference is ridiculous 00:01 <+bridge> [ddnet] I wonder if vmmap is open source, I could modify it to snap sooner 00:01 <+bridge> [ddnet] my mobile is also 32bit, should test the map there xD 00:01 <+bridge> [ddnet] does it support opengl 00:01 <+bridge> [ddnet] im dissapointed in your dev team 00:02 <+bridge> [ddnet] why 00:02 <+bridge> [ddnet] zwelf doesnt know who nouis is 00:02 <+bridge> [ddnet] cuz he is not on this discord 00:02 <+bridge> [ddnet] yh just talked to him about biggernouis and he had no idea about it 00:02 <+bridge> [ddnet] and didnt even know nouis 00:04 <+bridge> [ddnet] @Ryozuki even OpenGL es 3.0 00:05 <+bridge> [ddnet] tested it few months ago on android 00:05 <+bridge> [ddnet] :poggers: 00:08 <+bridge> [ddnet] You know what could work? Preallocating a large chunk for this kind of stuff at the very beginning 00:08 <+bridge> [ddnet] but i'd call this map the worst case 00:08 <+bridge> [ddnet] 2660x1100 or smth like that 00:09 <+bridge> [ddnet] with many layers 00:10 <+bridge> [ddnet] LARGEADDRESSAWARE works 00:11 <+bridge> [ddnet] though I'm sure we are breaking something with that so I'll enable top-down allocation to see what breaks 😛 00:13 <+bridge> [ddnet] @Learath2 you can maybe disable ASLR to map libraries to places you want 00:13 <+bridge> [ddnet] probably not a good idea though 00:13 <+bridge> [ddnet] (but an interesting exploit target) 00:17 <+bridge> [ddnet] Anyway from 2gb you dont get to use much if at all for your heap 00:17 <+bridge> [ddnet] So keep that in mind next time working on 32bit stuff 00:17 <+bridge> [ddnet] what's the reason for allocating 250MB btw? 00:17 <+bridge> [ddnet] sounds like a lot 00:18 <+bridge> [ddnet] That you'll have to ask @Jupstar ✪ 00:18 <+bridge> [ddnet] Maybe there is a way to upload it to the gpu in chunks? I honestly wouldn't know 00:19 <+bridge> [ddnet] Or maybe a way to avoid making a copy of it 00:22 <+bridge> [ddnet] Yeah this allocation is just massive I see why it won't fit now that I've turned on LARGEADDRESSAWARE 00:23 <+bridge> [ddnet] pix 00:23 <+bridge> [ddnet] Anyway, I think this is a viable(tm) solution. Forcing malloc to return memory top-down didn't break any of our libraries either 00:23 <+bridge> [ddnet] LARGEADDRESSAWARE you mean? 00:23 <+bridge> [ddnet] well its allocating the vertices 00:23 <+bridge> [ddnet] LARGEADDRESSAWARE gets us well large addresses 00:24 <+bridge> [ddnet] forcing the top down allocation lets me make sure the larger addresses that can now be returned by malloc doesn't break any library 00:24 <+bridge> [ddnet] ah 00:24 <+bridge> [ddnet] This is the largest snapshot I managed to capture but it gets a little larger than this, no way to get faster than 1s intervals in vmmap 00:24 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/807028944904912946/unknown.png 00:25 <+bridge> [ddnet] This is with large addresses, with small addresses the huge orange blocks don't fit above the first purple nor is there enough contiguous memory anywhere after the first purple 00:26 <+bridge> [ddnet] appereantly one layer is pretty full of tiles, didntr check tho if true 00:28 <+bridge> [ddnet] if this stupid tool was integrated into VS I could debug it even further 00:29 <+bridge> [ddnet] Anyway, with only small addresses this is the largest heap I could capture 00:29 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/807030112033833010/unknown.png 00:30 <+bridge> [ddnet] That white block in the middle is 260M so I guess we are making a huge deallocation that's causing fragmentation 00:36 <+bridge> [ddnet] freezebg is 2415*1620 tiles 00:36 <+bridge> [ddnet] each tile consumes 4 vertices 00:36 <+bridge> [ddnet] each vertex 24 bytes 00:36 <+bridge> [ddnet] Nah, I just need more resolution, idk why that happens 00:36 <+bridge> [ddnet] There is enough space but that 260M block is just left empty for some reason 00:38 <+bridge> [ddnet] factorio only renders stuff near the player I think 00:38 <+bridge> [ddnet] (given that the world is unbounded, they have to do that in some way) 00:38 <+bridge> [ddnet] factorio is in a class of optimization of it's own, us mere mortals can't achieve that 00:39 <+bridge> [ddnet] I think they had a blog post about that 00:39 <+bridge> [ddnet] they render each layer near the player 00:39 <+bridge> [ddnet] the things they come up with to cut 1ms from their pipeline really should be inspiration to us all 00:39 <+bridge> [ddnet] and then just render new stuff as the player moves 00:40 <+bridge> [ddnet] I guess I can code tooling to figure out why the allocator is skipping that 260m block 00:40 <+bridge> [ddnet] Or maybe a high resolution memory map 00:41 <+bridge> [ddnet] Or maybe dig into some very old blogs to figure out what they did back in Windows XP 00:43 <+bridge> [ddnet] it has nothing todo with the rendering 00:44 <+bridge> [ddnet] pre creating the buffer is fastest, what else would u do 00:44 <+bridge> [ddnet] really? I thought you upload information about hte whole map up-front 00:44 <+bridge> [ddnet] runtime creation is slower 00:44 <+bridge> [ddnet] factorio doesn't do that, I think 00:44 <+bridge> [ddnet] only about tiles that exist 00:44 <+bridge> [ddnet] the map has a layer that filles all tiles tho 00:44 <+bridge> [ddnet] yeah but why should that be faster? 00:45 <+bridge> [ddnet] it would use less memory 🙂 00:45 <+bridge> [ddnet] reallocating everything is fastest obv, but has disadvantages as RAM usage 00:45 <+bridge> [ddnet] preallocating everything is fastest obv, but has disadvantages as RAM usage 00:45 <+bridge> [ddnet] probably has a higher up-front cost, too 00:45 <+bridge> [ddnet] why 00:46 <+bridge> [ddnet] because you need to look at every tile at the start vs only looking at tiles near the player 00:46 <+bridge> [ddnet] we also only look to tiles near the player 00:46 <+bridge> [ddnet] the renderer doesnt render anything not visible 00:46 <+bridge> [ddnet] oh, so we only allocate that buffer for later usage? 00:46 <+bridge> [ddnet] yes 00:47 <+bridge> [ddnet] leaving it mostly empty? 00:47 <+bridge> [ddnet] no 00:47 <+bridge> [ddnet] we have 2 buffers 00:47 <+bridge> [ddnet] one that helps with finding offsets and one on the GPU containing vertices 00:48 <+bridge> [ddnet] and the one containing vertices contains info about every tile, not only near the player? so it has a higher up-front cost to build? 00:48 <+bridge> [ddnet] ah thought u mean at runtime 00:48 <+bridge> [ddnet] yeah, should have 00:48 <+bridge> [ddnet] but in tw u alsmost always spec the whole map probably 00:48 <+bridge> [ddnet] or huge chunks 00:49 <+bridge> [ddnet] so wouldnt really be worth optimizing it in chunks for RAM 00:49 <+bridge> [ddnet] Q: Isn't tmpTiles also on the heap? 00:49 <+bridge> [ddnet] we just had someone who couldn't run this game on that map ^^ 00:49 <+bridge> [ddnet] he can run it 00:49 <+bridge> [ddnet] with gl 1.x 00:50 <+bridge> [ddnet] @Learath2 yes, but tmp xd 00:50 <+bridge> [ddnet] did we tell him? 00:50 <+bridge> [ddnet] @Learath2 in the end it worked on linux 32bit 00:50 <+bridge> [ddnet] so cant be out of address space 00:50 <+bridge> [ddnet] @heinrich5991 yes i did 00:50 <+bridge> [ddnet] nice 00:50 <+bridge> [ddnet] ASLR works differently on each platform 00:50 <+bridge> [ddnet] @Jupstar ✪ linux might allocate differently, might even be a different userspace allocator 00:51 <+bridge> [ddnet] So does malloc and the underlying kernel allocator 00:51 <+bridge> [ddnet] yes 00:51 <+bridge> [ddnet] thats what learath tries to understand since 2 hours isnt it 00:51 <+bridge> [ddnet] (how we can change it) 00:51 <+bridge> [ddnet] It quite obviously runs out of address space, the largest remaining free contiguous block in the address space is 260M which is not enough 00:51 <+bridge> [ddnet] so large address space works or what? 00:52 <+bridge> [ddnet] Large address space works and didn't break anything in my 10-20 minutes of testing 00:52 <+bridge> [ddnet] Though it's a shit fix, it would work for people running the 32bit binary by mistake or on situations like the one reported 00:53 <+bridge> [ddnet] It wouldn't work so well on an actually memory constrained 32bit computer 00:54 <+bridge> [ddnet] yeah ok 00:54 <+bridge> [ddnet] dunno the details of that 00:54 <+bridge> [ddnet] anyway i'd prefer to disable GL >= 2.1 on 32bit completly than to fix this 00:55 <+bridge> [ddnet] Figures 00:55 <+bridge> [ddnet] for me this is also a pretty worst case 00:55 <+bridge> [ddnet] the editor already warns at 1000x1000 tiles 00:55 <+bridge> [ddnet] sounds good. maybe we could also display an error message 00:55 <+bridge> [ddnet] this is like 3 times the size 00:55 <+bridge> [ddnet] You are okay with it crashing too I guess 00:56 <+bridge> [ddnet] i am indeed 00:56 <+bridge> [ddnet] instead of crashing I mean 😉 00:56 <+bridge> [ddnet] xD 00:56 <+bridge> [ddnet] an error message to tell people to enable opengl1.1 sounds better to me 00:56 <+bridge> [ddnet] @heinrich5991 we are using unguarded mallocs everywhere anyway, getting to an error is tough without exceptions as teeworlds code is built for crashing and burning mostly 00:56 <+bridge> [ddnet] funny how slow pcs get a slow implementation 00:56 <+bridge> [ddnet] almost ironically xD 00:57 <+bridge> [ddnet] @Learath2 since it's only about address space exhaustion, we can guard that single big allocation 00:57 <+bridge> [ddnet] not about actual out of memory problems 00:58 <+bridge> [ddnet] Well I'd feel warmer about that 00:58 <+bridge> [ddnet] i think its better to not allow gl >= 2.x at all 00:58 <+bridge> [ddnet] completly disable it 00:58 <+bridge> [ddnet] most ppl with 32bit system have a old pc anyway 00:59 <+bridge> [ddnet] or maybe only on windows 00:59 <+bridge> [ddnet] That I don't quite like 00:59 <+bridge> [ddnet] i'll test with my mobile now, but since android is basiucally linux kernel, probs will work 00:59 <+bridge> [ddnet] Dooming people to worse performance because some very edge case massive maps crash sounds silly 01:00 <+bridge> [ddnet] as said 01:00 <+bridge> [ddnet] they wont have GPUs to run anything than 1.x anyway 01:01 <+bridge> [ddnet] Well at the very least the person that actually reported the issue won't be happy that we doomed him to bad performance 😛 01:01 <+bridge> [ddnet] you think my 2012 GPU doesn't support anything newer than opengl1.x? 01:01 <+bridge> [ddnet] is it 64bit ready? 01:01 <+bridge> [ddnet] yes 01:01 <+bridge> [ddnet] see 01:01 <+bridge> [ddnet] Atleast he can compile his own tho so he is better off than most people with 32bit computers 01:02 <+bridge> [ddnet] so u can use 64bit 01:03 <+bridge> [ddnet] well, the error message doesn't hurt 01:03 <+bridge> [ddnet] not even in program complexity I think 01:04 <+bridge> [ddnet] but u underestimate ppl 01:04 <+bridge> [ddnet] they never get warnings 01:04 <+bridge> [ddnet] they read it and are like, WTF?? ERROR 01:04 <+bridge> [ddnet] I'll try to look into TraceProcessor later to parse xperf recordings to get a high resolution timeline. I want to know why we leave that 260M block free 01:05 <+bridge> [ddnet] Oh or maybe attach a kernel debugger, that sounds fun 01:05 <+bridge> [ddnet] @Learath2 at this point just replace windows with linux kernel silently ^^ 01:05 <+bridge> [ddnet] get microsoft dev 01:06 <+bridge> [ddnet] You should read the blog of that guy I mentioned, he does stuff like this all the time to figure out chromium performance issues and bugs 01:06 <+bridge> [ddnet] There are ways to work around the idiocy of windows 01:08 <+bridge> [ddnet] sounds cool, if u have infinite time 01:08 <+bridge> [ddnet] then i'd also write teeworlds-os 01:08 <+bridge> [ddnet] that can only run teeworlds 01:10 <+bridge> [ddnet] We should work on an asciiart renderer for the next version, for the computers with 8g of ram, because that's just of the past decade 01:10 <+bridge> [ddnet] just saw a video of smone writing raytraced ascii renderer xd 01:10 <+bridge> [ddnet] Funnily with the heap growing top down the allocations actually do fit 01:11 <+bridge> [ddnet] even without largeaddressaware 01:23 <+bridge> [ddnet] Okay xperf is great 01:30 <+bridge> [ddnet] Though I kinda need a workstation to run this thing, it's insane the amount of processing power it uses 03:20 <+bridge> [ddnet] Great, I spent almost an hour researching how to browse the virtual memory of a windows process, tried it `unresolved external symbol _PssCaptureSnapshot referenced in function _dbg_dumpmem` 03:20 <+bridge> [ddnet] because it would kill us if god forbid for once our game builds without 10 thousand linking issues 04:09 <+bridge> [ddnet] https://gist.github.com/Learath2/dfc67040e79598d8551aeac382ffc79e you can not possibly comprehend how happy I was to get this working 04:10 <+bridge> [ddnet] an API scarcely documented, mostly used by malware developers 05:26 <+bridge> [ddnet] Okay monkey patching native code is just too much work 14:14 <+bridge> [ddnet] I missed these extended debugging sessions, first time I've had fun in months 15:07 <+bridge> [ddnet] im sure that hammerfly is just a variable you set and it is read somewhere but i cant find where its set 15:11 <+bridge> [ddnet] im sure that hammerfly is just a variable you set and it is read somewhere but i cant find where its read 15:44 <+bridge> [ddnet] Hammerfly? You mean the dummy hf? 15:44 <+bridge> [ddnet] yeah 15:44 <+bridge> [ddnet] its all jank 15:45 <+bridge> [ddnet] what actually sends of the thing to make the dummy fire 15:45 <+bridge> [ddnet] ```cpp 15:45 <+bridge> [ddnet] if((m_DummyFire / 12.5f) - (int)(m_DummyFire / 12.5f) > 0.01f) 15:45 <+bridge> [ddnet] { 15:45 <+bridge> [ddnet] m_DummyFire++; 15:45 <+bridge> [ddnet] return 0; 15:45 <+bridge> [ddnet] } 15:45 <+bridge> [ddnet] m_DummyFire++; 15:45 <+bridge> [ddnet] 15:45 <+bridge> [ddnet] m_HammerInput.m_Fire = (m_HammerInput.m_Fire + 1) | 1; 15:45 <+bridge> [ddnet] m_HammerInput.m_WantedWeapon = WEAPON_HAMMER + 1; 15:45 <+bridge> [ddnet] if(!g_Config.m_ClDummyRestoreWeapon) 15:45 <+bridge> [ddnet] { 15:45 <+bridge> [ddnet] m_DummyInput.m_WantedWeapon = WEAPON_HAMMER + 1; 15:45 <+bridge> [ddnet] } 15:45 <+bridge> [ddnet] 15:45 <+bridge> [ddnet] vec2 Main = m_LocalCharacterPos; 15:45 <+bridge> [ddnet] vec2 Dummy = m_aClients[m_LocalIDs[!g_Config.m_ClDummy]].m_Predicted.m_Pos; 15:45 <+bridge> [ddnet] vec2 Dir = Main - Dummy; 15:45 <+bridge> [ddnet] m_HammerInput.m_TargetX = (int)(Dir.x); 15:45 <+bridge> [ddnet] m_HammerInput.m_TargetY = (int)(Dir.y); 15:45 <+bridge> [ddnet] 15:45 <+bridge> [ddnet] mem_copy(pData, &m_HammerInput, sizeof(m_HammerInput)); 15:45 <+bridge> [ddnet] return sizeof(m_HammerInput); 15:45 <+bridge> [ddnet] ``` 15:45 <+bridge> [ddnet] i found this but changing WEAPON_HAMMER to WEAPON_LASER turns it into a gun? 15:46 <+bridge> [ddnet] cant find where m_HammerInput is defined either 15:47 <+bridge> [ddnet] ```sh 15:47 <+bridge> [ddnet] [solly@arch src]$ grep -r "HammerIput" ./* 15:47 <+bridge> [ddnet] [solly@arch src]$ 15:47 <+bridge> [ddnet] ``` 15:47 <+bridge> [ddnet] ?????? 15:47 <+bridge> [ddnet] u have a typo there 15:47 <+bridge> [ddnet] ```sh 15:47 <+bridge> [ddnet] [solly@arch src]$ grep -r "HammerInput" ./* 15:47 <+bridge> [ddnet] [solly@arch src]$ 15:47 <+bridge> [ddnet] ``` 15:47 <+bridge> [ddnet] ?????? 15:47 <+bridge> [ddnet] also dont post such big code 15:47 <+bridge> [ddnet] this chat is connected to irc 15:48 <+bridge> [ddnet] wow im dumb soz but uhh do u know how changing WEAPON_HAMMER to WEAPON_LASER changes it to gun 15:50 <+bridge> [ddnet] u know there is a +1 right 15:50 <+bridge> [ddnet] WEAPON_LASER + 1 is equal to WEAPON_NINJA 15:50 <+bridge> [ddnet] but then WEAPON_HAMMER + 1 = hamer? 15:50 <+bridge> [ddnet] no 15:50 <+bridge> [ddnet] = gun 15:50 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/807261958264324147/unknown.png 15:50 <+bridge> [ddnet] but its not gun when its unedited 15:51 <+bridge> [ddnet] it sets the m_WantedWeapon 15:51 <+bridge> [ddnet] btw do u have the laser 15:51 <+bridge> [ddnet] if u dont then m_WantedWeapon is prob ignores 15:51 <+bridge> [ddnet] and thats why u get a gun 15:51 <+bridge> [ddnet] but idk 15:51 <+bridge> [ddnet] `m_HammerInput.m_WantedWeapon = WEAPON_LASER + 1` 15:51 <+bridge> [ddnet] remove the +1? 15:52 <+bridge> [ddnet] yea 15:52 <+bridge> [ddnet] very confusing 15:52 <+bridge> [ddnet] but if u havent acquired the laser 15:52 <+bridge> [ddnet] it prob wont work 15:52 <+bridge> [ddnet] idk what this code does tho 15:53 <+bridge> [ddnet] dummybot 15:53 <+bridge> [ddnet] xd 15:53 <+bridge> [ddnet] @Ryozuki dont remove the +1 15:54 <+bridge> [ddnet] it woks 15:54 <+bridge> [ddnet] tell him not me 15:54 <+bridge> [ddnet] xd 15:54 <+bridge> [ddnet] it works ? xd 15:54 <+bridge> [ddnet] i just ctrl c ctrl v the dummy code change it for laser cuz i wanted laser dummy 15:54 <+bridge> [ddnet] @SollyBunny wanted weapon is the direct weapon selection which uses the input, and 0 means no weapon selected 15:54 <+bridge> [ddnet] @fokkonaut u know that WEAPON_HAMMER + 1 is essentially WEAPON_GUN 15:54 <+bridge> [ddnet] check the server side of the code 15:54 <+bridge> [ddnet] oh okay 15:54 <+bridge> [ddnet] its weapon+1 15:54 <+bridge> [ddnet] for wanted weapon using direct weapon selection 15:55 <+bridge> [ddnet] iirc 15:55 <+bridge> [ddnet] xD 15:55 <+bridge> [ddnet] 0 means hammer 15:55 <+bridge> [ddnet] Not in wantedweapon case 15:55 <+bridge> [ddnet] there is always a weapon selected 15:55 <+bridge> [ddnet] my dummy is now capable of wall shotting me somehow 15:55 <+bridge> [ddnet] bot 15:55 <+bridge> [ddnet] i helped abotter 15:55 <+bridge> [ddnet] rip 15:55 <+bridge> [ddnet] Ryozuki for me, there is never a directly selected weapon because I dont use +weaponX 15:55 <+bridge> [ddnet] i just scroll 15:56 <+bridge> [ddnet] so it stays 0 for my character all the time 15:56 <+bridge> [ddnet] isnt scroll +weapon or smth 15:56 <+bridge> [ddnet] it says wanted++ ig 15:56 <+bridge> [ddnet] no 15:56 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/807263446151725066/unknown.png 15:56 <+bridge> [ddnet] @Ryozuki scroll just goes to the next weapon, not selecting a weapon directly 15:56 <+bridge> [ddnet] yes 15:57 <+bridge> [ddnet] i mean if u think it logically scroll probs sets the wanted weapon to the next 15:57 <+bridge> [ddnet] but idk i didnt look the code 15:57 <+bridge> [ddnet] No 15:57 <+bridge> [ddnet] wanted weapon is something else xd 15:57 <+bridge> [ddnet] as said 15:57 <+bridge> [ddnet] https://github.com/ddnet/ddnet/blob/d21f7966b11ed010a6f9827cbc6b302ad6206d75/src/game/server/entities/character.cpp#L331 15:58 <+bridge> [ddnet] Idk why everything I say has to be wrong ^^ 15:58 <+bridge> [ddnet] I worked with this part of the code already 15:58 <+bridge> [ddnet] dont get offended 15:58 <+bridge> [ddnet] its okay 15:58 <+bridge> [ddnet] Lol 16:00 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/807264411135508500/unknown.png 16:00 <+bridge> [ddnet] 0 means no direct selection 16:01 <+bridge> [ddnet] https://github.com/ddnet/ddnet/blob/d21f7966b11ed010a6f9827cbc6b302ad6206d75/src/game/server/entities/character.cpp#L307 16:03 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/807265029069471784/unknown.png 16:04 <+bridge> [ddnet] back to rust 16:04 <+bridge> [ddnet] :monkalaugh: 16:04 <+bridge> [ddnet] @Learath2 in my way towards learning rust macros i found something interesting, you can create compiler errors and tell the compiler the span of the code that makes those 16:04 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/807265517403373618/unknown.png 16:05 <+bridge> [ddnet] rust master race :monkalaugh: 16:08 <+bridge> [ddnet] I was going to stop you because no one asks about that part of the code 16:09 <+bridge> [ddnet] i realized it later 16:09 <+bridge> [ddnet] xd 16:09 <+bridge> [ddnet] I knew it the second I heard about the uninformed question, noobs only want to touch that part of the code because they want to make bots 16:10 <+bridge> [ddnet] This is very useful, I wish clang had such pretty errors and ways to trigger more informative asserts 16:10 <+bridge> [ddnet] :poggers: learath agreed :poggers: 16:11 <+bridge> [ddnet] I’ll work on a language called definitelyNotRust taking all the parts I like ;P 16:11 <+bridge> [ddnet] :monkaS: 16:12 <+bridge> [ddnet] i noticed a lack of blog posts about macros doing the stuff i do 16:12 <+bridge> [ddnet] a free path for my blogging career 16:12 <+bridge> [ddnet] rust macros 16:12 <+bridge> [ddnet] :monkalaugh: 16:13 <+bridge> [ddnet] it rly looks like black magic 16:16 <+bridge> [ddnet] My adventures yesterday confirmed that tooling for windows is shit. 16:16 <+bridge> [ddnet] actually with this spanned compiler errors i can do really precise macro attributes 16:16 <+bridge> [ddnet] e.g the input can only accept text, password, email 16:16 <+bridge> [ddnet] Chromium apparently stole my idea and made their own. They monkey patch all allocation functions by disassembling at runtime 16:16 <+bridge> [ddnet] rly epic 16:16 <+bridge> [ddnet] :monkalaugh: 16:17 <+bridge> [ddnet] @Learath2 i see tweets on twitter "linux is the best os for dev" 16:17 <+bridge> [ddnet] and windows normies in replies 16:17 <+bridge> [ddnet] telling windows is the best 16:17 <+bridge> [ddnet] and i cant laugh more 16:18 <+bridge> [ddnet] But memory debugging tools are shit everywhere, which confirms my worst fear 16:18 <+bridge> [ddnet] https://twitter.com/DerekBeattie/status/1231256549408071685 16:18 <+bridge> [ddnet] :nouis: 16:18 <+bridge> [ddnet] Modern programmers give no shits about memory usage 16:18 <+bridge> [ddnet] @Learath2 modern programmers directly dont know c+ 16:18 <+bridge> [ddnet] why would they give a shit about memory 16:19 <+bridge> [ddnet] they use their javascripts 16:19 <+bridge> [ddnet] and some python here and there 16:19 <+bridge> [ddnet] And the interfaces to develop such tools are only slightly better on windows 16:19 <+bridge> [ddnet] On linux** 16:20 <+bridge> [ddnet] cant u do some kernel levels stuff to debug memory or something 16:20 <+bridge> [ddnet] On windows literally the only way to keep track of allocations is a monkey patched hook you can get by injecting a dll into the process, or a kernel interface soooooo badly documented that you'd cry 16:20 <+bridge> [ddnet] level* 16:21 <+bridge> [ddnet] Like the kernel interface is only there for windows' own performance toolkit 16:21 <+bridge> [ddnet] They only document a handful of functions to interact with it 16:25 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/807270770563874866/unknown.png 16:25 <+bridge> [ddnet] omg 16:25 <+bridge> [ddnet] im loving this 16:26 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/807270870900670474/unknown.png 16:26 <+bridge> [ddnet] :greenthing: 16:27 <+bridge> [ddnet] also with dummy hammer it doesnt actually point at a player but seems to be randomly up? 16:27 <+bridge> [ddnet] dont ask coding help for botting 16:27 <+bridge> [ddnet] do this to fix all ur issues 16:27 <+bridge> [ddnet] git reset --hard origin/master 16:28 <+bridge> [ddnet] it was for ddrace maps 16:28 <+bridge> [ddnet] :nouis: 16:28 <+bridge> [ddnet] -.- 16:28 <+bridge> [ddnet] also it is just the original code which isnt aiming at me 16:29 <+bridge> [ddnet] or not it is? 16:29 <+bridge> [ddnet] botters out 16:29 <+bridge> [ddnet] or now it is? 16:29 <+bridge> [ddnet] idk 16:29 <+bridge> [ddnet] :nobot: 16:30 <+bridge> [ddnet] no its that hammer fly keeps breaking 16:31 <+bridge> [ddnet] like if i hook it 16:31 <+bridge> [ddnet] im very confused 16:33 <+bridge> [ddnet] I have a 6% solution of acetic acid. I need a 12% solution, assuming only water boils off, which is true at these concentrations. Is havling the volume close enough? 16:34 <+bridge> [ddnet] @SollyBunny we think you are making a bot. We don't want to help you any further 16:34 <+bridge> [ddnet] its hammerfly but with laser instead of hammer 16:34 <+bridge> [ddnet] for ddrace maps 16:34 <+bridge> [ddnet] @noby 16:34 <+bridge> [ddnet] @Nobosaurus 16:34 <+bridge> [ddnet] ah 16:34 <+bridge> [ddnet] fuc 16:34 <+bridge> [ddnet] @noby 16:34 <+bridge> [ddnet] xD 16:35 <+bridge> [ddnet] Spammer 16:35 <+bridge> [ddnet] big sorry 16:47 <+bridge> [ddnet] Assuming the density is relatively constant evaporating off half should work 16:49 <+bridge> [ddnet] Hopefully I'm correct about water and acetic acid not forming an azeotrope this early on 16:51 <+bridge> [ddnet] are u making chemistry now 16:51 <+bridge> [ddnet] Pickles 16:51 <+bridge> [ddnet] :poggers: 16:52 <+bridge> [ddnet] It would be extremely funny if I get chemical burns in my lungs because of acetic acid vapour 16:53 <+bridge> [ddnet] you could also just go outside and buy pickles :greenthing: 16:53 <+bridge> [ddnet] no risk in burning your lungs 16:54 <+bridge> [ddnet] But the italian people make bad pickles 16:54 <+bridge> [ddnet] i think halving is close 16:54 <+bridge> [ddnet] according to my rule of 3 16:54 <+bridge> [ddnet] idk if this even makes sense 16:55 <+bridge> [ddnet] Besides where is the fun in that. It should make my eyes burn way before there is a risk of lung damage 17:02 <+bridge> [ddnet] Oh it never even forms an azeotrope 17:04 <+bridge> [ddnet] :greenthing: 17:04 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/807280498707398736/unknown.png 17:31 <+bridge> [ddnet] learath making drugs 17:35 <+bridge> [ddnet] I stopped 150ml short, i forgot how god awful vinegar smells when boiled 17:37 <+bridge> [ddnet] @SollyBunny tools not included in the official ddnet client that automate gameplay are considered bots. if you get caught with one of these on official ddnet servers, it will get you banned 17:37 <+bridge> [ddnet] auto laser should be a feature then ri 17:37 <+bridge> [ddnet] auto laser should be a feature then cri 17:37 <+bridge> [ddnet] Nothing much to be made from acetic acid but pickles :P 17:38 <+bridge> [ddnet] I guess you could use it in candy making if you are russian 17:38 <+bridge> [ddnet] suggest it on github then, but I don't think there'll be consensus to add it @SollyBunny 17:38 <+bridge> [ddnet] @Learath2 you are like my friend who made drugs and fireworks 17:38 <+bridge> [ddnet] Auto laser would make some insane parts trivial with dummy 17:38 <+bridge> [ddnet] There us no way we add that 17:39 <+bridge> [ddnet] is* 17:39 <+bridge> [ddnet] I'm just presenting the correct route for suggesting that feature, and saying that it's unlikely to get added 17:39 <+bridge> [ddnet] ^^ 17:40 <+bridge> [ddnet] is shooting a person that hard 17:40 <+bridge> [ddnet] Then you can definitely do it yourself without the help of a bot :) 17:41 <+bridge> [ddnet] well, that's called an aimbot if you automate it 17:41 <+bridge> [ddnet] so apparently it's hard enough to get you banned in all sorts of games 17:41 <+bridge> [ddnet] it cant be used for fng / zcatch cuz its hitting player not anyone else 17:42 <+bridge> [ddnet] it's still a gameplay advantage for ddnet servers, which is not okay since they also host something competitive: racing 17:42 <+bridge> [ddnet] ur never gonna be faster with a dummy than a player so where it matters it doesnt effect right 17:43 <+bridge> [ddnet] https://discord.com/channels/252358080522747904/338779500085116938/806293647913779281 17:43 <+bridge> [ddnet] coradax is much faster than most any player with his dummy on just fly 1. @murpi here probably plays better with dummy than he does with ppl :D 17:44 <+bridge> [ddnet] because other people are so bad 😛 17:44 <+bridge> [ddnet] This is also a factor :P 17:44 <+bridge> [ddnet] ^ 17:44 <+bridge> [ddnet] You can also probably do a hacky udp gateway to switch between having dummy and real partner instantly 17:45 <+bridge> [ddnet] also laser fly doesnt effect lasery.. stuff 17:45 <+bridge> [ddnet] and also because of the glitchiness of hammer fly can be achieved if u hit 5 on ur dummy then hammerfly then switch u get lazered anyway 17:45 <+bridge> [ddnet] ? What is a laser fly even? It would literally just periodically laser you 17:46 <+bridge> [ddnet] laser fly = hammer fly without the hammer but with the laser 17:46 <+bridge> [ddnet] Which is just a periodic shot of laser. What do you even want this for? 17:46 <+bridge> [ddnet] aimbotted unfreeze by laser, I guess 17:47 <+bridge> [ddnet] That was my guess aswell, but he says that's not it 17:47 <+bridge> [ddnet] i do it with hammerfly glitchiness anyway so 17:47 <+bridge> [ddnet] @heinrich5991 already possible by deepfly bind 17:47 <+bridge> [ddnet] and dummy 17:47 <+bridge> [ddnet] fine, then use that 17:47 <+bridge> [ddnet] :D 17:47 <+bridge> [ddnet] -.- 17:47 <+bridge> [ddnet] @fokkonaut really? Can you get it to shoot any weapon? 17:47 <+bridge> [ddnet] yes 17:47 <+bridge> [ddnet] Yes 17:48 <+bridge> [ddnet] the first shot only though, but you can just restart it ^^ 17:48 <+bridge> [ddnet] u can already make laser shoot u 17:48 <+bridge> [ddnet] dummy laser* 17:48 <+bridge> [ddnet] Lol, we keep coding the oddest of stuff. Maybe we should look for jobs in microsoft 17:48 <+bridge> [ddnet] its annoying for using hammerfly but can be used for laser n stufz 17:48 <+bridge> [ddnet] @heinrich5991 if you dont keep the fire input you dont have to reset 17:48 <+bridge> [ddnet] it can stay on rifle 17:48 <+bridge> [ddnet] ah 17:49 <+bridge> [ddnet] stuff like that is why I don't like https://github.com/ddnet/ddnet/pull/3552 17:50 <+bridge> [ddnet] @heinrich5991 I can't think of many new constructs that are possible 17:50 <+bridge> [ddnet] yea, I also didn't know you could laser yourself with the dummy hammer for the longest time 17:50 <+bridge> [ddnet] The most innovative thing was that access to inputstate abusing unimportant configs 17:51 <+bridge> [ddnet] That is more on our implementation of hammerfly bot 17:51 <+bridge> [ddnet] yes plus the input handling on the server, probably 17:51 <+bridge> [ddnet] I guess that's also an unexpected construct though 17:51 <+bridge> [ddnet] I wonder if eval if makes teeworlds console turing complete :D 17:53 <+bridge> [ddnet] Ah needs an arithmetic operation 18:11 <+bridge> [ddnet] @hein https://discord.com/channels/252358080522747904/293493549758939136/807265519639199784 18:11 <+bridge> [ddnet] @heinrich5991 ^ 18:12 <+bridge> [ddnet] oh, cool 🙂 18:12 <+bridge> [ddnet] 🙂 18:12 <+bridge> [ddnet] so when is this blog psot of yours going to come out? ^^ 18:13 <+bridge> [ddnet] 👀 18:13 <+bridge> [ddnet] well first i want to finish this crate a bit 18:13 <+bridge> [ddnet] i probs discover more stuff 18:13 <+bridge> [ddnet] will* 18:13 <+bridge> [ddnet] https://github.com/edg-l/formy 18:15 <+bridge> [ddnet] @heinrich5991 did u mention u that i made a blog post about the error stuff we discussed? it also was features in this week in rust 18:16 <+bridge> [ddnet] it has 5k visits 18:16 <+bridge> [ddnet] :monkalaugh: 18:16 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/807298557950296084/unknown.png 18:16 <+bridge> [ddnet] did i* 18:16 <+bridge> [ddnet] link? 🙂 18:16 <+bridge> [ddnet] no, you didn't 18:16 <+bridge> [ddnet] https://edgarluque.com/blog/wrapping-errors-in-rust 18:16 <+bridge> [ddnet] https://this-week-in-rust.org/blog/2021/01/27/this-week-in-rust-375/ 18:16 <+bridge> [ddnet] u can find it here 18:16 <+bridge> [ddnet] "Rust Walkthroughs" 18:17 <+bridge> [ddnet] oh wow, nice 🙂 18:17 <+bridge> [ddnet] 😀 18:17 <+bridge> [ddnet] ah now that I read the post again, I think I even read it before ^^ 18:17 <+bridge> [ddnet] ^^ 18:18 <+bridge> [ddnet] i think my blog will end up only being rust 18:18 <+bridge> [ddnet] i also have this, idk if u read it 18:18 <+bridge> [ddnet] when i learned how to impl iterators 18:19 <+bridge> [ddnet] 🙂 18:20 <+bridge> [ddnet] @heinrich5991 u had a blog too right? 18:20 <+bridge> [ddnet] only one blog post 18:20 <+bridge> [ddnet] not sure if it counts as a blog ^^ 18:20 <+bridge> [ddnet] the one tick unfreeze 18:21 <+bridge> [ddnet] im sure u can write about a lot of stuff 18:21 <+bridge> [ddnet] u know way more than me :) 18:22 <+bridge> [ddnet] idk, I'll write something if something interests me and I think that it also interests others *and* I want to spend some time on writing it down 18:22 <+bridge> [ddnet] i also think about it a lot 18:22 <+bridge> [ddnet] but u would be surprised 18:22 <+bridge> [ddnet] even small simple stuff interests others 18:46 <+bridge> [ddnet] potatoes 18:47 <+bridge> [ddnet] interesting rihgt 19:08 <+ChillerDragon> congratz for ending up in this blogpost @Ryozuki o.O 19:08 <+bridge> [ddnet] :greenthing: 19:09 <+ChillerDragon> @heinrich5991 if its tw related count in one interested chillerdragon 19:31 <+ChillerDragon> @qshar still no success with logging in any ideas what could go wrong during pw reset? Ip filter? Sync delay with tw server? Unsupported pw len? Unsupported characters? 19:32 <+ChillerDragon> it says pw change successfully but ingame the pw wont work 20:37 <+bridge> [ddnet] i had the same exact problem, tried a few different passwords and came to the conclusion that my passwords were too long... 20:47 <+bridge> [ddnet] how do you get the current gamemode from gameclient client (so i can check if its zcatch c;)