01:02 <+bridge> [ddnet] why does it take so freeaking long to link with mingw 01:02 <+bridge> [ddnet] 45 seconds for the client... 01:15 <+bridge> [ddnet] LTO? 01:27 <+bridge> [ddnet] ```bash 01:27 <+bridge> [ddnet] $ time C:/MinGW64/bin/ar.exe cr CMakeFiles/DDNet.dir/objects.a @CMakeFiles/DDNet.dir/objects1.rsp 01:27 <+bridge> [ddnet] 01:27 <+bridge> [ddnet] real 0m12,465s 01:27 <+bridge> [ddnet] user 0m0,000s 01:27 <+bridge> [ddnet] sys 0m0,031s 01:27 <+bridge> [ddnet] 01:27 <+bridge> [ddnet] $ time C:/MinGW64/bin/g++.exe -fdiagnostics-color=always -Werror=class-memaccess -g -mwindows -Wl,--whole-archive CMakeFiles/DDNet.dir/objects.a -Wl,--no-whole-archive -o DDNet.exe -Wl,--out-implib,libDDNet.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles/DDNet.dir/linklibs.rsp 01:27 <+bridge> [ddnet] 01:27 <+bridge> [ddnet] real 0m32,080s 01:27 <+bridge> [ddnet] user 0m0,000s 01:27 <+bridge> [ddnet] sys 0m0,031s 01:27 <+bridge> [ddnet] ``` 01:27 <+bridge> [ddnet] i don't see any lto flag in there, just slow linking 01:28 <+bridge> [ddnet] meanwhile, the server takes only 3 seconds: 01:28 <+bridge> [ddnet] ```bash 01:29 <+bridge> [ddnet] $ time C:\MinGW64\bin\ar.exe cr CMakeFiles\DDNet-Server.dir/objects.a @CMakeFiles\DDNet-Server.dir\objects1.rsp 01:29 <+bridge> [ddnet] time C:/MinGW64/bin/ar.exe cr CMakeFiles/DDNet-Server.dir/objects.a @CMakeFiles/DDNet-Server.dir/objects1.rsp 01:29 <+bridge> [ddnet] 01:29 <+bridge> [ddnet] real 0m0,723s 01:29 <+bridge> [ddnet] user 0m0,000s 01:29 <+bridge> [ddnet] sys 0m0,015s 01:29 <+bridge> [ddnet] 01:29 <+bridge> [ddnet] $ time C:\MinGW64\bin\g++.exe -fdiagnostics-color=always -Werror=class-memaccess -g -Wl,--whole-archive CMakeFiles\DDNet-Server.dir/objects.a -Wl,--no-whole-archive -o DDNet-Server.exe -Wl,--out-implib,libDDNet-Server.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles\DDNet-Server.dir\linklibs.rsp 01:29 <+bridge> [ddnet] time C:/MinGW64/bin/g++.exe -fdiagnostics-color=always -Werror=class-memaccess -g -Wl,--whole-archive CMakeFiles/DDNet-Server.dir/objects.a -Wl,--no-whole-archive -o DDNet-Server.exe -Wl,--out-implib,libDDNet-Server.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles/DDNet-Server.dir/linklibs.rsp 01:29 <+bridge> [ddnet] 01:29 <+bridge> [ddnet] real 0m2,804s 01:29 <+bridge> [ddnet] user 0m0,000s 01:29 <+bridge> [ddnet] sys 0m0,015s 01:29 <+bridge> [ddnet] ``` 01:29 <+bridge> [ddnet] meanwhile, the server takes only 3 seconds: 01:29 <+bridge> [ddnet] ```bash 01:29 <+bridge> [ddnet] $ time C:/MinGW64/bin/ar.exe cr CMakeFiles/DDNet-Server.dir/objects.a @CMakeFiles/DDNet-Server.dir/objects1.rsp 01:29 <+bridge> [ddnet] 01:29 <+bridge> [ddnet] real 0m0,723s 01:29 <+bridge> [ddnet] user 0m0,000s 01:29 <+bridge> [ddnet] sys 0m0,015s 01:29 <+bridge> [ddnet] 01:29 <+bridge> [ddnet] $ time C:\MinGW64\bin\g++.exe -fdiagnostics-color=always -Werror=class-memaccess -g -Wl,--whole-archive CMakeFiles\DDNet-Server.dir/objects.a -Wl,--no-whole-archive -o DDNet-Server.exe -Wl,--out-implib,libDDNet-Server.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles\DDNet-Server.dir\linklibs.rsp 01:29 <+bridge> [ddnet] time C:/MinGW64/bin/g++.exe -fdiagnostics-color=always -Werror=class-memaccess -g -Wl,--whole-archive CMakeFiles/DDNet-Server.dir/objects.a -Wl,--no-whole-archive -o DDNet-Server.exe -Wl,--out-implib,libDDNet-Server.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles/DDNet-Server.dir/linklibs.rsp 01:29 <+bridge> [ddnet] 01:29 <+bridge> [ddnet] real 0m2,804s 01:29 <+bridge> [ddnet] user 0m0,000s 01:30 <+bridge> [ddnet] sys 0m0,015s 01:30 <+bridge> [ddnet] ``` 01:30 <+bridge> [ddnet] meanwhile, the server takes only 3 seconds: 01:30 <+bridge> [ddnet] ```bash 01:30 <+bridge> [ddnet] $ time C:/MinGW64/bin/ar.exe cr CMakeFiles/DDNet-Server.dir/objects.a @CMakeFiles/DDNet-Server.dir/objects1.rsp 01:30 <+bridge> [ddnet] 01:30 <+bridge> [ddnet] real 0m0,723s 01:30 <+bridge> [ddnet] user 0m0,000s 01:30 <+bridge> [ddnet] sys 0m0,015s 01:30 <+bridge> [ddnet] 01:30 <+bridge> [ddnet] $ time C:\MinGW64\bin\g++.exe -fdiagnostics-color=always -Werror=class-memaccess -g -Wl,--whole-archive CMakeFiles\DDNet-Server.dir/objects.a -Wl,--no-whole-archive -o DDNet-Server.exe -Wl,--out-implib,libDDNet-Server.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles\DDNet-Server.dir\linklibs.rsp 01:30 <+bridge> [ddnet] 01:30 <+bridge> [ddnet] real 0m2,804s 01:30 <+bridge> [ddnet] user 0m0,000s 01:30 <+bridge> [ddnet] sys 0m0,015s 01:30 <+bridge> [ddnet] ``` 01:31 <+bridge> [ddnet] hmm, one more flag in the client compile line: `-mwindows` 01:33 <+bridge> [ddnet] doesn't change anything with or without it 01:37 <+bridge> [ddnet] meanwhile, the server takes only 3 seconds: 01:37 <+bridge> [ddnet] ```bash 01:37 <+bridge> [ddnet] $ time C:/MinGW64/bin/ar.exe cr CMakeFiles/DDNet-Server.dir/objects.a @CMakeFiles/DDNet-Server.dir/objects1.rsp 01:37 <+bridge> [ddnet] 01:37 <+bridge> [ddnet] real 0m0,723s 01:37 <+bridge> [ddnet] user 0m0,000s 01:37 <+bridge> [ddnet] sys 0m0,015s 01:37 <+bridge> [ddnet] 01:37 <+bridge> [ddnet] $ time C:/MinGW64/bin/g++.exe -fdiagnostics-color=always -Werror=class-memaccess -g -Wl,--whole-archive CMakeFiles/DDNet-Server.dir/objects.a -Wl,--no-whole-archive -o DDNet-Server.exe -Wl,--out-implib,libDDNet-Server.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles/DDNet-Server.dir/linklibs.rsp 01:37 <+bridge> [ddnet] 01:37 <+bridge> [ddnet] real 0m2,804s 01:37 <+bridge> [ddnet] user 0m0,000s 01:37 <+bridge> [ddnet] sys 0m0,015s 01:37 <+bridge> [ddnet] ``` 09:28 <+bridge> [ddnet] i love reading code that i know nothing about! (not even joking, im starting to dive deeper into these prs and stuff) 09:32 <+bridge> [ddnet] too bad i don't do anything "useful" from the user point of view 09:33 <+bridge> [ddnet] i'd like to implement lazy loading when i have enough free time 09:45 <+bridge> [ddnet] i mean i get that, but thats the charm of it, you get to study what actually goes on under the hood and what precautions are needed 09:45 <+bridge> [ddnet] even if im unaware of any of it it's really interesting now 11:06 <+ChillerDragon> yikes i burned another SSD :( does anyone of you ever made linux chill the writes to the ssd? So it lifes longer? 12:21 <+bridge> [ddnet] :pepedead: 12:22 <+bridge> [ddnet] typical chillerdragon ddosing his ssd 12:22 <+bridge> [ddnet] xd 12:22 <+bridge> [ddnet] typical chillerdragon dosing his ssd 13:09 <+bridge> [ddnet] Huh, all my SSDs are still alive. I have the problem of having some 128 GB SSDs in each system now and they are taking more physical space than the disk space is worth πŸ˜„ 13:10 <+bridge> [ddnet] ChillerDragon: What is writing to them? I once did it on OpenBSD, because on CF card writing is really bad, no wear-levelling. So I mounted the file system read-only and put writable stuff into ramdisk 13:10 <+bridge> [ddnet] worked well, just remounted with write for software upgrades 13:14 <+bridge> [ddnet] Maybe monitor what is writing to disk so much using iotop 13:16 <+bridge> [ddnet] My Samsung SSD SM951-NVMe still runs fine, has 75 TBW expected life, 92 TBW actual, no problems yet 13:17 <+bridge> [ddnet] (after 6 years) 13:20 <+bridge> [ddnet] The one where I build DDNet nightly (Crucial BX100) runs fine after 7 years too, 23/72 TBW currently 13:48 <+bridge> [ddnet] OpenBSD is damn fucking awesome 14:05 <+ChillerDragon> @deen its just the ppl in the hardware store tell me every year i show up with a new dead SSD that linux is to blame since it writes too much to the disk and then they die at some point cuz ssd short lifespan 14:05 <+ChillerDragon> i couldnt find much online saying run this command to not break your ssd :D 14:05 <+ChillerDragon> only this trimming thing 14:46 <+bridge> [ddnet] I’m not aware of linux doing more writes than windows or macOS. I’d say the hardware store people just don’t know what they are talking about 14:50 <+bridge> [ddnet] How about u just don't tell them what u using xd 14:51 <+bridge> [ddnet] What ssd u get 14:52 <+bridge> [ddnet] Maybe get a higher qual 15:35 <+bridge> [ddnet] i can imagine swap, /tmp and logs being a lot, but monitoring that for a few days and also how many tbw you get in that time should help 15:37 <+bridge> [ddnet] Yea I really should check my writes from time to time. The disk that died now is a SanDisk. Not sure how dead it is. Dead enough to freeze my os and now I can’t even mount it anymore 15:38 <+bridge> [ddnet] BbbbutI USE ARCH BTW 15:38 <+bridge> [ddnet] (@Not Keks) 15:39 <+bridge> [ddnet] That guy knew dd, testdisk and ext4 I kinda trust him \:D but yea maybe he just talked crap 15:47 <+bridge> [ddnet] https://www.cvedetails.com/cve-details.php?cve_id=CVE-2021-43518 15:47 <+bridge> [ddnet] 15:47 <+bridge> [ddnet] The above vulnerability applies to Teeworlds. Does this apply to DDNet somehow? 15:47 <+bridge> [ddnet] I see this patch for FreeBSD Teeworlds package (https://lists.freebsd.org/archives/dev-commits-ports-main/2022-March/016758.html) but I haven't found similar variables like m_Channels 15:49 <+bridge> [ddnet] https://github.com/teeworlds/teeworlds/issues/2981 16:30 <+bridge> [ddnet] hi, 16:30 <+bridge> [ddnet] anyone knows matrices and trigonometry here? I need some help around the render.cpp, I have a few questions about DrawCircle. 16:43 <+ChillerDragon> wew when reinstalling my os somehow i ended up with some cheap vscode ripoff :D 16:43 <+ChillerDragon> the colors are so low in contrast omagawd its the same theme as my laptop but its barley readable 16:44 <+ChillerDragon> any good vscode theme recommendations? :) 16:45 <+bridge> [ddnet] was thinking of using vscode is it any good for c++? 16:46 <+bridge> [ddnet] Has any of you ever used Coq to formally verify code you wrote? 16:47 <+bridge> [ddnet] https://coq.inria.fr/ 16:47 <+bridge> [ddnet] https://dylanj.xyz/posts/rust-coq-opaque-types/ 16:48 <+bridge> [ddnet] No, looks like our env points are a bit different 16:48 <+bridge> [ddnet] a while ago 16:48 <+ChillerDragon> @bubliman ye its good for c++ 16:48 <+ChillerDragon> imo easier to properly configure for c++ than vim 16:49 <+ChillerDragon> install c++ extension and you done 16:49 <+ChillerDragon> i might just need a new screen 16:49 <+bridge> [ddnet] ok will give it a shot 16:49 <+ChillerDragon> what are you using right now? 16:50 <+bridge> [ddnet] qtCreator and Kdevelop 16:50 <+ChillerDragon> never tried kdevelop 16:50 <+ChillerDragon> looks like a full blown IDE 16:50 <+ChillerDragon> i prefer editors that spin up without any waiting time 16:53 <+bridge> [ddnet] I started with c++ yesterday, it pretty hard to get a project started and compiled ngl 16:53 <+ChillerDragon> ye 16:53 <+bridge> [ddnet] I started with c++ yesterday, it was pretty hard to get a project started and compiled ngl 16:53 <+ChillerDragon> thats c++ tho 16:53 <+bridge> [ddnet] Hmm 16:53 <+bridge> [ddnet] gcc file.cpp 16:53 <+bridge> [ddnet] Ez 16:54 <+ChillerDragon> duh 16:54 <+ChillerDragon> thats c :p 16:54 <+ChillerDragon> and not a project 16:54 <+bridge> [ddnet] ./a.out 16:54 <+bridge> [ddnet] concerning my previous question, should i go ask somewhere else? 16:54 <+ChillerDragon> wait till maffs man heinrich is here 16:54 <+bridge> [ddnet] Use vscode 16:54 <+bridge> [ddnet] Ngl 16:54 <+bridge> [ddnet] Better 16:54 <+ChillerDragon> or jupstar the render engine 16:55 <+bridge> [ddnet] Im rusty but just ask 16:55 <+bridge> [ddnet] Dont ask to ask 16:55 <+ChillerDragon> i use vscode to start a terminal in it and then use emacs within that terminal to spawn a vim instance 16:55 <+bridge> [ddnet] https://dontasktoask.com/ 16:55 <+bridge> [ddnet] lmao ok 16:55 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1003677456089239703/unknown.png 16:55 <+bridge> [ddnet] kek 16:55 <+bridge> [ddnet] this website is so true 16:56 <+bridge> [ddnet] well might be me one sec i need to put my thoughts together 17:01 <+ChillerDragon> wot 17:01 <+ChillerDragon> first i thought my old screen just loses colors 17:01 <+ChillerDragon> but screenshots should not be affected by matt screens right? 17:01 <+ChillerDragon> https://zillyhuhn.com/cs/.1659365785.png 17:02 <+ChillerDragon> https://zillyhuhn.com/cs/.1659365851.png 17:02 <+ChillerDragon> there is clearly a difference but its the same theme. How can that be :c 17:04 <+bridge> [ddnet] Different scaling on the screens based on different dpis 17:04 <+ChillerDragon> yea scaling 17:04 <+bridge> [ddnet] And you can also have different subpixel orientations on screens 17:04 <+ChillerDragon> but one is visibly brihter 17:04 <+bridge> [ddnet] rgb vs bgr for example 17:04 <+bridge> [ddnet] brighter because the text is thicker probably 17:04 <+ChillerDragon> its thinner 17:04 <+ChillerDragon> look at the screens 17:05 <+ChillerDragon> im getting bamboozeld here 17:05 <+ChillerDragon> maybe its the oss code vs the m$ code :D 17:05 <+bridge> [ddnet] those are totally different fonts even 17:05 <+ChillerDragon> maybe its a font issue 17:05 <+ChillerDragon> but i feel like it could be solved only with colors 17:05 <+ChillerDragon> it looks a bit greyed out 17:12 <+bridge> [ddnet] Your background is grey, so antialiasing will mix gray with the foreground color 17:13 <+bridge> [ddnet] So concerning this `DrawCircle`, 17:13 <+bridge> [ddnet] 17:13 <+bridge> [ddnet] my guess at what its doing is that it draws a number (Segments/2) of triangles and rotates them around the centre to draw a circle, 17:13 <+bridge> [ddnet] the for loop is i += 2, because because each triangle puts two points into the circumference 17:13 <+bridge> [ddnet] the rotation of the triangle is achieved by cos and sin using a rotation matrix 17:13 <+bridge> [ddnet] is this correct? 17:13 <+bridge> [ddnet] 17:13 <+bridge> [ddnet] i dont really understand what the a1, a2, a3 resemble, what formula is used to calculate them and why would FSegments be doubled? 17:13 <+bridge> [ddnet] 17:13 <+bridge> [ddnet] thanks for help 17:13 <+bridge> [ddnet] 17:13 <+bridge> [ddnet] here is the code for DrawCircle: 17:13 <+bridge> [ddnet] `void CRenderTools::DrawCircle(float x, float y, float r, int Segments) 17:13 <+bridge> [ddnet] { 17:13 <+bridge> [ddnet] IGraphics::CFreeformItem Array[32]; 17:13 <+bridge> [ddnet] int NumItems = 0; 17:14 <+bridge> [ddnet] float FSegments = (float)Segments; 17:14 <+bridge> [ddnet] for(int i = 0; i < Segments; i += 2) 17:14 <+bridge> [ddnet] { 17:14 <+bridge> [ddnet] float a1 = i / FSegments * 2 * pi; 17:14 <+bridge> [ddnet] float a2 = (i + 1) / FSegments * 2 * pi; 17:14 <+bridge> [ddnet] float a3 = (i + 2) / FSegments * 2 * pi; 17:14 <+bridge> [ddnet] float Ca1 = cosf(a1); 17:14 <+bridge> [ddnet] float Ca2 = cosf(a2); 17:14 <+bridge> [ddnet] float Ca3 = cosf(a3); 17:14 <+bridge> [ddnet] float Sa1 = sinf(a1); 17:14 <+bridge> [ddnet] float Sa2 = sinf(a2); 17:14 <+bridge> [ddnet] float Sa3 = sinf(a3); 17:14 <+bridge> [ddnet] 17:14 <+bridge> [ddnet] Array[NumItems++] = IGraphics::CFreeformItem( 17:14 <+bridge> [ddnet] x, y, 17:15 <+bridge> [ddnet] ChillerDragon: You can tweak some font settings including aliasing and dpi scaling in `gnome-tweaks-tools`, although I don't think that applies to electron apps 17:19 <+bridge> [ddnet] @bubliman To me it looks like the circle is being split into 32 segments. a1, a2, a3 are the points on the edge of the circle, while (x, y) is always the center. 2 * pi is commonly used in circle calculations, like area = 2 * pi * r 17:21 <+bridge> [ddnet] a1, a2, a3 are the angles of the circle segments in radians, hence they are in the range [0;2*pi[ 17:21 <+bridge> [ddnet] it seems like it actually draws Segments/2 primitives 17:22 <+bridge> [ddnet] so a segment is a triangle? 17:23 <+bridge> [ddnet] no, they seem to be quads 17:23 <+bridge> [ddnet] I think I found a youtube tutorial to explain the algo πŸ˜„ https://www.youtube.com/watch?v=YDCSKlFqpaU Source code is similar to TW emthod too: https://github.com/SonarSystems/OpenGL-Tutorials/blob/master/Drawing%20A%20Circle%20Using%20A%20Triangle%20Fan/main.cpp 17:23 <+bridge> [ddnet] with one point in the center and the other three on the circles radius 17:23 <+bridge> [ddnet] (with triangle instead of quads) 17:28 <+bridge> [ddnet] Well I watched the video before and didn't notice any similarities. I'll have a look at the source. So this circle isn't using any form of a matrix? I thought the array is a matrix... Is it just a one dimensional array ? 17:29 <+bridge> [ddnet] the array is just each quad 17:29 <+bridge> [ddnet] the array is just for storing the quads because it more efficient than calling the graphics API for each individual quad 17:31 <+bridge> [ddnet] they are also more like freeform quads, not what u excpect, they just share 1 point in the mid, so basically 2 triangles 17:34 <+bridge> [ddnet] depends 17:35 <+bridge> [ddnet] well i think i explained it somewhere before cant find rn 17:35 <+bridge> [ddnet] but we could do smth different 17:35 <+bridge> [ddnet] blur edges.. if there is a transition to transparent is almost like anti aliasing 17:36 <+bridge> [ddnet] ok not blur, more like a transition xd 17:36 <+bridge> [ddnet] that's defs cheaper than having multiple renderpasses 17:37 <+bridge> [ddnet] like a shader for corners? 17:37 <+bridge> [ddnet] yeah i guess u could say that 17:38 <+bridge> [ddnet] well that explains a lot πŸ˜„ 17:40 <+bridge> [ddnet] anyways, thank you guys @Not Keks @deen @Robyt3 ! I was clearly lost... πŸ˜΅β€πŸ’« I need some time to process all of this info 17:58 <+ChillerDragon> LMAO 17:58 <+ChillerDragon> these automated mails xd 17:58 <+ChillerDragon> https://zillyhuhn.com/cs/.1659369523.png 17:59 <+ChillerDragon> im sure this guy is really curious about code reuse in that teeworlds .demo file :D 18:01 <+bridge> [ddnet] What is the difference between `void CGraphics_Threaded::LinesEnd()` and `void CGraphics_Threaded::LinesBegin()`? 18:01 <+bridge> [ddnet] and this `void CGraphics_Threaded::LinesBegin()` 18:02 <+bridge> [ddnet] What is the difference between `void CGraphics_Threaded::LinesEnd()` , `void CGraphics_Threaded::LinesBegin()` 18:02 <+bridge> [ddnet] and `void CGraphics_Threaded::LinesBegin()`? 18:02 <+bridge> [ddnet] its basically batching 18:02 <+bridge> [ddnet] and `void CGraphics_Threaded::LinesDraw(const CLineItem *pArray, int Num)`? 18:03 <+bridge> [ddnet] begin = start collecting lines 18:03 <+bridge> [ddnet] end = stop and draw 18:03 <+bridge> [ddnet] and linesdraw adds them to the batch 18:04 <+bridge> [ddnet] is it for better performace to batch multiple lines together? 18:04 <+bridge> [ddnet] theoretically xd 18:04 <+bridge> [ddnet] i mean we never really draw lots of lines 18:04 <+bridge> [ddnet] i think only debug hud, maybe hook coll line, if it doesnt use quads nowadays 18:05 <+bridge> [ddnet] well im about to πŸ˜„ 18:05 <+bridge> [ddnet] with vulkan it probs makes almost no difference 18:06 <+bridge> [ddnet] GPUs are really good in accepting multiple draw calls if no state is changing, e.g. pipelines etc. 18:06 <+bridge> [ddnet] 18:06 <+bridge> [ddnet] and vulkan puts all streamed data into one single block of memory 18:06 <+bridge> [ddnet] little less CPU overhead tho with batching 18:06 <+bridge> [ddnet] but best is you dont use the legacy API 18:07 <+bridge> [ddnet] try to build all lines once, never change them if possible 18:07 <+bridge> [ddnet] if u need rotation, add it to a shader instead 18:07 <+bridge> [ddnet] is that what hook col does? 18:07 <+bridge> [ddnet] nope it uses legacy API, i dont think he have smth else for lines 18:14 <+bridge> [ddnet] `if(NumItems == 32) 18:14 <+bridge> [ddnet] { 18:14 <+bridge> [ddnet] Graphics()->QuadsDrawFreeform(Array, 32); 18:14 <+bridge> [ddnet] NumItems = 0; 18:14 <+bridge> [ddnet] } 18:14 <+bridge> [ddnet] } 18:14 <+bridge> [ddnet] if(NumItems) 18:14 <+bridge> [ddnet] Graphics()->QuadsDrawFreeform(Array, NumItems);` 18:14 <+bridge> [ddnet] how is there an if statement with no condition? 18:14 <+bridge> [ddnet] implicit bool conversion 18:16 <+bridge> [ddnet] but u can always write the statement out, its generally easier to read imo 18:16 <+bridge> [ddnet] but if u lazy af i accept that xd 18:18 <+bridge> [ddnet] also theoretically, even if not happening here, NumItems could be negative, which might not be intended, but at this point u probs have some unwanted state anyway ^^ 18:20 <+bridge> [ddnet] ` if(NumItems != NULL)` is that the readable version then? 18:21 <+bridge> [ddnet] null is usually used for ptrs 18:21 <+bridge> [ddnet] also NULL is a c macro and considered legacy 18:21 <+bridge> [ddnet] nullptr is c++11 version 18:22 <+bridge> [ddnet] just != 0 18:22 <+bridge> [ddnet] or > 0 makes more sene 18:22 <+bridge> [ddnet] or > 0 makes more sense 18:22 <+bridge> [ddnet] readable and correct ^^ 18:22 <+bridge> [ddnet] ok now i get it thx 18:22 <+bridge> [ddnet] and there are no { } why is that? 18:38 <+bridge> [ddnet] if u dont do it u dont open a new scope, but that only works until the next ; which ends the current statement 18:45 <+bridge> [ddnet] ok makes sence 18:55 <+bridge> [ddnet] +1 shift select in editor crashes game 18:56 <+bridge> [ddnet] try nightly 19:31 <+bridge> [ddnet] lol since [] is an operator didn't know that was possible 19:31 <+bridge> [ddnet] 19:31 <+bridge> [ddnet] ```cpp 19:31 <+bridge> [ddnet] #include 19:32 <+bridge> [ddnet] 19:32 <+bridge> [ddnet] int main() { 19:32 <+bridge> [ddnet] int a[] = {10, 20, 30}; 19:32 <+bridge> [ddnet] std::cout << 2[a] << std::endl; 19:32 <+bridge> [ddnet] } 19:32 <+bridge> [ddnet] ``` 19:32 <+bridge> [ddnet] this is cursed af 19:35 <+bridge> [ddnet] This is because `a[b]` is just syntax sugar for `*(a + b)` 19:36 <+bridge> [ddnet] yes as it is an operator 19:36 <+bridge> [ddnet] but even 3 + a is kinda sus 20:01 <+bridge> [ddnet] how can i disable strong/weak hook on a server like KoG 20:06 <+bridge> [ddnet] soon there will be a feature for it, probably next release 20:11 <+bridge> [ddnet] great 20:29 <+bridge> [ddnet] @ChillerDragon somewhat crisp circles ingame πŸ™‚ 20:29 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1003731239141908510/unknown.png 20:51 <+bridge> [ddnet] So what is the verdict on this, could something like this be in the official ddnet client? 20:51 <+bridge> [ddnet] Should i ping ppl over this? 23:35 <+bridge> [ddnet] Is it useful? Seems like we could add it to aim line 23:36 <+bridge> [ddnet] @bubliman when can you hit someone? when they touch the circle? 23:36 <+bridge> [ddnet] I guess it can't be made skin-independent? 23:39 <+bridge> [ddnet] yes improves my aled chance by some amount 23:40 <+bridge> [ddnet] yes thats how it is the hammer range under this method is 42.0f 23:40 <+bridge> [ddnet] when the center of their tee touches? 23:40 <+bridge> [ddnet] but there are smaller and bigger skins 23:40 <+bridge> [ddnet] how could it work skin-independent? 23:41 <+bridge> [ddnet] i personally dont support these types of things (including hook collision) 23:41 <+bridge> [ddnet] skin size doesn't change hammer range 23:41 <+bridge> [ddnet] makes it feel less like a game and more like a planetary orbit determination program 23:41 <+bridge> [ddnet] but when the skin size changes whether the other tee touches your circle or not @Chairn 23:41 <+bridge> [ddnet] yeah not sure about that 23:41 <+bridge> [ddnet] hence my question ^^ 23:41 <+bridge> [ddnet] could have a smaller circle rendered on every tee 23:42 <+bridge> [ddnet] hmm, doesn't the circle change color just like hookline? 23:42 <+bridge> [ddnet] when the circles colide then u are in hammer range 23:42 <+bridge> [ddnet] easily could be done 23:42 <+bridge> [ddnet] @Chairn that was in response to this question 23:42 <+bridge> [ddnet] plus this answer 23:43 <+bridge> [ddnet] that's obviously cheating :kek: 23:43 <+bridge> [ddnet] one sec lemme get screenshot 23:44 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1003780314184818799/unknown.png 23:44 <+bridge> [ddnet] i mean not exactly 23:44 <+bridge> [ddnet] just pointless imo 23:45 <+bridge> [ddnet] Nah, it'll save your life on occasion, it's definitely an advantage. The curve shit he posted earlier 23:45 <+bridge> [ddnet] oh yeah thats sus 23:45 <+bridge> [ddnet] its rendered using a object i made DrawCircleOutline, 23:45 <+bridge> [ddnet] not the hammer thing tho 23:45 <+bridge> [ddnet] You can jump to abort whatever you're doing 23:45 <+bridge> [ddnet] we arent talking about that... 23:46 <+bridge> [ddnet] Yep, just giving my input, don't post that anymore :feelsamazingman: 23:46 <+bridge> [ddnet] well it looks cool 23:47 <+bridge> [ddnet] it looks cool but do we want to move to a fully "automated" (not the right term) client? 23:47 <+bridge> [ddnet] No lol 23:47 <+bridge> [ddnet] Enough cheats baked into the client as is 23:47 <+bridge> [ddnet] looks like extra HUD just like in the military πŸ˜„ 23:47 <+bridge> [ddnet] i definitely dont want it, it just looks neat lol 23:48 <+bridge> [ddnet] how is this fully automated? i dont get it 23:50 <+bridge> [ddnet] An advantage is an advantage, I don't care how small 23:50 <+bridge> [ddnet] they were talking about the arc prediction thing 23:51 <+bridge> [ddnet] please can u just stop with that, i think its cheating too... 23:51 <+bridge> [ddnet] not the right term, but it just does the computation for you rather you think about it 23:52 <+bridge> [ddnet] hookline was primarily made, in my memory, to save tee with hook through corner from far away as it was a real pain in the ass to do without it 23:53 <+bridge> [ddnet] sure, isn't aled a pain in the ass too? 23:54 <+bridge> [ddnet] I like the idea of showing the hammer range because as a new player is very hard to figure out how far it goes, the hammer is so big but the range is kinda small. But also I think it makes the game easier so idk 23:55 <+bridge> [ddnet] if you give people an advantage when starting the game, they'll want to keep it 23:55 <+bridge> [ddnet] should i make it playable for u guys, I don't think its a big advantage, if done right it could make the game more accesible imo 23:57 <+bridge> [ddnet] @heinrich5991 not sure how to deal with skin sizes, maybe change color when player enters it? 23:57 <+bridge> [ddnet] change color so that it's like hookline 23:58 <+bridge> [ddnet] red=nohit, yellow=teeinrange? 23:58 <+bridge> [ddnet] I suppose you could actually get hammer range indicator without client modification if you change gun texture to display hammer range then use shoot hammer swap bind 23:58 <+bridge> [ddnet] nah, red is too intense color imo 23:59 <+bridge> [ddnet] xd but thats how the hookline is 23:59 <+bridge> [ddnet] but hookline is not on permanently 23:59 <+bridge> [ddnet] and red hooklines pisses me off πŸ˜„