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-06-03 00:00:00Z and 2024-06-04 00:00:00Z
Avatar
chillerdragon BOT 2024-06-03 00:15:00Z
xxxxD
Replying to egyt why do you have a separate CTF capture sound for Polish 😭
00:15
Idk what en and pl stands for but I don’t think it’s languages. Both sounds are used to differentiate which flag was captured
Avatar
not which but which time
00:18
sounds differ if you grab flag from stand and from died player
Avatar
chillerdragon BOT 2024-06-03 00:19:42Z
The sounds he sent is capture not grab
00:19
Oh wait no grab
00:19
Xd
00:20
But the same exists for capture too
00:20
I can’t even guess what en and pl stand for
Avatar
Avatar
heinrich5991
@Learath2 does this look similar to what we need for bans? https://debezium.io/
I didn't have that great experience trying to use Debezium to mirror our ranks from MySQL (but could have been a mistake from my side), the setup seemed complex and finicky too
Avatar
Avatar
heinrich5991
anticheat is a losing game
true, but it can be used as a compromise for a smoother client experience
Avatar
Avatar
louis
true, but it can be used as a compromise for a smoother client experience
doesn't sound worth the limited developer and reviewer bandwidth the project has
Avatar
anticheat is not always a losing game, it depends on the game type
02:03
if you never trust the client then the cheats are limited by their ability to play the game legitimately better than a human, which is sometimes not possible depending on your game.
Avatar
Requires #8432 Does 2 main things. 1. If the client has enough prediction margin that it can send send duplicated inputs before the original input reaches the "simulation tick" on the server then it will try to send all the inputs that it sent in the past which can get there fast enough. For a better explanation please see this video at the time stamp, it has very nice animated visuals. https://youtu.be/W3aieHjyNvw?si=WQhYO44zpI4OowcC&t=1891 In our case the physics code doe...
Avatar
^ the end of lag :)
03:39
(in solo, until 8372) (edited)
Avatar
Avatar
Tater
^ the end of lag :)
:0
Avatar
Avatar
Tater
(in solo, until 8372) (edited)
😃
Avatar
ws-client BOT 2024-06-03 06:33:27Z
DDraceNetwork, a free cooperative platformer game. Contribute to ddnet/ddnet development by creating an account on GitHub.
06:33
<ChillerDragon> not sure if that is intended i really don't understand the huffman code but even if it is intended it is a bit weird
06:35
DDraceNetwork, a free cooperative platformer game. Contribute to ddnet/ddnet development by creating an account on GitHub.
06:35
<ChillerDragon> so it flips to zero in the last iteration
06:35
<ChillerDragon> thats the eofSymbol so maybe its intended but still :D
Avatar
Where does the init table come from?
06:45
I thought huffman was supposed calculate the optimal frequency table for any given data then store that frequency table with the data so it can be decompressed with the optimal table, but it seems like we just use the same one for all data as far as I can tell.
06:45
so someone must have created it from some TW packet data?
06:45
or something
06:48
omg of course it's 15 years old .-. (edited)
Avatar
A browser interface to the Rust compiler to experiment with the language
07:02
unless this frequency table is some sort of standard made by someone else it's possible we are leaving free bandwidth savings on the table by either regenerating it or sending the huffman tree along with the packet, but I think our packets are too small for that
Avatar
Avatar
Tater
unless this frequency table is some sort of standard made by someone else it's possible we are leaving free bandwidth savings on the table by either regenerating it or sending the huffman tree along with the packet, but I think our packets are too small for that
well aparently not free if u need to sync such a table with the client 😄
07:06
btw @Tater ur pr sends the inputs as individual packets right?
Avatar
it only does 1 flush which means they get compressed together
07:06
but they are processed individually yes
Avatar
ws-client BOT 2024-06-03 07:06:58Z
<ChillerDragon> @Tater the table is pre calculated and hardcodet into the client and server
Avatar
i see, maybe a new network packet would be nice where it takes the binary diff of the inputs.. since most bytes are mostly similar 😄
Avatar
ok but it's 15 years old and highly likely does not match the current distributation of data
Avatar
ws-client BOT 2024-06-03 07:07:19Z
<ChillerDragon> someone probably ran the numbers of which format the tw trafic has
Avatar
also there's no comments in the original commit so we have no idea the quality of it's generation even 15 years ago (edited)
Avatar
ws-client BOT 2024-06-03 07:07:46Z
<ChillerDragon> i dont think that much changed in the last 15 years
07:07
<ChillerDragon> idk about 15 but the last 10 years for sure it barley changed
Avatar
simply changing which type of packet gets sent more often would significantly change the frequency table
Avatar
ws-client BOT 2024-06-03 07:08:24Z
<ChillerDragon> its mostly snap thats relevant i would say
Avatar
ws-client BOT 2024-06-03 07:08:30Z
<ChillerDragon> always has been i guess
Avatar
but still we have no idea how much data was sampled to create it in the first place
07:08
or how
Avatar
ws-client BOT 2024-06-03 07:08:48Z
<ChillerDragon> yea
Avatar
Avatar
Jupstar ✪
i see, maybe a new network packet would be nice where it takes the binary diff of the inputs.. since most bytes are mostly similar 😄
could you explain more?
Avatar
ws-client BOT 2024-06-03 07:09:22Z
<ChillerDragon> omg i dont wanna debug the fakin huffman code -.- im procrastinating so hard
Avatar
I think compressing the inputs more would be good for sure
Avatar
Avatar
Tater
could you explain more?
the oldest input packet is the base and all new inputs are binary patches of that one
07:10
so all other input packets are basically only the difference between the inputs
Avatar
the client does that already sorta
07:10
or you mean something more special?
Avatar
but the client uses a input packet that is ack'd by the server or not?
07:10
with 300 ping that is pretty old
Avatar
I'm not sure storing binary patches for a 120byte struct is practical
Avatar
Avatar
Tater
I'm not sure storing binary patches for a 120byte struct is practical
why not
Avatar
you need pointer to location of each patch?
07:11
I guess it doesn't need to be 4 byte pointer
07:12
actually I have no idea how binary diff algorithm works tbh
07:12
maybe it's more clever
Avatar
let say u have two vec<u8> then it simply puts a 0 where the binary diff is equal else it puts a diff
07:13
very simplified (edited)
07:13
and then compressions can normally very well compress these 0's
Avatar
the client and server will bundle I think 1400bytes of data to pass to the huffman which is about ~10 inputs. I'm not sure to what extend the huffman algorithm will naturally perform something similar to your idea by nature of how it works, it would probably be quite good without the fixed frequency table but now I'm not sure it's even doing anything anymore
Avatar
Avatar
Jupstar ✪
and then compressions can normally very well compress these 0's
can it troll
Avatar
Avatar
zhn
can it troll
🚂
Avatar
Avatar
Tater
the client and server will bundle I think 1400bytes of data to pass to the huffman which is about ~10 inputs. I'm not sure to what extend the huffman algorithm will naturally perform something similar to your idea by nature of how it works, it would probably be quite good without the fixed frequency table but now I'm not sure it's even doing anything anymore
mh well i can only tell you compression algorithms as good as they are, are also not perfect.. for teeworlds snapshots taking binary diffs with zstd outperformed any compression i tested easily. The only disadvantage of binary patching is that the base "file" can get old (e.g. by a higher ping)
Avatar
well it should always arrive in the same "cluster" of inputs so you start the diff from the start with every packet (edited)
Avatar
Avatar
Jupstar ✪
mh well i can only tell you compression algorithms as good as they are, are also not perfect.. for teeworlds snapshots taking binary diffs with zstd outperformed any compression i tested easily. The only disadvantage of binary patching is that the base "file" can get old (e.g. by a higher ping)
yeah probably because our huffman table is trash lol
Avatar
but how do u want to create a general purpose huffman table for snapshots, inputs etc.
07:22
or do u want to use different tables per purpose?
Avatar
I don't think there's a correct answer
07:23
but remember that having a fixed table means it changes the network protocol anytime we update it (edited)
07:24
I mean a seperate table for every type of message would be very good tbh but I think the network system smushes all the messages together regardless of type
07:24
which might be better anyway since many messages are much less than the 1400byte size
Avatar
i think heinrich did tests in that direction
Avatar
also why do we use 1400bytes
07:25
seems small
07:25
UDP can be 64kb I think
Avatar
cuz its data mtu
Avatar
a UDP frame usually isnt much bigger than 1400 bytes if u think cross plattform afaik
Avatar
Avatar
zhn
cuz its data mtu
here we have an expert
07:27
epyc
07:27
i can say anything about net until Devinci comes and tells what exactly is wrong kekw
07:28
bruh this uni sucks why do i need to wait like 2 years just to start mess up with networks and its internals
Avatar
So, this is the list of strings I couldn't translate, some because I don't know where they occure, and some because I don't know technical terms behind them (paused) All combined Folder Link Follow Game paused Grabs Moved ingame Replace video Searching [Graphics error] An error during command recording occurred. Try to update your GPU drivers. (edited)
Avatar
last ones are pretty verbose
Avatar
I never heard "command rendering", that's why I asked about them too (edited)
Avatar
drawing operations and memory transfers are called render commands at least in vulkan
07:38
framebuffer is buffer of frames, practically transliteration is used
07:39
of frame*
Avatar
"did not understand anything, but very interesting"
Avatar
Avatar
Tater
if you never trust the client then the cheats are limited by their ability to play the game legitimately better than a human, which is sometimes not possible depending on your game.
"anticheat" as was used in the discussion was explicitly about trusting the client and then trying apply heuristics/detect cheats on top of it
Avatar
yeah that's fair
Avatar
I'll be editing this message when I find an appropriate translation for a certain string
Replying to egyt So, this is the list of strings I couldn't translate, some because I don…
08:37
And, btw, the progress is 95% (581 out of 607 strings translated), so the PR is not really that far away!
Avatar
Avatar
Jupstar ✪
mh well i can only tell you compression algorithms as good as they are, are also not perfect.. for teeworlds snapshots taking binary diffs with zstd outperformed any compression i tested easily. The only disadvantage of binary patching is that the base "file" can get old (e.g. by a higher ping)
actually double checking the inputs are only like 40bytes which is a lot less than I thought
Avatar
Avatar
Tater
actually double checking the inputs are only like 40bytes which is a lot less than I thought
and how many packets will be deployed when having 300ms prediction margin?
Avatar
plus 3 ints
Avatar
hi
Avatar
Avatar
Jupstar ✪
and how many packets will be deployed when having 300ms prediction margin?
300/20ms = 15 inputs, so ((40+4+4+4)*15)/1400 = 0.55 packets (at most, non-unique inputs are skipped) (edited)
08:44
probably a bit more with the overhead from message struct but idk how big that is
08:52
Hm, for some reason "Time limit" is not translated, while "Score limit" is
Avatar
interesting
08:54
maybe it’s worth doing a quick regex search to find which string literals are not translated, and then determine if they should be translated
08:54
not a catch-all but probably still worthwhile
Avatar
Avatar
Jupstar ✪
i see, maybe a new network packet would be nice where it takes the binary diff of the inputs.. since most bytes are mostly similar 😄
not sure if someone already answered, but this is exactly what is done already in snap deltas ^^
Avatar
Avatar
egyt
Hm, for some reason "Time limit" is not translated, while "Score limit" is
There probably is no reason, just an oversight
Avatar
Haha, by remaking the translation I found so many bugs...
Avatar
yes, thanks for actually caring about a good translation! 🙂
Avatar
Avatar
egyt
Click to see attachment 🖼️
Looks like there are two time limit strings, did you also translate the other one or does it not work for some reason? For example in german.txt: Time limit == Zeitlimit Time limit: %d min == Zeitlimit: %d min
Avatar
I translated both Time limit == Обмеження по часу Time limit: %d min ==Обмеження по часу: %dхв (edited)
10:57
This is the list of strings I haven't translated yet, btw 😏 Need some help 🥺 (edited)
Replying to egyt So, this is the list of strings I couldn't translate, some because I don…
Avatar
egyt: can you mark the strings that you don't know where they appear?
11:00
I can figure out where they appear
Avatar
Avatar
Patiga
not sure if someone already answered, but this is exactly what is done already in snap deltas ^^
of multiple snaps?
Avatar
I think it rarely ever sends an actual full snap, and typically just deltas, which only include items that change, and for those items the binary diff
11:07
yea the server diffs multiple snaps to create efficient updates
Avatar
mh i see, but i think u dont even need to do the items part zstd + custom dict performs just as good if not even better
Avatar
All of those mentioned in my list Would be nice if you could send screenshots of GUI too (edited)
Replying to @heinrich5991 egyt: can you mark the strings that you don't know where they appear?
Avatar
Avatar
Patiga
yea the server diffs multiple snaps to create efficient updates
that confuses me xD
11:08
it diffs multiple snaps for a single snap or it sends previous snaps to create a snapshot chain?
Avatar
well the item part helps because most items don't need to be updated coz they stay the same
Avatar
Avatar
Jupstar ✪
it diffs multiple snaps for a single snap or it sends previous snaps to create a snapshot chain?
Server sends only the changes
Avatar
well thats why it should help
Avatar
as snap delta
Avatar
in reality ofc you might find that this optimization doesn't help
Avatar
Avatar
fokkonaut
as snap delta
yes but i don't see how that makes the binary diff better
Avatar
well maybe it does, but i could not observe it 😄 (edited)
11:10
@Patiga what i wonder tho is if the snapshot packet is used to unpack old snapshots
Avatar
Avatar
Jupstar ✪
it diffs multiple snaps for a single snap or it sends previous snaps to create a snapshot chain?
it relies on snapshots you received earlier, not ones in the future
Avatar
yes
11:10
but in the input case of tater it's about actually sending old inputs
11:10
with high prediction margin they still come in before the tick that handles these inputs is used
11:11
so you basically have a higher success rate when packet drop
Avatar
I'm confused about your usage of "unpack"
Avatar
u basically have a chain of inputs until the current one
11:12
well it sounded a bit like snapshots are used similary like the input concept here 😄
11:12
but i guess it just sends the current snapshot
Avatar
iirc, input isn't in the snapshot
Avatar
Avatar
Patiga
not sure if someone already answered, but this is exactly what is done already in snap deltas ^^
well i think we just talk past each other xD
Avatar
yea seems likely 😅
Avatar
like what i want is: binary patch the input chain:
  • very old input
  • old input
  • input old input can be binary diff of the very old one
current input of old input*
(edited)
11:14
they are directly send in the same network packet anyway
11:14
if the very old input is a binary diff smth like it's done with snapshots is ofc possible yeah
11:14
basically my optimization is in first place unrelated to any binary diff of a previous packet
11:15
just so u can send a lot of inputs in a single packet
Avatar
Avatar
Jupstar ✪
well i think we just talk past each other xD
ah right, I jumped into the discussion at the wrong time, with a wrong thing in mind xd
11:16
sounds fun though :)
Avatar
While I can guess where they appear, I can't be sure, as it happened with yesterday stuff
Replying to egyt All of those mentioned in my list
Avatar
I had an interesting idea to improve performance in rendering on at least some maps, which is already tested and proven to be useful, is anyone interested? maybe @Jupstar ✪
Avatar
"NOT CONNECTED"
displayed in rcon while not connected to a server
12:04
"Trying to determine UDP connectivity…"
displayed in the connecting screen when the server does not respond, but testing the internet connection hasn't finished yet
Avatar
Okay, 24 left
Avatar
"Loading commands…"
displayed in rcon while not all command descriptions have been downloaded from the server yet
12:11
"Personal best:"
best race time of the current map of the current player
"Server best:"
best race time of the current map on the server
12:13
"The audio device couldn't be initialised."
this one looks a bit misleading. it just means "couldn't initialize the sound system, the client will not be able to play sounds"
12:14
"The server is running a non-standard tuning on a pure game type."
displayed when the server admin changed the server source code for a vanilla gametype (DM, CTF, TDM) and changed tunings (physic parameters, like gravity) there
Avatar
Yet another bug? ❤️
Replying to @heinrich5991
"The audio device couldn't be initialised." […]
Avatar
"Sound error"
this is just the title of the message box of the aforementioned audio initialization error
Avatar
Avatar
egyt
Yet another bug? ❤️
sure
Avatar
Avatar
AssassinTee
I had an interesting idea to improve performance in rendering on at least some maps, which is already tested and proven to be useful, is anyone interested? maybe @Jupstar ✪
you can share ur idea 😄
Avatar
"Add"
opposite of the "Remove" button you already translated, used for the adding vote options in the vote option menu
12:19
"Try again"
shown in the "incorrect password" dialog that contains a field for the password, clicking "try again" will use the password in the field for connecting to the server again
Avatar
Avatar
Jupstar ✪
you can share ur idea 😄
So, In a map I am working on, I have a lot of quads, about 8000 distributed in 50 groups. For context, I would be currently on r4 on the list with the most quads per map on ddnet, if my map would be there, anyway. I noticed, that a snow Strom, which was over 500 fields away from the spawn region, greatly dropped fps beside no quad of this layer being visible or in render distance. I improved the FPS by adding clip regions on every quadlayer, meaning I had to put every quad into it's own group and add a clipping region to it, because layers don't support clip regions. This causes the renderer to skip the group, if it's region is out of bounds, instead of checking EVERY QUAD if it needs rendering. This improved, in my special case, the rendering up to a factor of 10 (from 500 fps to 5000) (machine one), (from 200 fps to 990 (fps cap!))(machine 2) My idea: Add, when loading a map, a virtual clip region to a quad layer. This improves FPS everywhere outside of the clip and if you have multiple quad layers without overlap, it'll improve overall fps. How to do this? Check every corner of a quad in a layer, min-max x/y for to generate a clip region, you only need to do this once, when loading the map You'll need to add possible envelope offsets, which is easy, the maximum/minimum value has to be a point in the envelope (except when rotating) TODO para X, Y, can be considered and recalculated, definately possible, para 0/0 can be skipped Also, you could pre-calculate this region starting at a minimum quad count, which still needs to be found (edited)
Avatar
Avatar
AssassinTee
So, In a map I am working on, I have a lot of quads, about 8000 distributed in 50 groups. For context, I would be currently on r4 on the list with the most quads per map on ddnet, if my map would be there, anyway. I noticed, that a snow Strom, which was over 500 fields away from the spawn region, greatly dropped fps beside no quad of this layer being visible or in render distance. I improved the FPS by adding clip regions on every quadlayer, meaning I had to put every quad into it's own group and add a clipping region to it, because layers don't support clip regions. This causes the renderer to skip the group, if it's region is out of bounds, instead of checking EVERY QUAD if it needs rendering. This improved, in my special case, the rendering up to a factor of 10 (from 500 fps to 5000) (machine one), (from 200 fps to 990 (fps cap!))(machine 2) My idea: Add, when loading a map, a virtual clip region to a quad layer. This improves FPS everywhere outside of the clip and if you have multiple quad layers without overlap, it'll improve overall fps. How to do this? Check every corner of a quad in a layer, min-max x/y for to generate a clip region, you only need to do this once, when loading the map You'll need to add possible envelope offsets, which is easy, the maximum/minimum value has to be a point in the envelope (except when rotating) TODO para X, Y, can be considered and recalculated, definately possible, para 0/0 can be skipped Also, you could pre-calculate this region starting at a minimum quad count, which still needs to be found (edited)
mh i see, sounds pretty complicated to do it layer wise with all these side effects of animations. But that gave me a different idea. Couldn't you use the group's clip properties to completely skip that group? would be manual work which sucks, but would be safer to not imeplement it wrong
Avatar
Here an extra cherry: If this is implemented, you could split a quadlayer into multiple with their own regions, further improving the fps
Avatar
Avatar
Jupstar ✪
mh i see, sounds pretty complicated to do it layer wise with all these side effects of animations. But that gave me a different idea. Couldn't you use the group's clip properties to completely skip that group? would be manual work which sucks, but would be safer to not imeplement it wrong
This is what I wrote above
Avatar
Avatar
AssassinTee
This is what I wrote above
and that's not enough or what?
Avatar
@Jupstar ✪ Quads don't render outside the camera's view right? So regardless of clipping being off or on, this shouldn't affect performance if outside the camera's view, right?
Avatar
u wrote 5000 fps
Avatar
how can I create a fake bun on the server using the code?
Avatar
This is enough, yes, the idea is to generalize this in order to improve map rendering in general?
Avatar
Avatar
Cellegen
@Jupstar ✪ Quads don't render outside the camera's view right? So regardless of clipping being off or on, this shouldn't affect performance if outside the camera's view, right?
it does, since it still has to check if the quad is inside the cameras view
yes 1
Avatar
justatest oh, then it's a miscalculation in performance
Avatar
you can get a performance gain, by skipping a layer redering, because of the clip region, instead of checking every item in the layer
Avatar
Avatar
Jupstar ✪
it does, since it still has to check if the quad is inside the cameras view
doesn't it cache all of the quads that are inside the view and check those only? Or better yet, check those only which are the closest within the boundary of the camera's view? (edited)
Avatar
no, because of animations
Avatar
Avatar
AssassinTee
This is enough, yes, the idea is to generalize this in order to improve map rendering in general?
yeah it's not trivial.. u also need to respect the quads rotation etc. would be the question how well the estimation works in worst case, e.g. if you actually are where most quads are rendered
12:44
@AssassinTee u do it for rain animations?
Avatar
Avatar
AssassinTee
you can get a performance gain, by skipping a layer redering, because of the clip region, instead of checking every item in the layer
It needs correction on what quad can and cannot be rendered
Avatar
rain, snow, waterfalls, bells, no-animations-at-all
Avatar
i'd rather question why u need many quads for those 😄
12:45
do u need highly accurate rain drops xDD
Avatar
I rather question, why do we need to check every single quad if it's outside the camera or not xd
Avatar
brings me back to my initial: on ddnet are already maps, with more quads
Avatar
Avatar
Cellegen
I rather question, why do we need to check every single quad if it's outside the camera or not xd
This is where I agree
Avatar
Avatar
AssassinTee
brings me back to my initial: on ddnet are already maps, with more quads
can u name one
12:45
i want to look
Avatar
There are many more efficient ways to look at this problem tho
Avatar
Avatar
Jupstar ✪
can u name one
mud, Victory 2, I can name more @Patiga had a list
Avatar
Avatar
Cellegen
I rather question, why do we need to check every single quad if it's outside the camera or not xd
the question is not about that there isnt smth better, more about complexity
Avatar
Position based detection: based off of all quads' coordinates and the camera's front end (top left position) and back end (bottom right position), which quads are inside that position
12:47
if those quads' positions are inside that position, those can be rendered immediately.
Avatar
Avatar
Patiga
@Jupstar ✪ "Mud" appears to be a good map if you want an extreme amount of quads ^^
this looks way worse then what I did
Avatar
Avatar
Cellegen
if those quads' positions are inside that position, those can be rendered immediately.
With this method, only the quads' positions need to be cached and no need for direct comparision with an object colliding with the camera
Avatar
Avatar
Jupstar ✪
the question is not about that there isnt smth better, more about complexity
I agree, that having all things covered is complex, but we can still improve the easy cases: no animation, para 100/100, -> virtual clip
Avatar
Count in the para multipliers, and it's done
12:48
Is my method any wrong by chance? 😄
Avatar
Avatar
Cellegen
Is my method any wrong by chance? 😄
yes, you need to check the corners
12:49
and points in between
Avatar
the easiest approximation for quads is a circle around it, even if it rotates the circle stays the same
Avatar
would it be more performance heavy, than checking the entire quad object directly?
Avatar
additionally distance checks of circles + points are the cheapest operation
Avatar
Just caching the quads' positions will make a huge performance difference, as long as there is no other way for a quad to move.
Avatar
Avatar
Cellegen
would it be more performance heavy, than checking the entire quad object directly?
you'd still need to check every quad, instead of just having one check for ALL quads
Avatar
I see, so in that case, if the quads move by animation, then those need to update the cache
12:50
justatest
Avatar
Avatar
AssassinTee
you'd still need to check every quad, instead of just having one check for ALL quads
Thats not how caching should work but ok
12:51
if the position is stable, then it should be done like that
Avatar
and then the player moves, how do you find which quads to render?
Avatar
But now I doubt my method due to animations changing positions of Quads
12:52
Can you do signalling for objects?
12:53
stupid question, but worth to ask
12:53
Damn Im so obsessed with Godot, that was the first thing in my mind lol
Avatar
Avatar
Jupstar ✪
additionally distance checks of circles + points are the cheapest operation
this could solve the rotation animation case for the clip region
Avatar
Avatar
AssassinTee
I agree, that having all things covered is complex, but we can still improve the easy cases: no animation, para 100/100, -> virtual clip
so what do you say @Jupstar ✪ , is the idea valid? This would be an optimization in some cases, and wouldn't change a thing in others (no quad layers)
Avatar
please tell me how to create a player token for my DDNEt server (edited)
Avatar
Avatar
AssassinTee
so what do you say @Jupstar ✪ , is the idea valid? This would be an optimization in some cases, and wouldn't change a thing in others (no quad layers)
sure but dont u need animation?
Avatar
Yes, you can further improve on that idea a lot (since it's an optimization problem). I think I'll start an implementation of this when I am done with the map and need to measure frame times
Avatar
maybe use that kind of method on tunes as well
13:00
tunes are still actively sucking off performance inside the editor
Avatar
Avatar
Cellegen
tunes are still actively sucking off performance inside the editor
that's an editor problem
Avatar
@Cellegen this is about in-game improvements (which is much more worth)
Avatar
anyway, i'd still suggest to use less quads
13:01
it uses more VRAM too
Avatar
only if you use quads with texture, or does it?
Avatar
and rendering performance too
Avatar
Idk about 6000 quads being on a map, but my idea is around 10k
13:02
jupstar, you have no idea about the potential of the editor
Avatar
Avatar
AssassinTee
only if you use quads with texture, or does it?
independent of if texture or not
13:02
the vertices of the quads need to be uploaded
Avatar
The fix with the clip regions is working very good, it's not one layer with 8000 quads, I have a lot more in this map, the biggest layer has 2000, the rest has ~500, I don't see how to improve the number of quads
13:03
Issue is me abusing the pixelart tool
Avatar
but u probably have a very good GPU
13:04
try with software renderer
Avatar
how/like?
Avatar
remove your driver, test it out? troll
Avatar
Avatar
AssassinTee
how/like?
mh do you use linux?
Avatar
I can if I have to 😄 for teeworlds usually not
Avatar
on windows dunno xd
13:05
maybe vulkan sdk ships one
Avatar
@Jupstar ✪ do you have a tool to measure frametimes on different maps?
Avatar
Avatar
AssassinTee
@Jupstar ✪ do you have a tool to measure frametimes on different maps?
ddnet has a tool built in, but u'd need to manually drag it into excel to see the chart
13:06
ah actually someone wrote a python script i think
Avatar
if sb wrote a script, it has to be patiga xD
Avatar
Avatar
AssassinTee
this looks way worse then what I did
So if I understand correctly, you want to put layers into their own group to achieve more precise clipping? Such a system would not directly help on a map such as mud though, right? (as long as we don't split up the quad layer automatically)
Avatar
Avatar
AssassinTee
if sb wrote a script, it has to be patiga xD
it was chairn
Avatar
Avatar
Patiga
So if I understand correctly, you want to put layers into their own group to achieve more precise clipping? Such a system would not directly help on a map such as mud though, right? (as long as we don't split up the quad layer automatically)
I would implement the clip-feature virtually for quads (no editor), precalculate them. This has nothing to do with the group clips (well maybe similar code) Yes, this wouldn't directly improve mud, but this would allow to, in a follow up, split a layer into two only for rendering (edited)
Avatar
So, 16 left (not counting this one, still thinking of a good translation)... Nice! (edited)
Replying to @heinrich5991
"The server is running a non-standard tuning on a pure game type." […]
Avatar
Avatar
Cellegen
doesn't it cache all of the quads that are inside the view and check those only? Or better yet, check those only which are the closest within the boundary of the camera's view? (edited)
the graphics card is very good at throwing away quads that are not on the screen by itself. I doubt that such checks would increase the performance in most cases
13:09
i think this was the script
❤️ 1
Avatar
Avatar
Patiga
the graphics card is very good at throwing away quads that are not on the screen by itself. I doubt that such checks would increase the performance in most cases
then maybe its a gpu bottleneck?
Avatar
the biggest bottleneck in ddnet is that it does these calculations on the CPU
13:10
CPU are only good if the number is not too high, then they can even outperform the GPU
Avatar
well, positions need to be accurate, so makes sense
Avatar
the performance gain comes only from skipping checks if something needs rendering, not the rendering itself (edited)
Avatar
well it depends on which method is faster, discarding quads on GPU, or conditionally skipping quads on the CPU
Avatar
Avatar
AssassinTee
So, In a map I am working on, I have a lot of quads, about 8000 distributed in 50 groups. For context, I would be currently on r4 on the list with the most quads per map on ddnet, if my map would be there, anyway. I noticed, that a snow Strom, which was over 500 fields away from the spawn region, greatly dropped fps beside no quad of this layer being visible or in render distance. I improved the FPS by adding clip regions on every quadlayer, meaning I had to put every quad into it's own group and add a clipping region to it, because layers don't support clip regions. This causes the renderer to skip the group, if it's region is out of bounds, instead of checking EVERY QUAD if it needs rendering. This improved, in my special case, the rendering up to a factor of 10 (from 500 fps to 5000) (machine one), (from 200 fps to 990 (fps cap!))(machine 2) My idea: Add, when loading a map, a virtual clip region to a quad layer. This improves FPS everywhere outside of the clip and if you have multiple quad layers without overlap, it'll improve overall fps. How to do this? Check every corner of a quad in a layer, min-max x/y for to generate a clip region, you only need to do this once, when loading the map You'll need to add possible envelope offsets, which is easy, the maximum/minimum value has to be a point in the envelope (except when rotating) TODO para X, Y, can be considered and recalculated, definately possible, para 0/0 can be skipped Also, you could pre-calculate this region starting at a minimum quad count, which still needs to be found (edited)
and to get me up to speed, you achieved that optimization manually by reordering the quads layers into different groups, yea?
Avatar
Avatar
Jupstar ✪
i think this was the script
so matplotlib, I need to collect the data manually right?
Avatar
Avatar
AssassinTee
so matplotlib, I need to collect the data manually right?
ddnet has some command
13:13
let me find
13:13
bench_quit or smth
Avatar
Avatar
Patiga
and to get me up to speed, you achieved that optimization manually by reordering the quads layers into different groups, yea?
yes, I needed to split a group into 3 or more, where the middle one is a single group for a quad layer with clipping (edited)
Avatar
benchmark_quit 60
13:14
to record 60 seconds of gameplay
Avatar
Thing is this needs to be collected over a range of maps
Avatar
Avatar
Patiga
and to get me up to speed, you achieved that optimization manually by reordering the quads layers into different groups, yea?
also, I have already done this in the map version you already have. If you are interested measure fps, disable all clip regions, measure again (edited)
13:24
I'm uncertain if this optimization does much on most maps. I would expect only very few maps to profit from this. (quads afaik are typically only used only used in small amounts) For the maps on which this does matter, it would be a great improvement and I like the idea! A relatively simple approach would be to simply edit the maps themselves, and simply use the group clips. that is exactly what they are for and many groups are no issue for the renderer :)
Avatar
games like minecraft might use UV coordinate animations for rain something ddnet maps sadly dont support
13:28
but u could defs do smth similar with fewer quads than 6000 xd
Avatar
Use both
Avatar
this is a map where i created the rain for
13:30
it uses fewer quads
Avatar
BTW I know I could just use para 0/0, add a clip where I want rain and call it a day
Avatar
u can defs improve it, bcs i am laziest mapper but looks also cleaner in the editor
13:31
Avatar
I wonder what you'd say about my envelops if you see them, you'd probably throw a stone at me (edited)
Avatar
Avatar
Jupstar ✪
Click to see attachment 🖼️
if the midground quads don't have para change at all, then you can resize the boundary to be smaller (edited)
13:34
If as you said it affects performance, then this should also increase it's performance a bit
Avatar
Avatar
Jupstar ✪
u can defs improve it, bcs i am laziest mapper but looks also cleaner in the editor
This is probably the prefered solution in 99% of the cases, but not mine, because my snow flakes are 4x4 virtual pixels following a grid. The animation itself only uses step type 'N' and the pixels jump to their positions, this can't be done without para x/y being 100
Avatar
Avatar
AssassinTee
This is probably the prefered solution in 99% of the cases, but not mine, because my snow flakes are 4x4 virtual pixels following a grid. The animation itself only uses step type 'N' and the pixels jump to their positions, this can't be done without para x/y being 100
u can also create an issue on github and try to explain it in more detail, i would not prevent it if u find maintainers that like your idea
Avatar
I think I'll do a test implementation, measure, and add a PR if the stats provide it. Which maintainer would say no to 1% on average, and 1000% worst case improvements?
Avatar
wow jupstar pro mapper
Avatar
Avatar
AssassinTee
I think I'll do a test implementation, measure, and add a PR if the stats provide it. Which maintainer would say no to 1% on average, and 1000% worst case improvements?
Aware
13:52
"just use less quads"
Avatar
Avatar
AssassinTee
I think I'll do a test implementation, measure, and add a PR if the stats provide it. Which maintainer would say no to 1% on average, and 1000% worst case improvements?
btw i think u can generally improve the quads rendering performance. i quickly looked into the code, rn it calculates the envelop for every quad (even tho most quads probably have the same animation) additionally env eval uses a linear search, which is probably no problem for small number of env points, but defs doesnt scale
13:57
that alone would maybe already double the fps xd
13:57
ah but animation time offsets could potentially be problematic
13:57
dunno if u use them too
Avatar
yes, and I randomized them
13:57
🙈
13:58
a randomize pos/col offset button would be a nice feature as well, but can't have everything
Avatar
Avatar
Jupstar ✪
ah but animation time offsets could potentially be problematic
yea in twmap I calculate the envelope values for each envelope_index, envelope_offset pair
Avatar
Avatar
Patiga
yea in twmap I calculate the envelope values for each envelope_index, envelope_offset pair
ah nice, do you know a map that profits from it?
13:59
let say min. 128 quads
Avatar
Avatar
Jupstar ✪
btw i think u can generally improve the quads rendering performance. i quickly looked into the code, rn it calculates the envelop for every quad (even tho most quads probably have the same animation) additionally env eval uses a linear search, which is probably no problem for small number of env points, but defs doesnt scale
I am currently lookin into the OnMapLoading function, too. This virtual clip would be easy to implement, you are already iterating through all quads in a layer https://github.com/ddnet/ddnet/blob/64f4ea1512b5abcc1ef27b90ede05cb9934df69b/src/game/client/components/maplayers.cpp#L811
Avatar
I don't. I did it because yk I did everything differently and upload the envelope values to the gpu ^^
14:01
so I just did that as a why-not optimization :d
Avatar
Avatar
Patiga
I don't. I did it because yk I did everything differently and upload the envelope values to the gpu ^^
ah u still calc them on CPU? didnt even know, but probs makes sense considering it's a loop
Avatar
yea, I don't think you can do that well on the gpu
14:05
I put some thought into it and it just didn't sound all that good
Avatar
Avatar
Cellegen
well it depends on which method is faster, discarding quads on GPU, or conditionally skipping quads on the CPU
only if you know that 1 gpu thread will process contiguous-by-predicate data
14:11
branch prediction powers it but not just random discarding
Avatar
I suspect about an algorithm being ran on the GPU to select quads
Avatar
does anyone know if quads are sorted inside a map? Or do I expect them randomly/the order the mapper added them?
14:12
probably the latter,
Avatar
latter, ye
14:13
wdym by sorted btw
Avatar
ofc, because the rendering order matters
Avatar
sorted by x/y, in order to improve rendering (like I am thinking about)
Avatar
hm you can rearrange them on client side
Avatar
yes, but this would change the rendering order, so this isn't an option
14:15
this may work in most cases, but it breaks when quads in the same layer overlay each other
Avatar
Avatar
AssassinTee
yes, but this would change the rendering order, so this isn't an option
but you can index them, no?
Avatar
oh god, @Patiga our np-problem is getting worse, if we allow overlays with different colors (edited)
happy 1
Avatar
hmm, you can get the most common color and overlay it with the rest of the pixelart tho 😮
Avatar
Avatar
zhn
but you can index them, no?
yes, indexing would solve this, however this could run into other issues, e.g. caching
Avatar
How do I move to the bottom line when writing motd?
Avatar
This is a\nMulti line\nMessage of the\nDay!
🍻 1
Avatar
Sooo, 97% (590/607)... Just a little and the PR is here! Melon, can you help here? Or Heinrich? Anyone? (edited)
Replying to egyt So, this is the list of strings I couldn't translate, some because I don…
Avatar
Avatar
louis
wow jupstar pro mapper
pro mapper requirements: 1. knows how to copy paste bush quads 2. knows how to rotate them
Avatar
ravie speedrun any%
16:22
rip
Avatar
rabies
Avatar
egyt:
"Vote command:" "Vote description:"
both used when adding votes to the server via the UI
"Super"
used to indicate that a player has used the super command in the scoreboard, used instead of a team number (because internally, everyone using super joins the super team) (super makes you invulnerable to freeze tiles and gives you a similar thing to endless jumps)
"Save"
like file→save. currently only used for ghosts
"No results"
same as "Match %d of %d" that you alrready translated
(edited)
Avatar
I'm not Egypt, but ok...
Avatar
You are egypt now, it's decided
Avatar
sorry, that's my fingers autocorrecting the words I type (edited)
Avatar
OH, MATCH IS A VERB
Replying to @heinrich5991 egypt: […]
Avatar
no, match is a noun
16:40
"[this is] match 5 out of 12"
Avatar
well, noun that comes from verb
Avatar
"[there were] no matches"
16:40
ah
Avatar
Match as a result, yeah?
Avatar
yes
Avatar
Okaaay, time to fix
Avatar
Match "as a result"? huh
16:42
Match as in "contest"~ is the meaning there
Avatar
Won't understand 😔
Replying to @Learath2 Match "as a result"? huh
16:42
???
Avatar
Avatar
Learath2
Match as in "contest"~ is the meaning there
are you sure?
Avatar
Avatar
heinrich5991
are you sure?
Match %d of %d?
Avatar
yes
16:43
it's in src/game/client/components/console.cpp
Avatar
Oh, I see. Yeah match as in "match result"
Avatar
it's about rcon commands that match a search string, I think
16:43
English makes me sad
16:44
next time use Esperanto as the source language (edited)
Avatar
All natural languages have deficiencies because well they are mostly emergent, not of design 😄
Avatar
so, which "match" it is??? (edited)
Avatar
result, something that matches
Avatar
okaaay
Avatar
english is particularly bad about pronunciation. I don't know any other language that is as bad
16:45
okay, maybe except japanese
Avatar
Japanese isn't that bad
Avatar
学校
Avatar
Tough, though and plough are criminal 😄
Avatar
nothing about that tells you something abotu the pronunciation
16:47
you need to learn each symbol, and they might even have different pronunciations depending on context
Avatar
Oh, that's what you mean, well yeah. But as soon as you know how it's written in hiragana it's mostly unique
Avatar
yes, if you type it out in syllables, it's fine in japanese
Avatar
Avatar
heinrich5991
yes, if you type it out in syllables, it's fine in japanese
(There are a few sound changes here and there, e.g. は -> わ)
Avatar
"Super" used to indicate that a player has used the super command in the scoreboard, used instead of a team number (because internally, everyone using super joins the super team) (super makes you invulnerable to freeze tiles and gives you a similar thing to endless jumps)
Now I wonder where "Alpha" is used
Avatar
Avatar
egyt
"Super" used to indicate that a player has used the super command in the scoreboard, used instead of a team number (because internally, everyone using super joins the super team) (super makes you invulnerable to freeze tiles and gives you a similar thing to endless jumps)
Now I wonder where "Alpha" is used
Alpha is always used as "Opacity"
16:49
Higher values being more opaque
Avatar
Avatar
Learath2
(There are a few sound changes here and there, e.g. は -> わ)
oh true. and へ → え
Avatar
えい -> ええ is also very common, and the す losing it's "う" in です
Avatar
Adding votes to the server via UI
Could you tell me more about this, please?
(edited)
Replying to @heinrich5991 egypt: […]
Avatar
egyt: log into a server via rcon and open the vote menu
Avatar
How do I log into a server?
Avatar
start a server locally and check what password it tells you in the console. enter that in f2
Avatar
Good thing that I have two laptops, one with Windows and one with Linux...
17:42
By the way, I replaced "resources" (as "assets" translation) with "textures", is that fine?
Avatar
Avatar
egyt
Good thing that I have two laptops, one with Windows and one with Linux...
you don't need windows or linux for this, or two computers
Avatar
you just need to press 1 button
Avatar
Avatar
egyt
By the way, I replaced "resources" (as "assets" translation) with "textures", is that fine?
stick to the common terminology, assets are assets, resources are resources, textures are textures
17:49
when someone plays with your translation, and we only really offer help in english, telling them to remove 4K assets, will tell them nothing if its translated to something else
Avatar
but what are "assets" in ukrainian?
17:50
if the word that means "textures" is the best fit there, it'd make sense to translate like that
Avatar
What's the difference between "resource" and "asset"? They are also synonymous in English
Avatar
in german at least, I'd think "resources" would be a good translation for "assets"
17:54
seems like resource is also a word in ukrainian for that: https://uk.wikipedia.org/wiki/%D0%A0%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%B8_(Windows)
Ресурси Microsoft Windows — дані, вбудовані в EXE, DLL, CPL і (починаючи з Windows Vista) MUI -файли. Доступ до цих даних можна отримати через функції Windows API.
Avatar
yeah it seems ассет or асет (asset) is translated to Ресурси (resource) in some contexts: that right egyt? (edited)
Avatar
"ассет" or "асет"
checking wiktionary, these don't seem to be russian or ukrainian words
Avatar
YEP i'll drop out of this since i dont know ukrainian and i seem to google stuff wrong
Avatar
"asset (noun)"
Avatar
Yes ("Ресурси" is plural and "Ресурс" is singular) (edited)
Replying to @meloƞ yeah it seems `ассет` (asset) is translated to `ресурс` (reso…
18:06
That's russian
Replying to @meloƞ image.png
Avatar
Avatar
egyt
That's russian
a
Avatar
And, while "Asset" also translates as "актив" (that one), I haven't seen it being translated like that in video game context even once (edited)
Avatar
Avatar
Robyt3
What's the difference between "resource" and "asset"? They are also synonymous in English
this might just be a personal thing, but to me assets are supposed to be edited, and resources are not (edited)
18:09
an asset would be a png, but a resource would be a GPU texture format or something
Avatar
really, use Esperanto as a source language to avoid confusion like this one :^)
Avatar
does esperanto not have these problems of homonyms?
Avatar
but I'm not sure it matters in this context
Avatar
Okay, I’m cheating a bit, since I already know about one true homonym in Esperanto: radio (meaning radio or ray). Do any others exist? I’m looking for single word roots with divergent meanings, so...
18:12
apparently esperanto also has homonyms
Avatar
egyt: Time limit translation works for me, maybe you are running into the weird bug with the line reader. Or you accidentally changed the original translation somehow, like adding a space at the end
18:13
Also, why does it say "Finish time: <...> -0.05" when it is "-0.06"? (edited)
Replying to egyt зображення.png
Avatar
you can report that as a bug
Avatar
I checked it now and, well, I accidentaly removed the space at the start :^) (edited)
Replying to @Robyt3 egyt: Time limit translation works for me, maybe you are running into th…
18:17
The problem is, it sometimes happens, and sometimes it doesn't
Replying to @heinrich5991 you can report that as a bug
18:18
Also it happens when you arrived later than your best time
18:18
Avatar
just report it with the screenshot, should be enough
Avatar
For some reason, delta (time of the race-best time) in top right corner and under Finish time: in the middle differs from one in the chat (which shows the correct value) For example, here it shows -00.05, while the actual delta is -00.06 !зображення And there it shows +00.03, while the actual delta is +00.04 ![зображення](https://github.com/ddnet/ddnet/assets/113429882/752d3e89-0406-49e7-a92f...
Avatar
Replying to egyt The problem is, it sometimes happens, and sometimes it doesn't
18:30
Here it shows correct delta both in chat and top right corner
Avatar
Current translation, Belarusian translation and Wiki uses "Textures", so that's why I chose this one
Replying to egyt By the way, I replaced "resources" (as "assets" translation) with "textu…
Avatar
care to link the wiki?
Avatar
here (edited)
18:49
Also, it mentions "Тії" ("Tiyi") as the name for Tee tab
18:49
I don't really like it because it is not the original pronounciation (edited)
Replying to egyt Also, it mentions "Тії" ("Tiyi") as the name for Tee tab
18:52
but at the same time it differs from the word "ті" ("those"), so now I don't really know (edited)
18:54
I also saw "персонаж" ("character") being used, but it is a regular noun, and won't really fit here (see picture below) (edited)
18:55
18:57
so, either I stop with "Тії", or we have to change practically all of these pages
18:57
(please, make "Tee" tab translatable already! https://github.com/ddnet/ddnet/issues/8436) (edited)
19:02
Or should I open a separate issue?
Replying to egyt (please, make "Tee" tab translatable already!)
Avatar
no, that issue is fine
19:04
if you want to expedite the resolution of the issue, I suggest you create a pull request to make "Tee" translatable (edited)
Avatar
Why translate tee
Avatar
😫
Replying to @heinrich5991 if you want to expedite the resolution of the issue, I suggest you creat…
Avatar
Avatar
MilkeeyCat
Why translate tee
e.g. because latin characters are usually not used in the language
Avatar
because we actually have a translation used on Wiki
Replying to @MilkeeyCat Why translate tee
Avatar
I find the wiki reason meh
Avatar
Thanks god i never open those pages
Avatar
we can also adjust the wiki instead
Avatar
my lang got casts poggers
Avatar
what's the result of casting -1 to u8?
19:07
is that a good result? ^^
Avatar
It can parse casts but it cant print out stuff
19:08
Xd
Avatar
^^
Avatar
time to git clone again (edited)
Avatar
The time has come either to add bool or 16 bit ints
19:09
Probably bool will be a better choice
Avatar
Avatar
egyt
time to git clone again (edited)
no need to delete the clone btw 😉
Avatar
And i redid all From impl into TryFrom justatest
Avatar
Avatar
heinrich5991
is that a good result? ^^
it kinda works ™ (edited)
Avatar
Avatar
MilkeeyCat
And i redid all From impl into TryFrom justatest
nice 🙂
Avatar
but my compiler is so high tech that it cant represent -128 as 1 byte pepeW (edited)
Avatar
Compiling time!!
Replying to egyt time to modify the source code again
Avatar

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-addres...
Avatar
Avatar
MilkeeyCat
but my compiler is so high tech that it cant represent -128 as 1 byte pepeW (edited)
off by one error somewhere?
Avatar
Avatar
Learath2
off by one error somewhere?
it's because of the way i handle integer literals
20:18
i have int_repr struct which stores unsigned value
20:19
and then it can be put in unary expr to make it negative
20:19
so first it's +128 which takes 2 bytes
20:19
and then it becomes negative
Avatar
Well, it works, now it is localisable
Replying to egyt Compiling time!!
20:49
Avatar
See #8436 for details

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
  • [ ] Changed no physics that affect existing maps
  • [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddne...
Avatar
Here we are, having a nice number
20:57
Also, 10 strings left to translate!
Replying to egyt So, this is the list of strings I couldn't translate, some because I don…
21:00
So, do I need to add Tee == into my local translation? (edited)
21:02
Or the next release will be without my translation for that tab?
Avatar
yes
Avatar
Changing "Spectate" to "Spectating" in the bottom right corner when in Spectator mode so it makes more grammatical sence Before: After: Checklist Tested the change ingame P...
21:03
Informative
Replying to @heinrich5991 yes
21:08
21:08
hehehehe
Avatar
Huh, we actually have a word "форсувати" for that (edited)
Avatar
950bbf3 Make "Tee" tab name localisable - EGYT5453 82c2ecd Merge pull request #8444 from EGYT5453/tee-tab-l10n - heinrich5991
Avatar
So, again, should I go into translation files of the repo to add Tee == Тії so my translation for Tee tab name will be in the next release? (edited)
Avatar
Huh, I did not know we even translated that one
Avatar
Because you never did
Replying to @Learath2 Huh, I did not know we even translated that one
21:46
I made a PR to make the "Tee" (tab name) translatable literally less than an hour ago (edited)
21:50
I guess I'll have to ask "tomorrow"
Replying to egyt So, again, should I go into translation files of the repo to add […]
Avatar
I forgot to restart my monero node after they replaced my hdd, now I fell so far behind that it'll take me days to resync
Avatar
Avatar
egyt
I guess I'll have to ask "tomorrow"
why not PR your entire thing at once?
Avatar
It might be time to get a server upgrade too ngl, spinning rust is getting on my nerves lately
Avatar
Avatar
Learath2
It might be time to get a server upgrade too ngl, spinning rust is getting on my nerves lately
Avatar
what do you mean by "entire thing"?
Replying to @meloƞ why not PR your entire thing at once?
Avatar
the entire translation .txt, doesnt seem profitable to make a PR for a single translation :P
Avatar
Avatar
egyt
So, again, should I go into translation files of the repo to add Tee == Тії so my translation for Tee tab name will be in the next release? (edited)
why are you translating Tee again
22:05
the players know what tees are
22:05
just like they know what DDNet is
Avatar
Because I found the term that is used on Wiki
Replying to @Ewan why are you translating Tee again
Avatar
i don't necessarily think this is the correct way to do that
Avatar
Having "тії" is better than having "тее", change my mind
Avatar
Tee is a identity, not something you translate
Avatar
but i'd consider Tee to be a proper noun, wouldnt really translate that (edited)
Avatar
"Combine" is also a proper noun, but it didn't stop translators
Avatar
that’s because it’s critical to the HL2 plot and wouldn’t make sense otherwise
Avatar
Slavic languages love transliterating proper nouns. Макдоналдс
Avatar
i don’t think that makes it correct
Avatar
Старбакс
Avatar
harry potter is also transliterated in russian
pepe_holy 2
Avatar
also, um, it is not finished yet. Again, 10 strings, and I don't know where they occur, meaning I can't really make an accurate translation
Replying to @meloƞ the entire translation .txt, doesnt seem profitable to make a PR for a s…
Avatar
Avatar
heinrich5991
harry potter is also transliterated in russian
And they use a г so it’s garry potter
Avatar
I wouldn't say it's garry potter
Avatar
Avatar
egyt
So, this is the list of strings I couldn't translate, some because I don't know where they occure, and some because I don't know technical terms behind them (paused) All combined Folder Link Follow Game paused Grabs Moved ingame Replace video Searching [Graphics error] An error during command recording occurred. Try to update your GPU drivers. (edited)
are these the missing ones?
Avatar
just pronounced as such
Avatar
yes, those are the ones I haven't translated yet
Replying to @meloƞ are these the missing ones?
Avatar
Avatar
heinrich5991
just pronounced as such
Well if a russian person only speaks russian, for all they know it might be garry everywhere
Avatar
I guess
22:13
but it's also gitler, so it's a consistent transcription, at least
Avatar
I do wonder why leading h becomes g in russian though
22:14
They do have the sounds for it х sounds much closer to my ear atleast
Avatar
Avatar
Learath2
I do wonder why leading h becomes g in russian though
probaly cuz russian language developed without the "h" sound (edited)
Avatar
literally 10 strings (or 13, if including PRs, who knows), and the translation is done
Replying to egyt yes, those are the ones I haven't translated yet
22:21
btw, should I try again adding context to "Name" in Server browser?
22:22
oh wait it hasn't been fixed yet
Avatar
hasn't been fixed yet
Avatar
can someone try and reproduce crashing the client by rendering a demo, setting the playback time to 0.1 - forwarding a bit and then quitting out of it without finishing rendering using the X on the bottom right? - my client became unresponsive for a solid minute, outputted me this: 2024-06-04 00:18:38 I demo_player: Stopped playback 2024-06-04 00:18:38 I demo_player: Loading demo 'demos/replays/asdasd.demo' 2024-06-04 00:18:38 I datafile: could not open 'maps/Adrenaline 3.map' 2024-06-04 00:18:38 I videorecorder: Recording to 'videos/asdasd.mp4.mp4' 2024-06-04 00:18:59 I client: disconnecting. reason='unknown' 2024-06-04 00:18:59 I video_recorder: ------------ 2024-06-04 00:18:59 I video_recorder: ------------ 2024-06-04 00:18:59 I demo_player: Stopped playback and then closed (using DDNet 18.2) this is the output on latest upstream: 2024-06-04 00:22:47 W videorecorder/libav: Too many bits 32768.000000 > 12288 per frame requested, clamping to max 2024-06-04 00:22:47 I videorecorder: Recording to 'videos/aseasdasdasd.mp4' 2024-06-04 00:22:51 I videorecorder/libav: frame I:114 Avg QP:14.91 size:177571 2024-06-04 00:22:51 I videorecorder/libav: frame P:412 Avg QP:24.00 size: 10011 2024-06-04 00:22:51 I videorecorder/libav: frame B:831 Avg QP:25.97 size: 3511 2024-06-04 00:22:51 I videorecorder/libav: consecutive B-frames: 12.7% 9.6% 22.3% 55.4% 2024-06-04 00:22:51 I videorecorder/libav: mb I I16..4: 32.8% 25.2% 41.9% 2024-06-04 00:22:51 I videorecorder/libav: mb P I16..4: 0.7% 0.4% 0.5% P16..4: 7.7% 2.8% 2.0% 0.0% 0.0% skip:85.9% 2024-06-04 00:22:51 I videorecorder/libav: mb B I16..4: 0.3% 0.0% 0.0% B16..8: 7.4% 1.6% 0.5% direct: 1.3% skip:88.7% L0:51.0% L1:37.3% BI:11.7% 2024-06-04 00:22:51 I videorecorder/libav: 8x8 transform intra:24.9% inter:51.0% 2024-06-04 00:22:51 I videorecorder/libav: coded y,uvDC,uvAC intra: 30.4% 34.5% 30.3% inter: 2.5% 1.3% 0.7% 2024-06-04 00:22:51 I videorecorder/libav: i16 v,h,dc,p: 77% 21% 2% 0% 2024-06-04 00:22:51 I videorecorder/libav: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 72% 4% 24% 0% 0% 0% 0% 0% 0% 2024-06-04 00:22:51 I videorecorder/libav: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 41% 30% 7% 3% 3% 4% 3% 4% 4% 2024-06-04 00:22:51 I videorecorder/libav: i8c dc,h,v,p: 68% 18% 12% 2% 2024-06-04 00:22:51 I videorecorder/libav: Weighted P-Frames: Y:0.0% UV:0.0% 2024-06-04 00:22:51 I videorecorder/libav: ref P L0: 60.3% 2.7% 9.1% 27.8% 2024-06-04 00:22:51 I videorecorder/libav: ref B L0: 73.7% 21.5% 4.8% 2024-06-04 00:22:51 I videorecorder/libav: ref B L1: 92.7% 7.3% 2024-06-04 00:22:51 I videorecorder/libav: kb/s:9651.27 2024-06-04 00:22:51 I videorecorder/libav: Qavg: 65418.816 2024-06-04 00:22:51 I demo_player: Stopped playback
22:24
dont know if its my fault or actual issue - so i didnt immediatly make one
Avatar
waiting then
Replying to @heinrich5991 hasn't been fixed yet
22:26
as well as for #8404
Avatar
changing Spectate to Spectating means you have to change the string in every translation.txt file, so the PR is incomplete it seems?
22:28
nvm deen already said something about it
Avatar
no, that cna be handled differently
22:58
This feels very overdue
Exported 539 message(s)