01:29 <+bridge> [ddnet] Is Zwelf around on irc? 01:29 <+bridge> [ddnet] I think I've seen him speaking from the bridge once or twice :P 01:31 <+bridge> [ddnet] is online on freenode 01:31 <+bridge> [ddnet] along with me and twbridge 01:31 <+bridge> [ddnet] I just noticed we basically reimplement std::future for our sql stuff. Was wondering if he looked into it at all 01:32 <+bridge> [ddnet] and std::future actually is C++11 ๐Ÿ˜ฎ 01:32 <+bridge> [ddnet] Yep 01:32 <+bridge> [ddnet] For our engine jobs too btw 01:32 <+bridge> [ddnet] what does it do? 01:32 <+bridge> [ddnet] I for one didn't realize it 01:32 <+bridge> [ddnet] that I was reimplementing something C++ already has 01:33 <+bridge> [ddnet] I didn't know about it at all until I listened to a talk yesterday 01:33 <+bridge> [ddnet] Promises are things that will happen in the future 01:34 <+bridge> [ddnet] You can wait on them, they evaluate either to a result or error out 01:34 <+bridge> [ddnet] Which is what we do with our sql result thing 01:34 <+bridge> [ddnet] how can I poll this thing? 01:35 <+bridge> [ddnet] It has the benefit of resolving properly in all cases, including exceptions and thread exit 01:35 <+bridge> [ddnet] oh ok ty 01:35 <+bridge> [ddnet] is it guaranteed to just poll if I pass a time of 0 to `wait_for`? 01:36 <+bridge> [ddnet] @heinrich5991 I have no idea, never used them. The guy was talking about asynchronous features of boost and just mentioned c++11 has futures aswell 01:36 <+bridge> [ddnet] if we can't poll them, they're not useful for our use case 01:39 <+bridge> [ddnet] I'd guess wait for with 0 would return immediately. I don't see why it wouldn't 01:39 <+bridge> [ddnet] I will check the standard tomorrow 01:43 <+bridge> [ddnet] Can it really ever guarantee no blocking at all though? The scheduler can just drop us if it wants, no? 01:44 <+bridge> [ddnet] it could in some way guarantee that we're not dropping to the kernel to check if the result is there 01:44 <+bridge> [ddnet] I guess that's hard to phrase in standard legalese 01:44 <+bridge> [ddnet] (our solution currently does that) 01:44 <+bridge> [ddnet] Ah, maybe some lockfree programming magic? 01:44 <+bridge> [ddnet] Oh do we use atomics? 01:44 <+bridge> [ddnet] yes 01:45 <+bridge> [ddnet] an atomic bool, to check if the result is there 01:45 <+bridge> [ddnet] I like the api of a future btw. Maybe we could adopt a similar idea for the sql stuff. I don't like us having to allocate two objects separately 01:47 <+bridge> [ddnet] good night ๐Ÿ™‚ 02:54 <+bridge> [ddnet] suggestion: add search in demos page in client 03:00 <+bridge> [ddnet] suggestion: add voicechat proximity 09:24 <+bridge> [ddnet] @Learath2 @heinrich5991 what about the actor model, is it any useful here? https://en.wikipedia.org/wiki/Actor_model 09:24 <+bridge> [ddnet] https://actor-framework.org/ 09:24 <+bridge> [ddnet] i found about this thanks to actix.rs 09:30 <+bridge> [ddnet] I only sort of like the idea. It's a nice design but I find it overkill for most systems 09:30 <+bridge> [ddnet] @Ryozuki what problem are you thinking of solving with it? 09:32 <+bridge> [ddnet] @Learath2 i thought about putting the db behind that 09:32 <+bridge> [ddnet] here is an exampel of the pattern implemented in a chat app, in rust tho https://github.com/actix/actix/tree/master/examples/chat 09:32 <+bridge> [ddnet] Ah, I see. I think it's a rather massive solution for the simplest of concurrency problems 09:32 <+bridge> [ddnet] xd 09:33 <+bridge> [ddnet] i mean 09:33 <+bridge> [ddnet] if u have it already implemented by someone 09:33 <+bridge> [ddnet] it doesnt rly matter if its "massive" 09:33 <+bridge> [ddnet] We don't reall need any of the great properties of the actors 09:33 <+bridge> [ddnet] but yeah i guess 09:34 <+bridge> [ddnet] Well these libraries are usually generic so you pay in compile time cost, it's also one more lib to link and it adds another pattern most people here aren't familiar with so it introduces some thinking cost 09:35 <+bridge> [ddnet] If we needed massive scalability and two way arbitrary messaging, it would work great 09:35 <+bridge> [ddnet] yeah 09:36 <+bridge> [ddnet] > CAF allows you to transparently connect actors running on different machines and OSes via the network. 09:36 <+bridge> [ddnet] this is cool tho 09:36 <+bridge> [ddnet] intercommunication between servers 10:13 <+bridge> [ddnet] Yeah great stuff especially if you like microservice architectures 14:36 <+bridge> [freenode] @Learath I didn't know about std::future in C++11 yet 14:48 < yiyi> hello,anybody? 14:48 <+bridge> [ddnet] hi yiyi 14:48 <+yiyi> can anyone tell me, which engine does ddnetwork developped by? 14:49 <+bridge> [ddnet] DDNet is based on Teeworlds game, we use SDL2 and pure OpenGL for graphics 14:49 <+bridge> [ddnet] :f3: 14:50 <@deen> yiyi: oh, and the reason you don't see us in irc channel is because most of us are on Discord, which is bridged to this IRC channel 14:52 <+yiyi> aha, i see, thank you! 15:00 <+bridge> [ddnet] @Lady Saavik or someone speaking polish, can you please check https://github.com/ddnet/ddnet/pull/3433 ? 18:16 <+bridge> [ddnet] What is the file naming convention here? We have "allwordstogether" convention for the most of files, and snake_case convention for some hundred files here and there (engine/shared, game/client/components, etc). There are also DDRace files in game/server/gamemodes (which I'm actually going to rename). 18:29 <+bridge> [ddnet] @Kaffeine feels like "allwordstogether" except_when_it_gets_too_long_to_stay_readable 19:20 <+bridge> [ddnet] suggestions 19:20 <+bridge> [ddnet] also we need a blocker server for NA, every time i go to SA shithole blmap i get violated intimately by spikes/stutters 19:20 <+bridge> [ddnet] there is always a number of ddnet CAN maps that have 0 players on at all times, could we convert some into blocker servers? 19:20 <+bridge> [ddnet] thoughts? 19:54 <+bridge> [ddnet] @CUMMY DDNet USA - BLOCKER exists 20:41 <+bridge> [ddnet] 32 for 5* is crazy af lol 20:41 <+bridge> [ddnet] should be 3 6 12 15 18 20:41 <+bridge> [ddnet] or 3 6 9 12 15 20:43 <+bridge> [ddnet] somewhat old dev returning to the game... is it expected to have 30% cpu usage (somewhat highend cpu) in visual studio idle when ddnet src is open? 20:43 <+bridge> [ddnet] old dev returning to the game... is it expected to have 30% cpu usage (somewhat highend cpu) in visual studio idle when ddnet src is open? 20:44 <+bridge> [ddnet] no 15 points is not much for 5* there are some rly hard 5* race 20:44 <+bridge> [ddnet] maybe not 32 but at least more than 25 20:46 <+bridge> [ddnet] mm i think 25 for 5* is the limit 20:46 <+bridge> [ddnet] more than that would be crazy 20:48 <+bridge> [ddnet] and rerate race server would be a nice idea cuz players will play it so much 20:48 <+bridge> [ddnet] for pointa 21:09 <+bridge> [ddnet] still not much 21:09 <+bridge> [ddnet] imagine playing antibuguse and gettins 25 points 21:09 <+bridge> [ddnet] it doesnt seems like much 21:09 <+bridge> [ddnet] while 25 points would be fair in other 5* race maps 21:12 <+bridge> [ddnet] maybe we could get some kind of time based points, so that it would be about average time too and not only about difficulty 21:19 <+bridge> [ddnet] Does anyone dare to check a commit? 21:19 <+bridge> [ddnet] https://github.com/ddnet/ddnet/commit/af843600e73cf9b2aff28b78d66a075e9261f745 21:19 <+bridge> [ddnet] 21:19 <+bridge> [ddnet] The commit introduces a Reset() method and what is the ugliest is that the Reset() is called twice โ€” one time from the CGameControllerDDRace() constructor which constructs a CGameTeams member constructor of which in its turn calls the Reset(). And the second time on the next line: `((CGameControllerDDRace *)m_pController)->m_Teams.Reset();` 21:19 <+bridge> [ddnet] Does anyone dare to check a commit? 21:19 <+bridge> [ddnet] https://github.com/ddnet/ddnet/commit/af843600e73cf9b2aff28b78d66a075e9261f745 21:19 <+bridge> [ddnet] 21:19 <+bridge> [ddnet] The commit introduces a Reset() method and what is the ugliest is that the Reset() is called twice โ€” one time from the CGameControllerDDRace() constructor which constructs a CGameTeams member constructor of which in its turn calls the Reset(). And the second time on the next line: `((CGameControllerDDRace *)m_pController)->m_Teams.Reset();` 21:19 <+bridge> [ddnet] 21:19 <+bridge> [ddnet] I see no reasons to keep this. 21:20 <+bridge> [ddnet] Does anyone dare to check a commit? 21:20 <+bridge> [ddnet] https://github.com/ddnet/ddnet/commit/af843600e73cf9b2aff28b78d66a075e9261f745 21:20 <+bridge> [ddnet] 21:20 <+bridge> [ddnet] The commit introduces a Reset() method and what is the ugliest is that the Reset() is called twice โ€” one time from the CGameControllerDDRace() constructor which constructs a CGameTeams member constructor of which in its turn calls the Reset(). And the second time on the next line: `((CGameControllerDDRace *)m_pController)->m_Teams.Reset();` 21:20 <+bridge> [ddnet] 21:20 <+bridge> [ddnet] I see no reasons to keep this. (I'm OK with Reset() method but not OK with the ugly second call) 21:20 <+bridge> [ddnet] Does anyone dare to check a commit? 21:20 <+bridge> [ddnet] https://github.com/ddnet/ddnet/commit/af843600e73cf9b2aff28b78d66a075e9261f745 21:20 <+bridge> [ddnet] 21:20 <+bridge> [ddnet] The commit introduces a Reset() method and what is the ugliest is that the Reset() is called twice โ€” one time from the CGameControllerDDRace() constructor which constructs a CGameTeams member constructor of which in its turn calls the Reset(). And the second time on the next line: `((CGameControllerDDRace *)m_pController)->m_Teams.Reset();` 21:20 <+bridge> [ddnet] 21:20 <+bridge> [ddnet] I see no reasons to keep this. (I'm OK with Reset() method but not OK with the ugly second call) 21:21 <+bridge> [ddnet] Does anyone dare to check a commit? 21:21 <+bridge> [ddnet] https://github.com/ddnet/ddnet/commit/af843600e73cf9b2aff28b78d66a075e9261f745 21:21 <+bridge> [ddnet] 21:21 <+bridge> [ddnet] The commit introduces a Reset() method and what is the ugliest is that the Reset() is called twice โ€” one time from the CGameControllerDDRace() constructor which constructs a CGameTeams member, the constructor of which in its turn calls the Reset(). And the second time on the next line: `((CGameControllerDDRace *)m_pController)->m_Teams.Reset();` 21:21 <+bridge> [ddnet] 21:21 <+bridge> [ddnet] I see no reasons to keep this. (I'm OK with Reset() method but not OK with the ugly second call) 21:25 <+bridge> [ddnet] Does anyone brave enough to check a commit? 21:25 <+bridge> [ddnet] https://github.com/ddnet/ddnet/commit/af843600e73cf9b2aff28b78d66a075e9261f745 21:25 <+bridge> [ddnet] 21:25 <+bridge> [ddnet] The commit introduces a Reset() method and what is the ugliest is that the Reset() is called twice โ€” one time from the CGameControllerDDRace() constructor which constructs a CGameTeams member, the constructor of which in its turn calls the Reset(). And the second time on the next line: `((CGameControllerDDRace *)m_pController)->m_Teams.Reset();` 21:25 <+bridge> [ddnet] 21:25 <+bridge> [ddnet] I see no reasons to keep this. (I'm OK with Reset() method but not OK with the ugly second call) 21:28 <+bridge> [ddnet] @Kaffeine if that truly does nothing, there's no problem in removing it 21:28 <+bridge> [ddnet] just make sure it's actually doing nothing ๐Ÿ˜‰ 21:30 <+bridge> [ddnet] refactoring to avoid the cast is also fine, obviously ^^ 21:31 <+bridge> [ddnet] I'm going to surprise you. ๐Ÿ˜‰ 22:15 <+bridge> [ddnet] <ะ”ัะดั ะ–ะตะฝั> Nothing in this code is doing obviously nothing 22:15 <+bridge> [ddnet] <ะ”ัะดั ะ–ะตะฝั> There should be some shitty case 23:27 <+bridge> [ddnet] update: the spike lags are still appearing in my game and gave up on finding new solutions. im gonna wait for next update now 23:39 <+bridge> [ddnet] You can try nightly version already to see if that helps: https://ddnet.tw/news/nightly-build-revived/