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 2022-03-01 00:00:00Z and 2022-03-02 00:00:00Z
What has been bothering me forever is that emoticons are rendered behind player names. I find that a bit unattractive because the emoticons are sometimes very beautiful and it would be cool if you always see them.
!image
Of course, they are also covered by blocks, since they are rendered in the player component.
![image](https://user-images.githubusercontent.com/14315968/156174100-650...
TIL that compiling a kernel with SIMD is bad(edited)
17:08
However, using the large SIMD registers in OS kernels leads to performance problems. The reason is that the kernel needs to restore all registers to their original state before continuing an interrupted program. This means that the kernel has to save the complete SIMD state to main memory on each system call or hardware interrupt. Since the SIMD state is very large (512–1600 bytes) and interrupts can occur very often, these additional save/restore operations considerably harm performance. To avoid this, we disable SIMD for our kernel (not for applications running on top!).
Well, seems like Unique isn't interested in hosting FastCap in Korea/Japan/Singapore, so I would like to bring up the point again about DDNet being able to run CTF maps
A problem with disabling SIMD is that floating point operations on x86_64 require SIMD registers by default. To solve this problem, we add the soft-float feature, which emulates all floating point operations through software functions based on normal integers.
MMX: The Multi Media Extension instruction set was introduced in 1997 and defines eight 64 bit registers called mm0 through mm7. These registers are just aliases for the registers of the x87 floating point unit.
Single Instruction Multiple Data (SIMD) instructions are able to perform an operation (e.g. addition) simultaneously on multiple data words, which can…
18:41
this explains more
18:41
xd
18:43
SSE is used by default by clang (and apparently rustc) when targeting x86_64 because being able to execute some level of SSE instruction (i think SSE2) is a requirement for x86_64 compatibility. Floating point math without SSE has severe performance issues, mostly because of a bad design of the original x87 coprocessor instruction set (which was designed when optimizations of modern cpus did not exist yet). For example, converting a floating point number to an integer without SSE (discarding the decimal part) is a slow operation that flushes pipelines and causes a lot of other bad things.
it only crashes for some maps/servers for me with ASAN; looks like the vanilla servers hosted by DDNet don't crash but those hosted by others do (on ctf4 and ctf5 for example)
Fixes the server timer in the HUD showing 00:00 when the server time exceeds around 248 days.
Tested on "Vanilla Teeworlds Server - CTF":
!303d
Otherwise connecting to this server causes:
```
/src/game/client/components/hud.cpp:128:17: runtime error: signed integer overflow: 26254443 * 100 cannot be represented in type 'int'
#0 0x55c8b6722e7d in CHud::RenderGameTimer() /s...
The recent dramatic policy shift in Russia has brought out two Citizens' Initiatives in the Finnish government's net portal. Both are about NATO membership in the country which is traditionally militarily non-aligned.First initiative (open Feb 21) proposes a NATO membership referendum, the other (open Feb 28) proposes that parliament should go a...
In principle https://github.com/ddnet/ddnet/issues/4207 has already been fixed with https://github.com/ddnet/ddnet/pull/4770
But I don't know if the bug has influence on another part. The faulty animation code is hereby fixed. The problem is that when you shoot with the Rifle or the Shotgun the Muzzle animation is executed. This manipulates Alpha, Alpha itself is actually redefined in the condition, but apparently it overwrites the Alpha used for RenderHand since it is in the same code block...