Guild icon
DDraceNetwork
Development / developer
Development discussion. Logged to https://ddnet.org/irclogs/ Connected with DDNet's IRC channel, Matrix room and GitHub repositories β€” IRC: #ddnet on Quakenet | Matrix: #ddnet-developer:matrix.org GitHub: https://github.com/ddnet
Between 2024-08-19 00:00 and 2024-08-20 00:00
Avatar
GitHub BOT 2024-08-19 04:01

Checklist

  • [x] Tested the change ingame
  • [ ] Provided screenshots if it is a visual change
  • [ ] Tested in combination with possibly related configuration options
  • [ ] Written a unit test (especially base/) or added coverage to integration test
  • [x] Considered possible null pointers and out of bounds array indexing
  • [x] Changed no physics that affect existing maps
  • [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssan...
04:02

Checklist

  • [x] Tested the change ingame
  • [ ] Provided screenshots if it is a visual change
  • [ ] Tested in combination with possibly related configuration options
  • [ ] Written a unit test (especially base/) or added coverage to integration test
  • [x] Considered possible null pointers and out of bounds array indexing
  • [x] Changed no physics that affect existing maps
  • [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssan...
Avatar
GitHub BOT 2024-08-19 04:37
See #8750 https://github.com/user-attachments/assets/a9cc0ea4-df3d-42b3-a69b-a83a9aaf534b

Checklist

  • [x] Tested the change ingame
  • [x] Provided screenshots if it is a visual change
  • [ ] Tested in combination with possibly related configuration options
  • [ ] Written a unit test (especially base/) or added coverage to integration test
  • [ ] Considered possible null pointers and out of bounds array indexing
  • [x] Changed no physics that affect existing maps
  • [ ] Teste...
Avatar
GitHub BOT 2024-08-19 05:31
66e3f61 Add delete hotkey for 0.7 skins - ChillerDragon 288f999 Merge pull request #8769 from ChillerDragon/pr_delete_skins7_hotkey - Robyt3
Avatar
ws-client BOT 2024-08-19 06:05
<ChillerDragon> i red something about binds recently if my compose zoom bind no longer works is that a me issue or a ddnet issue?
06:05
<ChillerDragon> nvm still works
06:05
<ChillerDragon> i forgot zoozing is not allowed in onbgy fng
Avatar
Avatar
Ewan
anyone who can test?
Locally I can try, other than that I'm out since years
Avatar
GitHub BOT 2024-08-19 07:14
ddd13ba fix: fixed missing TargetX/TargetY zoom scale apply in CControls::SnapInput - Matodor 89cc2d4 Merge pull request #8766 from Matodor/pr_inputs_missing_zoom_scale - def-
Avatar
Avatar
ws-client
<ChillerDragon> i forgot zoozing is not allowed in onbgy fng
zooz
Avatar
Avatar
ReiTW
Locally I can try, other than that I'm out since years
🧒
Avatar
Jupstar βœͺ 2024-08-19 09:34
@Learath2 final update, for now i'll not optimize it further. I tried different grid sized 3x3 and even 0.5x0.5. All perform much worse than 1x1. I think this is already pretty optimal for the average case. What however improved performance was to replace BTreeSet with a manually sorted Vec, >20% with 4096 Ent, >6% with 64 Ent. I dunno wtf Rust std is doing, but it sucks hard. the interesting doc: A B-Tree instead makes each node contain B-1 to 2B-1 elements in a contiguous array. By doing this, we reduce the number of allocations by a factor of B, and improve cache efficiency in searches. However, this does mean that searches will have to do more comparisons on average. The precise number of comparisons depends on the node search strategy used. For optimal cache efficiency, one could search the nodes linearly. For optimal comparisons, one could search the node using binary search. As a compromise, one could also perform a linear search that initially only checks every ith element for some choice of i. Currently, our implementation simply performs naive linear search. This provides excellent performance on small nodes of elements which are cheap to compare. However in the future we would like to further explore choosing the optimal search strategy based on the choice of B, and possibly other factors. Using linear search, searching for a random element is expected to take B * log(n) comparisons, which is generally worse than a BST. In practice, however, performance is excellent. https://doc.rust-lang.org/std/collections/struct.BTreeMap.html But honestly I doubt i hit the 2B-1 element limit. so i cannot understand it sucks so hard compared to a Vec. I still find the 2nd section of the doc really concerning, isn't that the whole sense of a btreemap xddd
Avatar
Avatar
Jupstar βœͺ
@Learath2 final update, for now i'll not optimize it further. I tried different grid sized 3x3 and even 0.5x0.5. All perform much worse than 1x1. I think this is already pretty optimal for the average case. What however improved performance was to replace BTreeSet with a manually sorted Vec, >20% with 4096 Ent, >6% with 64 Ent. I dunno wtf Rust std is doing, but it sucks hard. the interesting doc: A B-Tree instead makes each node contain B-1 to 2B-1 elements in a contiguous array. By doing this, we reduce the number of allocations by a factor of B, and improve cache efficiency in searches. However, this does mean that searches will have to do more comparisons on average. The precise number of comparisons depends on the node search strategy used. For optimal cache efficiency, one could search the nodes linearly. For optimal comparisons, one could search the node using binary search. As a compromise, one could also perform a linear search that initially only checks every ith element for some choice of i. Currently, our implementation simply performs naive linear search. This provides excellent performance on small nodes of elements which are cheap to compare. However in the future we would like to further explore choosing the optimal search strategy based on the choice of B, and possibly other factors. Using linear search, searching for a random element is expected to take B * log(n) comparisons, which is generally worse than a BST. In practice, however, performance is excellent. https://doc.rust-lang.org/std/collections/struct.BTreeMap.html But honestly I doubt i hit the 2B-1 element limit. so i cannot understand it sucks so hard compared to a Vec. I still find the 2nd section of the doc really concerning, isn't that the whole sense of a btreemap xddd
Have you tried 1.5x btw? Just curious
Avatar
Jupstar βœͺ 2024-08-19 09:35
Mhh i don't think so
Avatar
Avatar
Jupstar βœͺ
@Learath2 final update, for now i'll not optimize it further. I tried different grid sized 3x3 and even 0.5x0.5. All perform much worse than 1x1. I think this is already pretty optimal for the average case. What however improved performance was to replace BTreeSet with a manually sorted Vec, >20% with 4096 Ent, >6% with 64 Ent. I dunno wtf Rust std is doing, but it sucks hard. the interesting doc: A B-Tree instead makes each node contain B-1 to 2B-1 elements in a contiguous array. By doing this, we reduce the number of allocations by a factor of B, and improve cache efficiency in searches. However, this does mean that searches will have to do more comparisons on average. The precise number of comparisons depends on the node search strategy used. For optimal cache efficiency, one could search the nodes linearly. For optimal comparisons, one could search the node using binary search. As a compromise, one could also perform a linear search that initially only checks every ith element for some choice of i. Currently, our implementation simply performs naive linear search. This provides excellent performance on small nodes of elements which are cheap to compare. However in the future we would like to further explore choosing the optimal search strategy based on the choice of B, and possibly other factors. Using linear search, searching for a random element is expected to take B * log(n) comparisons, which is generally worse than a BST. In practice, however, performance is excellent. https://doc.rust-lang.org/std/collections/struct.BTreeMap.html But honestly I doubt i hit the 2B-1 element limit. so i cannot understand it sucks so hard compared to a Vec. I still find the 2nd section of the doc really concerning, isn't that the whole sense of a btreemap xddd
It's surprising how much you got from switching to a vec
Avatar
Jupstar βœͺ 2024-08-19 09:36
i should have stashed that shit, took me few hours and i deleted it bcs i was mad xDD
Avatar
Avatar
Learath2
It's surprising how much you got from switching to a vec
Jupstar βœͺ 2024-08-19 09:37
yes me too, esp. bcs the flamegraph didnt show such a improvement (edited)
09:37
i saw btreemap sucked.. but not that much
09:39
i add btreemaps now to my hashmap benchmark
09:39
i wonder how it compares πŸ˜„
09:39
iteration must be slower than a hashmap xD
Avatar
GitHub BOT 2024-08-19 09:39
cd0084b Add 15 € funding for RUS3 by kartofel14 - def-
πŸ”₯ 1
Avatar
I really want to experiment with this too. But it would be so much work to abstract away the current C++ implementation enough to bench it and it would be even more work to make my own ddnet implementation
Avatar
Jupstar βœͺ 2024-08-19 09:42
btw @Learath2 generally the number of ticks proof it must be O(1) ig. 17k ticks with 64 tees 250 ticks with 4096 tees that's almost linear (edited)
Avatar
I wanted to try sweep and prune too, it would be trivial and might just work well with most usual situations
Avatar
Avatar
Jupstar βœͺ
btw @Learath2 generally the number of ticks proof it must be O(1) ig. 17k ticks with 64 tees 250 ticks with 4096 tees that's almost linear (edited)
O(n) no? O(1) wouldn't change as the number of tees changes
Avatar
Avatar
Learath2
O(n) no? O(1) wouldn't change as the number of tees changes
Jupstar βœͺ 2024-08-19 09:44
yeah o(n) on the whole physics true
09:44
i always think of the collision code
Avatar
Next step is making it O(1) by precalculating all possible collisions
Avatar
Jupstar βœͺ 2024-08-19 09:48
a neural net that just guesses the physics
09:51
#iterate indexmap took 150ns: vec took 140ns: hashmap took 350ns: linked-hashmap took 240ns: fx hashmap took 361ns: btreemap took 822ns: indexmap (values only) took 141ns: linked-hashmap (with view) took 251ns: linked-hashmap (values only) took 220ns: fx hashmap (values only) took 361ns: btreemap (values only) took 611ns: with 64 entities btreemap is already complete trash xD how is that possible
09:51
i always thought hashmaps start to scale at like 200-300 entries
09:52
#iterate indexmap took 50ns: vec took 50ns: hashmap took 60ns: linked-hashmap took 50ns: fx hashmap took 60ns: btreemap took 571ns: indexmap (values only) took 50ns: linked-hashmap (with view) took 50ns: linked-hashmap (values only) took 50ns: fx hashmap (values only) took 60ns: btreemap (values only) took 100ns: 8 entries
09:53
guess i have to do 1 entry, since that is a common case in the physics
09:53
#iterate indexmap took 31ns: vec took 30ns: hashmap took 40ns: linked-hashmap took 30ns: fx hashmap took 40ns: btreemap took 180ns: indexmap (values only) took 30ns: linked-hashmap (with view) took 40ns: linked-hashmap (values only) took 30ns: fx hashmap (values only) took 40ns: btreemap (values only) took 60ns:
09:54
how can it be so bad?
09:54
it just casually takes double as long
Avatar
GitHub BOT 2024-08-19 10:01
d615b86 Add 5 € funding for RUS3 by senten - def-
Avatar
Avatar
Jupstar βœͺ
a neural net that just guesses the physics
AssassinTee 2024-08-19 10:05
what are you doing here? Do you need a map with a lot of physics and tunings?
Avatar
Avatar
AssassinTee
what are you doing here? Do you need a map with a lot of physics and tunings?
Jupstar βœͺ 2024-08-19 10:06
that was just a joke response to learath. Generally i just tried to improve core physics without breaking physics. So e.g. 4000 Tees could be possible. The current ddnet physics are O(n²) which completely breaks it
10:06
core physics*
Avatar
AssassinTee 2024-08-19 10:07
I also played with the thought of using quadtrees in teeworlds long time ago, because you usually don't have too many entities reacting with each other anyways
Avatar
Jupstar βœͺ 2024-08-19 10:08
yep, it insanely improves the throughput. but physics are still rather slow generally
10:08
with 4096 tees i can barely hit 250 ticks/s
Avatar
Can we get a PR for this improvement please? Our servers are overloaded
Avatar
AssassinTee 2024-08-19 10:11
link for anyone interested: here However I ran into troubles updating the tree properly, because the UPDATE SEQUENCE MATTERS A LOT in teeworlds (edited)
Avatar
Avatar
deen
Can we get a PR for this improvement please? Our servers are overloaded
Jupstar βœͺ 2024-08-19 10:11
it's in rust and uses RAII. i cannot really guess how hard it is to port
Avatar
Avatar
deen
Can we get a PR for this improvement please? Our servers are overloaded
It's a completely different implementation of teeworlds
Avatar
Jupstar βœͺ 2024-08-19 10:11
but i share all code and insight if somebody wants to try
Avatar
I don't think the O(n^2) physics pops up in our profiling yet
Avatar
Jupstar βœͺ 2024-08-19 10:12
but without RAII i fear that i miss a character remove or insert
10:12
and then it's broken xD
Avatar
Avatar
Learath2
I don't think the O(n^2) physics pops up in our profiling yet
Jupstar βœͺ 2024-08-19 10:12
but with 128p support, how fast is that?
10:13
i get 8255 t/s that is defs enough to not destroy FPS too much
Avatar
AssassinTee 2024-08-19 10:13
increase grenade "damage" (and therefore force) to max and see how many players can be moved simultanously
Avatar
Avatar
Jupstar βœͺ
i get 8255 t/s that is defs enough to not destroy FPS too much
Jupstar βœͺ 2024-08-19 10:14
since prediction must run every frame
Avatar
Avatar
Jupstar βœͺ
but with 128p support, how fast is that?
With 128p I think the playermapping implementation to reduce to 64p was the thing that took most time
Avatar
Avatar
Learath2
With 128p I think the playermapping implementation to reduce to 64p was the thing that took most time
Jupstar βœͺ 2024-08-19 10:16
yeah i meant native support 128p in client
10:16
if that ever comes πŸ˜„
10:17
i think robster once did it
10:17
let me search
Avatar
Avatar
Robyt3
I think we might also have to improve the client performance for 128 players. Although this is the debug build, I have 1800 FPS without the 127 debug dummies justatest
Jupstar βœͺ 2024-08-19 10:17
doesnt sound tooo bad
Avatar
Avatar
Robyt3
around 400 with scoreboard open, 1200 scoreboard close, 2400 without the dummies
Jupstar βœͺ 2024-08-19 10:18
.
Avatar
Avatar
Jupstar βœͺ
yeah i meant native support 128p in client
We have native 128 players in client
10:18
Will come with the native 128 server change
Avatar
Jupstar βœͺ 2024-08-19 10:18
Ok
Avatar
deen why rus3 in finland?)
Avatar
Because I have trouble getting money into Russia
10:19
So I'm trying if the ping is good enough to Helsinki, is it?
Avatar
for me yes ~60
Avatar
From what I checked it should be 20 from St. Petersburg and 40 from Moscow (for server connections, maybe +20 for home)
10:20
Anyone else from Russia want to try if it's ok before I order a larger server for a month therE?
Avatar
how much players can handle vps with 1CPU and 512ram?) maybe abuse cheap 130rub/month vps
Avatar
I don't want to deal with that. I want to get one huge server and be done with it, it's cheap enough
10:23
Not sure if Russians will join if I call it DDNet FIN instead of RUS3/4
Avatar
Avatar
deen
Anyone else from Russia want to try if it's ok before I order a larger server for a month therE?
Rus3 - 60 ping.If u asked that
Avatar
Thanks
Avatar
Avatar
deen
Because I have trouble getting money into Russia
@deen don't use cryptocurrency?
10:28
you can make an exchange through the exchange and withdraw into rubles
Avatar
I have a strong aversion to crypto
10:29
Don't want to support scams
Avatar
but stablecoins...
Avatar
Avatar
deen
I have a strong aversion to crypto
Tbf, if RUS hosters do take it, it might be acceptable as a compromise to give players a new server
10:50
How come rus3 is hosted in finland?
Avatar
Avatar
Learath2
Tbf, if RUS hosters do take it, it might be acceptable as a compromise to give players a new server
They don't. I'd have to get a Russian bank account
Avatar
Avatar
Sans
How come rus3 is hosted in finland?
Read up a little...
Avatar
Avatar
Sans
sneaky
Experiment to see if ping is fine from Russia
Avatar
Avatar
Learath2
Tbf, if RUS hosters do take it, it might be acceptable as a compromise to give players a new server
https://www.reuters.com/markets/currencies/russia-weighs-risk-embracing-crypto-international-payments-2024-07-17/
Cryptocurrencies are currently not allowed for payments inside Russia, and the new law is unlikely to change that.
Which is why our hoster stopped accepting them I guess.
πŸ‘€ 1
11:13
8865b9d Add FIN and RUS3 - def- 3b0bcb9 FIN & RUS3 - def-
Avatar
Avatar
Matodor
but stablecoins...
Very stable, like luna/terra Pepechill
Avatar
Jupstar βœͺ 2024-08-19 11:22
first time i noticed how unbalanced ctf1 actually is πŸ˜„
11:22
blue fills so heavily
11:22
the reds are stuck again :c
Avatar
chillerdragon BOT 2024-08-19 11:25
@Jupstar βœͺ: that’s why you swap sides in serious games. Both teams get equal amount of rounds on each side.
Avatar
Avatar
chillerdragon
@Jupstar βœͺ: that’s why you swap sides in serious games. Both teams get equal amount of rounds on each side.
Jupstar βœͺ 2024-08-19 11:25
ok vanilla legend
11:26
but you do agree that you should join team red? xdd
Avatar
chillerdragon BOT 2024-08-19 11:26
Are you saying crypto is a scam? ._.
Replying to @deen Don't want to support scams
Avatar
Someone should make this meme with chillers tee SGuraWoke
Avatar
Avatar
deen
Experiment to see if ping is fine from Russia
γ‚€γŽ 2024-08-19 11:29
no difference from ger for me sanyakamen
Avatar
chillerdragon BOT 2024-08-19 11:29
??
Replying to @Jupstar βœͺ but you do agree that you should join team red? xdd
11:29
Which meme lerato
Avatar
Avatar
γ‚€γŽ
no difference from ger for me sanyakamen
γ‚€γŽ 2024-08-19 11:29
80-100 ping with packet loss
Avatar
Avatar
chillerdragon
??
Jupstar βœͺ 2024-08-19 11:29
when will you install discord so we can talk about vanilla?
Avatar
chillerdragon BOT 2024-08-19 11:29
Let’s talk here
11:29
What about team red I don’t get it
Avatar
Jupstar βœͺ 2024-08-19 11:30
there is nothing about team red, it's just funny that the red side didnt fill up completely
11:30
but the spawns are so small that the tees always stack
Avatar
chillerdragon BOT 2024-08-19 11:31
I would join red for sure
11:31
I quit playing for blue years ago
11:31
CTF players hated me so much for it xd
Avatar
is it racist to discriminate against blue?
Avatar
chillerdragon BOT 2024-08-19 11:32
No it’s being loyal to red
11:32
I picked a side for ctf
Avatar
Avatar
γ‚€γŽ
80-100 ping with packet loss
Too bad. It should still help you if more people play on FIN, then RUS1/RUS2 will be less laggy, we'll keep them
Avatar
Jupstar βœͺ 2024-08-19 11:45
what makes RUS1 & 2 laggy?
11:45
CPU or network?
Avatar
Jupstar βœͺ 2024-08-19 11:46
wow what kind of cpu do they have?
Avatar
They are clogged at 100% CPU, Intel i7 7700k each
Avatar
Jupstar βœͺ 2024-08-19 11:46
wtf
11:46
and they struggle so much
Avatar
They can do 2500 players per dedicated server
Avatar
Jupstar βœͺ 2024-08-19 11:47
ah ok that's ofc a lot
11:47
i guess
Avatar
FIN is a Ryzen 5 3600, so it should handle a bit more
Avatar
Jupstar βœͺ 2024-08-19 11:48
i wonder if it helps to compile the whole server with MAX_CLIENTS set to 32
11:48
then the loops get smaller
Avatar
I'm planning to go to 128 players as soon as the PR lands
Avatar
Jupstar βœͺ 2024-08-19 11:48
well network stuff ofc uses lot of CPU time too
Avatar
Avatar
deen
I'm planning to go to 128 players as soon as the PR lands
Jupstar βœͺ 2024-08-19 11:48
but wont this make things even worse πŸ˜„
Avatar
Maybe, maybe not
11:49
It definitely makes it more fun though
πŸ‘πŸ» 1
Avatar
Jupstar βœͺ 2024-08-19 11:50
yeah more tees are always more fun
Avatar
chillerdragon BOT 2024-08-19 11:50
thats why we should remove /team
11:50
more fun
Avatar
chiller please no
Avatar
Avatar
chillerdragon
thats why we should remove /team
and dummy on novice servers
Avatar
I love chill t0 runs
Avatar
Avatar
Matodor
and dummy on novice servers
more slots for real players
Avatar
i dont think dummies can be removed that easily
11:52
i remember something about not every client reporting their dummies (edited)
11:52
and also what about players on the same ip
Avatar
Jupstar βœͺ 2024-08-19 11:52
500 dummies explosions are fun too
Avatar
Avatar
Jupstar βœͺ
500 dummies explosions are fun too
what are you testing here XD
Avatar
Jupstar βœͺ 2024-08-19 11:53
i simply enabled dummy copy moves
11:53
and pressed fire
Avatar
but why are there so many dummies XD
Avatar
Jupstar βœͺ 2024-08-19 11:54
dunno, more tees are fun
Avatar
Avatar
Jupstar βœͺ
500 dummies explosions are fun too
it looks a bit like bomberman
Avatar
unterdev.eth 2024-08-19 13:00
maybe i'm dumb, but i'm getting error CMake Error: The source directory "/home/lukron/DDNet-Server" does not appear to contain CMakeLists.txt. Specify --help for usage, or press the help button on the CMake GUI. this is what i did: git clone --recursive https://github.com/ddnet/ddnet sudo apt install build-essential cargo cmake git glslang-tools google-mock libavcodec-extra libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libcurl4-openssl-dev libfreetype6-dev libglew-dev libnotify-dev libogg-dev libopus-dev libopusfile-dev libpng-dev libsdl2-dev libsqlite3-dev libssl-dev libvulkan-dev libwavpack-dev libx264-dev python3 rustc spirv-tools mkdir build cd build cmake ..
Avatar
cmake ../ddnet
Avatar
Avatar
chillerdragon
thats why we should remove /team
true
Avatar
chillerdragon BOT 2024-08-19 13:03
hi jiggsel
Avatar
hey chilli
13:03
._.
Avatar
chillerdragon BOT 2024-08-19 13:03
13:03
xxD
Avatar
chillerdragon BOT 2024-08-19 13:04
i rofled so hard
13:05
sometimes I wonder whether the people in here even work in any day job
13:05
cuz they are so active in here (edited)
13:06
jiggsel.de
13:06
reserved
Avatar
ws-client BOT 2024-08-19 13:11
<ChillerDragon> justatest all hard workers here
13:12
<ChillerDragon> sometimes I wonder whether the people in here even play the game
13:12
<ChillerDragon> so much activity
13:12
<ChillerDragon> cuz they are so active in here
Avatar
Avatar
ws-client
<ChillerDragon> sometimes I wonder whether the people in here even play the game
Jupstar βœͺ 2024-08-19 13:24
Yes, want a insane gores battle against me?
13:24
Or r u chilling on the beach too much xdd
Avatar
Avatar
ws-client
<ChillerDragon> so much activity
you even copied my initial message which I updated :0
Avatar
GitHub BOT 2024-08-19 13:45
before !before after !after

Checklist

  • [x] Tested the change ingame
  • [x] Provided screenshots if it is a visual change
  • [ ] Tested in combination with possibly related configuration options
  • [ ] Written a unit test (especially base/) or added coverage to integration test
  • [ ] Considered possible null po...
❀️ 2
Avatar
godouly
Avatar
most important thing ive ever done
13:45
chillerdragon: are you proud of me i made a pr
13:45
with an actual comment
Avatar
sickouly
13:47
πŸŽ‰
Avatar
unterdev.eth 2024-08-19 13:48
how can i change flag of my server
Avatar
Avatar
GitHub
Click to see attachment πŸ–ΌοΈ
wait it's now shifted to right
13:49
you have to register a community
13:49
thru any of admin's dm i suppose
Avatar
heinrich5991 2024-08-19 13:50
a community is supposed to be a collection of servers. if you just set up a server, then you probably don't qualify
13:50
otherwise, it's #βœ‰-create-a-ticket β†’ admin mail
Avatar
Avatar
Souly
most important thing ive ever done
I can't see the difference justatest
13:57
i need pixel-to-pixel comparision to see
Avatar
its just shifted 2 pixels to the right
Avatar
oh, nice owo
Avatar
ik big change
Avatar
how to get a snapshot info? like character->freezetime. client side
Avatar
Avatar
Jupstar βœͺ
500 dummies explosions are fun too
I love kill moment πŸ˜„
Avatar
Jupstar βœͺ 2024-08-19 14:11
but it laggs too hard
Avatar
yeah I can feel lag
Avatar
Jupstar βœͺ 2024-08-19 14:12
it might render around 20k-30k particles here
14:12
since it must update them on CPU it's too slow
14:12
we need to move everything to GPU 😬
Avatar
Avatar
3x1sT
how to get a snapshot info? like character->freezetime. client side
.
Avatar
Avatar
Jupstar βœͺ
we need to move everything to GPU 😬
but gpu can handle it easier than cpu in that case cuz it's visual ?
Avatar
Avatar
Peakies
but gpu can handle it easier than cpu in that case cuz it's visual ?
Jupstar βœͺ 2024-08-19 14:13
it can handle the update of the particles better
Avatar
hmm
Avatar
Avatar
Jupstar βœͺ
it can handle the update of the particles better
when we see your pull request about GIF support on client ? 🀟 brownbear
Avatar
Avatar
Peakies
when we see your pull request about GIF support on client ? 🀟 brownbear
Jupstar βœͺ 2024-08-19 14:14
for what
14:14
xd
14:14
before i add gif i'd add a video player directly
14:15
and before doing that i prefer FPS-unrelated animations
14:15
@doick thanks for you contributions
Avatar
Avatar
Jupstar βœͺ
for what
I don't know I feel like DDNet need some gif or some animations can be very cool
14:16
yeah he remained me about gif and animation for ddnet πŸ˜„
Avatar
Avatar
3x1sT
how to get a snapshot info? like character->freezetime. client side
@Jupstar βœͺ niaa
Avatar
Jupstar βœͺ 2024-08-19 14:16
@doick ich verstehe sie nicht
Avatar
I studying Germany and just know ich = I, that all I know and learned for now πŸ˜„
Avatar
Avatar
Peakies
I don't know I feel like DDNet need some gif or some animations can be very cool
Jupstar βœͺ 2024-08-19 14:17
depends on what you want to do with them. i'd not use them for any kind of animations. if you add a TV in a 2D house where there is a video playing.. ok maybe cool
Avatar
heinrich5991 2024-08-19 14:18
if videos are added as resources for maps, we should use a sane format, not GIF
14:18
but I don't think we need videos for maps tbh
Avatar
Avatar
Jupstar βœͺ
depends on what you want to do with them. i'd not use them for any kind of animations. if you add a TV in a 2D house where there is a video playing.. ok maybe cool
now I was planned for using gif as body particle animation and add some gif like this one I'll send for happy birthday and even finishing a map as rank 1
Avatar
Avatar
heinrich5991
if videos are added as resources for maps, we should use a sane format, not GIF
webm?
Avatar
Avatar
Peakies
now I was planned for using gif as body particle animation and add some gif like this one I'll send for happy birthday and even finishing a map as rank 1
Jupstar βœͺ 2024-08-19 14:19
yeah but on 240hz screen it will look bad xD
Avatar
Avatar
Jupstar βœͺ
yeah but on 240hz screen it will look bad xD
I have 60hz πŸ˜„
Avatar
Jupstar βœͺ 2024-08-19 14:19
so what kind of GIF/video do you use? 1000 fps video? XD
Avatar
that fine for me I think πŸ™‚
Avatar
Avatar
Learath2
webm?
heinrich5991 2024-08-19 14:19
I don't know. anything is saner than GIF
Avatar
Avatar
Jupstar βœͺ
so what kind of GIF/video do you use? 1000 fps video? XD
didn't think about that part
Avatar
Jupstar βœͺ 2024-08-19 14:19
that is what i mean with fps-bound animations
Avatar
I saw my intro video for client right ?
Avatar
Avatar
Peakies
I saw my intro video for client right ?
Jupstar βœͺ 2024-08-19 14:20
yes
Avatar
Avatar
heinrich5991
if videos are added as resources for maps, we should use a sane format, not GIF
hey , can u help me with snapshots? idk how to use it client-side like snapshot->freezetime
Avatar
Jupstar βœͺ 2024-08-19 14:20
u sent it a while back here
Avatar
in that case I convert video to jpg files
Avatar
Avatar
Jupstar βœͺ
u sent it a while back here
yeah
Avatar
Original message was deleted or could not be loaded.
i'll add it to gifs in ddnet
Avatar
Avatar
Peakies
in that case I convert video to jpg files
then render jpg files in a loop to end of it
Avatar
video was 3mb or something but after convert it's 12mb of jpg files so if DDNet had support for video or gif that would be better don't know
Avatar
Avatar
3x1sT
hey , can u help me with snapshots? idk how to use it client-side like snapshot->freezetime
heinrich5991 2024-08-19 14:21
that seems entirely unrelated to my message
Avatar
Avatar
heinrich5991
if videos are added as resources for maps, we should use a sane format, not GIF
apng?
Avatar
Avatar
zhn
apng?
heinrich5991 2024-08-19 14:21
that's not a video format
Avatar
Avatar
heinrich5991
that seems entirely unrelated to my message
ye, i just ping u
Avatar
Avatar
Souly
its just shifted 2 pixels to the right
can u send 0.5 shift to left?
Avatar
Avatar
heinrich5991
that's not a video format
oh sorry, i read @Peakies message about animations in first
Avatar
heinrich5991 2024-08-19 14:23
russian β†’ #off-topic
Avatar
i had never touched client side @3x1sT
Avatar
ladno
Avatar
dude stop sending gif that even doesn't related to programming or this channel or even ddnet πŸ˜„
πŸ‡Ή 1
πŸ‡Ύ 1
πŸ‡· 1
πŸ…°οΈ 1
πŸ‡³ 1
typescript 1
Avatar
Avatar
Souly
?
can you shift feet x pos for 0.5 pixels to left and send screenshot?
Avatar
Where is RUS3/FIN2 ?
Avatar
Avatar
Souly
?
ok nvm ill test it myself
Avatar
unterdev.eth 2024-08-19 14:34
how can i change flag of my server? (i repeat the message)
Avatar
Avatar
Sans
Where is RUS3/FIN2 ?
It's FIN now
Avatar
Avatar
unterdev.eth
how can i change flag of my server? (i repeat the message)
You cannot (i repeat the answer)
Avatar
unterdev.eth 2024-08-19 14:36
thank you
Avatar
-gif +blender animations
Avatar
@Souly wait it was a mistake in .png?
14:51
i thought it's wrong value in image atlas cropper
14:53
for real lmfao
14:53
kek
Avatar
Avatar
heinrich5991
but I don't think we need videos for maps tbh
i agree
15:03
how about we add tune lock first 😼
Avatar
Avatar
heinrich5991
if videos are added as resources for maps, we should use a sane format, not GIF
well maybe not specific just GIF but playing and rendering video files would be good or maybe add support for GIF too, but it's just an idea and suggestion about DDNet features
Avatar
heinrich5991 2024-08-19 15:36
any GIF can be converted to a proper video. please don't add GIF support β€” GIF is horribly inefficient
15:36
even websites like giphycat or so don't serve GIFs for that reason
Avatar
Avatar
heinrich5991
any GIF can be converted to a proper video. please don't add GIF support β€” GIF is horribly inefficient
if it's possible to have like transparent video I'm okey with that like adding some cool animated particle gonna be really cool
Avatar
I'd guess webp or webm are the modern replacements
Avatar
which one has better quality and less size ?
15:43
Avatar
heinrich5991 2024-08-19 15:44
every video format has better quality and smaller size than gif
Avatar
yeah you right I remember once I converted short video to gif and it's really had big size than it's source
Avatar
why even need videos?
15:53
for custom particles better to let server send png assets and add a nice custom particle message into ddnet
15:54
it would be nice to have animated particles but aren't those usually done with spritesheets
Avatar
was an idea for now I using sprites to handle animations too
Avatar
I was read maplayers.cpp files as ma players .cpp for years just now noticed that it's map layers .cpp 😐
Avatar
heinrich5991 2024-08-19 16:08
same
Avatar
heinrich5991 2024-08-19 16:08
(noticed a while back though)
Avatar
I'm glad that I'm not alone thank you ❀️
16:09
I noticed after 10 years πŸ™‚
Avatar
GitHub BOT 2024-08-19 16:27
Hey, I have implemented auto-release for zCatch. A player will then be automatically released when
  • he joins the server.
  • he gets caught.
It is implemented by a server variable, so the server config may look like this: sv_auto_release 0 add_vote "Enable Auto Release" "sv_auto_release 1; end_round" add_vote "Disable Auto Release" "sv_auto_release 0; end_round"
Avatar
ДСнсил 2024-08-19 16:35
Sticker
Avatar
Avatar
Peakies
I was read maplayers.cpp files as ma players .cpp for years just now noticed that it's map layers .cpp 😐
I've thought it was someones attempt at a cool shortening of map players .cpp
16:42
for a long while
Avatar
I've thought m and a is short of some kind of system like manage actor players .cpp
16:44
oh my God kek
Avatar
Avatar
GitHub
Click to see attachment πŸ–ΌοΈ
I forgot we even hosted this repo
Avatar
GitHub BOT 2024-08-19 17:05
Simplify clipboard handling by returning an std::string and freeing the string returned by SDL immediately, so the clipboard data does not stay in memory unnecessarily after the clipboard has been used until the clipboard data is requested again. Fix possible TOCTOU when pasting from the clipboard into a lineinput, due to the clipboard data being requested twice.

Checklist

  • [X] Tested the change ingame
  • [ ] Provided screenshots if it is a visual change
  • [ ] Tested in combin...
Avatar
GitHub BOT 2024-08-19 17:44
40fbc21 Use std::string for IInput::GetClipboardText - Robyt3 1dd2f3a Merge pull request #8772 from Robyt3/Client-Input-Clipboard-String - def-
Avatar
всСм ΠΊΡƒ
owo 1
Avatar
I finally tested new nightly 07 thing and I'm ouraged, why was this added, its completely useless and unfitting. First of all, 2.5 0.7 servers can't offer anything new or cool, best gamemodes were already ported to ddnet/0.6 trunk. Secondly, if Chiller is 07 fan, why would he add 07 to ddnet, this change supposes 07 players will use ddnet instead of teeworlds client, and obviously they will stay and play ddnet servers instead, cuz they don't suck. We already have sixup support in case someone wants to play from 07, sixup and ddnet07 are opposite by purpose, this makes no sense. Thirdly, It looks fucking bad, chiller copy-pasted skin and player rendering from 07, I didn't dive into actual code, but I suppose it looks like mess. DDNet already loses its unique style cuz of weird community skins, now this, completely non-fitting 07 skin rendering among 06 gameskins/entities/menu/maps If this still in nighly, is it possible to be reverted by any chance, I see a lot of negative reviews from old community members, few maintainers and people who lurk on updates time-to-time
19:45
I think the UI could use some work but the ability to connect to more server types is not going to be a detriment (edited)
Avatar
There are no "more server types", as I said best 07 gamemodes were ported to ddnet and work better than originals, moreover most 07 servers are default vanilla where you can meet few players a day. Not sure how much it bloats the network code since it was bloated with sixup update, but jupstar mentioned it would add more pain in the ass to make secure connections and accounts stuff with this.
19:58
That's basically like adding game's network protocol to a smart fridge os, you can flex but that's useless
Avatar
I can't take u seriously
Avatar
Jupstar βœͺ 2024-08-19 20:07
he states an argument: all gamemodes that 0.7 offers are ported. Thus 0.7 support is direct bloat Independent if true or not, why can you not take it serious?
20:09
But if you know smth we don't, go ahead^^
Avatar
Avatar
Jupstar βœͺ
he states an argument: all gamemodes that 0.7 offers are ported. Thus 0.7 support is direct bloat Independent if true or not, why can you not take it serious?
100% of argeement greenthing
Avatar
Avatar
Anime.pdf
I finally tested new nightly 07 thing and I'm ouraged, why was this added, its completely useless and unfitting. First of all, 2.5 0.7 servers can't offer anything new or cool, best gamemodes were already ported to ddnet/0.6 trunk. Secondly, if Chiller is 07 fan, why would he add 07 to ddnet, this change supposes 07 players will use ddnet instead of teeworlds client, and obviously they will stay and play ddnet servers instead, cuz they don't suck. We already have sixup support in case someone wants to play from 07, sixup and ddnet07 are opposite by purpose, this makes no sense. Thirdly, It looks fucking bad, chiller copy-pasted skin and player rendering from 07, I didn't dive into actual code, but I suppose it looks like mess. DDNet already loses its unique style cuz of weird community skins, now this, completely non-fitting 07 skin rendering among 06 gameskins/entities/menu/maps If this still in nighly, is it possible to be reverted by any chance, I see a lot of negative reviews from old community members, few maintainers and people who lurk on updates time-to-time
heinrich5991 2024-08-19 20:23
Secondly, if Chiller is 07 fan, why would he add 07 to ddnet, this change supposes 07 players will use ddnet instead of teeworlds client, and obviously they will stay and play ddnet servers instead, cuz they don't suck.
I think the plan was to get more vanilla players
Thirdly, It looks fucking bad
huh. wdym? the feet? can you elaborate?
DDNet already loses its unique style cuz of weird community skins, now this
seems unrelated to the main point
I see a lot of negative reviews from old community members
I don't know why everyone needs to say "I know a lot of people who dislike this". it's doubly weird here, because you can just not play on 0.7 servers if you don't like it
20:23
@Jupstar βœͺ's arguments are better
20:24
First of all, 2.5 0.7 servers can't offer anything new or cool, best gamemodes were already ported to ddnet/0.6 trunk.
this, too
Avatar
i too fail to see how the change benefits ddnet client / 0.6 players
Avatar
poor chillerhuuhn
20:26
πŸ”
Avatar
Avatar
louis
i too fail to see how the change benefits ddnet client / 0.6 players
heinrich5991 2024-08-19 20:27
it doesn't really need to benefit anyone, as long as it doesn't hurt anyone. @Jupstar βœͺ gives a point why it hurts someone
20:27
if people can play more vanilla, then I'd say that's a benefit for everyone
Avatar
Avatar
heinrich5991
it doesn't really need to benefit anyone, as long as it doesn't hurt anyone. @Jupstar βœͺ gives a point why it hurts someone
does it not create a huge amount of code maintenance
20:29
by that argument it would be better to give lots more client options for various settings, but we don't do that
Avatar
Avatar
heinrich5991
it doesn't really need to benefit anyone, as long as it doesn't hurt anyone. @Jupstar βœͺ gives a point why it hurts someone
no if its ugly when i tried it even tho i did not plan on using it it is bad for everyone
20:29
kek
Avatar
Avatar
louis
does it not create a huge amount of code maintenance
heinrich5991 2024-08-19 20:30
we tried to keep it low, it's not as optimal as I'd like. I would have liked to abstract it out a little more
Avatar
0.7 is not more vanilla tho
20:32
iwant to state that i am also against adding 0.7 stuff
20:33
i guess chiller finally made heinrich fall
Avatar
Avatar
heinrich5991
Secondly, if Chiller is 07 fan, why would he add 07 to ddnet, this change supposes 07 players will use ddnet instead of teeworlds client, and obviously they will stay and play ddnet servers instead, cuz they don't suck.
I think the plan was to get more vanilla players
Thirdly, It looks fucking bad
huh. wdym? the feet? can you elaborate?
DDNet already loses its unique style cuz of weird community skins, now this
seems unrelated to the main point
I see a lot of negative reviews from old community members
I don't know why everyone needs to say "I know a lot of people who dislike this". it's doubly weird here, because you can just not play on 0.7 servers if you don't like it
vanilla players that do play on 07 vanilla will not switch to ddnet anyway since they "feel physics different" in first, and 07 vanillers that could play with 06 players do play on bridge servers in second
Avatar
Jupstar βœͺ 2024-08-19 20:33
we should download servers.json today and compare it against server.json 2 months after release and then see that vanilla still has no new players 😬
Avatar
Avatar
Jupstar βœͺ
we should download servers.json today and compare it against server.json 2 months after release and then see that vanilla still has no new players 😬
😬 😬 😬
20:35
russians are going to ddnet anyway
20:35
not vanilla keks
20:36
and we are under russian ddinvasion
20:36
justatest
Avatar
they don't even know about term "vanilla"
Avatar
Avatar
heinrich5991
Secondly, if Chiller is 07 fan, why would he add 07 to ddnet, this change supposes 07 players will use ddnet instead of teeworlds client, and obviously they will stay and play ddnet servers instead, cuz they don't suck.
I think the plan was to get more vanilla players
Thirdly, It looks fucking bad
huh. wdym? the feet? can you elaborate?
DDNet already loses its unique style cuz of weird community skins, now this
seems unrelated to the main point
I see a lot of negative reviews from old community members
I don't know why everyone needs to say "I know a lot of people who dislike this". it's doubly weird here, because you can just not play on 0.7 servers if you don't like it
I think the plan was to get more vanilla players
All vanilla players already play ddnet
huh. wdym? the feet? can you elaborate? seems unrelated to the main point
There is no main point, I expressed my thoughts on this update's impact, including style and appearance, 07 style is different from ddnet, when you see copy-pasted character from 07 on 06 map with 06 entities and 06 gametextures it looks unfitting to say the least.
I don't know why everyone needs to say "I know a lot of people who dislike this". it's doubly weird here, because you can just not play on 0.7 servers if you don't like it
Fair, just needed 3rd point, 2 seemed lame, but there were a lot of negative messages in this chat and town-hall, and answering to all of them were just few people, that what i mainly wanted to point out
Avatar
heinrich5991 2024-08-19 20:37
07 style is different from ddnet
is it? character rendering changed a little, but I think there's a PR to align it a little more
Avatar
Avatar
zhn
vanilla players that do play on 07 vanilla will not switch to ddnet anyway since they "feel physics different" in first, and 07 vanillers that could play with 06 players do play on bridge servers in second
Jupstar βœͺ 2024-08-19 20:37
do they really claim that?
20:37
0.7 client has vsync on, mouse acceleration on and no anti ping
20:38
maybe that is why physics feel different
20:38
and 0.7 renders the hook differently
20:38
in smaller chain sizes
Avatar
Avatar
heinrich5991
07 style is different from ddnet
is it? character rendering changed a little, but I think there's a PR to align it a little more
colors are very different, 07 is a bit more bright
Avatar
Jupstar βœͺ 2024-08-19 20:39
0.7 chain
Avatar
Avatar
Jupstar βœͺ
do they really claim that?
some of them refuse to use 06 only because of mentioned reasons
20:40
idk i think its only kind of gatekeeping, i don't see any difference
Avatar
Avatar
Jupstar βœͺ
we should download servers.json today and compare it against server.json 2 months after release and then see that vanilla still has no new players 😬
heinrich5991 2024-08-19 20:40
hmmm. it seems right now the vanilla activity is on bridge servers
Avatar
Jupstar βœͺ 2024-08-19 20:40
xd
Avatar
Avatar
heinrich5991
hmmm. it seems right now the vanilla activity is on bridge servers
ye try to count 07 players
Avatar
Jupstar βœͺ 2024-08-19 20:41
i am happy that we removed mouse acceleration and nobody complained since years
20:41
skill boost for whole community
20:42
@zhn where do you even chat with these ppl
20:42
ingame?
20:42
i gonna beat them and say "good that i play ddnet 0.6"
Avatar
i dont think mouse acceleration is inherently bad, it's just a preference thing. but better off by default
Avatar
Avatar
Jupstar βœͺ
@zhn where do you even chat with these ppl
ingame + 06 vanillers info
Avatar
its pretty silly to support two entirely different versions in a single game though regardless
Avatar
Avatar
louis
its pretty silly to support two entirely different versions in a single game though regardless
there were talks about deprecating 06 protocol and implement entirely new one
Avatar
heinrich5991 2024-08-19 20:45
not really just talks, it's going to happen
poggers2 1
20:46
currently 1 player in teeworlds 0.7-only servers, 6514 in 0.6 servers, 0 in 0.5 servers and 149 in ddper servers (edited)
Avatar
Avolicious 2024-08-19 20:46
So we drop 0.7?
20:46
Thanks god
Avatar
Thanks god
Avatar
heinrich5991 2024-08-19 20:47
hey @Ryozuki, can your tool give me statistical data on that?
20:47
*historical data
Avatar
GitHub BOT 2024-08-19 20:47
061f8d1 Add 3 funding for RUS by anatta - def-
Avatar
hmm its been years since i used itr
20:48
but maybe
Avatar
Avatar
heinrich5991
not really just talks, it's going to happen
heinrich5991 2024-08-19 20:50
I worked a bit on that, mastersrv support for quic
Avatar
Avatar
heinrich5991
I worked a bit on that, mastersrv support for quic
Avolicious 2024-08-19 20:52
Not sure if cloudflare is the way to go. I have recently deployed websockets & my connected clients drop after cloudflare deploys a new version of smth on their network
20:52
I mean it would be still nice to have quic.
Avatar
heinrich5991 2024-08-19 20:53
my work on that is unrelated to cloudflare. how does cloudflare enter the picture hre?
Avatar
Avolicious 2024-08-19 20:53
Using cloudflare as anti-ddos provider
20:53
they support quic
Avatar
heinrich5991 2024-08-19 20:53
ah, but they don't support webtransport yet
20:53
which would be needed for udp-like connections
Avatar
Avolicious 2024-08-19 20:53
You have the benefit of using the closest cloudflare entry + fastest route in their network
20:54
and their network is fast
Avatar
Avatar
heinrich5991
which would be needed for udp-like connections
Avolicious 2024-08-19 20:57
Yeah, its based on HTTP3 πŸ˜„ Actually websockets are out for cool kids
20:57
But Webtransport is fairly new, so cool kids have already adopted, but major players have to
20:58
But its pretty neat, I've tried it once (https://github.com/BiagioFesta/wtransport). The browser support is meh, but in general it works pretty neat
Avatar
Jupstar βœͺ 2024-08-19 20:59
based on quinn
20:59
which i use
20:59
😏
Avatar
Avolicious 2024-08-19 20:59
Yeah, because its based on HTTP3/QUIC πŸ˜„ (edited)
21:00
Avatar
Jupstar βœͺ 2024-08-19 21:00
that is what heinrich uses
Avatar
heinrich5991 2024-08-19 21:00
I tried that one
21:00
but the good thing about standards is that those libraries probably interoperate πŸ™‚
Avatar
Jupstar βœͺ 2024-08-19 21:00
yeah
Avatar
Avolicious 2024-08-19 21:00
Their api is slightly diff, no?
Avatar
Jupstar βœͺ 2024-08-19 21:01
i think they are not async, are they?
21:01
quinn is async. and maybe also more high-level
21:02
but i moved network stuff into a thread anyway
21:02
sys calls on windows are still a performance hit
Avatar
heinrich5991 2024-08-19 21:03
quiche is like quinn-proto
21:03
I'm currently trying to use quinn for the mastersrv integration
21:03
since the mastersrv is rust-only, I can actually use quinn instead of quinn-proto
Avatar
Jupstar βœͺ 2024-08-19 21:04
ah nice
21:04
how has your experience been?
Avatar
heinrich5991 2024-08-19 21:04
haven't progressed far enough
21:04
actually, maybe I can look at your code
21:04
how do you do cert creation and private key creation?
Avatar
Jupstar βœͺ 2024-08-19 21:05
do you mean for the server's network?
Avatar
heinrich5991 2024-08-19 21:06
the mastersrv wants to connect to a game server, it needs to present a private key for that, so that the game server knows it's the mastersrv connecting
Avatar
Jupstar βœͺ 2024-08-19 21:07
so you want the TLS code?
Avatar
heinrich5991 2024-08-19 21:07
for that I need a certificate for the private key in TLS, I think
21:07
yes
21:07
not sure if you have code like this. do you?
Avatar
Jupstar βœͺ 2024-08-19 21:08
i am unsure why exactly the master server presents a private key
Avatar
heinrich5991 2024-08-19 21:09
maybe I meant public key. I use it to identify the client. in my network model, all clients need to present a public key (that they know the private key of)
Avatar
Jupstar βœͺ 2024-08-19 21:09
yeah
21:09
that i needed for accounts anyway
21:10
currently all the TLS backend does it making sure the client cert is valid. a higher level component checks if the cert is actually signed by the account server or self signed
21:10
and based on that it decides if the user has an account
21:11
for the master server it could probably already handle it inside the connecting phase
21:11
or right after connecting, but before connected
Avatar
heinrich5991 2024-08-19 21:11
ye
Avatar
Jupstar βœͺ 2024-08-19 21:11
yeah i dont have anything for the master server, but i guess it shouldn't be too hard to add
Avatar
heinrich5991 2024-08-19 21:12
can you link me the code where you use a client cert with quinn?
21:12
well here i simply copy the cert into a game event
21:12
here i verify the cert
21:13
mh ignore the comment xD
21:16
don't use or read this code. Contribute to Jupeyy/dd-pg development by creating an account on GitHub.
Avatar
Avolicious 2024-08-19 21:16
Where should the cert be used?
21:16
So the client can verify if the server is the correct server?
Avatar
Avatar
Avolicious
So the client can verify if the server is the correct server?
Jupstar βœͺ 2024-08-19 21:17
that is job of the master server, but the client simply gets this information from the master server
21:17
since communication to the master server is already https, i guess there isn't really lot of security behind it. simply send the public key fingerprint
Avatar
Avolicious 2024-08-19 21:18
mhmmm
Avatar
Jupstar βœͺ 2024-08-19 21:18
(the game server sends it while registering)
Avatar
Avolicious 2024-08-19 21:18
So communities can have a root cert & sign their servers & each signed cert from a server is then being sent to the master srv?
21:18
so you can have basically root certs, intermediate and leafs
Avatar
Jupstar βœͺ 2024-08-19 21:18
i'd sent a cert per game server actually
21:18
no root certs
Avatar
Avolicious 2024-08-19 21:19
ah, I see
Avatar
heinrich5991 2024-08-19 21:19
no, every server has a single private key
21:19
yes @ what @Jupstar βœͺ said (edited)
Avatar
Jupstar βœͺ 2024-08-19 21:19
in my version it's also generated on the fly actually
Avatar
heinrich5991 2024-08-19 21:19
yep, same for me
Avatar
Avolicious 2024-08-19 21:19
Should it be permanent then?
21:19
Or everytime the server starts, it gets generated?
Avatar
Jupstar βœͺ 2024-08-19 21:19
i guess registering to master server takes longer
21:19
xD
Avatar
Avatar
Avolicious
Or everytime the server starts, it gets generated?
Jupstar βœͺ 2024-08-19 21:19
yes
21:19
from what i see that is fast enough
Avatar
heinrich5991 2024-08-19 21:20
could be improved in the future for saving favorites that move between IP addresses
Avatar
Avatar
Avolicious
So communities can have a root cert & sign their servers & each signed cert from a server is then being sent to the master srv?
heinrich5991 2024-08-19 21:20
I'd like to handle communities in the mastersrv by just letting them send a token. but I haven't implemented that yet, and I'm currently implementing quic
Avatar
Jupstar βœͺ 2024-08-19 21:21
yeah that sounds cool
21:21
maybe they could directly use the account system actually
21:22
@heinrich5991 i am really cursious about the network traffic for your quic version
Avatar
heinrich5991 2024-08-19 21:22
in what way?
Avatar
Jupstar βœͺ 2024-08-19 21:22
either u know smth i dont know, or you must also see a bit of overhead πŸ˜„
21:23
i already ack packets only once per second now, bcs the ack packets are insanely huge
21:23
and acking 25 packets per second is quite some traffic
Avatar
heinrich5991 2024-08-19 21:23
I have some TODOs for that
21:24
but "can't you just"β„’ send the acks together with the game traffic? (edited)
Avatar
Jupstar βœͺ 2024-08-19 21:24
i dunno, does quic allow that?
21:24
i havent seen smth like that in quinn at least
Avatar
heinrich5991 2024-08-19 21:25
quic itself allows for that
21:25
acks can be part of a bigger packet
Avatar
Jupstar βœͺ 2024-08-19 21:25
mh ok
Avatar
quic itself requires ack packets?
Avatar
Jupstar βœͺ 2024-08-19 21:25
for all packets yes
21:25
even DATAGRAMs
Avatar
Avatar
Tater
quic itself requires ack packets?
Avolicious 2024-08-19 21:26
yeah, they are part of the protocol
21:26
But you dont have to rely on them πŸ˜„
Avatar
so all packets are under a reliability layer?
21:26
or it just acks for fun?
Avatar
Jupstar βœͺ 2024-08-19 21:26
there are basically 3 modes
21:27
unreliable reliable unordered ordered and reliable (edited)
Avatar
Avatar
Tater
or it just acks for fun?
Jupstar βœͺ 2024-08-19 21:27
it acks all, to make sure that reliable packets are quicker resent
21:27
and messure packet loss etc.
21:27
at least that is what i read xd
Avatar
Avatar
Jupstar βœͺ
unreliable reliable unordered ordered and reliable (edited)
what is the difference between "reliable ordered" and "ordered and reliable"
Avatar
Jupstar βœͺ 2024-08-19 21:28
oh
21:28
it should say unordered
21:28
so 2 packets can came at once
21:28
and be handled at once
Avatar
ok yeah
Avatar
Jupstar βœͺ 2024-08-19 21:28
like separately
Avatar
that makes more sense
21:28
but order must have some latency overhead?
Avatar
Jupstar βœͺ 2024-08-19 21:29
order is basically TCP
Avatar
so we use mode 1/2? (edited)
Avatar
Jupstar βœͺ 2024-08-19 21:29
what is that?
Avatar
the ones you listed
Avatar
Jupstar βœͺ 2024-08-19 21:29
ah
21:29
yeah i use ordered for chat for example
Avatar
ah fair
Avatar
heinrich5991 2024-08-19 21:30
ddnet already uses reliable, ordered packets for chat etc.
Avatar
Jupstar βœͺ 2024-08-19 21:30
also even ordered packets can still be in different channels
21:30
so e.g. chat and kill msgs could be 2 channels
21:30
individually ordered
21:30
generally quic is really cool
Avatar
discord does not even ensure correct chat message order lol
Avatar
Jupstar βœͺ 2024-08-19 21:30
it abstracts away lot of stuff and makes it easy to use it that way we talk about it here
Avatar
yeah it sounds good
Avatar
Avatar
Tater
discord does not even ensure correct chat message order lol
Jupstar βœͺ 2024-08-19 21:31
i guess it simply doesnt scale well enough xD (edited)
Avatar
Avatar
Tater
discord does not even ensure correct chat message order lol
Avolicious 2024-08-19 21:31
but thats by design
Avatar
Avatar
Avolicious
but thats by design
probably true but I think it could at least re-order them on the client but that's a different conversation.
Avatar
Avatar
Tater
probably true but I think it could at least re-order them on the client but that's a different conversation.
Avolicious 2024-08-19 21:32
discord does discord things
21:32
they implement polls without adding permissions to manage it as a server
Avatar
Jupstar βœͺ 2024-08-19 21:32
i remember in skype you could change your system time and it send with that time and showed that timestamp on the other side xDDD
Avatar
heinrich5991 2024-08-19 21:33
skype was p2p
Avatar
Jupstar βœͺ 2024-08-19 21:33
we always trolled back when we were teenagers that we had bets etc.
Avatar
heinrich5991 2024-08-19 21:33
quite cool, actually
Avatar
Avatar
heinrich5991
skype was p2p
only calls no ?
Avatar
Jupstar βœͺ 2024-08-19 21:33
cool until ddos
21:33
😬
21:33
call.element.io still uses p2p afaik
Avatar
Avolicious 2024-08-19 21:34
skype had a concept called supernodes πŸ˜„
Avatar
Jupstar βœͺ 2024-08-19 21:34
good to hop into a call without an account
Avatar
Avatar
ReiTW
only calls no ?
heinrich5991 2024-08-19 21:34
nno, all AFAIK
Avatar
was cool being able to send html tags on chat, one of my favorite was to crash skype clients on windows when some people invited me on groups with 200+ people
21:35
(fun fact, was Pikotee who found this lol)
Avatar
when did they allow groups with 200 people?
Avatar
Avolicious 2024-08-19 21:35
2011?
Avatar
Avatar
Tater
when did they allow groups with 200 people?
no clue but it was on the old client, not the win10 one
21:36
long long time ago
Avatar
pretty sure I ran into group limits of like 50 when I was using it
21:36
idk
Avatar
Avatar
ReiTW
no clue but it was on the old client, not the win10 one
heinrich5991 2024-08-19 21:36
the newer client was a bog-standard electron app with client-server architecture
Avatar
Avatar
heinrich5991
the newer client was a bog-standard electron app with client-server architecture
was at this time I left skype for discord
Avatar
we had to kick people from my gaming clan because the skype group was full πŸ˜”
21:38
discord was such an improvement
21:38
actually we moved to slack for few months before discord
Avatar
lmao look at this, so old : https://youtu.be/EE5oP9G_n6s?t=21 Was highly used and was a teeworlds player who did it lol
21:38
"by Piko and MJavad"
Avatar
Jupstar βœͺ 2024-08-19 21:39
discord is sadly still the only well working chat where you can stream with more than 5fps without laggs. me & my friends currently use a private webrtc server, but webrtc is extremly network sensitive, if u want low latency
Avatar
electron sux
21:39
and discord since some years, they do shitty updates
Avatar
Avatar
Jupstar βœͺ
and acking 25 packets per second is quite some traffic
which direction is the 25 ack packets per second going?
Avatar
Avatar
Tater
which direction is the 25 ack packets per second going?
Jupstar βœͺ 2024-08-19 21:40
that was just an example, but lets say server sends snapshots
21:40
client acks them all
21:40
u can control the ack speed
21:40
but by default it would simply send 25 packets xD
Avatar
what about input and inputtiming packets. those are also very frequent?
Avatar
but still discord is a good thing to learn about, they had some huge challenges to solve lol
Avatar
Avatar
Tater
what about input and inputtiming packets. those are also very frequent?
Jupstar βœͺ 2024-08-19 21:40
yeah
21:40
same
21:40
server would ack them
21:41
currently i batch into 1 sec delay, that reduced network insanely
Avatar
Jupstar βœͺ 2024-08-19 21:41
i think it's not even that bad. chat etc. are not crucial to the game
21:41
if they are resent in a bad rate, so be it
Avatar
Avatar
Tater
what about input and inputtiming packets. those are also very frequent?
heinrich5991 2024-08-19 21:42
it'd make sense to include the acks with the input/snap packets, then they don't require much extra traffic. but I don't know if that's possible or how that works with quinn
21:42
(that's how the current ddnet network handles acks btw)
Avatar
Jupstar βœͺ 2024-08-19 21:42
yeah
Avatar
Avatar
heinrich5991
(that's how the current ddnet network handles acks btw)
you mean acks related to the network layer not the actual game logic? (edited)
Avatar
Jupstar βœͺ 2024-08-19 21:43
i still manually ack snaps and inputs btw. bcs: 1. snap/input diff 2. the connection RTT meassure is waaaay to inaccurate for gaming. the prediction timer suffered from it
21:44
(but i do include them into existing packets)
Avatar
Avatar
Jupstar βœͺ
i still manually ack snaps and inputs btw. bcs: 1. snap/input diff 2. the connection RTT meassure is waaaay to inaccurate for gaming. the prediction timer suffered from it
prediction timer relies on the servers calculation of time remaining I thought (edited)
21:45
not actual ping calculations
Avatar
Avatar
Tater
not actual ping calculations
Jupstar βœͺ 2024-08-19 21:46
i dunno how cpp version is doing it. but i thought it makes sense to try to rely on ping stats only, since packets are send in high frequence and quic has to ack everything. then i noticed the timing was off, and additionally acks are too much traffic -> i thought about doing it the legacy way xdd
Avatar
I think you need information from the server to know the timing of your packets, otherwise you are blind. but ping stats can still be incorporated in the final prediction amount
Avatar
Avatar
Tater
I think you need information from the server to know the timing of your packets, otherwise you are blind. but ping stats can still be incorporated in the final prediction amount
Jupstar βœͺ 2024-08-19 21:47
you know the ping and you know when snapshots arrived
21:47
that is good info πŸ˜„
21:48
it's not possible to know the real half RTT anyway
Avatar
is that enough to know the one way delay from client to server?
21:48
if you just divide RTT/2 I don't think it's as good
Avatar
Avatar
Tater
is that enough to know the one way delay from client to server?
Jupstar βœͺ 2024-08-19 21:48
you cannot meassure it
Avatar
cpp version does
Avatar
Jupstar βœͺ 2024-08-19 21:48
u'd need to be faster than light
21:48
to know
Avatar
that's not really important
21:49
you just need to know it relative to the gametick on the server
Avatar
Jupstar βœͺ 2024-08-19 21:49
let's say you have ping 20 15 to server, 5 back even if u know the 5, your input still takes 15 so in the end you have 20
Avatar
the server will just tell the client "you're a little bit early" "you're a little bit late" and the client adjusts blindly on this info in cpp
Avatar
Avatar
Tater
the server will just tell the client "you're a little bit early" "you're a little bit late" and the client adjusts blindly on this info in cpp
Jupstar βœͺ 2024-08-19 21:50
yes, but the client knows this too, bcs it knows if the snapshot arrived too early πŸ˜„ if the sending to the server is unstable that can be seen in the ping
21:50
like if snaps always arrive perfect but ping is janky
Avatar
snapshot is server -> client tho. it's basically a different connection with different stability
21:51
you can have health in only 1 direction
Avatar
Jupstar βœͺ 2024-08-19 21:51
what however is nice in the rust version is. that it respects overhead of the server's calculations, i dunno if cpp version is doing that too like creating snapshots for 64 tees can cost quite a bit of time
Avatar
input timing messages allow the client to know the health of client->server even if those input timing messages are send on a bad connection
Avatar
Avatar
Tater
input timing messages allow the client to know the health of client->server even if those input timing messages are send on a bad connection
Jupstar βœͺ 2024-08-19 21:52
but then you must sent input at a specific point in time
21:52
i can sent input whenever i want
21:52
well you can add the time til next tick
21:53
the increases input packet
Avatar
Avatar
Jupstar βœͺ
i can sent input whenever i want
idk in what way this could be different tho, youd still want to send input as soon as possible in order to keep a low buffer margin to improve gameplay?
Avatar
heinrich5991 2024-08-19 21:55
you can only measure the sum of latency from server to client and client to server
21:55
@Jupstar βœͺ already said that
Avatar
Avatar
Tater
idk in what way this could be different tho, youd still want to send input as soon as possible in order to keep a low buffer margin to improve gameplay?
Jupstar βœͺ 2024-08-19 21:55
the buffer margin is indeed smaller and automatic
21:55
i dunno, if u draw it for me on paint, maybe i understand your point xd
Avatar
Avatar
heinrich5991
you can only measure the sum of latency from server to client and client to server
actual latency is not important, only "timing"
Avatar
heinrich5991 2024-08-19 21:56
what's timing? jitter?
21:57
ah, the server tells the client whether the input packet needs to be sent a bit earlier or a bit later?
21:57
to hit the sweet spot?
Avatar
client sends an input packet for tick 25, it should arrive at the server when the server is on tick 24 so it can be proccessed in the server's physics. but the client is basically "guessing" the timing of when the packet will arrive at the server and adjusting it's prediction time up/down in order to keep the input arriving with as little time as possible on the server. (edited)
21:59
so any time the packet arrives at the server the server will respond with how close it got to the "sweet spot" as you mention
21:59
the actually RTT doesn't really matter here and isn't part of the calculation
Avatar
Jupstar βœͺ 2024-08-19 21:59
so in your version the client sends input in a fixed rate?
22:00
or does it include some kind of "time until next tick" info
22:00
oh new day already
Avatar
the client does not include that info only the server
Avatar
Jupstar βœͺ 2024-08-19 22:00
but does it send in a fixed rate?
22:00
how else can the server guess if the timing was off
Avatar
the client sends the "intendedtick" along with the input
22:01
so the server looks at its own gametick and references the input's intended tick
Avatar
Jupstar βœͺ 2024-08-19 22:01
sure but how does the server know the client was 2ms too late
Avatar
the server knows it's sub tick timing
Avatar
Jupstar βœͺ 2024-08-19 22:01
so the client sends in a fixed rate?
Avatar
no not really
22:01
it sends whenever it feels like it
Avatar
Jupstar βœͺ 2024-08-19 22:01
but when the client sends 20 inputs for a single tick
22:01
all were off or what
Avatar
heinrich5991 2024-08-19 22:01
the client basically sends: this packet is supposed to ariive at "12:00:00.000"
Avatar
Jupstar βœͺ 2024-08-19 22:02
so a timestamp?
22:02
the server sends back the timestamp then?
Avatar
heinrich5991 2024-08-19 22:02
and then the server says your packet that was supposed to arive at "12:00:00.000" actually arrived 0.120s late (edited)
Avatar
Jupstar βœͺ 2024-08-19 22:02
your input was for tick 25, which is in 5ms
22:02
this?
Avatar
it says "input for tick 25 was 5ms early"
Avatar
heinrich5991 2024-08-19 22:03
the "tick" is the timestamp here
22:03
which client and server share
Avatar
Jupstar βœͺ 2024-08-19 22:03
yeah, and it sends it back in the snapshot packet i guess?
Avatar
heinrich5991 2024-08-19 22:03
I think it's a separate packet
Avatar
not currently
Avatar
heinrich5991 2024-08-19 22:03
NETMSG_INPUTTIMING
22:03
but sent in the same packet as the snap
Avatar
it could be in the snap if bandwidth was a concern but it's not that big
22:03
oh maybe it is
22:03
does it flush?
22:04
ok it doesnt
22:04
heinrich is correct
Avatar
heinrich5991 2024-08-19 22:04
I think only connection establishment stuff, NETMSG_INPUT and NETMSG_SNAP flush
Avatar
Jupstar βœͺ 2024-08-19 22:05
i'd still say this information is already in the ping + snapshots packet timing
Avatar
heinrich5991 2024-08-19 22:05
anyway, I'm off to sleep. good night πŸ™‚
Avatar
Jupstar βœͺ 2024-08-19 22:05
gn8
Avatar
Jupstar βœͺ 2024-08-19 22:07
but manually acking has one huge advantage, it includes the overhead of the network code (on server & client) even if it might be small, CPUs ofc also generate a bit of jitter, and this must be handled by a margin for example. (edited)
22:08
(it must be handled by a margin, if it wouldnt be so accurate as with normal ack'ing ^^)
Avatar
Avatar
Jupstar βœͺ
but manually acking has one huge advantage, it includes the overhead of the network code (on server & client) even if it might be small, CPUs ofc also generate a bit of jitter, and this must be handled by a margin for example. (edited)
isn't manually acking already what happens?
Avatar
Avatar
Tater
isn't manually acking already what happens?
Jupstar βœͺ 2024-08-19 22:08
my old version used ping + snapshot timing only
Avatar
ah you mean dd pg
Avatar
Jupstar βœͺ 2024-08-19 22:08
yeah πŸ˜„
22:15
@Tater does your issue about the prediction code also help with ping jitter, or was that unrelated? like that it resets the auto prediction margin all the time
22:17
you would need to spike to 800+ ms for long enough that the m_PredictedTime smoothtime reaches a high enough value to trigger the prediction reset. which maybe takes 0.2-0.4s of input timing messages from the server.
22:18
it can certainly happen but only for super major lag spikes, not really normal jitter
22:19
the other issue with csmoothtime being wrong does have a huge impact on ping jitter
22:19
csmoothtime should really be re-written because it's not very good at it's job but if you patch that one issue it becomes kinda ok
Avatar
Jupstar βœͺ 2024-08-19 22:20
mh ok
22:20
i thought the reset was related to an early packet arriving
22:21
vs slow ones
Avatar
another issue with csmoothtime is that the speed it adjusts your prediction amount is proportional to your ping. so if you have 500ms it literally adjust like 20x faster than if you have 30ms. so people with high latency will experience small jitters much worse
Avatar
Avatar
Jupstar βœͺ
i thought the reset was related to an early packet arriving
reset can't really happen from a single packet, you need a real high ping connection
22:22
well
Avatar
Avatar
Tater
another issue with csmoothtime is that the speed it adjusts your prediction amount is proportional to your ping. so if you have 500ms it literally adjust like 20x faster than if you have 30ms. so people with high latency will experience small jitters much worse
Jupstar βœͺ 2024-08-19 22:22
oh yeah
Avatar
actually maybe it can happen for a single packet if the server sends you one that says you're like 20000ms off? lol
Avatar
Jupstar βœͺ 2024-08-19 22:23
i swear, a good prediction timer is harder than a vulkan backend
22:23
not joking xD
22:23
i struggle so much with it
22:23
trml did a lot of good work to make the cpp version much better
Avatar
Jupstar βœͺ 2024-08-19 22:24
how do you react to laggs how fast should you consider a connection stable again how far back should your ping/timer data reach back to give a good automatic prediction margin how to deal with packet loss and so on
22:24
so many factors
Avatar
Avatar
Jupstar βœͺ
i swear, a good prediction timer is harder than a vulkan backend
have you found any articles describing how to implement this system? I know that other games also use client prediction in the same way as ddnet but I haven't found any that explain their methods
22:25
only that overwatch GDC talk explains it a little bit but they do not talk about the deep specifics
Avatar
Jupstar βœͺ 2024-08-19 22:26
nope, i couldnt even find math/statistics that is directly connected to it. i only find things for physics that are similar to a ping jitter from the curves
Avatar
Jupstar βœͺ 2024-08-19 22:27
i sometimes write test cases with specific start conditions and jitter and see how it evolves xD
22:28
for the prediction timer, which is basically csmoothtime in the cpp version i guess
22:30
cpp version is basically this gif
22:30
except the fish is dropping an input message on the server
Avatar
Jupstar βœͺ 2024-08-19 22:31
my version still suffers insanly from when the lag initially happens, once it's stable, it's kinda ok
22:31
on the right you see the ping jitter etc.
Avatar
I didn't see any insane suffering lol (edited)
Avatar
Jupstar βœͺ 2024-08-19 22:32
ok i show you, don't laugh xd
Avatar
cpp version also has insane suffering so I don't think it can be much worse
Avatar
Jupstar βœͺ 2024-08-19 22:33
Avatar
if you introduce delay instantly there's physically no way you can smoothly adjust without misprediction
Avatar
Avatar
Tater
cpp version also has insane suffering so I don't think it can be much worse
Jupstar βœͺ 2024-08-19 22:33
it is
22:34
i still struggle to find a way to make the lag not too impactful
22:34
but if this would be ddos, rip
Avatar
have you tested this also on cpp?
22:34
it looks similar tbh
Avatar
Jupstar βœͺ 2024-08-19 22:34
it cannot deal with it without your issue being fixed xD
Avatar
Jupstar βœͺ 2024-08-19 22:34
but yeah it adjust to the lag faster, but you cannot really play well with the lag
22:35
mine adjust extremly bad, but once it's adjusted it's playable
Avatar
idk I was waiting on trml to give me his ancient wisdom on what "prediction time reset" does before I delete it
22:36
I guess we can just increase MaxLatencyTicks() to 3s to fix high ping but the predicton time reset can still cause issues (edited)
Avatar
Jupstar βœͺ 2024-08-19 22:37
ok gotta head out, else i die by sleep loss xd
22:37
night
Avatar
ok gn
Avatar
gn big boys
Avatar
I'm not going to sleep yet lol. it's only 5pm for me
Exported 694 message(s)
Timezone: UTC+0