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 2021-08-30 00:00:00Z and 2021-08-31 00:00:00Z
Avatar
Is anyone here knowing about threads?
01:48
currently, i am waiting on all threads to be done on my server before it returns 0 and terminates, because otherwise these threads would finish when i re-started the server
01:48
while (m_Jobs.size()) { // wait for all threads to be done if (m_Jobs.front()->Status() == CJob::STATE_DONE) m_Jobs.pop_front(); } return 0;
01:48
is this bad?
01:49
because it works as expected xd
Avatar
Eh, spinning like this isn't a good idea as you are hogging the cpu, a more proper solution would be to wait on a condition variable and have the threads atomically decrement a counter as they quit
07:06
It is possible that the OS would just keep pre-empting your worker threads so your main thread can spin, causing large hangs at the end randomly
07:08
Though, I've taken a look at our jobs code and this doesn't look needed. The destructor properly waits for the worker threads to close
Avatar
I figured out why I could only log into pol server slowly (~1 minute delay). Protip: Don't block all TCP traffic in iptables, since it also blocks traffic from localhost, and gpg's key manager tries to connect to the local key server via tcp. If there is no local key server it fails graciously, but if it doesn't respond at all it just gets stuck indefinitely until systemd decides that it took too long and starts the user session without it after all.
08:46
That's a behaviour change in Debian 11, worked fine in Debian 10
Avatar
89f7a0e Allow localhost connections - def-
08:48
30614ee Allow localhost connections - def-
Avatar
macFUSE is now closed source and no one can fork it since apple doesn't give out kernel extension signing certificates willy nilly anymore
Avatar
why u use mac
09:01
they arent even the "privacy" company ppl said they are
09:02
less now
09:02
with the scanning stuff with the excuse of pedos
Avatar
Avatar
Ryozuki
why u use mac
Because otherwise I have to buy a new laptop, which will cost me money
Avatar
u cant install linux?
09:04
monkalaugh
09:04
What's more, Linux breathes life into old Macs that are no longer eligible for macOS updates. Rather than letting your old MacBook Pro turn into an expensive paperweight, install the latest version of Linux and keep it going for years to come.
09:04
lol
09:04
didnt know old macbook pros dont get updates
09:04
even more reason
Avatar
The support for macbooks were quite shit last I tried
Avatar
i would try it
09:05
make sure u havce
09:05
backup mac installs or smth
09:05
idk how it works there
Avatar
there is no way they have good drivers for the amazing touchpad on the macbook
Avatar
backup mac install usb*
09:06
imagine using touchpad
09:06
i cant use it
09:06
and my sister has a rly good macbook
09:06
it sucks
09:06
just use mouse
Avatar
ok, ur the coolest and the 1337est bro
Avatar
how is saying touchpad sucks leet
Avatar
Who wants to carry around a mouse? 😄
Avatar
i would xd
09:07
just get some wireless
Avatar
The touchpad works perfectly for me, I don't play games on the thing. I'll pass on carrying around a mouse
Avatar
well i doubt touchpad works that bad that u cant pause the movie while in ur sofa
09:07
but for other uses i would use mouse
Avatar
gestures make the touchpad very useful, you lose all those with the open source drivers
09:08
I'd definitely carry a mouse if I was stuck with open source touchpad drivers
09:09
there is a guy on it apparently
Avatar
75662b6 remove unused and not implemented IOFLAG_RANDOM, add assert - Robyt3 4a37524 fix fs_listdir and fs_listdir_fileinfo with unicode on windows - Robyt3 f6954c8 fix io_open with unicode on windows - Robyt3 355466e fix fs_is_dir with unicode on windows - Robyt3 c89cdc6 add fs_file_time - Robyt3 2171373 fix code format - Robyt3 121173b Merge #4111 - bors[bot]
Avatar
They seem to be making progress too, maybe in a year or so we'll finally have good touchpad support on linux
Avatar
Avatar
Learath2
Though, I've taken a look at our jobs code and this doesn't look needed. The destructor properly waits for the worker threads to close
well, it doesnt on shutdown
Avatar
Are you sure? add a dbg msg to the deconstructor of the jobpool, it should be waiting there
Avatar
8dbefa7 Editor Improvements - HamidReza585 91d7a67 Update explanations.cpp - HamidReza585 8b69ffe clang-format - HamidReza585 c9018a2 More Tiles - HamidReza585 009a951 clang-format - HamidReza585 3ca0925 New Tiles & Improvements - HamidReza585 73a21ca Fix specchar transparency and move spec-char to character snap - fokkonaut 76db1d7 Merge #4121 #4124 - bors[bot]
Avatar
Avatar
Learath2
Are you sure? add a dbg msg to the deconstructor of the jobpool, it should be waiting there
Well, I have threads for sending curl posts to discord webhooks, and as it seems when the server closes not all messages are sent, then, on restart of the server the rest gets sent from before
09:27
Maybe i should just NOT send all left the game messages on shutdown xd
Avatar
@fokkonaut Ah you want to finish all inserted jobs? I guess our shutdown just ensures no partial jobs
Avatar
ye probs
09:40
i think just not sending all messages on shutdown will be the way to go
Avatar
I'd add a m_Shutdown check to Add so you can ensure no new jobs, and the previous solution I mentioned, a condition variable waiting on an atomic counter to be 0
Avatar
i've never worked with atomic vars
09:41
What do they do?
Avatar
They are like normal variables but they ensure modifications to them are in one step, so no other thread can see a partial update of the variable. They are thus safe to read and write from multiple locations
Avatar
oh, nice
09:42
But: the shutdown check isnt required i think, it should not add any jobs after shutdown get executed anyways
Avatar
So when a job gets queued I'd increment the counter and when it's done or aborted I'd decrement it
Avatar
wouldn't that be pretty much like my list?
Avatar
Yes, but the atomic is safe to wait on with a condition variable
09:44
Well I guess in this specific circumstance you could wait on the vectors size with a condition variable provided you are accessing it within a lock
09:45
Where did you find this vector anyway? We use a linked list from what I remember
Avatar
I made up this vector because i didnt find any list or smth to put the CJob that needs to be passed to Add
09:46
sorry, its a list, not vector
09:47
wait
09:47
do i not need to put the new CJob anywhere?
09:47
will it get freeed in the job pool?
Avatar
It will if you put it in a shared_ptr
09:48
But if you don't keep a pointer to it you can't check it's state, so not sure how useful that is
Avatar
Well, I saw that the client does it like I do for the demo tasks
Avatar
Anyway, the job pool already keeps a linked list of jobs, you can add a shutdown function to it
Avatar
Avatar
Learath2
It will if you put it in a shared_ptr
Only then?
Avatar
Yep, otherwise it'll leak
Avatar
Why is that
Avatar
Wait let me check the code and make sure
Avatar
Ah, we do force you to use a shared_ptr
09:51
So it'll get freed no matter what
Avatar
not really
09:51
ah wait
09:51
probably ddnet
09:51
im on 0.7 base
09:53
I just did new CJob()
Avatar
isnt the job pool single threaded
09:56
or is it a threadpool
09:57
else just add a job that signals the main threads condition var
Avatar
it's a threadpool on both ddnet and vanilla
Avatar
ok
10:01
would probs still work
Avatar
I think you can just wait on FirstJob to be null using a condvar and add checks to signal the condvar when it does become null
Avatar
bcs then all threads are busy
10:01
and the destructors waits for the threads to be empty
Avatar
Avatar
Deleted User
and the destructors waits for the threads to be empty
Hm, the destructor doesn't wait for tha tthough
Avatar
m_Shutdown = true; for(int i = 0; i < m_NumThreads; i++) sphore_signal(&m_Semaphore); for(int i = 0; i < m_NumThreads; i++) { if(m_apThreads[i]) thread_wait(m_apThreads[i]); } lock_destroy(m_Lock); sphore_destroy(&m_Semaphore);
10:02
lol
Avatar
That doesn't wait for all threads to be empty
10:03
The shutdown signal will make the threads process one last job and they will all quit
Avatar
but the main thread sleeps
10:03
until the last job is done
10:03
until then all jobs are in the queue
Avatar
Where do you see that happen?
Avatar
i add a job that signals a cond var in the main thread
10:03
just add that new job
Avatar
There is no guarantee for that to be executed after all other jobs are done though
Avatar
its at the end of the list
10:04
so its added in the end
Avatar
A free worker can immediately take that job and signal the condvar while a long curl is running
Avatar
i dont see how it waits for all jobs
10:04
once the shutdown signal is true it just processes 1 at most
10:04
as learath says
Avatar
but the curl job is blocking the thread
Avatar
each worker thread
Avatar
@Deleted User it's blocking a thread, not all worker threads
Avatar
for(int i = 0; i < m_NumThreads; i++) { if(m_apThreads[i]) thread_wait(m_apThreads[i]); }
10:05
what does this mean then
Avatar
it waits until all workers quit
Avatar
yes
10:05
and since our job is the last
10:05
all other jobs are in currently handled or are finished
Avatar
yeah its safe
10:06
there is no break in it
Avatar
But you can't guarantee order of execution. What if your "last" job gets immediately picked up by a worker and finishes before all other running jobs?
Avatar
so its either running or no job is found
10:07
but the job list is a list
10:07
lock_wait(m_Lock); // add job to queue if(m_pLastJob) m_pLastJob->m_pNext = pJob; m_pLastJob = std::move(pJob); if(!m_pFirstJob) m_pFirstJob = m_pLastJob; lock_unlock(m_Lock); sphore_signal(&m_Semaphore);
10:07
its a queue
10:07
our last job will always be the last
10:07
the others are then currently processed or already finished
10:07
they are not skipped
Avatar
All the threads will be waiting in sphore_wait you add a long curl job, and a very short condvar trigger job. I don't get how you guarantee the short condvar job doesn't finish before the long curl job
Avatar
it can
10:08
but the curl job is still in work then
10:08
it cant be skipped
Avatar
Avatar
fokkonaut
Well, I have threads for sending curl posts to discord webhooks, and as it seems when the server closes not all messages are sent, then, on restart of the server the rest gets sent from before
and how does this work then
Avatar
so we wait for the curl job anyway
10:09
(for the thread that handles the job currently)
Avatar
Hm, it could work actually
Avatar
Avatar
fokkonaut
and how does this work then
i doubt u already added the job 😄
10:10
that signals the main thread
Avatar
Avatar
Deleted User
i doubt u already added the job 😄
And how can it then get executed when the server starts again?
10:11
why is that
Avatar
Ah, I see your point, you mean if the last job ever gets executed that means the previous jobs are all already taken by a worker thread
Avatar
maybe the discord thing works like that
Avatar
Avatar
Learath2
Ah, I see your point, you mean if the last job ever gets executed that means the previous jobs are all already taken by a worker thread
yes 😄
Avatar
Avatar
Deleted User
maybe the discord thing works like that
Mh? I just start threads to send a curl post to discord, nothing more
Avatar
yeah i dunno why it can send that when the server is restarted, maybe some weird caching somewhere
Avatar
Yea thats what Im saying
Avatar
have u checked if your server is actually dead
Avatar
Of course it is actually dead
10:13
it also happens locally so yeah
Avatar
well anyway, the above is a solution to be safe it happens before your server closes
10:14
why it can send it when nobody knows about the original job anyway is some weirdness outside of ddnet
10:14
or your server*
10:15
Which above do you mean?
Avatar
add a new job class that takes a cond var(and the mutex for it) signal that cond var (on the job) the main thread should add the job inside the mutex and wait on the cond var after it was added to the job list (edited)
Avatar
job run: m_pMutex->lock(); m_pCond->signal(); m_pMutex-unlock(); main thread: std::mutex M; std::cond_variable C; std::unique_lock<std::mutex> Lock(&M); Pool()->AddJob(make_shared(new CWaitingJob(&M, &C))); C.wait(&Lock);
10:20
smth like this
Avatar
Ive never worked with threads that deepfly, I dont know about any of these tbh
10:23
deepfly wtf xd
10:23
deeply
Avatar
well there u have the impl, i just dunno if any of those takes a reference or pointer
10:23
but the compiler will tell u xd
Avatar
deepfly ez
Avatar
@Learath2 btw, is the jobpool impl even safe?
10:26
e.g. when we have 32 threads but add 128 jobs in one go, it will still sleep on the semaphore?
Avatar
Hm, heinrich made it a long while ago, it atleast passed my rudimentary review the first time
10:27
sphore_wait should fall through as its a general counting semaphore
Avatar
ah yeah makes sense
Avatar
Adding 128 jobs will increment it all the way to 128, and each thread passing thru wait should decrement it once
Avatar
yeah true
10:30
c++ only adds them in c++20 and calls them counting_semaphore
10:31
we have to upgrade to c++20 no choice xdd
Avatar
man cppreference is insane actually
10:33
anything u search
10:33
it has an example
10:34
there is some hard work here
10:34
btw it uses mediawiki, the wikipedia wiki software
10:34
just noticed it xd
Avatar
ez, when we add ddnetreference.tw
10:35
check this out
Avatar
ah btw
10:35
can we also swap our "documentation" to doxygen?
10:35
@see functioname
10:36
e.g. in system.h is a random one
Avatar
we already use it in some parts
Avatar
i dunno who invented it xD
Avatar
heinrich i think xd
Avatar
is there also a generator for it? xd
10:36
DDraceNetwork, a cooperative racing mod of Teeworlds - ddnet/Doxyfile at master · ddnet/ddnet
10:36
i added this
10:36
long time ago
10:37
beautiful
Avatar
/* Function: time_get_impl Fetches a sample from a high resolution timer. Returns: Current value of the timer. Remarks: To know how fast the timer is ticking, see <time_freq>. */ is there smth that converts these stuff to doc?
Avatar
ah u can prob make it
Avatar
the fact we name the function is already weird xD
10:37
look this
10:37
i documented this stuff
Avatar
i vote for doxygen, its ez for java nobos like me
Avatar
it uses doxygen style
Avatar
yeah
10:38
nice
10:39
noice
Avatar
ye looks nice
10:40
nice cursor icon btw
heartw 1
10:42
im gonna update the docs
10:44
done
10:44
yay 1.9.1 doxygen
10:44
more modern
10:44
omaigat
10:44
wait i use a modern theme
10:44
instead of 2000'
Avatar
is there dark design?
Avatar
nice
10:45
dont add white design toggle to troll chillerdragon xd
monkalaugh 1
10:47
omg
10:47
it looks so cool
10:47
@Deleted User check it out
Avatar
wow
10:47
looks better than out wiki xD
Avatar
Yeah, looks nice
Avatar
where did you toggle the design
10:50
ah isee on firefox it works
10:50
so it automatically detects it 😄
Avatar
it detects
10:50
ok it will update daily
Avatar
that often? 😄
Avatar
well its cheap
Avatar
ok
10:52
10:52
still most confusing btw
10:52
the cut itself is vertically
10:52
the split happens horizontal xD
Avatar
Fixed reported bug: #4007 !ScreenShot

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 if it works standalone, system.c especially
  • [ ] Considered possible null pointers and out of bounds array indexing
  • [x] Changed no physics tha...
10:58
So it will look consistent and render correctly on doxygen, a standard in docs generation. Updated daily doxygen result: https://wiki.ddnet.tw/docs/
Avatar
i will try to do it later
Avatar
no hurry, nobody was missing it the last decade 😄
Avatar
bc210df Editor Bug Fixed - HamidReza585 f482497 Merge #4127 - bors[bot]
Avatar
Q: what was the sense of adding magic field to datafile format header?
Avatar
can you give the example code
Avatar
Hi, would it be possible to be able to rearrange the order of envelopes in the editor ? Thanks :)
Avatar
A url shortener made with rustlang.
Avatar
recursion
Avatar
A simple url shortener server made in rust. Contribute to edg-l/shorust development by creating an account on GitHub.
12:00
kekw
Avatar
Avatar
Deleted User
can you give the example code
in binary map file
12:00
there should be DATA/ATAD substring
12:00
in header
12:01
the question: why xd
Avatar
char m_aID[4]; this?
12:04
maybe for ez parsing, i think other data formats make it too
12:05
e.g. not caring about the file extension
12:06
makes sense then
Avatar
Avatar
gerdoe
Q: what was the sense of adding magic field to datafile format header?
because binary files usually have some magic bytes in the header
14:02
to know what binary format it is
14:02
eg png etc
14:02
file extensions are a lie
14:03
14:04
jpg is FF D8 FF
14:24
now the images are svg and interactive
14:24
if they are big
14:24
xd
Avatar
oh doxyfile has clang assisted parsing
Avatar

Checklist

  • [ ] Tested the change ingame
  • [ ] Provided screenshots if it is a visual change
  • [ ] Tested in combination with possibly related configuration options
  • [ ] Written a unit test if it works standalone, system.c especially
  • [ ] 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-addresssanitizer--u...
Avatar
that was fast
Avatar
when trying to use doxygen with clang i get crazy errors
14:44
maybe i should tell cmake to use clang or smth
Avatar
i wanna learn coding too
14:45
looks fun
justatest 3
Avatar
42c65b8 update doxyfile - edg-l baab5ca Merge #4130 - bors[bot]
Avatar
@Ryozuki looks like you're using C mode somehow, try to set C++ and a modern standard somehow
14:46
i got it
Avatar
at least I expect some compiler flags to fix it
Avatar
i was passing the dir to compile_commands.json
14:46
the file *
14:46
instead of the dir
14:47
well it gives some errors yet
14:47
doxygen theorically read compile_commands.json generated from cmake
14:47
so it knows the flags
14:47
looks like its working now, it just doesnt find the generated files like protocol.h xd
14:50
i wonder whats different
14:50
it says with clang templates stuff works better
14:51
ah i guess it didnt find generated files cuz i didnt build the project
14:52
im dumb
14:55
it takes way longer now, ill update it weekly
14:55
xd
Avatar
What is IVideo::Current()?
Avatar
I meant in the future 😄
Avatar
it says whether there is a video recorder object I think for demo -> video recording
Avatar
22df870 less code, less memory use - gerdoe-jr a10ffd8 Merge branch 'master' of https://github.com/ddnet/ddnet into pr-unnecessary-multi-use - gerdoe-jr df6f6ba code re-use - gerdoe-jr 7d19697 fix clang-format - def- a22f4ff Merge #4100 - bors[bot]
Avatar
is the CComponent::OnRelease method called when the console closes?
15:31
or what is it
15:31
xd
Avatar
It would be nice to be able to check a players timeout code by either rcon status or via server logs. As of now it's only possible to see someones timeout code AFTER its been used, I think.
Avatar
oh maybe
15:32
its when u release from a input
15:32
e.g text input
15:32
imagine if we had docs for this
15:32
wonder who is making em
Avatar
I think this will make it easier for future people looking into this class.

Checklist

  • [ ] Tested the change ingame
  • [ ] Provided screenshots if it is a visual change
  • [ ] Tested in combination with possibly related configuration options
  • [ ] Written a unit test if it works standalone, system.c especially
  • [ ] Considered possible null pointers and out of bounds array indexing
  • [ ] Changed no physics that affect existing maps
  • [ ] Tested the change with [ASan+UBSan or val...
Avatar
@Deleted User do u mean the x and y are deltas?
15:50
or the coordinates are relative to the game window
15:50
i guess that
Avatar
Deltas
15:52
deltas since last tick i guess
15:53
does this convince u
15:53
@Deleted User
Avatar
i guess since the last call is more precise
16:01
now i have to rebase #4095 xd if we ever going to update sdl anyway, doesn't look like this i wanted xD
Avatar
This would remove ui_mousesense and use the desktop cursor position instead for menus and editor This would also fix the editor cursor to not move faster than in menus. That&#39;s probably how ...
Avatar
@Learath2 do you still have problems with #4114?
Avatar
Nope, I'll give it a merge tonight
Avatar
Alright
16:16
thanks a lot
Avatar
cl_show_local_direction allows you to see your own key presses during the game. I changed the statements so it will allow local player to have key presses (inside the game), and I added a statement for configs (settings), so if you have cl_show_local_direction enabled, it will render the directions (arrows) for the local player. (Also affects demos and videos, same as cl_show_direction) ![ScreenShot](https://user-images.githubusercontent.com/57710259/131379491-c32047ef-7941-40eb-9ed5-38...
Avatar
The new regulation bans minors from playing online videogames between Monday and Thursday and allows an hour of play on Fridays, weekends and holidays.
18:47
is this true
18:47
ppl under 18
18:47
insane
18:47
xd
Avatar
dude im getting spammed with this
Avatar
doesnt tencent hold lot of power in china?
18:47
arent they against this
18:47
xd
Avatar
genshin impact seems to already applied the changes
Avatar
i don't really care tbh. kids still gonna grab their parents id to register like they always do anyway
Avatar
f6220ed document CComponent - edg-l eb426c4 missed dots - edg-l d2bfb1e Merge #4132 - bors[bot]
Avatar
Or LITERALLY ANY FUCKING ID you can find on the search engine when you type in "national ID china". I have used this trick as a foreigner for like, 10 years now. Works 100% of the time.
18:51
lmao
18:52
u can do this
18:52
hmm
18:52
doesnt look rly secure xd
Avatar
i honestly don't think it works any more
18:53
id verification are a gov service that service providers have to connect now (edited)
18:53
so it checks more than just the numbers
18:54
you have to provide id's holders name to match
Avatar
Avatar
Ryozuki
doesnt look rly secure xd
it was an id, not a encryption
Avatar
i mean the algo is public
Avatar
of course it is
18:56
you can just tell
18:56
most of in person service requires you to have the nfc id card and they need to take your picture when you use it
18:57
for online verification, you need to provide both name and a valid id. if you just try to come up with one, you won't be able to provide holder's name.
18:58
for anything involves payments, an extra verification step is required where you upload a selfie where you hold your id against your face.
18:59
so it's near impossible to cheat it now.
Avatar
add some parentheses
Avatar
Yeah nevermind I fixed it
Avatar
what about the color of the console? It seems to me that you need to make a choice, turn on / off the color, make it enabled by default
Avatar
just force on, dont need a setting for everything
Avatar
@fokkonaut do you have an example of how doors work on your server?
Avatar
SSwitchers = new[NumSwitchers + NumPlots + 1]; They are created like a normal door, just that the, have a different tile that is used to create it, and this other tile starts with 1 again and the switch number for plot door 1 is numswitchers + plot number, so plot door 1 = numswitchers + 1
22:33
the m_Number is also correctly assigned, it would just need to get that information to the client, and then I can send the full switchstate, so the client knows where to put the higher numbers, or lets say then it firstly knows about these high Numbers because it can not fetch them from the map
22:34
I can add you to the repo to see it, if needed
Avatar
ok, thats ok, I think I got it
22:34
thanks
Avatar
so, yes, if you use a different tile, then it couldnt be predicted from the map
22:36
for predicting ddnet doors I was just planning to use the map directly. for you door you would have to look at each netobject and assign them to collision
Avatar
but it creates a laser which will be sent using Enttype_door and the correct switch number, that should be enough no?
Avatar
Avatar
trml
for predicting ddnet doors I was just planning to use the map directly. for you door you would have to look at each netobject and assign them to collision
But that does make it reeeally unintuitive
22:38
Also, there is an editor in my mod, which lets you place laser walls where you want, always having number 0
22:38
They would also not be predicted
22:38
same for other mods that dont create laser doors from this exact tile
Avatar
yeah, so using the netobject would be more flexible for mods
Avatar
Avatar
fokkonaut
Also, there is an editor in my mod, which lets you place laser walls where you want, always having number 0
is it also possible to remove these lasers?
Avatar
(and it was the way to go i thought, if you want to do prediction for draggers etc too)
Avatar
Avatar
trml
is it also possible to remove these lasers?
Yes
22:39
So they had to be dependent on the netobj laser and entity ex
22:39
i think
22:42
so, to each time the client receives a new netobject it will have to update those tiles in collision. and when the netobject disappears, it would have to go through those tiles again and replace them with air (?)
22:43
"so, each"*
Avatar
yes, but you would need to be very careful not to remove existing doors when they cross
Avatar
it would be nice to have actually, but it would require a little bit of thinking
Avatar
i can show you code i made on my server
22:45
its on low level collison aswell xd
Avatar
yeah, the implementation of doors in ddnet is unfortunately ugly as well 😛
Avatar
thats also an bug in the server: if you cross two doors with different numbers, the one door will have no stopa in the middle where its getting crossed so you fall through
22:46
yes, door code is madness
22:46
many hours of thinking is in my mod xD it was a pain but i tjink i got wverything working
Avatar
for prediction it would be better if the physics did not depend on the order that the doors are inserted or removed in
Avatar
truw
22:48
im thinking
Avatar
or, perhaps it doesnt
Avatar
it does
Avatar
after removing a door you would have to iterate through all the other doors and put them back though, in case any of them got overwritten
Avatar
yea, mh
22:51
tbh, i think newly added doors should just not overwrite old data
22:52
that would probably be it, since doors arent crossing odten at all
22:52
often*
22:53
doors of different numbers*
Avatar
yes, except perhaps if you add two crossing doors, then remove the first one
22:57
but not allowing (or at least not supporting) crossing doors would be the easiest
Avatar
yes, but i think newly added doors should not overwrite the existing ones, as then it wouldnt be a problem if a built laser wall (id 0) crosses a normal door
Avatar
yes, wouldnt for that case
Exported 438 message(s)