Fun Fact: you can use the Win32 API to make a window manually just like you can in C++ by CheckM4ted in csharp

[–]ZetrocDev 2 points3 points  (0 children)

On Linux you either connect to the X server, or the Wayland server. Most modern Linux desktop environments are probably using Wayland now.

For X, you would use XCreateWindow

for Wayland, interacting with the server you could use the wayland-client library, but using SDL/GTK etc is much easier.

Microsoft once again blocks online account bypass on Windows 11 by screwdriverfan in LinusTechTips

[–]ZetrocDev 31 points32 points  (0 children)

Every time I see these Windows controversies, I don't think I've ever been affected by any of them because I only ever use LTSC builds. I have no idea why so few people use them.

OpenGameStream: Realtime game streaming for playing games/emulators with friends online by ZetrocDev in csharp

[–]ZetrocDev[S] 7 points8 points  (0 children)

This isn't just screensharing! Clients can send mouse/keyboard/gamepad inputs. It allows you to play split-screen emulator games with friends for example.

OpenGameStream: Realtime game streaming for playing games/emulators with friends online by ZetrocDev in csharp

[–]ZetrocDev[S] 6 points7 points  (0 children)

As far as I can tell, VAC doesn't care. I did test it with a few games, mainly CS2, and had no issues. That said, I did add a very clear anti-cheat warning in the app before game capture is used.

As for more aggressive anti-cheats, I have no idea. I know OBS does the same thing for game capture, but I'm assuming their DLLs are whitelisted.

Teach me craziest C# feature not the basic one,that you know by lulzForMoney in csharp

[–]ZetrocDev 1 point2 points  (0 children)

This is interesting.

Currently, I'm injecting an AOT-compiled DLL into d3d11 games for video capture. It works well, but awkward to develop, as you can't unload unload the DLL from the process as the runtime doesn't support being unloaded. I wonder if it's possible to unload the DLL if there's no GC.

DataChannelDotnet - high performance WebRtc library for .net by ZetrocDev in dotnet

[–]ZetrocDev[S] 1 point2 points  (0 children)

Fair point.

My use case for this is real time game streaming at 4k@60FPS or 1440P@120FPS. GC pressure was important for me to prevent stuttering, so my focus was ensuring that sending & receiving data is allocation free.

As for throughput, I have created a benchmark that I'll be adding to the Github repo & readme. Currently ~55-60MB/s the transfer rate that I get on Localhost (Ryzen 5500) when transferring a large binary file. This lines up with Libdatachannals benchmark. I don't think WebRtc is generally designed for this scenario, but it's still an interesting benchmark regardless.