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-05 00:00:00Z and 2024-06-06 00:00:00Z
Avatar
even if you only save 6 bits per mouse int you save 192 bits over the whole bundle which is more than the 32 for the zoom value
05:45
248225c Refactor client input event handling - Robyt3 0d9f673 Include types.h instead of system.h in input.h - Robyt3 5eda5e9 Merge pull request #8395 from Robyt3/Client-Input-Event-Refactoring - def-
Avatar
Avatar
Tater
and then just assume that clients won't change their zoom value extremely fast, a mouse position with wrong magnitude is still much better than no input at all (edited)
multiview is constantly changing the zoom level though. though i guess in this case mouse events aren’t being sent in the first place
Avatar
I don't think input relability is a concern when you're spectating
Avatar
well i definitely do not want any misinterpretations of my inputs
06:02
and i do change zoom as i play
06:03
with the scroll wheel so it’s many smaller changes 😃
06:04
97623c3 Remake Ukrainian l10n - EGYT5453 c7dc7b6 Merge pull request #8448 from EGYT5453/uapdte - def-
Avatar
Avatar
Ewan
well i definitely do not want any misinterpretations of my inputs
yeah but it's only when your network is lagging or dropping packets (edited)
06:34
the less unnecessary data we send the more protection you can get from lag
06:35
under regular conditions nothing changes
Avatar
i think there is a good way to do it without factoring zoom in
Avatar
ok how so?
Avatar
the bitpacking and xoring then compressing methods seemed promising
Avatar
I'm doing that already
Avatar
and is that not enough
06:36
ultimately this is not a lot of data
Avatar
well it is
06:36
kind of a lot of data
Avatar
Gm tater
cat_woah 1
Avatar
late for us
06:37
gm teero
👋 1
Avatar
presumably deen is going to tell me that we can't have 2000ms of input bandwidth but I want to get as much as we can
06:38
the current bandwidth is 0.5kB-1.5kB/s. if you send a full 100 inputs per tick then it goes up quite a lot to like 15kB-20kB/s
06:38
(for upload)
06:38
currently we are doing half that and there’s not a huge need to go higher afaict
06:39
tho i missed a lot of the convo
06:39
half what?
Avatar
servers run at 50 tps
06:39
does client send 100 and it processes 2 frames in 1 tick? (edited)
Avatar
no I mean every tick the client would send 100 inputs if you were doing a full 2000ms of input bundling but that's not really nessecary anyway
Avatar
oh i misread
Avatar
so it would go from 50 inputs sent per second to 5000
06:40
but obviously we don't need 100x
06:41
300-400inputs per second is enough to get very good relability
06:42
I think targeting a max of 500ms (25 buffered inputs) is reasonable. any bigger than that is completely unplayable (edited)
Avatar
so what does this rly end up looking like
06:44
like is bandwidth rly the root of most of ddnet’s connection problems
06:44
the root of the connection issues is the lack of any relability in the critical input packets
06:45
which is what this is trying to fix
Avatar
it’s rare to see connection upload speeds that can’t handle 1 or 2 clients with ease and outbound player data can be sent at a way lower frequency by the server
06:45
and already is afaik
Avatar
wdym handle 1 or 2 clients
Avatar
it's about the server's bandwidth not the client
Avatar
are ddnet servers not run on servers with 100s of Mbps connections
06:46
idk
Avatar
having all clients send 20kB/s to the server would be a max of 10.24megabits/s which is sort of a lot
Avatar
Avatar
Ewan
are ddnet servers not run on servers with 100s of Mbps connections
idk
06:47
deen implied they are not
Avatar
i mean you’re right that we should get the bandwidth as conservative as possible
06:48
but not at the cost of playability like i think factoring zoom might do
06:48
another variable
Avatar
it will strictly only improve your playability over the current version
06:48
it can never make it worse than it already is
Avatar
well actually how can it even cause problems if zoom is factored in
06:49
is zoom being sent with each packet or as it’s changed
Avatar
the issue is that the mouse position is stored as 2 32 bit ints which are large and change on nearly every tick
Avatar
Avatar
Ewan
is zoom being sent with each packet or as it’s changed
in this hypothetical scenario
Avatar
it will be sent only once per packet and applied to all inputs in that packet instead of for each input
06:50
that way the mouse positions can be 12 bits instead of 32
Avatar
this is just in theory I'm not sure that's the best idea yet
Avatar
maybe the client should keep track of a separate zoom for the server then
Avatar
the zoom that the client already sends to the server is totally unrelated to this
06:51
it won't be touched
06:51
this is a new zoom value
06:51
only for mouse positions
06:52
but if the zoom can’t change between packets then there won’t be a problem
06:52
client can render whatever zoom
Avatar
well likely you are not spamming zoom in/out more than 3 times per second very often
Avatar
and even if you do the only difference is that the server will use a mouse angle which is millimeters wrong which makes the desync very small and probably not noticeable (edited)
06:54
you still get the same "angle" it's just slightly different because it gets rounded to the nearest integer position
06:54
where each pixel on your screen is an int
06:54
so its literally wrong by less than a pixel
Avatar
in some cases the value can actually be floating point iirc
06:55
i think SDL sends floats
Avatar
and it's only wrong if you drop packets and then change zoom while your network is dying and then a later input fills in the server buffer in that time
Avatar
Avatar
Ewan
in some cases the value can actually be floating point iirc
it's not
06:56
it uses ints
Avatar
maybe ddnet does
Avatar
your mouse pos is rounded to an int every time it moves afaik
06:56
that's why the aim bind works
Avatar
Avatar
Tater
you still get the same "angle" it's just slightly different because it gets rounded to the nearest integer position
Btw scaling target pos with zoom is still broken af
Avatar
You can have targetxy == 0 at some zooms
06:57
And generally zooming in is broken with mouse angles
06:57
Because everything is truncated to integers
Avatar
this might make hookline even less reliable lol
Avatar
Avatar
Ewan
this might make hookline even less reliable lol
It already is xd
Avatar
targetxy == 0 is explicity forbidden in the code
Avatar
Avatar
Ewan
are ddnet servers not run on servers with 100s of Mbps connections
European servers are mostly severed with high bandwidth like 100 to 1000 mbit/s. But in asia bandwidth is very expensive, esp. china
Avatar
Avatar
Tater
targetxy == 0 is explicity forbidden in the code
Only mouseposxy == is forbidden
Avatar
not true?
Avatar
targetxy does not care
06:59
it's removed on the client and server multiple times even
07:00
the idea is just you send the targets before doing this calculation, then do it on the server
Avatar
Avatar
Tater
the idea is just you send the targets before doing this calculation, then do it on the server
This can lead to targetxy being 0
07:01
it wouldn't even matter because it gets sanitized by the server as soon as it recieves the input (edited)
Avatar
(int)(1 * 0.6) == 0
Avatar
Avatar
Tater
it wouldn't even matter because it gets sanitized by the server as soon as it recieves the input (edited)
But it messes but the hook line smh When I put my mouse in the centre the hook line disappears and I hook to the top
07:02
When zoomed in
Avatar
I am not even planning to send hookline data in relability inputs
07:02
we do lots of corner cutting so you get more reliability
07:03
these inputs will only get used if the server didn't recieve your other ones
Avatar
just zooming in or out can make some edges possible or not That is bs
Avatar
that's fine
07:04
it won't change that
Avatar
You are disadvantaged when playing with more zoom than 10
Avatar
this is a seperate conversation
07:05
I'm just ranting about the inputs scaling by zoom dw
Avatar
also you're not disadvantaged, you still only get as many positions as there are pixels on your screen. they just have slightly different angles than at different zoom levels. you're actually disavantaged if you use a low resolution monitor
Avatar
Avatar
Tater
also you're not disadvantaged, you still only get as many positions as there are pixels on your screen. they just have slightly different angles than at different zoom levels. you're actually disavantaged if you use a low resolution monitor
Why is that? The positions stay the same not dependant on res
Avatar
hmm maybe that's true actually
07:06
I guess the game assumes you use 1920 res
Avatar
Avatar
Tater
also you're not disadvantaged, you still only get as many positions as there are pixels on your screen. they just have slightly different angles than at different zoom levels. you're actually disavantaged if you use a low resolution monitor
If you zoom to zoom 15 you have literally less angles for your hook to be in since integer precision is limited
Avatar
I wonder if you can see the cursor jumping multiple pixels when you move it slightly on a higher res screen
Avatar
Avatar
Tater
I wonder if you can see the cursor jumping multiple pixels when you move it slightly on a higher res screen
It will be the same distance on the monitor but yes
Avatar
Avatar
Tater
I wonder if you can see the cursor jumping multiple pixels when you move it slightly on a higher res screen
Yes
Avatar
Imagine you have a max mouse distance of 400. When zooming in 2x you would have the same precision as someone playing with mouse max distance 200
Avatar
why’s that
07:11
oh yeah,
07:11
hmm
Avatar
Avatar
Tater
the idea is just you send the targets before doing this calculation, then do it on the server
.
Avatar
not sure if you can do anything about that without changing physics a lot
Avatar
Avatar
Tater
not sure if you can do anything about that without changing physics a lot
???
Avatar
It was just added lmao
07:12
when
Avatar
The zoom scaling
Avatar
I thought the game sends mouse positions as int forever
Avatar
Avatar
Tater
I thought the game sends mouse positions as int forever
Yes
07:12
it was?
Avatar
Targetxy only gets scaled for the tp to mouse position cmd
07:13
That's the only reason
Avatar
Avatar
Tater
hmm
You could just send your zoom to the server and the server can handle it.
Avatar
would need to put it somewhere
07:14
it should be in however the server knows your screen window
07:14
for removing entities
Avatar
Oh that's true. So it could already be done?
Avatar
heinrich said it doesn't send the zoom value directly only the window position
Avatar
What's happening here?
07:15
The client sends it's cursor in zoomed state nowadays
Avatar
It used to not do it
Avatar
Avatar
Tater
heinrich said it doesn't send the zoom value directly only the window position
I guess you can figure that out
Avatar
Avatar
fokkonaut
It used to not do it
the idea is it could just send the non-zoomed value along with m_pClient->m_Camera.m_Zoom then the server can get the exact position by itself
07:17
not that I'm suggesting it should do this (edited)
07:17
just that it could
Avatar
Might be good, but if you plan on doing something in these regards, then please make sure dyncam will be supported properly, because it isnt. Neither with the way it was before nor now with the zoomed cursor being sent
Avatar
You can't get the correct position of dyncam on the serverside, only if the server knows the client uses dyncam (e.g. via a command to enable)
07:19
you could steal it from checksum with a lot of effort I think
💀 1
Avatar
Avatar
fokkonaut
You can't get the correct position of dyncam on the serverside, only if the server knows the client uses dyncam (e.g. via a command to enable)
How long has this been a thing?
Avatar
only cursor + zoom is fucked iirc
Avatar
hi fokkonaut
Avatar
I expect you would be the biggest proponent of the mouse zoom with your drawing feature on your server
07:23
so you can get exact position without zoomed mouse?
07:23
This is where it checks for the new clients
07:24
if they are new, we don't multiply it with the zoomlevel because they send it correctly
07:24
rather annoying that ddnet did not do this
Avatar
For older clients (before that change) I manually calculated the zoom level
Avatar
morning from gym
Avatar
Avatar
fokkonaut
For older clients (before that change) I manually calculated the zoom level
That seems to be the correct way. Physics should use a non-scaled version
Avatar
if you change it back then you need 3 ways to calculate mouse position
Avatar
Avatar
Ryozuki
morning from gym
Gm
Avatar
Avatar
Teero
That seems to be the correct way. Physics should use a non-scaled version
yeah I agree
Avatar
Avatar
Teero
That seems to be the correct way. Physics should use a non-scaled version
Yes, that's true. I was not really happy when I saw them merge this without issues
Avatar
Avatar
Tater
if you change it back then you need 3 ways to calculate mouse position
remove dyncam 😭
Avatar
what does dyncam have to do with this
Avatar
it just needs more data send to the server it can stay
Avatar
You need follow factor, deadzone etc
07:26
otherwise u cant calculate that pos
07:27
client should just send two
07:27
one zoomed and one unzoomed cursor pos
07:27
and unzoomed = physics
07:27
zoomed = do whatever u want
Avatar
We just talked about how huge those 2 32bit ints for targetxy are that's why I was not suggesting this
07:28
well, if u'd need to send follow factor, deadzone etc then it's not gonna be less
Avatar
Avatar
fokkonaut
well, if u'd need to send follow factor, deadzone etc then it's not gonna be less
that is also true I guees
Avatar
Could send it once, or only on change
👍 1
Avatar
Avatar
fokkonaut
well, if u'd need to send follow factor, deadzone etc then it's not gonna be less
But you only need to send them on joining and on changing them
Avatar
but idk if thats worth it
07:28
yea
Avatar
the zoom level changing edge hooks seems really bad actually?
07:29
like that was a bad change
Avatar
Avatar
Tater
the zoom level changing edge hooks seems really bad actually?
yes
07:29
do we have an issue for that?
Avatar
i always have to play around with different zoom to hit bad steep hooks
Avatar
yea :D
Avatar
well in that case it gives you an advantage lol
07:30
before it was like you had zoom =10 always
Avatar
Avatar
Tater
well in that case it gives you an advantage lol
Well no xd
Avatar
Avatar
Teero
Well no xd
yes
Avatar
if you play on zoom 10 it's the same as before
07:30
but if you line up an edge hook then zoom in/out and it goes away I feel that's not good
👍 2
Avatar
Avatar
Tater
if you play on zoom 10 it's the same as before
I guess you can get lucky with the int truncation and then hit the edge hook lmao
Avatar
lots of assumptions that everyone uses zoom 10 lol
Avatar
!image Precision has been changed due to this. We should revert this change where the mouse position gets sent in a zoomed state. A fix would be to keep the normal mouse pos for everything physics related and either send required values such as follow factor, deadzone etc so the server can create the real position (also for dyncam, as that's currently not working correctly and gives wrong positions),...
🍻 1
Avatar
Avatar
fokkonaut
one zoomed and one unzoomed cursor pos
Where would you store the scaled version? In CNetObj_PlayerInput? Would that break compatibility?
Avatar
Yes, that would break it
07:39
I think so
07:40
i'd create a new Ex object i guess ? havent really looked into all that in a while
Avatar
So a new netmsg just for camera related changes so guess? (edited)
Avatar
Before doing that we should probably wait on @heinrich5991 to approve smth in the issue
Avatar
I will always happily waste my time doing fun stuff
troll 1
Avatar
@Teero you have to be careful because some clients will still be sending the scaled mouse inputs
07:49
that's why I am a little upset that this was ever allowed cause it's going to require permanent backwards compatibility code to be fixed (edited)
Avatar
That's the reason I do not understand why @heinrich5991 let that one slip.
07:53
He himself said we have to discuss such things properly before.
08:04
gm
Avatar
Avatar
Tater
that's why I am a little upset that this was ever allowed cause it's going to require permanent backwards compatibility code to be fixed (edited)
Actually only 1 check for older clients that don't send scaled inputs. If the client doesn't send the camera netmsg we know it will be scaled except the version is lower than x
Avatar
Avatar
Teero
Actually only 1 check for older clients that don't send scaled inputs. If the client doesn't send the camera netmsg we know it will be scaled except the version is lower than x
seems a little annoying to track if the client sends the camera netmsg
08:13
you need extra state somewhere right?
Avatar
Avatar
Tater
you need extra state somewhere right?
Ye Just some bool m_IsTargetScaled
Avatar
idk where the server puts such stuff
Avatar
And each client will have some Params such as deadzone, follow factor etc
Avatar
I think you need to add it to some sort of reset function for handling swaps
08:15
idk it's not my concern :)
Avatar
Avatar
Teero
Actually only 1 check for older clients that don't send scaled inputs. If the client doesn't send the camera netmsg we know it will be scaled except the version is lower than x
inbetween versions(?)
Avatar
Avatar
zhn
inbetween versions(?)
wdym?
Avatar
Avatar
Teero
wdym?
scale thing wasn't there forever was it
08:17
i mean even older clients can play thia game justatest
08:17
or does ddnet check it already
08:17
latter i think xd
Avatar
it's the already scaled clients who you need to check for
Avatar
Avatar
zhn
i mean even older clients can play thia game justatest
Older clients inputs just don't get scaled by the server. Since they are not scaled by the client it's fine.
Avatar
so you propose to send additional data about camera parameters every input for newer clients
Avatar
Avatar
zhn
so you propose to send additional data about camera parameters every input for newer clients
Only on camera settings change and on join.
Avatar
Avatar
Teero
Only on camera settings change and on join.
hm i wonder if theres something you can manipulate server with
08:23
not on ddrace though
Avatar
@heinrich5991 didn't you want to unsort #8448 before merging? The diff ended up being massive for no reason
Avatar
I remade the Ukrainian translation, because its quality was "meh". Thanks to everyone who helped me on the way (especially @BlaiZephyr, @heinrich5991 and @Robyt3 ❤️) Checklist Tested th...
Avatar
It's also the only language file with a different order of strings
Avatar
I wanted to, but I forgot to do it yesterday and now deen has merged it
08:50
no way to undo, I guess
08:54
hmmm. we don't have a script to sort the translations, i seems?
08:54
weird oversight
08:54
@Learath2
08:54
I was thinking we could revert the commit and add it sorted again
08:54
but I can't find the sort function
Avatar
I doubt there is a sort function, is it even sorted normally?
Avatar
yes, seems to be sorted in other language files
Avatar
Does anyone know if the automapper rules format is described anywhere? Or is this a "custom/yolo" format and I need to hope, that ddnet get's it right?
Avatar
yolo format
Avatar
xD okay, an example of what may break is the length of the automapper rule name, I probably need to extract limits out of the client (edited)
Avatar
Avatar
heinrich5991
yes, seems to be sorted in other language files
Sorted by what though? german.txt:L482 is Yes. L488 is Name Plate
Avatar
hmmmmmm
Avatar
Maybe sorted within the file it's grabbed from?
Avatar
This gives a degree of freedom, making diffs worse. A script should be added and sorting should be checked in CI.
Avatar
i found a gigachad
09:07
Luca Saiu is a computer scientist specialised in programming languages, free software hacker and GNU maintainer.
09:07
can u imagine me having this blog when im old
Avatar
when phd thesis
09:12
and when ego check
Avatar
Avatar
Ryozuki
can u imagine me having this blog when im old
the guy is old in that picture?
09:13
damn gigachad look
Avatar
Avatar
Ewan
and when ego check
xd
Avatar
Avatar
Ewan
when phd thesis
phd doesn't pay off in computer science, at least where I life saddo (edited)
Avatar
I can't imagine a PhD in anything but Chemistry paying 😛
Avatar
Biology, if you're lucky, making the next vaccine (edited)
Avatar
ty for spelling
Avatar
It looked so wrong, I couldn't even tell what was wrong
Avatar
Avatar
AssassinTee
Biology, if you're lucky, making the next vaccine (edited)
I doubt any PhD that worked on any of the vaccines got anywhere near fairly paid
Avatar
probably true. At the end this is case-by-case, I also know a person who made a PhD in IT who now makes 6-figures, he is specialised in natural language processing with neural networks
09:22
but only, because he didn't stay in science and works in the industry (edited)
Avatar
I don't think you need a phd for that
Avatar
Machine learning people do get paid really well yeah. I wish I was more interested in that stuff
Avatar
Avatar
Learath2
I can't imagine a PhD in anything but Chemistry paying 😛
medicine?
Avatar
Avatar
Ryozuki
medicine?
Oh yeah duh
Avatar
Avatar
heinrich5991
I don't think you need a phd for that
Of course you don't need a phd for that, you just need a computer and brain power. But the topic he was working on was very very specific and he was an expert in this field and he keeps working on it at his job
Avatar
Avatar
Learath2
Machine learning people do get paid really well yeah. I wish I was more interested in that stuff
for me the only interesting part of ML are compilers related to optimizing that stuff
09:24
MLIR
Avatar
not interested in the hardware optimizing this stuff? Special TPUs and architectures?
09:25
there is a new dialect in MLIR
09:25
IR Definition Language Dialect IRDL is an SSA-based declarative representation of dynamic dialects. It allows the definition of dialects, operations, attributes, and types, with a declarative description of their verifiers. IRDL code is meant to be generated and not written by hand. As such, the design focuses on ease of generation/analysis instead of ease of writing/reading. Users can define a new dialect with irdl.dialect, operations with irdl.operation, types with irdl.type, and attributes with irdl.attribute.
09:26
irdl.dialect @cmath { irdl.type @complex { %0 = irdl.is_type : f32 %1 = irdl.is_type : f64 %2 = irdl.any_of(%0, %1) irdl.parameters(%2) } irdl.operation @mul { %0 = irdl.is_type : f32 %1 = irdl.is_type : f64 %2 = irdl.any_of(%0, %1) %3 = irdl.parametric_type : "cmath.complex"<%2> irdl.operands(%3, %3) irdl.results(%3) } }
09:26
looks pog
09:26
a ir to define irs dynamically
Avatar
Avatar
AssassinTee
phd doesn't pay off in computer science, at least where I life saddo (edited)
rly?
09:26
i guess it depends what niche ur studying
Avatar
Avatar
AssassinTee
Of course you don't need a phd for that, you just need a computer and brain power. But the topic he was working on was very very specific and he was an expert in this field and he keeps working on it at his job
ah, I see 🙂
Avatar
Avatar
AssassinTee
probably true. At the end this is case-by-case, I also know a person who made a PhD in IT who now makes 6-figures, he is specialised in natural language processing with neural networks
like ml i was about to say xd
09:27
a dialect for polynomial operations
Avatar
Solving any problem with a neural network always feels like a cop out to me. It's like saying the best minds of humanity couldn't figure it out. Just make some fuzzy guesses at it
Avatar
// A constant polynomial in a ring with i32 coefficients and no polynomial modulus #ring = #polynomial.ring<coefficientType=i32> %a = polynomial.constant <1 + x**2 - 3x**3> : polynomial.polynomial<#ring> // A constant polynomial in a ring with i32 coefficients, modulo (x^1024 + 1) #modulus = #polynomial.int_polynomial<1 + x**1024> #ring = #polynomial.ring<coefficientType=i32, polynomialModulus=#modulus> %a = polynomial.constant <1 + x**2 - 3x**3> : polynomial.polynomial<#ring> // A constant polynomial in a ring with i32 coefficients, with a polynomial // modulus of (x^1024 + 1) and a coefficient modulus of 17. #modulus = #polynomial.int_polynomial<1 + x**1024> #ring = #polynomial.ring<coefficientType=i32, coefficientModulus=17:i32, polynomialModulus=#modulus> %a = polynomial.constant <1 + x**2 - 3x**3> : polynomial.polynomial<#ring>
Avatar
Avatar
Learath2
Solving any problem with a neural network always feels like a cop out to me. It's like saying the best minds of humanity couldn't figure it out. Just make some fuzzy guesses at it
but it's working quite well ^^
09:29
it would be weird to not use it just because we can't explain its inner workings
Avatar
maybe elon musk's ai to solve the universe is a cop out scheme xd but ml definitely has use cases
Avatar
Avatar
heinrich5991
it would be weird to not use it just because we can't explain its inner workings
Indeed. It just doesnt align well with how I think
Avatar
there are also only so many great minds but millions of gpus
Avatar
I'd guess there are at least billions of GPUs and at least millions of great minds ^^
Avatar
In my mind AI is, by design, an imperfect system. It's not 100% accurate or even mathematically correct, but just a very very good guessing machine, because we can't do better then guessing good. You can throw an AI at problems, where it's known, that no perfect solution exists
10:04
That's also why chat AIs haluzinate, never learned the real answer? Make a best efford guess (which might be totally bs)
Avatar
I guess you're talking about LLMs? (edited)
10:05
"AI" is quite imprecise
Avatar
to be more specific, i am talking about neural networks
Avatar
e.g. support vector machines are very explainable
Avatar
you can throw a support vector machine at a problem, where it's known to to work so well. Same issue, it just makes the best guess
10:06
because a SVN normally just does linear operations even when the problem is parabolic in nature
Avatar
Afaik it's mathematical fact that a neural network can learn to perform any computable operation perfectly if it has enough neurons
Avatar
ye it can learn any function
Avatar
yes, and that's called overfitting
Avatar
Avatar
AssassinTee
you can throw a support vector machine at a problem, where it's known to to work so well. Same issue, it just makes the best guess
I disagree that SVM have the same issues as neural networks
Avatar
overfitting would be learning a different function
Avatar
SVM are explainable, you know what they can and cannot do
10:07
NN are not explainable
10:07
the difference of explainability is what makes NN so annoying
Avatar
Avatar
heinrich5991
NN are not explainable
It's such a shame that they don't learn in any logical manner 😄
Avatar
I am not talking about explainability. A small NN is nothing different then a multilayer-perceptron, which is also explainable. I am talking about unperfect solutions
10:09
(a multilayer-perceptron is a small NN to be correct here)
Avatar
i think he means explainable in a human context, not as in you don't know how it works under the hood
Avatar
I mean explainable as in you know how it solves tasks, i.e. you know what failure modes to expect, etc.
10:10
if you have a tiny NN, it might well be explainable, yes
Avatar
to be fair, i don't think that there is a 'correct' way to explain how to solve a task
Avatar
Avatar
louis
overfitting would be learning a different function
If your model has more parameters then the size of the problem, the model can simply learn every solution, like a map. You don't gain the generalization
Avatar
Avatar
AssassinTee
I am not talking about explainability. A small NN is nothing different then a multilayer-perceptron, which is also explainable. I am talking about unperfect solutions
sooo heuristics are bad?
10:11
heuristics are used in everyday CS, say, starting from A*
10:11
or solving SAT problems
Avatar
Avatar
AssassinTee
If your model has more parameters then the size of the problem, the model can simply learn every solution, like a map. You don't gain the generalization
yes, but a NN can still learn any function
10:11
including the generalized function
Avatar
yet, I wouldn't call modern SAT solvers bad, even though they can never tackle the general problem
10:12
they only tackle the practical problems
Avatar
Avatar
heinrich5991
sooo heuristics are bad?
no, but @Learath2 said he couldn't wrap his brain around why the best brains of humanity couldn't figure it out, so we do the next best thing: guessing good
Avatar
same for SAT solvers ^^
10:12
SAT solvers are also about guessing good
Avatar
It's not that I can't wrap my brain around it. It's that it feels like giving up on a problem and just throwing guesses at it instead
Avatar
I guess that feelign would also apply ot SAT solvers then?
10:13
you can kill a lot of problems with them
Avatar
I do understand these are incredibly hard problems that may even lack solutions
Avatar
Well, now I can go on a lil vacation with peace in mind (edited)
Replying to @GitHub GitHub: > def- […]
Avatar
The "gain" from NNs is, that they predict in a linear manner (just matrix multiplications, at least in the easiest cases), while you can technically throw them at problems way worse by nature (edited)
Avatar
Avatar
heinrich5991
I guess that feelign would also apply ot SAT solvers then?
Yes, but atleast these do something easy enough to understand guided by heuristics
Avatar
@heinrich5991 are NN SAT solvers even used in any important context
Avatar
SAT solvers do also guarantee you the correct solution if you use them correctly
Avatar
It's closer to A*
Avatar
or is it like a 'only false negative no false positive' thing
Avatar
NNs generating computer understandable proofs also give you "no false positives"
Avatar
A neural network is more like, you feed it input, you get output, there is some probability that the output is correct provided that your input is within some domain
Avatar
I'd put that under explainability
10:17
since we have no idea how they work, we can't put error bounds on what they do
10:17
for a SVM, we can try to do that
Avatar
Avatar
heinrich5991
NNs generating computer understandable proofs also give you "no false positives"
This feels even more wrong 😄 Bolt on even more to tame the inherent fallibility of them. Idk they just feel wrong to me. It's a feeling, you can't really explain it away
Avatar
or a decision tree/forest
10:19
I bet there are NN guided SAT solvers out there
Avatar
The randomness of it all just gives me a sense of general unease. Almost feels like in the future we won't be able to understand anything about computing at all. It'll just be throw data at the newest machine learning paradigm, if it doesn't work, oh well, nothing else we can do
Avatar
it may just be my opinion but i feel like the growth of new ML techniques will die down somewhat soon (10 years)
10:23
there's only so many new things you can do with linear algebra, as of now it just seems like we're only increasing the training compute
Avatar
It would be such a shame if we'd never see things as beautiful as say djikstras algorithm. There is no beauty in neural networks, they learn in a random manner, they improve with bruteforce conditioning
Avatar
using ML for fields like mathematics or computing where you need accuracy is usually a losing game, i doubt it'll take over in that sense
Avatar
Avatar
louis
it may just be my opinion but i feel like the growth of new ML techniques will die down somewhat soon (10 years)
I do secretly hope that there is a mathematical great barrier somewhere along the line there. Like the halting problem for computing or the incompleteness theorem
Avatar
just wait until openai releases chatgpt6 with humanoid girlfriends, you'll change your mind
Avatar
I'll allow that one
10:27
Anyway, these are all very subjective opinions of mine. In reality I do understand very well that some of these problems are way beyond our current level. Perhaps even beyond a mathematical great barrier of their own making them only solvable by an approach like this
Avatar
MTC guy DREAMS about this (edited)
Replying to @louis just wait until openai releases chatgpt6 with humanoid girlfriends, you'…
Avatar
oh yeah our amazingly huge forum community lmao
13:24
might want to update the random servermsg's
13:24
,/info should maybe display discord
Avatar
GitHub Actions now offers Arm-hosted runners with images built by Arm for developers to begin building on the latest and most sustainable processors on the market.
13:53
@heinrich5991 @Learath2 when ddnet arm test in ci
13:54
GitHub is ecstatic to unveil ArmⓇ-based Linux and Windows runners for GitHub Actions. This new addition to our suite of hosted runners provides power, performance and sustainability improvements for all your GitHub Actions jobs.
Avatar
I don't even know how well ddnet runs on aarch64
Avatar
ecstatic
when less corporate language?
Avatar
We expect to begin offering Arm runners for open source projects by the end of the year
(edited)
13:54
oh rip
Avatar
Avatar
Learath2
I don't even know how well ddnet runs on aarch64
runs nice on my m1
Avatar
why not "happy"? ^^
Avatar
They are more than happy, elated even
Avatar
@Robyt3 I'm not a terribly huge fan of your std::function use in #8395 they really don't optimize out very well usually and this is in the hot path, have you checked that this gets inlined properly? Perhaps a template ConsumeEvents would be more appropriate?
Avatar
Add IInput::ConsumeEvents function accepting a consumer std::function to replace the duplicate usage of the IInput::NumEvents, IInput::GetEvent and IInput::IsEventValid functions. Use an std::vecto...
Avatar
Avatar
Jupstar ✪
oh yeah our amazingly huge forum community lmao
Done
⭐ 1
Avatar
Seems to have been just a small typo, it's very understandable given how we mix meanings of the word "character" throughout that code.

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 t...
Avatar
Is there a possibility to start envelopes animation by touching switch tile? (edited)
Avatar
no
16:20
maybe u could place a teleporter inside the switch that ports you to a part in the map that looks identically but has some animation. but it wouldnt really start the animation at that exact point
Avatar
wtf is no login required option
Avatar
I heard about map to json converter, so maybe it's possible to replace switch tile index by envelopes index xD (no prog sry)
Avatar
Avatar
cyberFighter
wtf is no login required option
when the horse needs to ask for permission to go to a server that is kinda a login. and if u dont want this u can filter those (edited)
Avatar
Avatar
ejjie
I heard about map to json converter, so maybe it's possible to replace switch tile index by envelopes index xD (no prog sry)
that wont do anything but nice try 😄
Avatar
Avatar
Jupstar ✪
that wont do anything but nice try 😄
Can you share that converter? I would try to experiment xd
Avatar
Q: Do you think a strong root pw is still worth it for a private VPS where SSH does not allow pw login? I am kinda annoyed typing my pw when calling sudo commands lmao
Avatar
Avatar
ejjie
Can you share that converter? I would try to experiment xd
it wont work trust me
16:29
but the converter is called twmap
Avatar
Avatar
Jupstar ✪
Q: Do you think a strong root pw is still worth it for a private VPS where SSH does not allow pw login? I am kinda annoyed typing my pw when calling sudo commands lmao
I have passwordless sudo on servers
Avatar
Avatar
ejjie
Can you share that converter? I would try to experiment xd
A Rust library for parsing, editing and saving Teeworlds and DDNet maps
🫰 1
Avatar
Avatar
ejjie
Can you share that converter? I would try to experiment xd
the converter can only do the things the editor does
16:31
you won't be able to get new features out of ddnet using the converter
16:33
Say hello to a brand new, open-source Vulkan driver for NVIDIA hardware in Mesa.
Avatar
yeah nice how all those vk drivers pop up. I hope they can match performance of the closed source drivers at any time.
Avatar
Avatar
cyberFighter
wtf is no login required option
KoG's Authed servers were supposed to be filtered by that (even tho it has no effect right now because KoG is missing a flag :D)
16:38
e9d568d Fix console search highlighting. Close #8451 - Learath2 1519562 Merge pull request #8454 from Learath2/dd_pr_fixsearchhilite - def-
Avatar
Avatar
heinrich5991
you won't be able to get new features out of ddnet using the converter
He probably means to convert the map to json to change all occurrences of a switch tile to smth else or just switch up some numbers (edited)
Avatar
Avatar
ejjie
I heard about map to json converter, so maybe it's possible to replace switch tile index by envelopes index xD (no prog sry)
I don't think so, see above
Avatar
Oh I didn't see that
16:39
mb
Avatar
Avatar
ejjie
Is there a possibility to start envelopes animation by touching switch tile? (edited)
If you don't care about surroundings you can just use teleporters to teleport you to the position the quad is at
Avatar
It would be nice feature anyway if someone can do it
Avatar
Avatar
Teero
If you don't care about surroundings you can just use teleporters to teleport you to the position the quad is at
Issue is freeze switch tiles does not give visual experience to player
Avatar
Avatar
ejjie
Issue is freeze switch tiles does not give visual experience to player
What?
16:42
Ohh
Avatar
Bad lang lvl sry
Avatar
almost forgot to remind of #8434 and #8404
Replying to egyt Well, now I can go on a lil vacation
Avatar
Avatar
ejjie
Issue is freeze switch tiles does not give visual experience to player
You mean to allow a passage of a map with a switcher
16:44
You can always use a bunch of doors I guess xdd
Avatar
Ye but if I want to use deepfrz or tele tiles instead?
16:45
If player activates the switcher deepfrz tiles not hiding (edited)
16:46
There's still visible and just confusing
Avatar
Avatar
Learath2
@Robyt3 I'm not a terribly huge fan of your std::function use in #8395 they really don't optimize out very well usually and this is in the hot path, have you checked that this gets inlined properly? Perhaps a template ConsumeEvents would be more appropriate?
I don't know how to check that with the actual binary. According to quick-bench there's only little difference with GCC O1/O2. With clang 12.0, the std::function variant is faster, but with clang 17.0 the one without is faster. https://quick-bench.com/q/6oE7qyBNqcaSV_Vio2VY-Z4yrPE
Avatar
That sounds absurd 😄
Avatar
yeah, seems like measurement error with this benchmark tool
Avatar
Or perhaps compilers just evolved beyond my understanding, that's also possible
Avatar
is it contructing std::functions on the fly?
17:58
or is it just calling them?
Avatar
If the std functions are getting properly optimized out, I guess it can just be measurement error and all equal
Avatar
Avatar
Jupstar ✪
is it contructing std::functions on the fly?
i assume constructing (edited)
18:00
then it might do a heap allocation
18:00
calling it can be optimized to a certain degree.. with loop unrolling
Avatar
https://godbolt.org/z/5z5YW9WxT mh the stdfun does generate an extra layer of indirection, but in the specific case we have in the code I think we capture, capturing lambdas I think always entail a heap allocation, (though idk if the compiler can see through that too)
class CEvent { public: int m_Flags; int m_Key; uint32_t m_InputCount; char m_aText[32 * 4 + 1]; }; uint32_t m_InputCounter; std::vector<CEvent> m_vInputEvents; void ConsumeEventsStdFunction(std::function<void(const CEvent &Event)> Consumer) { for(const CEvent &Event : m_vInputEvents) { if(Event.m_InputCount == m_InputCounte...
18:10
eh, idk, I'd be more comfortable with a template there, but it's not very important I guess, compilers do seem to be smarter with std::function nowadays
Avatar
The .demo extension is supposed to be removed from the target filename when slicing demos, but anything after the last dot was being removed instead, e.g. test.abc.def was incorrectly replaced with test.abc.

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
  • [ ] Considered possi...
19:30
Remove separate handling of UI mouse position and delta in the editor and use the UI directly for this like in the gameclient. Raw cursor movements are redirected to the UI with the CUi::OnCursorMove function. The editor separately updates its world positions and delta after the mouse position was changed. The mouse world position for the editor is passed to the UI with the CUi::Update funtion as before, whereas the world position is unused in the gameclient. Use vec2s for mouse posi...
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
  • [ ] 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/ddnet/ddnet/#using-addres...
Avatar
Avatar
Learath2
https://godbolt.org/z/5z5YW9WxT mh the stdfun does generate an extra layer of indirection, but in the specific case we have in the code I think we capture, capturing lambdas I think always entail a heap allocation, (though idk if the compiler can see through that too)
only a heap allocation wrt. std::function, not in the template
20:24
ca89162 Fix wrong file extension being removed in demo cut popup - Robyt3 abc7d05 Merge pull request #8455 from Robyt3/Client-Demo-Cut-Filename-Fix - archimede67
20:25
f8e8421 Fix Ok-button of warning popup not being localized - Robyt3 80228ca Merge pull request #8457 from Robyt3/Client-Warning-Button-Localize - archimede67
Avatar
maybe you could relicense F-DDRace to a stricter licnese, the strictest would probably be AGPL
Avatar
Avatar
heinrich5991
only a heap allocation wrt. std::function, not in the template
Yes, for the template no mandatory heap allocation
Avatar
Avatar
heinrich5991
maybe you could relicense F-DDRace to a stricter licnese, the strictest would probably be AGPL
What would that mean ?
Avatar
Avatar
heinrich5991
maybe you could relicense F-DDRace to a stricter licnese, the strictest would probably be AGPL
would it really help tho? i guess this is kinda always legit to do, since his source is public and the lincense wasnt changed
Avatar
AGPL means that everyone who hosts the mod must publish their source code
Avatar
Avatar
Jupstar ✪
would it really help tho? i guess this is kinda always legit to do, since his source is public and the lincense wasnt changed
there are licenses that require attribution
Avatar
Avatar
heinrich5991
there are licenses that require attribution
"F-DDrace is a modification of Teeworlds, developed by fokkonaut."
20:31
on the github
Avatar
Avatar
heinrich5991
there are licenses that require attribution
Usually not very specific about where the attribution is though
Avatar
I thought there were some where attribution is required in the end product
Avatar
That is hard to put into legalese too. Is just a string in the binary enough?
Avatar
no. say it must be attribution to the people interacting with the software
Avatar
apparently you can add extra terms
Avatar
Does it have to be displayed or only if the user wants to see it? You could have it behind a weird command
Avatar
APGL has a extra section for such things
20:34
there u can require that the string is never removed or changed
Avatar
Avatar
Learath2
Does it have to be displayed or only if the user wants to see it? You could have it behind a weird command
in the same way or more prominent than in the original
Avatar
influencers in 10 years: homemade rtx 5090
Avatar
Replying to @heinrich5991 "egyt is the next contributor who contributes as much as Robyt3"
21:06
well
Avatar
You just need to do the same size commits 7 times more
Avatar
you want me to make 7 more translations?!
Avatar
More Like 7000 more Lines of Text/Code (every month),
Exported 502 message(s)