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-10-02 00:00 and 2024-10-03 00:00
Avatar
OR, the mods can monkeypatch ddnet by compiling their code at runtime and injecting into memory
Avatar
with a launcher, one could support multiple executables, given, they live in some specific folder
Avatar
Avatar
Learath2
OR, the mods can monkeypatch ddnet by compiling their code at runtime and injecting into memory
sounds reasonable
Avatar
Avatar
Jupstar ✪
bcs of fast input?
whats that
Avatar
the sub tick aiming stuff?
Avatar
it functionally applies antiping to your tee based on the inputs you're currently holding
00:18
idk if that makes any sense
Avatar
Avatar
Ewan
tclient is a complete game changer for gores
what do u mean exactly, can u elaborate? I thought it just adds some visuals, does it change how pred works completely?
steamsuffering 1
Avatar
oh, is it for gores gameplay
Avatar
Avatar
Gumba
what do u mean exactly, can u elaborate? I thought it just adds some visuals, does it change how pred works completely?
it was just explained 10 minutes before u replied (with the ping on steamsuffering )
Avatar
Avatar
louis
oh, is it for gores gameplay
it's not really related to the gamemode at all but it's probably much more useful in gores? idk
00:39
I couldn't tell you because I suck at ddrace
Avatar
Avatar
louis
oh, is it for gores gameplay
works on ddnet too but the use of pretty much anything but static map tiles and player movement is buggy
Avatar
I remember smth abt antipi g applying whether youre frozen or not too
Avatar
that's a different feature but that one is almost entirely for gores
Avatar
related, itd be nice for mods to send their custom prediction or antiping
Avatar
yea there’s not really a model that works for that atm
Avatar
what does that mean
Avatar
server could theoretically send some kind of data to help the client predict its stuff
00:41
ddpg works that way
00:41
the server sends the entire game physics so everything is predicted
00:41
it would be nearly impossible to do that in ddnet though
Avatar
It would just require major refactoring and would be incompatible with old clients and servers
00:42
so yeah. nearly impossible 😃
Avatar
i will be switching to ddpg on release 🙋
Avatar
I have bad news for u
Avatar
the issue is you need ddpg servers and every mod needs to be written based on ddpg
00:43
there's no cross compatibility
00:43
but maybe some mod authors will make cool mods that use super different physics
Avatar
its okay ill be good at rust by the time it releases
Avatar
gerdöh already implemented insta kek
Avatar
Avatar
louis
its okay ill be good at rust by the time it releases
you have ~1 1/2 months
00:45
i'll be implementing zombies boys
Avatar
ill do bomb tag poggers2
Avatar
Avatar
louis
ill do bomb tag poggers2
I think that's reserved to furo: and bencie I'm afraid feelsbadman
Avatar
ok then im taking zombies so you can find something else
Avatar
Ok I code battlefield
Avatar
Avatar
TsFreddie
Click to see attachment 🖼️
I am in a public space and was just enjoying some reading in dev chat :(
Avatar
Avatar
MilkeeyCat
anyone pro in tree-sitter? I was trying to make highlighting for this keyword so it should be of type @variable if it's used in a function or @keyword if it's inside a method. I tried using has-ancestor? predicate and.. it did nothing, here's the whole thing: ((this) @variable (#has-ancestor? @keyword method_declaration)) https://github.com/MilkeeyCat/tree-sitter-meraki/compare/master...feat/this-highlighting
MilkeeyCat 2024-10-02 06:08
I didn't even need a separate rule for this, I just slapped this and it works xd: ((identifier) @variable.builtin (#eq? @variable.builtin "this") (#has-ancestor? @variable.builtin method_definition)) (edited)
Avatar
Avatar
louis
whats that
Jupstar ✪ 2024-10-02 07:24
I just spam you with my brainstorming about it. But it kinda removes the time until next tick
07:24

Fast prediction code (lower input lag) brainstorming

Biggest problem is a direction change (looks jittery and is FPS dependent). One thing is clear. this gives up to 20ms less input lag (visually). Tick 0 --------------- 1 Tick ^ input to move right at 0.25 intra tick Tee-pos (0,0) --------------- (1,0) Predicted tee-pos <----------> in this range the tee has to do the full movement from non-redicted to predicted pos holding move: Tick 1 --------------- 2 Tick ^ input to STOP moving at 0.75 intra tick Tee-pos (1,0) --------------- (1,0) Predicted tee-pos ^ (1.75, 0) at this moement the tee is here visually <-> in this range the tee has to do the RESET the movement from non-redicted to predicted pos So literally reverting 0.75 moved units Additionally it would need to keep a second prediction world, to even have something to interpolate against.
  • Since this is kind of anti-input lag (similar to anti-ping) this should maybe be configurable
  • How can we make the impact of the reset less?
  • How to keep track of the second prediction world (or even more?)
  • Can it be less FPS dependent? probably not. bad FPS itself make the game feel like
it's jumping around anyway Generally I'd like to have it active on by default. I thought maybe we can activate it if FPS are over 200, since more FPS make the jumping interpolation smoother. (also monitor's refresh rate)
Avatar
I've had a lot of people on 60hz say they prefer it
07:41
idk if fps has any impact
07:41
the real issue is that it makes jump timing way harder
07:42
any action that sets your velocity instead of giving you acceleration feels worse
07:43
How to keep track of the second prediction world (or even more?)
the client already saves the positions of every tee on every tick of prediction so you don't need multiple worlds for most things unless you care about non-tee objects
Avatar
Avatar
heinrich5991
@Avolicious do you have info on the above? how often do players lose access to their email accounts and have a problem with the kog account due to this?
Avolicious 2024-10-02 07:47
The number of ppl losing their e-mail account is not very accurate as they can login with their username password on the website. But after most people registered and have their ingame login, they dont reach out to us for months until they leaked it & then the fun begins. As we cant give out information & mods dont see e-mails at all, they have to escalate it to admins
Avatar
Avatar
Tater
How to keep track of the second prediction world (or even more?)
the client already saves the positions of every tee on every tick of prediction so you don't need multiple worlds for most things unless you care about non-tee objects
Jupstar ✪ 2024-10-02 07:47
ah, i think that part was about our idea to make it more smooth
07:48
it kinda would need multiple prediction worlds i think
07:48
to interpolate between the predicted worlds xd
Avatar
Jupstar ✪ 2024-10-02 07:48
But that part is defs the hardest
07:49
esp. for dd-pg bcs all mods would need to implement it
07:49
I wonder if it would look better anyway xd
07:50
I've had a lot of people on 60hz say they prefer it idk if fps has any impact
Ah ok, well I'm not very used to 60hz. But for me it felt extra terrible 😄
(edited)
Avatar
Avatar
Avolicious
The number of ppl losing their e-mail account is not very accurate as they can login with their username password on the website. But after most people registered and have their ingame login, they dont reach out to us for months until they leaked it & then the fun begins. As we cant give out information & mods dont see e-mails at all, they have to escalate it to admins
heinrich5991 2024-10-02 07:50
does regeneration of the ingame login invalidate the old token?
Avatar
Avatar
heinrich5991
does regeneration of the ingame login invalidate the old token?
Avolicious 2024-10-02 07:50
Yes
Avatar
Avatar
Jupstar ✪

Fast prediction code (lower input lag) brainstorming

Biggest problem is a direction change (looks jittery and is FPS dependent). One thing is clear. this gives up to 20ms less input lag (visually). Tick 0 --------------- 1 Tick ^ input to move right at 0.25 intra tick Tee-pos (0,0) --------------- (1,0) Predicted tee-pos <----------> in this range the tee has to do the full movement from non-redicted to predicted pos holding move: Tick 1 --------------- 2 Tick ^ input to STOP moving at 0.75 intra tick Tee-pos (1,0) --------------- (1,0) Predicted tee-pos ^ (1.75, 0) at this moement the tee is here visually <-> in this range the tee has to do the RESET the movement from non-redicted to predicted pos So literally reverting 0.75 moved units Additionally it would need to keep a second prediction world, to even have something to interpolate against.
  • Since this is kind of anti-input lag (similar to anti-ping) this should maybe be configurable
  • How can we make the impact of the reset less?
  • How to keep track of the second prediction world (or even more?)
  • Can it be less FPS dependent? probably not. bad FPS itself make the game feel like
it's jumping around anyway Generally I'd like to have it active on by default. I thought maybe we can activate it if FPS are over 200, since more FPS make the jumping interpolation smoother. (also monitor's refresh rate)
This scheme doesn’t sound very fps dependent. Why is it?
Avatar
Avatar
Learath2
This scheme doesn’t sound very fps dependent. Why is it?
Jupstar ✪ 2024-10-02 07:51
At least my brain thinks the impact is negitble on 240hz
07:51
I think it's a brain thing
07:51
the frames come out faster so the brain has more info
07:52
On 60hz it felt like it jumped quite hard xd
Avatar
heinrich5991 2024-10-02 07:52
they dont reach out to us for months until they leaked it & then the fun begins.
@Avolicious what's the fun there? going back and cleaning up the malicious logins?
Avatar
Avatar
Jupstar ✪
ah, i think that part was about our idea to make it more smooth
I was going to implement variable amount of fast input between 0-20ms so you can set it to 10ms and experience less jitter but the issue with this is that it requires the client to lerp between 3 world states during a single intratick period. Basically like this 0 -------------- 1 -------------- 2 ^ Intratick = 0 here ^ Intratick = 1 here but the client only saves 2 values at a time which makes it so you have to change a bunch of stuff
Avatar
Avatar
Tater
I was going to implement variable amount of fast input between 0-20ms so you can set it to 10ms and experience less jitter but the issue with this is that it requires the client to lerp between 3 world states during a single intratick period. Basically like this 0 -------------- 1 -------------- 2 ^ Intratick = 0 here ^ Intratick = 1 here but the client only saves 2 values at a time which makes it so you have to change a bunch of stuff
Jupstar ✪ 2024-10-02 07:53
Yeah that is defs also a cool idea 😄
07:53
At least to see if that still feels smoother
Avatar
yeah but it probably doesn't feel as good
07:54
idk if there is any perfect solution, I think there probably isn't because the game will always run on 50tps steps
Avatar
Jupstar ✪ 2024-10-02 07:55
yep
Avatar
Avatar
heinrich5991
they dont reach out to us for months until they leaked it & then the fun begins.
@Avolicious what's the fun there? going back and cleaning up the malicious logins?
Avolicious 2024-10-02 07:55
They forget their e-mail they used, mostly creating new discord accounts, so its hard to verify if they are the real owner of this account
07:55
This is the "fun" part
Avatar
heinrich5991 2024-10-02 07:55
ah
07:55
so it does happen 😦
Avatar
Avatar
Tater
idk if there is any perfect solution, I think there probably isn't because the game will always run on 50tps steps
There can be no perfect solution to prediction, it’s a prediction after all
Avatar
heinrich5991 2024-10-02 07:55
let's hope there's less of this with steam-bound accounts
Avatar
Unless you invent time travel I guess
Avatar
well this is like a meta sub-tick prediction where you try to fake a higher tickrate
07:56
you're predicting where the tee will be in 0.5 ticks from now
Avatar
Avatar
heinrich5991
let's hope there's less of this with steam-bound accounts
Avolicious 2024-10-02 07:57
I was also thinking of linking steam accounts too 😄
Avatar
Avatar
Tater
you're predicting where the tee will be in 0.5 ticks from now
But it still increases the odds of a mispredict by predicting at all
Avatar
well if you don't predict there cannot be a mispredict
07:57
so infinity% increase in odds
Avatar
Exaclty, and thus less jitter
Avatar
Avatar
Learath2
But it still increases the odds of a mispredict by predicting at all
Jupstar ✪ 2024-10-02 07:57
Tbf "normal" prediction almost always works for the local tee. This one always breaks it even for the local tee
07:58
fast input is like a bet
07:58
that u don't change the direction xD
Avatar
also you pay 20ms ping penalty if you have antiping on for the privilege to make this bet
Avatar
Avatar
Jupstar ✪
Tbf "normal" prediction almost always works for the local tee. This one always breaks it even for the local tee
If it always breaks you might be doing something wrong. Afaik, the client technically actually has all the information needed to pretend there is 0 ping and even do this subtick fakery perfectly. As long as it’s the local tee and there are no other tees in the way
Avatar
Avatar
Learath2
If it always breaks you might be doing something wrong. Afaik, the client technically actually has all the information needed to pretend there is 0 ping and even do this subtick fakery perfectly. As long as it’s the local tee and there are no other tees in the way
Jupstar ✪ 2024-10-02 08:00
this isnt anti ping
08:00
this is predicting the future
08:00
i also call it future prediction 😬
08:01
it doesnt have enough info inside the sub tick
Avatar
All predictions are by definition about the future, it’s just that you are using a different reference time
Avatar
Jupstar ✪ 2024-10-02 08:01
so it kinda has to hope the input doesnt change during the same sub tick
Avatar
Avatar
Learath2
All predictions are by definition about the future, it’s just that you are using a different reference time
Jupstar ✪ 2024-10-02 08:01
Yeah but, normally u talk about ticks here u talk about subticks
08:02
in some sense, if u say 1 tick is 1 time unit. then this doesn't make sense
Avatar
regular prediction is just the client pretending to be the server, this is like trying to know what the next tick will be before the server or the client knows
Avatar
Avatar
heinrich5991
does regeneration of the ingame login invalidate the old token?
Avolicious 2024-10-02 08:04
Ah, and we have people trying to iterate over login codes 😄
08:04
Generating them randomly & trying to login
Avatar
Avatar
Jupstar ✪
so it kinda has to hope the input doesnt change during the same sub tick
Why don’t you stay behind one subtick at all times? Then you will never get jitter from this and you will only be 1 subtick behind of “truth”
Avatar
Avatar
Avolicious
Ah, and we have people trying to iterate over login codes 😄
Jupstar ✪ 2024-10-02 08:04
lmao
Avatar
Avatar
Avolicious
Ah, and we have people trying to iterate over login codes 😄
I thought the login codes are huge, why would anyone even attempt that
Avatar
Avolicious 2024-10-02 08:05
¯\_(ツ)_/¯
Avatar
Avatar
Avolicious
Generating them randomly & trying to login
Kids ™️
Avatar
Avolicious 2024-10-02 08:05
It gets detected anyways
08:05
then they open a ticket & ask why they cant login
lol 1
08:05
Seen that a few times now
08:05
🤣
Avatar
Avatar
Learath2
Why don’t you stay behind one subtick at all times? Then you will never get jitter from this and you will only be 1 subtick behind of “truth”
Jupstar ✪ 2024-10-02 08:05
u'd need to be 1 tick behind. in other words, u get what ddnet is doing rn anyway 😄
08:05
well up to 1 tick
08:06
to be precise
Avatar
to be fair I think all games do it how ddnet does it atm, it's sort of the objectively correct way to do it
Avatar
I don’t seem to have the right words to convey this. Worry not, I’ll show you how when I make ddnet-asm
Avatar
idk what minecraft does tho
Avatar
МотКот 2024-10-02 08:07
guys, who knows how to add such a thing to their server, or create their own???
kek 1
Avatar
somehow it runs at 20tps and I don't think the client has any input lag or server desyncs
Avatar
Avatar
Tater
to be fair I think all games do it how ddnet does it atm, it's sort of the objectively correct way to do it
Jupstar ✪ 2024-10-02 08:07
yeah, normally games simply do more ticks if u need better gameplay xd
Avatar
Avatar
Tater
to be fair I think all games do it how ddnet does it atm, it's sort of the objectively correct way to do it
A fair bit of games just let the client run their own simulation entirely and they trust the client for it mostly
Avatar
Jupstar ✪ 2024-10-02 08:08
true
Avatar
Avatar
Jupstar ✪
yeah, normally games simply do more ticks if u need better gameplay xd
Avolicious 2024-10-02 08:08
And in CS case the server and client can negotiate the tick-rate 😏
Avatar
Jupstar ✪ 2024-10-02 08:08
i think minecraft also trusts the client?
08:08
at least in past u could just fly xD
Avatar
Avatar
Jupstar ✪
i think minecraft also trusts the client?
This would be my guess with all the rampant cheating
Avatar
it's not so simple
08:08
the minecraft client and server have a complex relationship
08:08
a highly janky one
Avatar
Jupstar ✪ 2024-10-02 08:08
time for minetee, the better minecraft
Avatar
Jupstar ✪ 2024-10-02 08:09
@Avolicious is it a secret how your login tokens are generated?
08:09
like what algo
Avatar
Avolicious 2024-10-02 08:09
Algo = os.random
Avatar
Jupstar ✪ 2024-10-02 08:09
i see so just random bytes, 32?
Avatar
Avolicious 2024-10-02 08:09
Yep
08:10
No need for complex computing
Avatar
Avatar
МотКот
guys, who knows how to add such a thing to their server, or create their own???
МотКот 2024-10-02 08:10
who knows???
Avatar
Jupstar ✪ 2024-10-02 08:10
yeah, that is defs unbreakable for any normal player 😄
Avatar
ok wtf
08:10
minecraft has 50ms input delay??
08:10
The physics engine runs at 20 ticks per second, meaning the game's physics are updated every 50ms. This includes the player’s position and speed, the environment, and entities. In-game actions are performed at the end of each tick, regardless of the time or order in which they were called. Due to the game working this way, inputs may take up to 50ms of delay between the button press and their activation.
Avatar
Jupstar ✪ 2024-10-02 08:10
i mean in 3d everything feels different anyway
Avatar
idk how I never noticed it
08:11
I guess you get used to it
Avatar
МотКот 2024-10-02 08:11
guys help please
Avatar
Jupstar ✪ 2024-10-02 08:11
also minecraft is kinda slow
Avatar
jumping is a fast action
Avatar
Jupstar ✪ 2024-10-02 08:11
if it would add osu gameplay u'd probs notice it easier xdd
Avatar
Avatar
Jupstar ✪
yeah, that is defs unbreakable for any normal player 😄
Avolicious 2024-10-02 08:11
We detect bruteforce attacks & block the ip 😄 So yeah, its pretty unbreakable
Avatar
Avatar
Avolicious
We detect bruteforce attacks & block the ip 😄 So yeah, its pretty unbreakable
Jupstar ✪ 2024-10-02 08:12
i guess even without it would be unbreakable, but yeah that makes it impossible
Avatar
Avatar
Tater
The physics engine runs at 20 ticks per second, meaning the game's physics are updated every 50ms. This includes the player’s position and speed, the environment, and entities. In-game actions are performed at the end of each tick, regardless of the time or order in which they were called. Due to the game working this way, inputs may take up to 50ms of delay between the button press and their activation.
Avolicious 2024-10-02 08:12
https://github.com/PaperMC/Folia might be interesting tho
Avatar
I think some crypto wallets might use less bits than the kog login token
Avatar
Jupstar ✪ 2024-10-02 08:13
also kog servers need to actively report if the token was correct. that alone is a rate limit
Avatar
Avatar
Jupstar ✪
also kog servers need to actively report if the token was correct. that alone is a rate limit
Avolicious 2024-10-02 08:13
It works async, so you could theoretically spam login tokens
08:14
As its just a chat message/command
08:14
every chat message/command is an event
08:14
and treated that way
Avatar
Jupstar ✪ 2024-10-02 08:14
a ed25519 is also just 32bytes long
08:14
and u often have the public key to it
Avatar
Avatar
МотКот
guys, who knows how to add such a thing to their server, or create their own???
1) you need to come up with a name for the community 2) draw a logo sized 128x64 3) launch about 20 servers with a Linear map 4) wait until there are 30-40 people online 5) create a request to add a community via GitHub https://github.com/ddnet/ddnet/issues or Discord bot #✉-create-a-ticket
Avatar
Avatar
Avolicious
https://github.com/PaperMC/Folia might be interesting tho
idk this is a lot of work to get a less stable version which doesn't support plugins and still only has 2x-3x total players
Avatar
Avatar
Jupstar ✪
yeah, that is defs unbreakable for any normal player 😄
It’s probably unbreakable period. I don’t imagine any modern linux kernel shipping with subpar /dev/urandom
Avatar
Avatar
Tater
idk this is a lot of work to get a less stable version which doesn't support plugins and still only has 2x-3x total players
Avolicious 2024-10-02 08:15
Paper is fairly stable, Folia is just an addition
Avatar
Avatar
Matodor
1) you need to come up with a name for the community 2) draw a logo sized 128x64 3) launch about 20 servers with a Linear map 4) wait until there are 30-40 people online 5) create a request to add a community via GitHub https://github.com/ddnet/ddnet/issues or Discord bot #✉-create-a-ticket
МотКот 2024-10-02 08:15
thank you, I'll try
👍🏻 1
Avatar
Avatar
Avolicious
Paper is fairly stable, Folia is just an addition
did you read the github?
08:16
Current broken API Most API that interacts with portals / respawning players / some player login API is broken. ALL scoreboard API is considered broken (this is global state that I've not figured out how to properly implement yet) World loading/unloading Entity#teleport. This will NEVER UNDER ANY CIRCUMSTANCE come back, use teleportAsync Could be more
Avatar
Avatar
Tater
The physics engine runs at 20 ticks per second, meaning the game's physics are updated every 50ms. This includes the player’s position and speed, the environment, and entities. In-game actions are performed at the end of each tick, regardless of the time or order in which they were called. Due to the game working this way, inputs may take up to 50ms of delay between the button press and their activation.
Conclusive proof that tickrate isn’t that important. It’s all in the brains of impressionable young men
Avatar
Avatar
Matodor
1) you need to come up with a name for the community 2) draw a logo sized 128x64 3) launch about 20 servers with a Linear map 4) wait until there are 30-40 people online 5) create a request to add a community via GitHub https://github.com/ddnet/ddnet/issues or Discord bot #✉-create-a-ticket
МотКот 2024-10-02 08:16
20 servers? and how do people who have only 3 servers create?
Avatar
Avatar
МотКот
20 servers? and how do people who have only 3 servers create?
20 for example
Avatar
Avatar
Avolicious
Paper is fairly stable, Folia is just an addition
I think Folia is a fork of paper not an addon, it's rewrites the entire engine
Avatar
Avatar
Matodor
20 for example
МотКот 2024-10-02 08:17
okay
Avatar
it is cool tho
Avatar
Avatar
Tater
I think Folia is a fork of paper not an addon, it's rewrites the entire engine
Avolicious 2024-10-02 08:17
Folia and Paper is from the same devs 😄
08:17
But yeah, they are adding multithreads to it
08:18
or atleast they try
08:18
but all the minecraft server implementation differ a bit
08:18
from the original implementation
Avatar
Avatar
Tater
Current broken API Most API that interacts with portals / respawning players / some player login API is broken. ALL scoreboard API is considered broken (this is global state that I've not figured out how to properly implement yet) World loading/unloading Entity#teleport. This will NEVER UNDER ANY CIRCUMSTANCE come back, use teleportAsync Could be more
Did they multithread minecraft?
08:19
it's region based
Avatar
That’s smart, I wonder how they handled the boundaries of the threads
Avatar
Avatar
Learath2
That’s smart, I wonder how they handled the boundaries of the threads
Avolicious 2024-10-02 08:20
Hardware
08:20
What hardware will Folia run best on? Ideally, at least 16 cores (not threads).
Avatar
I think it would be cool if there was a multi instance version and associated client mod so you could scale a single world to infinite players at the cost of boundaries
Avatar
Avolicious 2024-10-02 08:21
Lets assume they have 16 cores and HT enabled 😄
08:21
Thats an expensive server tho
Avatar
I meant as in how they handled something crossing the boundary from one threads authoritative region to the other
Avatar
I think it's dynamic
08:22
For a server with many spread out players, Folia will create many spread out regions and tick them all in parallel on a configurable sized threadpool. Thus, Folia should scale well for servers like this.
Avatar
Jupstar ✪ 2024-10-02 08:22
contention incoming
Avatar
Jupstar ✪ 2024-10-02 08:23
i wonder how fast it would be in a system programming language
08:23
java is always like twice as slow xd
Avatar
it appears to be very complicated (edited)
Avatar
Avatar
Tater
For a server with many spread out players, Folia will create many spread out regions and tick them all in parallel on a configurable sized threadpool. Thus, Folia should scale well for servers like this.
Hm, this sounds very hard to do, I’ll have to read it
Avatar
I agree and it looks like they tried very hard
Avatar
Avolicious 2024-10-02 08:24
Inter-region operations Inter-region operations refer to operations that work with other regions that are not the current ticking region that are in a completely unknown state. These regions may be transient, may be ticking, or may not even exist.
Avatar
Stuff like redstone crossing the boundary sounds impossible to handle properly
Avatar
they probably do not care
08:25
paper does not even have vanilla redstone mechanics normally
Avatar
YourParanoia 2024-10-02 08:33
hi, what should I do if I was banned for a bot client, but I don't use it and no CFGs, please help
Avatar
Avatar
YourParanoia
hi, what should I do if I was banned for a bot client, but I don't use it and no CFGs, please help
were you using any custom client
Avatar
YourParanoia 2024-10-02 08:34
no
08:34
client or stiam
08:34
steam*
Avatar
for how long did you get banned
Avatar
YourParanoia 2024-10-02 08:35
1 day , next time for a year , I don 't want to , it 's a Varna - type system
08:35
\
Avatar
it should be a week next time if i remember correctly
Avatar
Avatar
YourParanoia
\
Jupstar ✪ 2024-10-02 08:36
if you are 100% certain u used steam version. #✉-create-a-ticket -> ban appeal But be prepared to be rejected
Avatar
YourParanoia 2024-10-02 08:36
okey
08:37
thanks
Avatar
Avatar
Learath2
Jupstar ✪ 2024-10-02 08:40
Is this the past?
08:40
Or what is different this time
Avatar
It's today. They took down another emulator, Ryujinx
Avatar
Jupstar ✪ 2024-10-02 08:41
Ah I was confused by the yuzu subreddit xD
Avatar
Oh, yeah the subreddit is still there
Avatar
morning fellas
Avatar
アリヂン 2024-10-02 09:06
ohayou mr ryozuki owo
Avatar
Avatar
Learath2
fuck Nintendo lmao
Avatar
МотКот 2024-10-02 10:40
who knows how to fix the fact that emotions cannot be spammed on my server?
Avatar
Avatar
МотКот
who knows how to fix the fact that emotions cannot be spammed on my server?
Jupstar ✪ 2024-10-02 10:42
Avatar
МотКот 2024-10-02 10:42
thx
Avatar
Jupstar ✪ 2024-10-02 10:42
sv_emoticon_ms_delay is probably what u want
Avatar
MilkeeyCat 2024-10-02 10:59
@Learath2 what do you think about variable shadowing?
Avatar
Avatar
MilkeeyCat
@Learath2 what do you think about variable shadowing?
Idk, no strong opinions on it
Avatar
Avatar
MilkeeyCat
@Learath2 what do you think about variable shadowing?
heinrich5991 2024-10-02 11:01
depends on the language, I'd guess
Avatar
MilkeeyCat 2024-10-02 11:03
I like it in rust so Ill yoink it to my language xd
Avatar
GitHub BOT 2024-10-02 14:14
1ca1e27 Add BagleR to staff - def-
Avatar
Avatar
GitHub
Click to see attachment 🖼️
@Learath2 ? :(
Avatar
LOL, I guess BagleR got bored of waiting for me to add people
14:49
Ok ok, I'll do it now
14:50
It's your weird name you know. I started adding people, then I couldn't find your player profile link then I stopped
KEKW 1
15:03
@heinrich5991 sorry for ping, just for clarification, did you test 0.5 spec .json and its outcome from generate.py in libtw2?
15:04
seems it misses NETMSG_SERVERINFO
15:05
ah seems it's hardcoded, there's nothing in spec xd
Avatar
Jupstar ✪ 2024-10-02 15:07
OMFGGGG CHILLER
15:07
YOU DID NOT XDDDDDD
Avatar
“Systems program building is an entropy-decreasing process, hence inherently metastable. Program maintenance is an entropy-increasing process, and even its most skillful execution only delays the subsidence of the system into unfixable obsolescence.” ― Frederick P. Brooks Jr., The Mythical Man-Month: Essays on Software
15:09
what u think
Avatar
Avatar
Ryozuki
“Systems program building is an entropy-decreasing process, hence inherently metastable. Program maintenance is an entropy-increasing process, and even its most skillful execution only delays the subsidence of the system into unfixable obsolescence.” ― Frederick P. Brooks Jr., The Mythical Man-Month: Essays on Software
Jupstar ✪ 2024-10-02 15:10
Better dialog than anything in frieren (edited)
kek 1
15:10
its from there
Avatar
Jupstar ✪ 2024-10-02 15:10
What holds you back?
Avatar
money
15:11
and that
15:11
i barely read books i buy
15:11
XD
15:11
ill ask my company to buy it
15:11
they bought me the x86 asm book
Avatar
Jupstar ✪ 2024-10-02 15:11
I never read a book from start to finish
15:11
So I can relate
15:12
That is also why I suck so hard at expressing myself
15:12
😏
Avatar
wrong ❗
Avatar
@Jupstar ✪ i like this quote more
15:14
The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures.... Yet the program construct, unlike the poet's words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself. —Fred Brooks, The Mythical Man-Month
15:15
programmers are artists that build things that can make stuff that also build things
15:15
a artist just makes a painting and thats it
Avatar
Jupstar ✪ 2024-10-02 15:15
well programming is like playing god
Avatar
yes
Avatar
Jupstar ✪ 2024-10-02 15:15
your own physics
Avatar
we gods
15:15
and if u use rust
15:15
ur godlier
Avatar
Jupstar ✪ 2024-10-02 15:15
your own what do i know
Avatar
kek
15:15
ur a safer god
15:15
gigachad poggers2
Avatar
Avatar
Ryozuki
and if u use rust
Jupstar ✪ 2024-10-02 15:15
rust is the language of gods
Avatar
“The general tendency is to over-design the second system, using all the ideas and frills that were cautiously sidetracked on the first one.”
15:16
so true
15:16
is dd-pg over designed?
Avatar
Avatar
Ryozuki
is dd-pg over designed?
Jupstar ✪ 2024-10-02 15:17
In some aspects probably it is already
Avatar
“By documenting a design, the designer exposes himself to the criticisms of everyone, and he must be able to defend everything he writes. If the organizational structure is threatening in any way, nothing is going to be documented until it is completely defensible.”
15:17
this guy got some nice quotes
Avatar
Jupstar ✪ 2024-10-02 15:18
One thing I like about many rust things is, that you understand the intend without the docs
troll 1
15:18
I think this is generally also better
Avatar
Avatar
Jupstar ✪
One thing I like about many rust things is, that you understand the intend without the docs
gimme generics
Avatar
Jupstar ✪ 2024-10-02 15:18
But everytime that is not the case, it sucks even more
Avatar
ill make any code unreadable
Avatar
Avatar
zhn
ill make any code unreadable
Jupstar ✪ 2024-10-02 15:19
But the way rust does generics is abstracted in a sense, that you most likely need traits too
15:19
But I understand what you mean
Avatar
rust generics are not that abstracted tbh
Avatar
Avatar
zhn
gimme generics
generics and traits are a way to express logic that u cant do wrong
Avatar
its kinda painless to work with cpp templates
Avatar
Avatar
zhn
rust generics are not that abstracted tbh
what doesthat mean
15:20
rust is more strongly typed than cpp
Avatar
Avatar
Jupstar ✪
Better dialog than anything in frieren (edited)
Don't make me crime you
Avatar
also it has lot of nice patterns
15:20
like new types
Avatar
Avatar
Ryozuki
generics and traits are a way to express logic that u cant do wrong
please give me some notes on how to make good abstracted proxy trait
Avatar
or type state pattern
15:20
Rust by Example (RBE) is a collection of runnable examples that illustrate various Rust concepts and standard libraries.
Avatar
Avatar
Learath2
Don't make me crime you
Jupstar ✪ 2024-10-02 15:21
Sorry my heart. I love frieren from second 0 to second 33600
Avatar
Avatar
Jupstar ✪
rust is the language of gods
Clearly false, the bible is in Latin
Avatar
Avatar
zhn
please give me some notes on how to make good abstracted proxy trait
define abstracted proxy trait
Avatar
Avatar
Ryozuki
define abstracted proxy trait
im trying to implement multiprotocol using libtw2 and im struggling to come up with something good to abstract protocol away
Avatar
its true that in rust some patterns are better than others u might use in a more oop oriented lang
Avatar
Avatar
zhn
im trying to implement multiprotocol using libtw2 and im struggling to come up with something good to abstract protocol away
u know the best way? just use a enum
Avatar
currently its just small enum with underlying structs that implement same trait
Avatar
Avatar
Ryozuki
@zhn maybe this helps u, https://crates.io/crates/enum_dispatch
lemme check, thank you
15:24
ah its literally what im doing manually
15:24
big brain crate
Avatar
its like dyn dispatch with static dispatch perfomance
15:24
10x speed
15:25
test benches::boxdyn_homogeneous_vec ... bench: 5,900,191 ns/iter (+/- 95,169) test benches::refdyn_homogeneous_vec ... bench: 5,658,461 ns/iter (+/- 137,128) test benches::enumdispatch_homogeneous_vec ... bench: 479,630 ns/iter (+/- 3,531)
Avatar
Avatar
Ryozuki
its like dyn dispatch with static dispatch perfomance
I wonder why Rust fails to "devirtualize" these calls
15:26
or LLVM I guess, one or the other is at fault there
15:27
maybe its because it doesnt do exactly what c++ does
15:27
and clang is thought more for c++ sadly
15:27
idk
15:27
llvm*
Avatar
Or maybe I'm missing something, idk, it has happened before
Avatar
"I was surprised to see that the data members of the object had an additional layer of indirection." If you think about how dynamic dispatch is often used – structs/classes behind a pointer – you'll notice that C++ has in fact more layers of indirection. Or more like, in C++ you do sequential dereference, whereas Rust allows for parallel dereference. In Rust you have two pointers in the local trait object, and you can dereference them right away. In C++, you'll have to dereference the pointer that points to the data, and only after that data is fetched, you can dereference the pointer to the vtable.
Avatar
GitHub BOT 2024-10-02 15:28
Closes #8124 Now both in-game and in the editor, the number is at the top and the delay is at the bottom !image !image

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 (e...
Avatar
itneresting
15:28
People often miss this incredibly important nuance. The reason why it matters so much is that CPUs tend to be pretty good at predicting a pointer dereference (and thus prefetching the data before it's needed) when they see it coming up, but they can't predict a two-layer deref nowhere near as well. So the way Rust does it is great for perf. It's another one of those fundamental design decisions that make Rust more amenable to faster code execution than C or C++ (another crowd favorite being no pointer aliasing).
15:29
@Learath2 according to comments even dynamic dispatch rust should be faster than cpp
Avatar
It sounds sane to me, but I've lived long enough to know that this sort of architectural detail needs to be benchmarked on many different cpus to be certain about
Avatar
Avatar
zhn
@heinrich5991 sorry for ping, just for clarification, did you test 0.5 spec .json and its outcome from generate.py in libtw2?
i was wrong and used github search again. this shit gave me results from 0.7 master and no from 0.5 tag, im sorry again xd
15:36
not*
Avatar
GitHub BOT 2024-10-02 15:48
When on a server, GameClient()->m_Snap.m_SpecInfo.m_Active is true when spectating and false when ingame. In the demo player, GameClient()->m_Snap.m_SpecInfo.m_Active is always true except when using "Follow" specating mode (which is the default for client demos). This seems inconsistent to me. Either the client should always be considered spectating when using the demo player, or the client should also be considered ingame when following another player by selecting. I'd say it s...
Avatar
GitHub BOT 2024-10-02 16:10
21d378e Fix switch overlay text order - KebsCS 46630de Merge pull request #9093 from KebsCS/pr-fix-switch-overlay-text - def-
Avatar
Avatar
GitHub
Click to see attachment 🖼️
OMG CHAT IS THIS REAL????
Avatar
Avatar
meloƞ
OMG CHAT IS THIS REAL????
its fake watermelon
Avatar
@Ryu added to europe kekw
16:42
south african european gigachad
Avatar
GitHub BOT 2024-10-02 16:51
Closes #8238 The generated code is only used if the new code is not valid or has already been used, so the previous message didn't make sense !image

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 te...
Avatar
GitHub BOT 2024-10-02 17:36
Current AB data is kind of poor and requires processing client packets manually to get, for example, relatable client input info. I tried to include more variables to AB to make it easier for developers

Checklist

  • [x] Tested the change ingame
  • [ ] Provided screenshots if it is a visual change
  • [x] Tested in combination with possibly related configuration options
  • [ ] Written a unit test (especially base/) or added coverage to integration test
  • [x] Considered possible null po...
Avatar
@Learath2 Ryu is SA 😄
poggers2 1
Avatar
Koll Potato 2024-10-02 17:50
hi developas
17:50
love u
Avatar
Avatar
murpi
@Learath2 Ryu is SA 😄
You can fix it if you'd like. I was confused about some people as Ryu's ranks are all over the place serverwise
Avatar
Avatar
Learath2
You can fix it if you'd like. I was confused about some people as Ryu's ranks are all over the place serverwise
Avatar
Avatar
Learath2
You can fix it if you'd like. I was confused about some people as Ryu's ranks are all over the place serverwise
he is playing more on eu, keep it
Avatar
finally!
Avatar
Koll Potato 2024-10-02 18:07
whats this
18:07
bold font?
Avatar
thank you 5991 for providing such powerful tools, you can literally generate same thing for any other language i believe
Avatar
Avatar
Koll Potato
bold font?
no
18:08
0.5-0.6 bridge
18:08
quite simple atm
Avatar
Koll Potato 2024-10-02 18:08
i dont get it but seems epic
18:09
keep going dont give up
Avatar
Avatar
Learath2
You can fix it if you'd like. I was confused about some people as Ryu's ranks are all over the place serverwise
i identify as south african european american korean
kek 2
Avatar
Avatar
Ryu
i identify as south african european american korean
I'll add a section for you
Avatar
MilkeeyCat 2024-10-02 18:24
why does memset segfaults pepeW
Avatar
Avatar
zhn
0.5-0.6 bridge
Jupstar ✪ 2024-10-02 18:30
Avatar
Avatar
MilkeeyCat
why does memset segfaults pepeW
You are memsetting memory outside of your mapped memory
Avatar
MilkeeyCat 2024-10-02 18:37
sounds not good:\
Avatar
Avatar
MilkeeyCat
why does memset segfaults pepeW
Since you don't have any libc debug symbols, these things are rather annoying to debug. I would highly suggest linking to a debug libc when working with things this fundamental
18:38
Or, you know the signature of memset, and you know the amd64 calling convention, you can set a breakpoint before the call and look at what the register contains
18:39
Either rdi is directly outside your mapped regions, or rdx is too big
Avatar
MilkeeyCat 2024-10-02 18:40
ohh, i forgot that i commented out rdx
18:40
but it's used as 3rd argument register pepeW
Avatar
Isn't the signature of memset void *memset(void *dst, int/unsigned/whatever value, size_t len)?
Avatar
MilkeeyCat 2024-10-02 18:41
yea
Avatar
rdx is len, if it's too large you'll write outside your memory allocation
18:41
Then the cpu will do a page fault moment
18:42
Then the kernel will bonk you
Avatar
MilkeeyCat 2024-10-02 18:42
and i commented out 3rd argument registers because it's not cool
Avatar
LOL
Avatar
MilkeeyCat 2024-10-02 18:42
i guess it's time to handle it then 😬
Avatar
Where were you putting your 3rd argument?
18:43
I did not know you broke ABI this early on
Avatar
MilkeeyCat 2024-10-02 18:43
nono, all gud
18:43
you can see they are ordered from end in argument order
18:44
only rdx is commented xd
Avatar
Yeah so you were putting your 3rd argument into rcx, breaking abi, no? 😄
Avatar
MilkeeyCat 2024-10-02 18:45
i uncommented it and everything's fine (edited)
Avatar
I guess it's fine as long as you never call C ever
Avatar
MilkeeyCat 2024-10-02 18:46
nah, i just have to fix the fun stuff with multiplication/division
Avatar
I guess it'll be extremely annoying to fix something like add(10/5, 10/5, 3/5)
Avatar
MilkeeyCat 2024-10-02 18:51
im so happy that at least i can pack integers xdd
Avatar
GitHub BOT 2024-10-02 19:07
Send list of all maps available in the maps folder on the server to authed clients, using version 18.7 or newer, that have access to the sv_map or change_map command, so the maps can be shown as console arguments for these commands. Progress of maplist sending is shown similar to rcon command sending progress. The maplist sending is implemented similar to the rcon command sending. Each tick the maplist for one particular client is updated. The maplist will be sent only after all rcon...
Avatar
Avatar
MilkeeyCat
im so happy that at least i can pack integers xdd
Wooooo
Avatar
MilkeeyCat 2024-10-02 19:09
that's 105 lines of my own programming language 🥹
19:10
and a few C functions santatrollet
Avatar
Avatar
MilkeeyCat
im so happy that at least i can pack integers xdd
You probably should have done AddRaw first, so you can use that for AddInt
19:10
But it would be a quick win if you do AddRaw now, it's trivial
Avatar
MilkeeyCat 2024-10-02 19:11
i added so much stuff because of int packing
19:11
>> << ~
Avatar
Though I guess it involves a mem copy call or a REP MOVSB which idk if you can generate yet
Avatar
MilkeeyCat 2024-10-02 19:11
idk wat's REP MOVSB
Avatar
REP MOVSB is a very rare instance of an instruction that works between two memory locations
Avatar
MilkeeyCat 2024-10-02 19:12
i can just call memcpy
Avatar
It moves memory to memory, 1 byte at a time, ECX times
Avatar
rep is more optimized
19:13
memcpy probs uses that tho
Avatar
It's basically a naive memcpy loop implemented in microcode
Avatar
Avatar
Ryozuki
rep is more optimized
oooh, this is a discussion of EXTREMELY hot debate
Avatar
well i think it depends a lot on the cpu and size of the alloc
Avatar
On modern architectures, since iirc 2012, it's better
Avatar
the implementation takes into acocount this
Avatar
As far as I'm aware, most architectures still share the vectorized memcpy implementation in glibc, since it performs well in many arches
Avatar
i need to find out how one can do portable simd without overhead
19:14
like i know ppl do it i dont know yet how it works
19:15
for example memcpy is optimized on my platform to use avx512
19:15
but how do they do it portably
19:15
and it doesnt incur a branch?
Avatar
FreeBSD uses rep movsq and rep movsb
Avatar
Avatar
Ryozuki
and it doesnt incur a branch?
You chunk, do 512 at a time until you have less, then use some other routine to clean up. It does incur a branch that is usually taken so well predicted
19:17
You first copy byte by byte until the dst is aligned, then you copy word by word until you can't anymore, then finish up copying byte by byte
19:19
If you are letting LLVM go at it, it's better if you just emit the naive byte copy loop and let LLVM optimize it per platform, as I said, sometimes rep movsb is better in some platforms
Avatar
yeah llvm has a intrinsic for all these ops
19:21
it even has memcpy.inline
19:21
The ‘llvm.memcpy.inline.*’ intrinsics copy a block of memory from the source location to the destination location and guarantees that no external functions are called. Note that, unlike the standard libc function, the llvm.memcpy.inline.* intrinsics do not return a value, takes extra isvolatile arguments and the pointers can be in specified address spaces. (edited)
Avatar
Avatar
Learath2
You probably should have done AddRaw first, so you can use that for AddInt
MilkeeyCat 2024-10-02 19:25
it compiled first try and didn't even segfault poggers2 (edited)
Avatar
Avatar
MilkeeyCat
it compiled first try and didn't even segfault poggers2 (edited)
woooo
Avatar
MilkeeyCat 2024-10-02 19:27
now it's time to find out why it allocates 2x memory than it needs to feelsbadman
Avatar
u using malloc?
19:53
with malloc u can allocate like 4 bytes but maybe if u address the next bytes it wont segfault
19:53
but its not smth u should rely xd
19:53
but maybe thats what happens?
Avatar
MilkeeyCat 2024-10-02 19:54
no, it allocates a lot of memory on stack :p
Avatar
GitHub BOT 2024-10-02 20:50
045738d show ui debug info inside editor - dobrykafe f10d476 Merge pull request #9091 from dobrykafe/pr-editor-ui-debug - Robyt3
Avatar
GitHub BOT 2024-10-02 22:15
Idea from #6140 Adds cl_scoreboard_points to display points on the scoreboard instead of time. Unless you're on Multeasymap, players who clear a map usually haven’t finished it yet, so it's helpful to see their points if you're going to play with them in team 0. I'm not sure if there's a better way to check if we're on a DDNet server, which is why it sends the same message back. https://github.com/user-attachments/assets/c96a1b65-e4e7-4a25-98c5-7339e37e7405

Checklist

...
Avatar
I'll test it out, see if I can get over the 5k fps xd
Avatar
frame generation for a 2D game lol
23:46
it's almost certainly more expensive than rendering an entire ddnet frame
Exported 440 message(s)
Timezone: UTC+0