03:19 < bridge> [teeworlds] <1stDecadeTW> @ChillerDragon I like your "z7" bot in your CTF 5 server, I thought it was a new player in the game, it's a good idea for training new players but it falls down a lot... It would be possible to add more options? Like: add new bot to red/blue team, remove bot...Increase the difficulty or add different classes of bots with certain behavior? 10:51 < bridge> [teeworlds] Ah don’t leak my bot I’m sure it’s illegal xd 10:52 < bridge> [teeworlds] @1stDecadeTW this bot has zero brain and is almost completely blind xd. Im currently too noob to not make him fall down. 10:53 < bridge> [teeworlds] It’s just there to play with nameless tees and disconnects when more than 3 humans are online. 10:55 < bridge> [teeworlds] Oh and regarding options @1stDecadeTW you can write !disconnect in chat to make him leave. And in case more commands like team switch are coming those will be listed in !help or !cmdlist 13:52 < bridge> [teeworlds] Hey, is oy there? 13:54 < Dune> no, you can use https://webchat.quakenet.org if you want to check irc 14:06 < bridge> [teeworlds] Okay, anyways, can someone help with the buffer overload problem for rainbow? since i need to send a skinchange every tick - to every player - it will at some point crash the server 14:06 < bridge> [teeworlds] if too many tees have rainbow 14:07 < bridge> [teeworlds] i checked which packets arrive at the client, at there is nothing weird happening, no unwanted other packets 14:07 < bridge> [teeworlds] so its kinda weird that it overloads already at ~7 players with rainbow at a time 14:17 < bridge> [teeworlds] @fokkonaut can you give us a link to your server code? 14:18 < bridge> [teeworlds] it is private, due to stealing attempts by @jason54 | BlackPast 14:18 < bridge> [teeworlds] I can give you access tho, or show the rainbow part 14:18 < bridge> [teeworlds] yeah either is fine 14:20 < bridge> [teeworlds] https://pastebin.com/raw/Bj66p8fW 14:20 < bridge> [teeworlds] I just send this in the `CPlayer::Snap` 14:20 < bridge> [teeworlds] Each tick, to each client individually 14:21 < bridge> [teeworlds] if I'd sent it in `Tick()` and send it to `-1`, it would overload even faster. I could of course make a loop inside of the Tick function, but Snap is a loop already 14:23 < bridge> [teeworlds] what do you mean by overload? 14:24 < bridge> [teeworlds] The buffer overloads 14:24 < bridge> [teeworlds] what exactly happens? 14:24 < bridge> [teeworlds] mostly it crashes the server and/or disconnects players for Error sending data 14:24 < bridge> [teeworlds] do you know how to use a debugger? 14:25 < bridge> [teeworlds] not really, my server runs on linux 14:25 < bridge> [teeworlds] there are debuggers for linux 14:25 < bridge> [teeworlds] attach one, force the server to crash when built on debug mode 14:26 < bridge> [teeworlds] and look at the trace 14:26 < bridge> [teeworlds] I tried to run the server with gdb 14:26 < bridge> [teeworlds] but that didnt work out well, didnt get a BT 14:27 < bridge> [teeworlds] well I suggest you try again, maybe we can help you with that 14:27 < bridge> [teeworlds] maybe you built release mode? aka without debugging info 14:27 < bridge> [teeworlds] no, debug was true in f23 14:27 < bridge> [teeworlds] no, debug was true in f2 14:28 < bridge> [teeworlds] huh, I don't think that's the same debug 14:28 < bridge> [teeworlds] it is debug mode on 14:28 < bridge> [teeworlds] well, it is automatcially true if built in debug mode 14:28 < bridge> [teeworlds] oh, okay. didn't know 14:28 < bridge> [teeworlds] and: i had dbg_dummies 14:28 < bridge> [teeworlds] they are only in debug build 14:29 < bridge> [teeworlds] still, make sure there is a `-g` somewhere when you compile teeworlds 14:29 < bridge> [teeworlds] huh 14:29 < bridge> [teeworlds] `cmake -DCMAKE_BUILD_TYPE=Debug ..` 14:29 < bridge> [teeworlds] i used this 14:30 < bridge> [teeworlds] then make, then used the binary 14:30 < bridge> [teeworlds] I don't know what cmake does and whether it adds -g 14:30 < bridge> [teeworlds] would be nice to make sure with verbose :) 14:30 < bridge> [teeworlds] try gdb again, let's see what it tells you 14:31 < bridge> [teeworlds] you said you couldn't get a backtrace? 14:31 < bridge> [teeworlds] yea 14:31 < bridge> [teeworlds] it was just empty, if i remember correctly 14:32 < bridge> [teeworlds] @Dune what do you mean with -g? 14:32 < bridge> [teeworlds] a compiler flag 14:32 < bridge> [teeworlds] where do i need to add that? 14:32 < bridge> [teeworlds] idk cmake 14:32 < bridge> [teeworlds] check that it adds it when it compiles 14:33 < bridge> [teeworlds] huh 14:33 < bridge> [teeworlds] it probably does 14:34 < bridge> [teeworlds] open your generated Makefile, check if there are any -g 14:34 < bridge> [teeworlds] no 14:35 < bridge> [teeworlds] make VERBOSE=1 on cmake iirc 14:35 < bridge> [teeworlds] no, there are'nt any or no you won't? 😄 14:35 < bridge> [teeworlds] there is not -g in that file 14:35 < bridge> [teeworlds] @Dune where? D: 14:35 < bridge> [teeworlds] compile with this command 14:36 < bridge> [teeworlds] `make VERBOSE=1 |grep \-g` something like that :p 14:38 < bridge> [teeworlds] what does the `debug` command in f2 does? 14:38 < bridge> [teeworlds] what does the `debug` command in f2 do? 14:38 < bridge> [teeworlds] enable some debug-only routines in teeworlds iirc 14:39 < bridge> [teeworlds] grep: invalid option -- 'g' 14:39 < bridge> [teeworlds] Usage: grep [OPTION]... PATTERN [FILE]... 14:39 < bridge> [teeworlds] Try 'grep --help' for more information. 14:41 < bridge> [teeworlds] have no idea, sorry :/ 14:41 < bridge> [teeworlds] pastebin your makefile please @fokkonaut 14:42 < bridge> [teeworlds] i have two build folders, you mean the debug one? 14:42 < bridge> [teeworlds] yes 14:42 < bridge> [teeworlds] https://pastebin.com/raw/dww6THYN 14:44 < bridge> [teeworlds] isn't there another one? 14:44 < bridge> [teeworlds] nop 14:45 < bridge> [teeworlds] well 14:45 < bridge> [teeworlds] A Makefile2 perhaps? 14:45 < bridge> [teeworlds] its in build/CmakeFiles/ 14:45 < bridge> [teeworlds] yea, there is a makefil2 14:46 < bridge> [teeworlds] alright give me that one 14:46 < bridge> [teeworlds] https://pastebin.com/raw/puu0fWGd 14:47 < bridge> [teeworlds] I don't see any compiler flag in that one either 14:48 < bridge> [teeworlds] mh 14:48 < bridge> [teeworlds] but anyway, cmake *should* add the proper flags by default 14:48 < bridge> [teeworlds] just run gdb again 14:48 < bridge> [teeworlds] how does that work again? :p 14:49 < bridge> [teeworlds] https://cs.baylor.edu/~donahoo/tools/gdb/tutorial.html 14:50 < bridge> [teeworlds] `gdb -ex run -ex bt --args ./yourserver -f autoexec.cfg` 14:52 < bridge> [teeworlds] lol 14:52 < bridge> [teeworlds] got a bt 14:52 < bridge> [teeworlds] juste `make VERBOSE=1`, you'll see the g++ command 14:55 < redix> ever thought about the possibility that the buffer really overloads? 14:56 < bridge> [teeworlds] LOL 14:56 < bridge> [teeworlds] `pPlayerInfo->m_Latency = SnappingClient == -1 ? m_Latency.m_Min : GameServer()->m_apPlayers[SnappingClient]->m_aActLatency[m_ClientID];` 14:56 < bridge> [teeworlds] why does it crash here 14:59 < bridge> [teeworlds] which one redix? 14:59 < Dune> the network ringbuffer? 15:00 < redix> yes. when there is a client with high latency sending all these packets might fill it up 15:34 < redix> hmm when the connection ringbuffer is full it should just drop the client... didn't read that the server crashes 15:36 < redix> but still... sending packets to all clients each tick might be too much for the netcode. snapshots do this much more efficiently 15:37 < bridge> [teeworlds] THATS WHY I AM SO MAD THAT WE DONT HAVE SKIN IN SNAP ANYMORE 15:37 < bridge> [teeworlds] sorry for caps 15:38 < redix> well... i agree on that 15:38 < bridge> [teeworlds] :0 15:38 < Dune> maybe just send it less often 15:39 < redix> send it just every 2 or 3 ticks 15:39 < redix> or increase the network buffer size 15:39 < redix> or do both 15:39 < bridge> [teeworlds] i asked oy, you cant increase it 15:39 < bridge> [teeworlds] (he said) 15:40 < bridge> [teeworlds] https://discordapp.com/channels/407308363031117832/490150878934990850/635099018275323924 15:40 < bridge> [teeworlds] why does it crash there tho 15:40 < redix> https://github.com/teeworlds/teeworlds/blob/28946c3a84cfe31d1372f18d845fdcddec040bbe/src/engine/shared/network.h#L132 15:40 < redix> try to increase this value. might work 15:42 < bridge> [teeworlds] could you enable core dumps and give me a zipped version of the executable + core dump, @fokkonaut? Disord sucks btw. 15:42 < bridge> [teeworlds] uhm, can we do that tomorrow? i dont have much time left today 15:43 < bridge> [teeworlds] would need some help for that 15:44 < bridge> [teeworlds] doredump is created when the server crashes 15:44 < bridge> [teeworlds] cor 15:44 < bridge> [teeworlds] e 15:44 < bridge> [teeworlds] e 15:52 < bridge> [teeworlds] basically executing `ulimit -c unlimited` before starting the server executable