Guild icon
DDraceNetwork
Development / developer
Development discussion. Logged to https://ddnet.tw/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 2023-03-30 00:00:00Z and 2023-03-31 00:00:00Z
Avatar
Avatar
Patiga
also, if I have two positive floats a and b, which are neither NaN nor inf, then a % b < b should hold true
% is not defined for floats
Avatar
Shouldn't it be a % b <= b? When a is smaller than b?
06:24
Nvm i m dumb
Avatar
give me example floats because I can't image some rn
06:34
you are dividing a with b and check if the recess is bigger-equal than b
06:34
for what do you need this
06:35
oh yea that makes sense
06:37
100 % 1 = 0 -> 0 < 1 = true 1 % 100 = 99 -> 99 < 100 = true
Avatar
The whole operation is moot
06:38
1.0f % anything is undefined because it uses the remainder of integer division
06:38
It will error on compile
Avatar
1. we talk about a custom shading language, not about cpp or smth 2. GLSL defines a modulo between floats like this: "mod returns the value of x modulo y. This is computed as x - y * floor(x/y)."
Avatar
Avatar
Patiga
also, if I have two positive floats a and b, which are neither NaN nor inf, then a % b < b should hold true
for webgpu the definition is: "e1 % e2 : T If T is a floating point type, the result is equal to: e1 - e2 * trunc(e1 / e2)" GLSL: "The operator modulus (%) is not defined for any other data types (non-integer types)." So maybe better use the mod function instead. Or look into the WGPU shading language spec
Avatar
@fokkonaut Hi, I want to ask you if you have done any optimizations in your server with threading? I know there are a few places that can be threaded: 1. network thread 2. server info update thread 3. snap thread 4. translated map update thread But half of these items seems to me very insecure for multithreading, so I want to know if you have done any of this list. To test I wrapped PumpNetwork in a thread (similar to how it is done in BW) and it works, but it seems to me that this is an extremely controversial solution... If you're interested, here's the commit https://github.com/0xfaulty/ddnet/commit/3b591364ffdff6e3eb265dcbf809845f2510c484
Avatar
I never checked how its done in BW, could you explain a bit?
07:41
And I had a prototype of Snap threading once, it worked, but it was not thread safe and I didnt want to create like huge copies of everything in order to fill the snaps correctly from a thread
07:43
The map update algorithm would probably be very easy to put in a thread, but at least my version of it isnt so expensive. Snapping and Networking are the most expensive things in tw
Avatar
Avatar
fokkonaut
I never checked how its done in BW, could you explain a bit?
receiving and processing data from the network takes place in a thread, but triggers data reception in the main thread, done on lock+semophor, in my commit I have done this as I understand how it should work
Avatar
Avatar
Faulty
receiving and processing data from the network takes place in a thread, but triggers data reception in the main thread, done on lock+semophor, in my commit I have done this as I understand how it should work
Really? Could you tell me where exactly? Havent checked their code buts its somewhere on my desktop
07:46
it would be a solution to my issue aswell
Avatar
could you just look at my commit by link?)
07:47
that I sent u above
Avatar
Is that exatcly the way bw does it?
Avatar
2. GLSL defines a modulo between floats like this GLSL: "The operator modulus (%) is not defined for any other data types (non-integer types)."
????????
07:49
which one is it
Avatar
mod
07:50
but he doesnt use GLSL, just to be clear about that
Avatar
Avatar
fokkonaut
Is that exatcly the way bw does it?
very similar, in original approach it pass pointer to CServer to thread and have duplicated code copied from PumpNetwork, but inside thread method, so like pServer-> so I think yes, I just refactored it without code duplication and make crossplatform, if I didn't miss something ofc
Avatar
But that isnt thread safe is it?
Avatar
yes, at least I don't see any thread safe mechanisms
08:05
Maybe it would be good to only thread the net_udp_recv function
08:05
then use the data from it just as usual, and only run the thread again once the old data got processed
08:06
or keep the thread running, but block it with a global variable or smth from receiving
08:06
think im gonna do that later
Avatar
Avatar
fokkonaut
then use the data from it just as usual, and only run the thread again once the old data got processed
I think about this also, maybe will try this later also
Avatar
Avatar
fokkonaut
or keep the thread running, but block it with a global variable or smth from receiving
sounds too complex imo
Avatar
Is it performance expensive running and stopping this thread like every tick?
08:09
I would just pass a pointer to a variabe
08:09
Bool run
08:09
It would only read this value from the thread
Avatar
ah, I didn't quite read your answer correctly, but we need to test anyway
Avatar
Maybe making it volatile works here, I think I saw volatile being used as a guard in another function
Avatar
Avatar
Faulty
ah, I didn't quite read your answer correctly, but we need to test anyway
yea
Avatar
atomicbool is what u want
08:13
network is defs the easiest to put in a thread, if it would also unpack the msgs beforehand it would simplify the game code too
Avatar
oop didn't write enough context, its in rust. but wrote it just because I found the thought interesting :)
Avatar
Avatar
fokkonaut
Maybe making it volatile works here, I think I saw volatile being used as a guard in another function
bad
Avatar
Avatar
Jupstar ✪
network is defs the easiest to put in a thread, if it would also unpack the msgs beforehand it would simplify the game code too
it looks strange to me that ddnet does not threaded any of the places I described earlier, but maybe I don't know what either, at the moment I am extremely unsure how this will affect client prediction for example If you know of anyone who can be mentioned who is knowledgeable about this, let me know
Avatar
Avatar
Faulty
@fokkonaut Hi, I want to ask you if you have done any optimizations in your server with threading? I know there are a few places that can be threaded: 1. network thread 2. server info update thread 3. snap thread 4. translated map update thread But half of these items seems to me very insecure for multithreading, so I want to know if you have done any of this list. To test I wrapped PumpNetwork in a thread (similar to how it is done in BW) and it works, but it seems to me that this is an extremely controversial solution... If you're interested, here's the commit https://github.com/0xfaulty/ddnet/commit/3b591364ffdff6e3eb265dcbf809845f2510c484
if u mean this 1. should work 2. could work, but makes the code much more complex since suddenly all game state needs to be sharable between threads 3. will probably make it even more complex and much harder to do thread safe 4. sounds unsafe if you dont do synchronization properly after the update (e.g. before it is used the next time)
Avatar
many things that could be threaded arent due to physics
Avatar
i also doubt that except network, which involves a system call and kinda lot of copying you will gain a lot by these
Avatar
float calculations in the game core are probably more expensive
Avatar
in this regard bevy engine is amazing it allows u to define systems and their happens before and after order (edited)
Avatar
Avatar
Jupstar ✪
i also doubt that except network, which involves a system call and kinda lot of copying you will gain a lot by these
Networking is definitely worth it. At least for me, cuz I have a second socket on port 8304 to bring serverinfo 2/2 to 0.7
Avatar
well i am always bit sceptical tbh movement can often be split from stuff like chatting/UI related stuff and if u have expensive calculations somewhere... sure maybe its worth it but generally mutices and all sync techniques have quite a bit of overhead
Avatar
Very noticable delays when calling net udp recv twice a tick
Avatar
Avatar
Jupstar ✪
if u mean this 1. should work 2. could work, but makes the code much more complex since suddenly all game state needs to be sharable between threads 3. will probably make it even more complex and much harder to do thread safe 4. sounds unsafe if you dont do synchronization properly after the update (e.g. before it is used the next time)
about point 2 I mean collecting information about the server and players. There's a fairly limited set of data that need to be shared with thread once every n seconds. And the thread will send this data until the next update, won't it?
Avatar
2 would work imo
Avatar
@Faulty i can suggest you one thing that often works: Try to look what data is needed in the thread and simply make a full copy. e.g. memcpy is extremly optimized and if your calculation is expensive enough its still easier to copy the full state and process ur stuff in a thread and then maybe copy it back
Avatar
Avatar
Faulty
about point 2 I mean collecting information about the server and players. There's a fairly limited set of data that need to be shared with thread once every n seconds. And the thread will send this data until the next update, won't it?
i dunno how exactly your code works. But alone the fact that it shares data between threads, while the other thread writes to it is extremly unsafe
Avatar
Its about DDNets serverinfo
Avatar
yeah, but if someone renames for example it might create weird behavior Even if it might not crash your server. Anyway, best is you run your server with TSAN to be sure
08:30
it will catch stuff u dont see easily if you arent very experienced with threading c++ is really not the best language for threading that involves shared data like in this case. and with rust for example you probably would have a hard time to even get it to compile and then u'd understand how much more complicated the code must be 😄
rust_on_fire 1
rustOk 1
rust 1
Avatar
xddd
Avatar
in place locking can also be costly
Avatar
Avatar
Jupstar ✪
it will catch stuff u dont see easily if you arent very experienced with threading c++ is really not the best language for threading that involves shared data like in this case. and with rust for example you probably would have a hard time to even get it to compile and then u'd understand how much more complicated the code must be 😄
poggers
08:58
super reacted kek
Avatar
lmao
Avatar
in 2 days we should release ddnet 2
08:59
for april fools
08:59
kek
Avatar
ez
Avatar
fool the normies
Avatar
written in javascript for more performance
Avatar
"We have rewritten ddnet in javascript after extensive debating, we hope you enjoy the new iteration of the game on ur web browsers, with ads to combat ddos, at 30 fps"
Avatar
"The input delay could not be improved for now and is worse than on V-Sync, maybe we will work on this in the future."
Avatar
and it uses 8GB RAM
Avatar
"Need a dummy? Open another Tab and let Chrome use twice as much RAM. Additionally we have added a bitcoin miner in order to keep the servers running!"
Avatar
Avatar
Ryozuki
"We have rewritten ddnet in javascript after extensive debating, we hope you enjoy the new iteration of the game on ur web browsers, with ads to combat ddos, at 30 fps"
Actually so sad this is not supported anymore: http://teewebs.net/
09:06
09:06
Was the best part of it :sadge:
Avatar
we still support a webasm version tho
Avatar
Ew, the old sliders
Avatar
someone would just need to enable websockets again
Avatar
The old sliders werent even symetrical, due to floating points
09:09
if you move them slightly one side can have less rounded corners than the other
09:09
has no internet access tho
Avatar
Wow, accessing the browser causes huge lags
09:11
Or anyting than the main menu
Avatar
but u on your phone rn?
Avatar
Work laptop
09:12
32 GB RAM
09:13
Is there some C++ to JS conversion tool, or how does it work to convert a full program into this? :D
Avatar
wasm
09:13
web assembly
Avatar
Ahhh yes
09:13
web assembly
Avatar
so its not javascript anymore, tho it still uses some js
09:14
wasm is actually quite cool.. a unix like system in the browser
Avatar
its cool this kinda stuff works
Avatar
yeah 😄
Avatar
i think at some point everything will work through web browsers xd
09:15
they are quite powerful already
09:16
Btw
09:17
did you try xbox cloud gaming?
09:18
I tried it with Skate 3 once, but I found the input to be too delayed and the screen had heavy tearing
Avatar
Avatar
fokkonaut
did you try xbox cloud gaming?
i tried stadia.. for casual games maybe good enough.. but yeah action games no chance
09:25
and the compression is ofc not nice.. sometimes a game simply has very noisy textures and they are not captured cleanly
Avatar
Some day in the future this will be an optimized standard tho, probably :D
Avatar
wasm is pog, they just need to allow it to modify the DOM without using js
09:26
and then js can die in hell
Avatar
Avatar
fokkonaut
Some day in the future this will be an optimized standard tho, probably :D
i guess latency will never be gone? so maybe we'll never be able to use it for action games
Avatar
Avatar
Ryozuki
and then js can die in hell
tru xd
Avatar
I just found this on the KoG discord. My autism really gets triggered by these guys, cuz on the technical side GORES IS DDRACE xD
Avatar
Avatar
Jupstar ✪
i guess latency will never be gone? so maybe we'll never be able to use it for action games
Maybe
Avatar
and rust has first class wasm
🧐 1
Avatar
Avatar
fokkonaut
I just found this on the KoG discord. My autism really gets triggered by these guys, cuz on the technical side GORES IS DDRACE xD
yeah but strictly speaking i'd say gores is vanilla movement with freeze and unfreeze
09:29
ddrace is a big superset 😄
Avatar
ddrace > gores
09:30
ddnet = { quality gameplay, creative parts, gores parts, even worse parts }
09:30
gores = { gores parts, even worse parts} }
Avatar
ddrace = mapper wants to be creative but the part often makes no real fun xd but yeah ddrace kinda has more potential since it could also simply be gores
Avatar
exactly
Avatar
i guess there is a reason why ddrace more shifted to hammer hitting etc. ddmax is really always the same xDD
Avatar
Yeah, not only that but also the gameplay is just not fluid enough for it to be fun imo.
09:32
I mean, I dont want to play hh maps only, but if I play smth else then it has to be nice parts still
09:32
hh ftw tho
09:33
corneum maps for example are often very creative, fun and not comparable to hh maps
09:33
sickcunt maps pog
Avatar
naufrage used to be THE map back then imo
09:34
it was top
09:34
the naufrage 2
Avatar
and then nostalgia
Avatar
oh yes
09:34
it all started with this imo
Avatar
that map was s big hit
09:34
that hf part
09:34
rly hud
09:35
cl_showhud
Avatar
cl_show_ninja 0
09:35
best
09:35
never remove, thanks
Avatar
naufrage and nostalgia are still some of the best maps, nothing mind blowing but really well executed and fun classic ddrace gameplay
Avatar
Funny how nameless tee never really had explosive growth, its pretty linear
09:47
neither did it have times where no points were gained
Avatar
nameless tee so addicted (I'm pretty sure these are stats since 2021) Showing overall playtime for player, nameless tee Map Playtime (hours) ------------- ---------------- Multeasymap 12089 ctf5 5764 TeeTown 4198 Kobra 3663 Blmap4 2763 BlmapChill 2724 fng 2708 Copy Love Box 2370 Tutorial 1554 blmapV3ROYAL 1470 Grandma 1279 Kobra 2 1275 Sunny Side Up 1155 Kobra 4 1152 Sunny Land 1142 Category Playtime (hours) ---------- ---------------- Novice 31464 Brutal 6532 Moderate 5835 Solo 2056 Oldschool 1792 DDmaX.Next 1634 Insane 1389 Dummy 1080 DDmaX.Pro 696 DDmaX.Easy 238 Race 160 DDmaX.Nut 71 Fun 70 Total Playtime (hours) ---------------------- 91502
Avatar
Top 6 👍
Avatar
whos top5 (edited)
Avatar
Avatar
bencie
nameless tee so addicted (I'm pretty sure these are stats since 2021) Showing overall playtime for player, nameless tee Map Playtime (hours) ------------- ---------------- Multeasymap 12089 ctf5 5764 TeeTown 4198 Kobra 3663 Blmap4 2763 BlmapChill 2724 fng 2708 Copy Love Box 2370 Tutorial 1554 blmapV3ROYAL 1470 Grandma 1279 Kobra 2 1275 Sunny Side Up 1155 Kobra 4 1152 Sunny Land 1142 Category Playtime (hours) ---------- ---------------- Novice 31464 Brutal 6532 Moderate 5835 Solo 2056 Oldschool 1792 DDmaX.Next 1634 Insane 1389 Dummy 1080 DDmaX.Pro 696 DDmaX.Easy 238 Race 160 DDmaX.Nut 71 Fun 70 Total Playtime (hours) ---------------------- 91502
Can you share the query, im too lazy to write it okSanya
Avatar
blmap4 :(
Avatar
Avatar
Anime.pdf
Can you share the query, im too lazy to write it okSanya
this is from a custom bot made by furo, not a query i made
10:42
!bencie show results
Avatar
Avatar
bencie
this is from a custom bot made by furo, not a query i made
💀
10:42
bot moment
Avatar
discord bot* justatest (edited)
10:43
bot == bot || bot != bot ??
10:43
return true;
Avatar
Avatar
bencie
this is from a custom bot made by furo, not a query i made
furo?
11:32
this bot somehow knows that i played on 2xp_std
11:32
its a secret information troll
Avatar
can't you keep a spectator bot on all of your servers that record a demo that could be used as proof for #reports or to look up by a moderator? (edited)
13:15
just thought about it. sounds smart.
13:17
you could wipe the demo every hour or so to not fill disk space. and even change a tiny bit of the server code to hide the spectator name. (edited)
Avatar
you don't need a spectator bot
Avatar
you need one
13:20
because ask deen
Avatar
why that lol when inputs are sent to server
Avatar
all the footage players provide doesn't get trusted
13:21
because it could be faked
Avatar
just save inputs & play them again
Avatar
yea that's what they should have
13:21
thought a demo does exactly that
13:21
but then remembered it only records your tee
13:22
you would need a demo that records everyone in a single file (edited)
13:22
if that is possible
13:28
and the dream would be that the discord bot is capable of accessing these and rendering starting from a timestamp that people reporting someone would provide
13:29
obviously a staff only command
Avatar
thats teehistorian
13:35
we have terabytes of data
13:35
but we dont use it yet
13:35
cuz we dont have the tool to reproduce it iirc
Avatar
gib time & money please
13:35
mostly time though 😄
Avatar
i can give money and code (in exchange for example data to parse to develop with - can be anonymized or whatever) (edited)
Avatar
Avatar
Ryozuki
thats teehistorian
Isnt that the same case for server demos? Or can they be played in the meantime
13:42
I mean, that we dont have a tool to play it*
Avatar
Avatar
fokkonaut
Isnt that the same case for server demos? Or can they be played in the meantime
teehistorian is more accurate
Avatar
@Learath2 what was your control theory question btw?
Avatar
If one of you does the remaining part of my degree for me I can get the teehistorian thing done, np
Avatar
Avatar
Chairn
@Learath2 what was your control theory question btw?
I was looking for some deeper intuition in the controllable canonical form. It feels so extremely structured yet I fail to grasp how it works
Avatar
hmm, probably not called lioke that in french, that doesn't ring a bell
Avatar
It's technically unimportant, I can just memorize it and go on but I find that not to be learning at all
Avatar
Avatar
Chairn
hmm, probably not called lioke that in french, that doesn't ring a bell
It's a way to realize a system given it's transfer function. One of the many possible realizations
14:17
It's the realization where all the input is injected through one single state variable
Avatar
cant find anything in my files
14:17
but looking at them reminded me why i didn't like control throey 😄
Avatar
I find it rather elegant that you can actually formally answer questions like reachability for states of very complex systems
14:19
Though I also despise it because I have to study it. Things become very painful for me when I have to do them and it's at someone elses pace
Avatar
ah, i think canonical means it's the form that allows you to derive all system parameters
14:20
especially, you can try to control only one of the ouput if there are several, without touching the others
14:20
you just have to invert the system, it should be solvable in all cases i believe
14:20
otherwise, the system is non linear
Avatar
There isn't just one canonical form though. There is also observable canonical form
Avatar
this one is different
14:21
the first one is if the system is controllable, like you can literally choose the output of the system with the correct set of inputs
14:21
observable means that by just having the outputs, you can deduce the inner system state variables
14:22
some variables may be hidden and not retrievable from outputs, in which case the system is not observable (but may still be controllable) (edited)
14:23
i cant find any example out of my head, but there are probably plenty of them
14:24
i hope i helped you, not my field of expertise
Avatar
Not particularly in this case, but it did help me with another question I've been pondering
👍 2
Avatar
What question is open still (edited)
14:28
You talked about that controller thing for two days now. I didn't follow.
Avatar
My question is very abstract anyway, it's not easy to answer. I'm just looking for how people came up with the CCF realization of a system without resorting to mathematical trickery
Avatar
e.g. you have H = Y/U => UH = Y => UH = CX + DU => H = CX/U + D => H = C((sI-A)^{-1}(x(0) + BU))/U + D H, U, X are functions of s, x is a function of t, H is known, how would you go about picking A, B, C and D
14:48
Picking a D is trivial, make the transfer function strictly proper and D can just be set equal to whatever remainder you have from the numerator
Avatar
I love how random topics are generated here everyday
Avatar
I wonder where the CCF first appeared anyway, maybe the person who first documented it documented what he was thinking about
14:52
There are just too many free variables, you just have to set some things and solve for the rest, but I don't know what they set, or why they set it that way
Avatar
Y is output, X is state matrix, C is command transfer, U is your input iirc (edited)
Avatar
do you know Max Planck?
14:52
he did something like that as well
14:53
he just used a letter in his formula that would resolve itself in the end (edited)
Avatar
so it's just easier to handle that way, as each matrix/vector is completely separated from the rest
Avatar
maybe same applies here
Avatar
A is the state transition matrix, B is the input matrix, C is the output matrix, D is the feedforward matrix
14:54
We are also only working with LTI SISO systems so that simplifies a bit, D is just a scalar, B and C are just vectors
Avatar
well, as i said, it's to simplify the representation as you don't mix everything
14:55
now, no idea who came up with this
Avatar
or do you want to know how a computer would know these relations?
14:55
because I think it doesn't if it isn't too obvious
Avatar
Avatar
Chairn
well, as i said, it's to simplify the representation as you don't mix everything
I want to go from H to A, B, C, D. I understand that there are prescribed forms for figuring out possible A, B, C, D. I'm curious how one figures out one of these themselves
Avatar
humans ordered them in such a way
14:57
oh you want to create formulas yourself?
Avatar
Avatar
default
or do you want to know how a computer would know these relations?
A computer solving these just employ one of the many prescribed forms. It'll put it in CCF, OCF or JNF
14:58
I'm curious how one comes up with the forms in the first place. You only have H to go off from and you need to figure out A, B, C and D which has many more variables than H has
Avatar
you got the result
14:58
then you just think about ways to achieve the same result
14:58
but with added math. then you want to have everything on one side and the other side gets a new letter. usually these are ways to achieve the same result in an easier way. (edited)
Avatar
can't you decompose H?
Avatar
For example, I could say let's get D out of the way, it's a scalar, for an LTI SISO system that is proper I can get a scalar remainder by polynomial long division, if it's strictly proper then D = 0 works. One out of the way, 3 to go
Avatar
just write the product, and solve the system seems the way to go
Avatar
Avatar
Chairn
can't you decompose H?
for an LTI SISO system it's given that it'll be in the form of polynomial/polynomial where the denominator has higher or equal degree to denominator
15:01
I can also turn (sI - A)^{-1} into adj(sI-A)/det(sI-A) which doesn't help much since I still don't have A alone anywhere 😛
Avatar
but you can guess from this equation
15:02
computes each H term from A term in symbolic form
Avatar
Though to be fair, I can't solve for (sI-A) either so that's not too big an issue
Avatar
solve the system
15:02
i feel like im missing part of the problem
Avatar
The entire problem is you have H(s) for an LTI SISO system. How do you come up with the state space representation A, B, C, D
Avatar
Avatar
Learath2
Though to be fair, I can't solve for (sI-A) either so that's not too big an issue
if you solve to that, you can * (-1) everything so you got positive A. then sI is negative. then you can do + sI and it's on the other side. then you just have A. (edited)
Avatar
Yep, it is fixable if I can solve for that one too, anyway, I'll just keep digging around in many proofs that CCF, OCF do indeed work and maybe I can glimpse some inspiration from those
Avatar
i mean I mentioned Max Planck
15:05
he did something important
15:06
and used something that wasn't solved in their formula at first
Avatar
Or maybe I'm just making a mistake and I should work with the individual differential equations instead of trying to solve the entire system, my linear algebra is weak anyway, so maybe I just don't have the tools
Avatar
just to have a formula that makes sense
Avatar
Avatar
default
and used something that wasn't solved in their formula at first
Problem here is that just leaving one of them unknown doesn't help me much 😄
Avatar
i don't understand your problem then
15:07
you know how to solve to something
15:07
so you got all your letters
15:07
wasn't that your question
Avatar
Avatar
Learath2
The entire problem is you have H(s) for an LTI SISO system. How do you come up with the state space representation A, B, C, D
The question is this in it's entirety
15:08
The answer you'll find in books will give you a prescription in how to structure your A, B, C and D such that it works. I'm trying to understand how one comes up with such a prescription
Avatar
did you ask chatgpt
15:09
i don't know how to explain
15:09
result is what you want
15:09
usually the outcome of invented math/known math and physics fundamentals (edited)
15:09
so you want to know how to invent a formula?
Avatar
Well what I want is a deeper understanding. I don't seek a solution to an already solved problem it'd be absurd
Avatar
well. if we would know. we would invent every single second.
15:10
you just observe
15:10
and if you are smart you set-up theories
15:10
and then you want to prove your theory
15:10
existing formulas were invented like this
15:11
letters can be compressed math or constants
15:12
and that thing that you can have multiple paths to get to a letter is just the outcome of math itself
Avatar
@Learath2 ask ur teacher maybe xd
Avatar
I doubt there is no method to figuring out these forms, did some dude just theorize that if he randomly threw the coefficients of the denominator of the transfer function into the bottom row of the state transition matrix he would get a working form? 😄
15:13
That'd be absurd
Avatar
if that is rather new
15:13
they probably did
15:13
but with a computer!
Avatar
It's not new. It's ancient at this point
Avatar
then yes
15:14
some smartass woke up one day and wasn't satisfied with their life
Avatar
I highly doubt that, It's far more likely that they made saner assumptions and solved for the state transition matrix
Avatar
so that's your answer you are asking for
15:14
no?
15:15
isn't there a write up about this theory if it is ancient?
15:15
wouldn't that tell you how they did come up with it?
Avatar
But what are the assumptions, D is trivial to solve for, maybe they fixed B? but why is it obvious that the input being injected into only one variable is enough? did they just make a guess there?
15:16
Those are the sorts of things I'm curious about
Avatar
Avatar
Ryozuki
@Learath2 ask ur teacher maybe xd
This is actually a good idea, I'll show up to her next office hours, see if she'd be willing to try explain
Avatar
maybe it's purely experimental
15:17
hence the name ABCD
15:17
isn't that what your teacher taught you?
Avatar
Avatar
Chairn
hence the name ABCD
They do kinda have formal meanings though, not like it's just any variable. A is always used for the state transition matrix
Avatar
tbh idk what u talking about but its fun to read
Avatar
Anyway, we steered this channel far off-topic. I'll go dig around in more books, see if I spot something. Again, it is always possible that my linear algebra just isn't good enough yet
Avatar
#developer is #general but for nerds
15:19
so is #off-topic
Avatar
developer is more
15:19
its a way of life
15:19
Avatar
matrix users can summarize everything using chatgpt
Avatar
Avatar
Ryozuki
developer is more
nerd safespace
15:24
Formulas are often invented through a combination of observation, intuition, and experimentation. In many cases, formulas are developed to describe observed phenomena or to solve specific problems. Once a formula has been developed, it can be tested and refined through further observation and experimentation to improve its accuracy and applicability. In the case of the state space representation of an LTI SISO system, the formulae A, B, C, and D are derived from the transfer function H(s) using various techniques, such as the pole-zero cancellation method, the controllability and observability concepts, and the similarity transformation technique. These techniques have been developed through years of research and experimentation, and have been shown to be effective in solving a wide range of problems in control theory. To understand how the state space representation is derived, it is important to have a solid understanding of the underlying concepts and techniques used. This often requires a strong foundation in mathematics, particularly linear algebra and differential equations. Once these concepts have been mastered, it becomes easier to understand how the various formulae and algorithms are developed and how they can be applied to solve practical problems.
15:24
exactly what I said
Avatar
It's impressive how chatgpt can give such political answers
15:26
Everything it said is technically completely true 😄
Avatar
its a politcian
Avatar
but yea. share what your teacher tells you.
15:26
i bet she or he doesn't know either and will give you a similar answer (edited)
15:26
because you would have to invent something to know how you did it
Avatar
Not always, sometimes the inspiration is obvious. For example the fast fourier transform
15:27
It's trivial to motivate
Avatar
Avatar
default
i bet she or he doesn't know either and will give you a similar answer (edited)
please don't edit your messages too much on #developer irc bot replicates it everytime you do
15:28
chillerdragon will be mad xd
Avatar
chillerdragon can be as mad as he wants to be
15:28
dragons died ages ago
Avatar
Sure it's hard to come up with if you didn't know it, but as soon as you know it you can also spot the key point in it that makes it possible
Avatar
Avatar
Learath2
Not always, sometimes the inspiration is obvious. For example the fast fourier transform
Idk what that is. But ChatGPT either explained it to me, or lied to me. The inspiration for the Fast Fourier Transform (FFT) algorithm can be traced back to the seminal work of mathematician Carl Friedrich Gauss, who developed the Discrete Fourier Transform (DFT) in the early 19th century. The DFT is a mathematical technique used to analyze the frequency content of a signal, and it involves performing a series of complex mathematical operations on the signal using Fourier series. While the DFT was a powerful tool, it was computationally expensive and time-consuming, especially for large datasets. In the 1960s, Cooley and Tukey independently developed the FFT algorithm, which is a much faster and more efficient way of computing the DFT. The key idea behind the FFT algorithm is to break the DFT calculation into smaller, simpler sub-problems, and then use recursion to solve these sub-problems in a more efficient way. By doing this, the FFT algorithm reduces the number of computations required to perform the DFT, making it much faster and more practical for real-world applications. The FFT has since become a fundamental tool in many areas of science and engineering, including signal processing, image processing, and numerical analysis. Its development and widespread use have revolutionized the way we analyze and understand complex data sets, and it remains an active area of research and development today.
Avatar
Avatar
default
chillerdragon can be as mad as he wants to be
irclogs also get spammed
Avatar
I am a known spammer sir
Avatar
i should be working
Avatar
it doesn't make you a hero or something
Avatar
but life drives me to talk to discord
15:30
and be lazy
Avatar
Avatar
Ryozuki
but life drives me to talk to discord
its ok
Avatar
Avatar
gerdoe
it doesn't make you a hero or something
never put these words into my mouth
Avatar
Avatar
default
Idk what that is. But ChatGPT either explained it to me, or lied to me. The inspiration for the Fast Fourier Transform (FFT) algorithm can be traced back to the seminal work of mathematician Carl Friedrich Gauss, who developed the Discrete Fourier Transform (DFT) in the early 19th century. The DFT is a mathematical technique used to analyze the frequency content of a signal, and it involves performing a series of complex mathematical operations on the signal using Fourier series. While the DFT was a powerful tool, it was computationally expensive and time-consuming, especially for large datasets. In the 1960s, Cooley and Tukey independently developed the FFT algorithm, which is a much faster and more efficient way of computing the DFT. The key idea behind the FFT algorithm is to break the DFT calculation into smaller, simpler sub-problems, and then use recursion to solve these sub-problems in a more efficient way. By doing this, the FFT algorithm reduces the number of computations required to perform the DFT, making it much faster and more practical for real-world applications. The FFT has since become a fundamental tool in many areas of science and engineering, including signal processing, image processing, and numerical analysis. Its development and widespread use have revolutionized the way we analyze and understand complex data sets, and it remains an active area of research and development today.
it sort of explains it but it fails to mention why these smaller sub problems are easier to solve, recursion alone wouldn't make it any faster
Avatar
thats why we need AI
15:31
they cant feel lazyness
15:31
humans simply weak
Avatar
Elon Musk wants to stop AI
Avatar
Avatar
Ryozuki
but life drives me to talk to discord
I'm supposed to be packing a bag, but talking about interesting things is too much fun
Avatar
so Elon Musk wants to destroy Earth
Avatar
Avatar
Learath2
it sort of explains it but it fails to mention why these smaller sub problems are easier to solve, recursion alone wouldn't make it any faster
I wouldn't call that a fail. You just have to know what you are looking for.
15:34
Also they probably optimized it in such a way to leave out details because of the limit.
15:35
You don't want to get your explanation get cut in half like it does with code
Avatar
I didn't use "fail" to insult your ai buddy. I used it inplace of "omit"
Avatar
But if I would ask it why the smaller problems are easier to solve, it probably answers with what you expect it to answer
Avatar
I'm sure it can deliver the answer if you ask it to elaborate, it's common knowlodge
15:36
knowledge*
Avatar
Avatar
Learath2
I didn't use "fail" to insult your ai buddy. I used it inplace of "omit"
Excuse you. How dare you assume the AI is my buddy.
15:36
17:00
i have my magnet yet
17:00
from 2 years ago
17:00
the og
Avatar
me2
17:01
its on the frame of my door
Avatar
fridge
17:01
xd
17:01
@deen can u do tee wiki magnets?
17:01
wiki
Avatar
omg i would want one so hard xD
17:01
its so good
17:02
epic logo
17:25
@Jupstar ✪ @ReiTW i warned u all
17:25
once_cell > lazy_static
17:25
and now in std
Avatar
Avatar
Ryozuki
@Jupstar ✪ @ReiTW i warned u all
but why warn xd
17:29
but i cannot imagine a use case rn xd
Avatar
its often used
17:30
a good use case is regex
17:30
which wont be needed when all is const
18:22
8c3ff54 add giraffe and voodoo_tee - saltyElefant c353487 Merge pull request #43 from saltyElefant/ddnet-data-svg-add-giraffe - Jupeyy
Avatar
omfg i just remembered i forgot to put my svg thing in a branch so i cant merge anything
Avatar
i just had a showerthought: god is actually the most fucked person, because everyone says "oh my fucking god"
Avatar
Avatar
Voxel
omfg i just remembered i forgot to put my svg thing in a branch so i cant merge anything
why not
19:13
u can create new branches
19:14
git checkout -b pr_new git reset --hard upstream/master
Avatar
deen's inbox: 💯
Avatar
ChillerDragon BOT 2023-03-30 21:50:53Z
@Jupstar ✪ is saltyElefant mind?
Avatar
this makes me incredibly happy
21:57
🦒
Avatar
Avatar
Jupstar ✪
git checkout -b pr_new git reset --hard upstream/master
so i just run these commands in git bash on the folder that has my code?
21:58
or do i have to create a new branch in github first?
Avatar
ChillerDragon BOT 2023-03-30 21:58:11Z
??
21:58
dont create a branch on github
21:59
create it locally and push it to github using
21:59
git push -u remote branchname
22:00
btw jopstars command deletes your code o.O so be careful
22:17
thanks
22:21
$ git push -u remote main fatal: 'remote' does not appear to be a git repository fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. sorry im stupid
Avatar
git remote add <name> <url>
22:23
git push -u <name> <branch>
22:23
so git remote add upstream https://github.com/ddnet/ddnet got push -u upstream main (edited)
22:24
or something
Avatar
ChillerDragon BOT 2023-03-30 22:28:20Z
yea the default remote is usually called origin but idk wat u wanna do
22:28
or how your remotes are setup
Avatar
Avatar
Ryozuki
@deen can u do tee wiki magnets?
Too late, just order 50 yourself 😄
22:56
$ git remote add svg_emotes https://github.com/VoxelDoesCode/ddnet-data-svg $ git push -u svg_emotes main Everything up-to-date branch 'main' set up to track 'svg_emotes/main'.
22:58
and nothing changed (edited)
Avatar
do you have local changes you are expecting to push
Avatar
Avatar
Ewan
do you have local changes you are expecting to push
i mean im going to squash a bunch of commits and make one change
Avatar
what did you expect to change if you have not yet added the commits
Avatar
you say nothing changed
23:30
idk what u expect
Avatar
https://github.com/ddnet/ddnet-data-svg/pull/33 for the branch of this to change
NOTE: This might not be perfect, especially the music notes, but it doesn't need to be pixel perfect, right?
Avatar
i don't think you can change the source branch without a new pull request
23:31
why not push to main
Avatar
that IS main
Avatar
oh yeah it is main
23:32
so why do you need a new remote. i am so very confused
Avatar
so i can squash all the useless commits
23:33
i dont think i can do that on main
Avatar
interesting you can do like this git remote add upstream https://github.com/voxeldoescode/ddnet-data-svg git fetch upstream git reset --soft e0bf8409f95276708d0422545b01cd9a5de78843 this keeps your changes but removes all commits since Add files via upload
23:36
then you can add & commit --amend and force push (edited)
23:36
dunno if you even need the upstream stuff if that commit is already fetched
23:36
which it should be if your remote is correct
23:37
though i'd just keep the commits lol
23:39
and ask whoever merges to just select squash and commit
Exported 448 message(s)