Admer456 @admer456.bsky.social · 22/09/2026More work remains to be done though: parametres, input state/context (who fired this entity etc.) and building some actual logic entities (different triggers, gates, counters, filters etc.) But yeah, I get to have "Source at home" now :3 I'll write about the implementation someday.. 030
Admer456 @admer456.bsky.social · 22/09/2026It's worth noting the above case will work just fine with actor-based entity systems too. You'd make helper entities per-entity-class instead of per-component. Anyway, the fourth case is a combination of 2 and 3. Nothing special about this one, really. You can chain as many bundles as you want. 110
Admer456 @admer456.bsky.social · 22/09/2026Third case: actual input selection. There is a middleman entity that lets you select a particular input for a particular class. A door may open, close, lock, unlock, toggle and whatnot. Just like the cases above, this one gets boiled down to a keyvalue. The middleman entity does not actually exist. 100
Admer456 @admer456.bsky.social · 22/09/2026The second case gets interesting: imagine you want to trigger multiple different entities (+ different delays) from the same output. A trigger_once may target a bundle, which itself targets one or more entities. This one-to-many relationship gets baked to a keyvalue. It doesn't exist at runtime! 100
Admer456 @admer456.bsky.social · 22/09/2026For inputs, I imagined 4 different cases. The first one, traditional Quake-style triggers, will assume there's a default input. A door toggles, a train toggles, a breakable breaks, an explosion explodes. This simple trigger relationship is then translated to an actual keyvalue by the map compiler. 100
Admer456 @admer456.bsky.social · 22/09/2026And yes, I was alluding to Source's outputs here. Back in my idTech 3 and 4 days, this is more or less what I used to do. But what about inputs, i.e. how do I specifically close/open/lock/unlock doors? What about delays? What about targeting multiple different entities from the same output? Well... 100
Admer456 @admer456.bsky.social · 22/09/2026Modern Quake map editors provide very fundamental QoL features, such as autocomplete, drawing connection arrows etc. Also, this isn't limited to a single field named "target". With FGDs, you can mark any field as such, for example "target_on_enter", "target_on_exit" and whatnot... 100
Admer456 @admer456.bsky.social · 22/09/2026My engine has some kind of an ECS as opposed to an actor/class hierarchy-based entity system, so already some design decisions were made with Quake map editors in mind. The starting point is Quake's trigger-target mechanism. It's very simple: one entity has a 'targetname', the other has a 'target'. 120
Admer456 @admer456.bsky.social · 22/09/2026Here's something I did earlier this month: I got Source-style I/O working in my engine, but ALSO, I built a "compatibility layer" for Quake/HL map editors (think TrenchBroom, J.A.C.K. etc.) which do not have the editing UI for that There's a lot to be said here, but I'll try to keep it brief! 🧵 1111
Admer456 @admer456.bsky.social · 20/08/2026Topic: non-planar faces, concave brushes, the grid. It's basically stuff that was cut from the previous video, refined. I started working on this some 4-5 months ago, got it ~40% done, then I got distracted. Suddenly, a few days ago, I got back to it, completed almost all the remaining work. Yay! 070
Admer456 @admer456.bsky.social · 25/06/2026Alternatively, drag'n'dropping a supported model onto the 3D view - and having it instantiate as a designated prop entity type - is also a possibility Scenes are tricky though. I'm imagining a thingy that translates a Godot scene into a TB entity in the FGD - but that's more func_godot territory.. 100
Admer456 @admer456.bsky.social · 25/06/2026Meshes should be doable. You can already have "prop" entities in TB like prop_static, with a simple FGD entry. Then you just place an entity, select a model and... oh. The editor is missing an asset browser! :3c 100
Admer456 @admer456.bsky.social · 24/06/2026As someone looking to improve general gamedev workflows (for a community fork of TB), I'd be very curious to hear all that's lame about the TB-Godot workflow :3 Some things can't be fixed, like the fact it's an external program, but I'm sure a lot can be done w.r.t. QoL and such 120
Admer456 @admer456.bsky.social · 22/06/2026No worries, there's a bunch of non-code ways to participate. Documentation, testing new features (e.g. nightly builds, PRs), providing feedback etc. It's all participation. And that goes for many projects, not just NextBroom or UZDoom! 130
Admer456 @admer456.bsky.social · 06/06/2026TL;DR most of the core functionality is done. I'll take a little break now and later work on bindless, multiview, OpenXR glue and Avalonia glue. After that, it's mostly just filling in the gaps, fixing issues and whatnot 040
Admer456 @admer456.bsky.social · 06/06/2026Vulkan progress, June 2026 I refactored some stuff and wrote more examples: glTF and OBJ model loading, transparency (alphatest/masked and alphablend) and multithreaded rendering And! I published a blog and a repository so people can see, borrow and/or criticise :3c microfox.dev/blog/06-06-k... 191
Admer456 @admer456.bsky.social · 14/05/2026You may notice "Example" on the window titles and indeed, I'm building a "comfy" little Vulkan library for C# There will be lots of these :3c 010
Admer456 @admer456.bsky.social · 14/05/2026Vulkan progress, May 2026 In March, I had a (coloured and resizable!) window In April, I had a triangle Now: compute shaders, textures, render-to-texture, instanced rendering, MSAA, ext. dynamic state... Next up: multiview (for VR), bindless textures, some smaller things Blog coming soon(tm) 182
Admer456 @admer456.bsky.social · 05/04/2026For a proper cycle, I'm thinking of having 4 skylights: sunrise, morning, afternoon, sunset. Night lighting is just a constant, static light, and it contributes to shadows during the day :) I'll be working on that + skybox blending, so stay tuned(tm) 010
Admer456 @admer456.bsky.social · 05/04/2026So, one thing you can do is a "global RGB" soft skylight and a direct light with hard shadows. This might work quite well for a dynamic sky system that doesn't do a day-night cycle but rather a sunny-cloudy cycle! For day-night, it suffers from poor colour depth. It looks too jarring in the dark... 120
Admer456 @admer456.bsky.social · 05/04/2026Caveats: - Different lights need a slightly different A-Z string, so they can get *unique* lightstyles - Max 4 lightstyles per luxel (practically per area due to light bouncing) - Colour depth is 26 values or so - May be VERY LAGGY on old Intel/AMD because of OpenGL texture upload inefficiencies... 110
Admer456 @admer456.bsky.social · 05/04/2026The hack relies on the mapper inputting the full A-to-Z range in the editor, so that the lightmap compiler (HLRAD) can generate everything needed. There's a limit of 32 custom lightstyles in a level Then, at runtime, you may arbitrarily override a lightstyle, e.g. just "m" or "a" for on-off... 110
Admer456 @admer456.bsky.social · 05/04/2026On light blending: Quake/HL's Flickering Lights(tm) technology is based on a string of lowercase characters (a "light style"), e.g. "mamamama" or "defghijklmlkijhgfe", where "a" is 0%, "m" is 100%" and "z" is like 200% They're interpreted at 10 Hz, but it's possible to override them at runtime... 120
Admer456 @admer456.bsky.social · 05/04/2026New side quest: day-night cycle in GoldSRC (thread) Done: light blending (using a lightstyle hack) To do: skybox blending, custom skybox set (images = goals) 1114
Admer456 @admer456.bsky.social · 28/03/2026(5/5) After 6 years, I'm finally close to where I wanna be, API-wise. I remember wanting to learn Vulkan in 2020, but I gave up after a day... the tutorial situation was also a bit messy back then. Anyway, time to replace my engine's render backend... eventually. 010
Admer456 @admer456.bsky.social · 28/03/2026(4/5) ...that is, until I did some raw Vulkan! I'll write about it some other time though. One thing that helped me learn Vulkan was doing OpenXR stuff with Veldrid. Following the OpenXR tutorial, I got used to the Khronos API style, like the pattern of "the first call counts, the second fills". 120
Admer456 @admer456.bsky.social · 28/03/2026(3/5) I've maintained a fork of a friend's fork of Veldrid. I use some extensions for VR (like multiview) and I planned to use more to make life easier (extended dynamic state etc.) I also wanted integration with Avalonia, a C# GUI framework. Their example code didn't fully make sense... 110
Admer456 @admer456.bsky.social · 28/03/2026(2/5) For context: NVRHI is nVidia's RHI library. DX11, DX12, VK1.2, all under one API. Veldrid is the same but 1) C#, 2) DX11, VK1.0, OGL and MTL. I also tried some others like BGFX, DiligentCore, but NVRHI felt nicer at the time. If you want to get into graphics programming, these are all nice. 110
Admer456 @admer456.bsky.social · 28/03/2026(1/5) In 2020, I learned some OpenGL. In 2021, I learned some NVRHI. In 2023, I switched to C# and learned some Veldrid. Veldrid was quite nice. But I never really cared for DX11, OGL or Metal. Just Vulkan. So, this year I picked up Vulkan 1.4 and honestly? It's lovely. Hello Triangle, the 4th! 280
Admer456 @admer456.bsky.social · 05/11/2025I can only say some surface-level stuff right now: * get LSP or CALF plugins + a DAW (e.g. Reaper) * look for Linux versions of your plugins * use your Windows VSTs with yabridge Coming from FL though, Reaper has been pretty fine. I'll write about it in detail once I've made a few songs in it :3c 010
Admer456 @admer456.bsky.social · 31/10/2025Okay, now what if.. a VR fox that teaches you Half-Life mapping 0191
Admer456 @admer456.bsky.social · 25/10/2025Note that there's also a "part 2" which I wrote pretty recently, sort of a review after a couple months. microfox.dev/blog/10-26-l... Right now it's missing a few bits, but it should give you good enough of an idea, still. 010
Admer456 @admer456.bsky.social · 25/10/2025Oh yeah I finally wrote that blog post! Here: microfox.dev/blog/10-25-l... Well, it's more like a bunch of notes along the way, with a few editor notes here and there. 141
Admer456 @admer456.bsky.social · 07/10/202535 minutes of yapping about Half-Life mapping. This will be my first video produced fully on Linux, so let's hope nothing goes wrong(tm) 011
Admer456 @admer456.bsky.social · 08/09/2025I'll publish a far more detailed version of this on my website, eventually. Overall I'm quite happy. I expected there to be A LOT more tinkering, lasting up to 3 months to try all this out. Later, I also wanna package some Half-Life modding tools for Linux. It would make things much easier. (6/6) 030
Admer456 @admer456.bsky.social · 08/09/2025Right now I'm setting up environments for my programming projects. There's C++ stuff, C# stuff, and a bit of basic webdev stuff. nixOS has a non-standard filesystem, so for some situations, setting up these shells is a must. I managed to get my C# game engine to run, so that's pretty good! (5/6) 140
Admer456 @admer456.bsky.social · 08/09/2025Music production took the longest. I had to tweak a lot of numbers to get low-latency, pop-free audio on my Scarlett 2i2, so I could play instruments in real time. Oh PipeWire... I tried out a couple DAWs, settled on Reaper for now. Coming from FL Studio, I'll need to get used to it more. (4/6) 240
Admer456 @admer456.bsky.social · 08/09/20252D art, 3D art, Steam games, GoG games, it all just worked out of the box. Assetto Corsa needed some tinkering, and I needed to install a kernel module for my Logitech G29 wheel. VR (Pico 4, ALVR) worked just fine, with a bit more research & tinkering, in particular w.r.t. CUDA support. (3/6) 120
Admer456 @admer456.bsky.social · 08/09/2025Over the years, I switched to more open-source apps. I switched to Blender from 3DS Max etc. for various reasons. I knew most of my hobbies would just work on Linux, but 4 things held me back: nVidia, VR, music making and sim racing. But that's exactly why I wanted to try it out. (2/6) 120
Admer456 @admer456.bsky.social · 08/09/2025Two years ago, I told myself Windows 10 was gonna be my last Windows, that I would switch to Linux at some point. 3 weeks ago, I finally gave it a proper try. Not in a VM, not on my old laptop, but on my main PC, dualbooting nixOS alongside Windows. It went well! (1/6) 192
Admer456 @admer456.bsky.social · 12/07/2025I could do that, I only got 45 callbacks remaining. But until I sort out entity spawning, I'll be doing it gradually, setting them up as I go. I'm lazy. I'll have to do the same when I start porting the clientside. Now that's gonna be fun. 000
Admer456 @admer456.bsky.social · 14/05/2025The author was mostly just exploring some environment art, seeing what they could cobble together (mostly with existing assets!) to reimagine some aspects of Quake's environments, not all of it, so it makes sense to me. Level design wasn't the intent here. 110
Admer456 @admer456.bsky.social · 12/03/2025So, what's next? I dunno, I have the entire engine API ported, I could spawn some entities and port a few brush entities here'n'there. One thing I always do in game engines is spawn a model that rotates randomly, so I might as well do that. NGL part of this feels like I'm opening a portal to hell 100
Admer456 @admer456.bsky.social · 12/03/2025Week 2 of porting Half-Life to C#: So I took my HostFxr wrapper from 2022, polished it up real good and tested a few basic things on .NET 8. Works perfectly fine in x86. After a bit of messing around with calling conventions, I got printing to Half-Life's console to work! 110
Admer456 @admer456.bsky.social · 10/03/2025I'll most likely end up writing my own, minimalist .NET hosting library. All I really wanna do is obtain function pointers and exchange some more function pointers. The library I tried provides way, way more stuff which I don't need, like exposing the garbage collector, C#'s type system etc. 000
Admer456 @admer456.bsky.social · 10/03/2025Week 1 of porting Half-Life to C#: Translated all the engine headers to C# (edict_t, entvars_t...), set up Coral (C++/C# interop library), only to realise Coral doesn't work in 32-bit apps? Yay! 120