Programming without friction, and putting my money where my mouth is:
https://blog.s-schoener.com/2025-02-03-programming-friction/
=> More informations about this toot | View the thread
How and why I wrote a build system, even though everyone tells you not to.
https://blog.s-schoener.com/2025-01-29-build-systems/
=> More informations about this toot | View the thread
I chose dotnet/C# for a tool I wrote. It's running a bunch of processes and redirects their outputs. However, redirecting the output seems to block: even the async variants (BeginOutputReadLine, or manually reading async from the stream) just move the blocking calls onto a threadpool, meaning that the threadpool is clogging up. You can get fully async reading from pipes on Windows (https://blog.s-schoener.com/2024-06-16-stream-redirection-win32/). Do any of my C# friends know whether that is implemented somewhere in dotnet already?
=> More informations about this toot | View the thread
Unity Burst and zero-cost: https://blog.s-schoener.com/2025-01-18-burst-zero-init/
=> More informations about this toot | View the thread
I was convinced I had a post somewhere where I compare Mono’s codegen for C# as used in Unity between Release and Debug but did not find it. Let’s fill that gap. https://blog.s-schoener.com/2025-01-09-mono-codegen/
=> More informations about this toot | View the thread
Overthinking? No, underdoing! https://blog.s-schoener.com/2024-12-29-overthinking-underdoing/
=> More informations about this toot | View the thread
I wish I could shut up for a day or two but sometimes you find something and then just want to write it down. Or it finds you and crashes your debugger and leaves you no other choice:
https://blog.s-schoener.com/2024-12-17-unity-blobs/
=> More informations about this toot | View the thread
How I learned to fix some of my regular code screw-ups in style with @liveplusplus -powered code-reload: https://blog.s-schoener.com/2024-12-16-liveplusplus-debug/
=> More informations about this toot | View the thread
Why do I have to wait so long for Burst to compile things? Or, "Unity Burst and the Kernel Theory of Video Game Performance":
https://blog.s-schoener.com/2024-12-12-burst-kernel-theory-game-performance/
=> More informations about this toot | View the thread
Some words about looking dumb while learning a new thing:
https://blog.s-schoener.com/2024-12-09-idiot-second/
=> More informations about this toot | View the thread
Find some documentation for the Unreal Engine side of things here: https://dev.epicgames.com/documentation/en-us/unreal-engine/wine-enabled-containers-quick-start-for-unreal-engine
=> More informations about this toot | View the thread
A thing I worked on at Epic is now public: We've worked hard to get Unreal Engine cooking on Linux using Wine.
My friends Adam and Aiden from TensorWorks have written up all the technical details of our joint adventure here: https://tensorworks.com.au/blog/migrating-unreal-engine-cook-workloads-to-wine/ - It's a very technical piece, which is indicative of the difficulty of the problem we tackled. Good times!
=> More informations about this toot | View the thread
We interrupt our regularly scheduled tweets on program performance for a PSA on my dear hobby of listening to unabashedly silly music, which for once is somewhat topical:
https://www.youtube.com/watch?v=yup8gIXxWDU
=> More informations about this toot | View the thread
I saw some converations around "why do people care about backwards compatibility", which lured me into writing a few words about that on my blog: https://blog.s-schoener.com/2024-11-28-backwards-compat-unity/
=> More informations about this toot | View the thread
In C#, Rider keeps suggesting replacing simple code with opaque pattern checks. They call this suggestion "Merge null/pattern checks into complex pattern". Maybe "replace simple thing with complex pattern" should have been a red flag to begin with.
And yes, I have turned this suggestion off now. But why is it even showing up in the first place?
=> View attached media | View attached media
=> More informations about this toot | View the thread
I wrote some words (with an example!) about how to write custom async on-demand importers in Unity: https://blog.s-schoener.com/2024-11-22-unity-async-imports/
=> More informations about this toot | View the thread
"When is this going to get fixed in Unity?" I don't know, I don't work there. If you want this or something else improved, get in touch and we can figure out the terms. Unity are free to do that and reach out as well, if they want to.
=> More informations about this toot | View the thread
Now to address some questions I got from last time: "What is this wondrous profiler you are using there? It looks so smooth and responsive." That's @superluminal. It has mixed-callstack support (C#/native) for Unity. It's very good.
"Will all of this go away once Unity is on CoreCLR?" I hope it's going to be better! CoreCLR has much better codegen, but quadratic stuff always explodes eventually. Also, I am not willing to wait for that. But I'm interested to see where it goes :)
=> More informations about this toot | View the thread
So what are we going to pool? The most common element in our graph is the "slot" - the connection point for an edge - and its associated view. Let's pool that. There's more we could reasonably pool, but the 3h I set as a time box is up.
We're at 1s now (vs. 2.4s) and a large chunk of that is a codepath (RenderPreviews) that I have looked at last time, and those optimizations aren't included here yet.
=> More informations about this toot | View the thread
What's the common case? The common case is that we're undoing a change we did manually. These are often small changes where the vast majority of things isn't changing. Why is rebuilding that so costly? GC allocations, lots of them.
This again is not news for any Unity users: They have been pooling everything for the last decade or so because reallocating is too costly. UI Toolkit itself recommends you use a pool: https://docs.unity3d.com/6000.0/Documentation/Manual/UIE-best-practices-for-managing-elements.html
=> More informations about this toot | View the thread
=> This profile with reblog | Go to sschoener@mastodon.gamedev.place account This content has been proxied by September (3851b).Proxy Information
text/gemini