Blog 3.0 I make games.
2025 Retrospective
More Of The Same
In my last retrospective I talked about developing Ephemeris and learning Blender, those have continued to be the dominant themes for 2025 too.
Ephemeris Kessler: Orbital Warfare
Ephemeris Kessler: Orbital Warfare is a realistic simulation of near-future space combat. If this sounds like something you’d be interested in playing, come and chat with us on Discord!
I’ve been calling this idea “Ephemeris” for years, this was only ever a working title and it was always my intention to come up with a new name eventually. Unfortunately another game named Ephemeris was released this year and that forced me to come up with something. I’ve settled on Kessler: Orbital Warfare.
I have been keeping daily notes on progress since mid 2024, and I intend to keep doing this. You can find the 2025 notes here. Personally I’ve found taking notes like this has three primary benefits, in order of importance:
- On days when I’m feeling like I haven’t achieved much I can look at the huge list of work achieved recently and realise that I am actually making good progress. This *really helps with motivation.
- Since I write down everything that I do, I have become much more aware of what work is involved in a project. This really helps me estimate the scope of work in advance, and correctly estimate how long it will take.
- When working on a system that I haven’t touched for a while, all of the notes are still there. For me this is the last important point because my notes aren’t well structured as documentation, and I very heavily comment my code so that’s usually a better reference.
- It makes writing the next section of this post is much easier!
2025 Progress
I’ve made some great progress in 2025, each of these items probably represents around 2 weeks work with many smaller items getting done along the way:
- Selected multiplayer framework (Mirror)
- Multiplayer lobby system
- Multiplayer entity management (spawning/destruction)
- Orbital data sync over the network
- Multiplayer time control
- UI development (building core UI code)
- Physics sim for thermals
- Tactical view
- Core systems simulating sensors
- AESA RADAR sensor, using this system
- Bullet simulation (capable of simulating tens of thousands of bullets)
- Bullet rendering
- Core systems for collision detection (Octree, Sweep & Prune)
- Multiplayer sync for bullets
- Deep research on armour damage models
- Built armour designer minigame (IMPACT). More on this below.
- Clicking on orbits
- Core systems for HUD
- Engine burn gizmo (like the KSP manoeuvre node gizmo)
- Scheduling engine burns using gizmo
Overall I’m incredibly happy with progress in 2025! For years I have been working on building out a lot of bits of technology that I knew I would need for a realistic space game; full scale solar system simulation, rendering of planets, n-body orbital integration, rendering lines etc. This year it feels like that has changed - many of the features I listed above were building on top of that core tech, it feels like I’m finally building a game instead of a space-game-engine. I think that trend is going to continue in 2026, lots of plumbing together existing features into a game.
2026 Goals
My major milestone goal for this year is to release an alpha version of the game with basic multiplayer orbital combat in the first half of 2026. If you’re interested in playing that alpha, join us on Discord!
IMPACT Minigame
In previous years I’ve taken part in the CYLON gamejam and I’ve built some games I’m really proud of (see my games list). Unfortunately the CYLON community was based around a game called STARBASE which has died, and CYLON has died with it. I decided to work on a minigame for a month instead.
IMPACT (Impact Modelling Program for Armor Configuration Testing) is a spacecraft armour design and test program, styled as an alt-history 1970’s joint DoD/NASA program to develop armour for orbital warships. the game is available to download for free here. Join us on Discord to show off your designs!
This is based on the research I did into the physics of hypervelocity impacts in September and uses the damage model I have developed for Kessler.
Blender
In mid 2024 I started learning Blender, and in 2025 it’s become a really major thing for me. I’ve learned a lot, and I’m starting to feel like I could actually build game-ready assets at a usable quality level!
Open Source Software
Myriad.ECS
Myriad.ECS is a high performance ECS built in C#. I use Myriad in Kessler, so it’s used every day and has a lot of useful features that I’ve discovered the need for.
Changes in 2025
- Lots of optimisations for speed and memory usage
Disposablecomponents receive a callback when an entity is destroyed- Hierarchical transform system
- Various internal optimisations for systems that walk entity relationships (like a hierarchy)
- Delegates support in map/reduce queries
- Queries which collect results into a collection
PhantomNotifiercomponents receive a callback when entity becomes a phantom- Resumable queries with cursors
HasComponentoverloads for checking multiple components all at once- Overloads for delegate queries that take no type params (filtered entirely by
QueryDescription) - Delegate chunk queries
- Added ability to enable/disable system groups
- Unsafe accessors for entities/components in chunks (useful for integrating with Unity job system)
- Delayed entity resolving from
CommandBuffer(add entities to a list when the buffer is eventually executed) - Tests, tests and more tests. I find it fun to drive up test coverage!
- Global chunk/archetype IDs
- Job safety system (basically per archetype locking). Designed to integrate with the Unity safety system.
LLamaSharp
LLamaSharp is a C# wrapper around llama.cpp. This is not my project alone, but I became one of the lead maintainers in 2023 and I’ve continued working on it this year.
Fox4
Fox4 is an experimental AI pilot for VTOL VR, built on the AI Pilot framework built by Strikeeaglechase. Fox4 was intended as a project to learn about reinforcement learning - the core idea was to learn air combat through self-play, in the same way as AlphaGo learned Go to a superhuman level. The pilot part is built in C#, that collects data logs and the Python part learns from those logs. Unfortunately I wasn’t able to train the pilots to maintain level flight, even with a lot of rewards tweaks. I’d like to come back to learning about RL sometime (maybe through this project, maybe through something else).
HandySerialization
HandySerialization is a binary serialization library I have developed for use in game networking, it provides precise control over byte-level and bit-level packing of data.
I did a lot of work for this in April when I was developing the encoding scheme for orbital data, the final result is a general purpose lossless predictive encoder for sequences of doubles, which can compress orbital data down to about 33% of it’s original size! No doubt next time I work on anything with multiplayer this library will see more features added.
Wasm2cs
Wasm2cs is a compiler from WASM to C# code.
This isn’t a serious project that I’m using for anything, but it’s a cool idea so I wanted to share it. Imagine if you could take a native C++ dependency, compile it to WASM and then import that into a C# project as plain old C# code. No native dependencies, no WASM engine dependency. I think this idea came about when I read about WasmBoxC which is a system for sandboxing bits of C code by compiling C -> WASM -> C. The final code is just normal C code you can use, but it’s sandboxed!
The end result of wasm2cs works for a simple program that writes "Hello World" to the terminal, but I never managed to get it working for more complex programs like the asyncified Python runtime for Serpent.
Interesting Stuff
Some other interesting things that I encountered in 2025 in no particular order:
- VRChat
- Bigscreen Beyond 2
- Banner of the Stars
- I’ve seen it before, but I rewatched the anime and reread all of the Manga this year. A couple of my Blender projects have been BotS ships.
- Anime Cels for sale
- Realsense D421
- Traditionally 3D cameras are very expensive, but this one is just £75!
- VTubers
- While watching tutorial videos on Blender for how to build a VRChat avatar I came across this video. That sucked me into the world of VTubers!
- Some favourites:
- Smellizabeth, currently rebranding to Aeri Andromeda. Gaming, Blender, art.
- Pikat. Art, gaming.
- Ellie_Minibot. Robotics engineer with an interest in AI.
- Vedal987. Develops the AI Vtuber Neuro-sama, fascinating AI project!
- Ironmouse. Obviously.
archive
- 2025 Retrospective 29 Dec 2025
- 2024 Retrospective 28 Dec 2024
- 2023 Retrospective 30 Dec 2023
- 2022 Retrospective 01 Jan 2023
- 2021 Retrospective 30 Dec 2021
- Building An Interpreter 27 Feb 2021
- Yolol Parsing 26 Feb 2021
- Building A Toy Compiler 25 Feb 2021
- 2020 Retrospective 31 Dec 2020
- The Yard Sale 16 Sep 2020
- 2019 Retrospective 31 Dec 2019
- 2018 Retrospective 02 Jan 2019
- Lessons In Network Protocol Design Learned The Hard Way 23 Jun 2018
- Dithering About Dither 27 Mar 2018
- 2017 Retrospective 13 Jan 2018
- Unity Ongui 04 Dec 2017
- Dissonance Voip Pipeline 19 Feb 2017
- 2016 Retrospective 01 Jan 2017
- Dual Contouring In 2d 27 Dec 2016
- Procedural Generation For Dummies: Building Footprints 07 May 2016
- Procedural Generation For Dummies: Half Edge Geometry 30 Mar 2016
- Fixed Permalinks 21 Mar 2016
- Procedural Generation For Dummies: Galaxy Generation 14 Jan 2016
- 2015 Retrospective 04 Jan 2016
- Procedural Generation For Dummies: Lot Subdivision 27 Dec 2015
- Procedural Generation For Dummies 11 Dec 2015
- Procedural Generation For Dummies: Road Generation 11 Dec 2015
- Deferred Transparency 09 Oct 2015
- Xna In 2015 24 Aug 2015
- Node Machine 26 Jun 2015
- Procedural Generation Of Facades And Other Miscellania 29 May 2015
- This Path Was Made For Walking 23 Apr 2015
- Cross Chunk Navmeshes 27 Mar 2015
- Changelog 27 06 Mar 2015
- Drawing Stuff On Other Stuff With Deferred Screenspace Decals 27 Feb 2015
- Random Gibberish 22 Feb 2015
- This Wall Is Sticky 17 Feb 2015
- Changelog 25 08 Feb 2015
- 2014 Retrospective 13 Jan 2015
- Super Sonic Sound 08 Jan 2015
- Sandboxing Is Dead Long Live Sandboxing 22 Dec 2014
- Changelog 22 B 14 Dec 2014
- Changelog 22 07 Dec 2014
- Possible Interruption To Service 06 Dec 2014
- The Game Programmer Awakens (changelog 21b) 30 Nov 2014
- The Return Of The Programmer (changelog 21) 16 Nov 2014
- The Return Of The Vending Machines 26 Oct 2014
- There Are Vending Machines Everywhere 16 Oct 2014
- Changelog 20 12 Oct 2014
- Ragdolls Are Hard 05 Oct 2014
- Changelog 19 28 Sep 2014
- The Return Of The Game Programmer 21 Sep 2014
- The Ball Is Picked Back Up 17 Aug 2014
- It's Good To Be Back 03 Aug 2014
- Serious Injury 21 Jul 2014
- We Marveled At Our Own Magnificence As We Gave Birth To Ai 14 Jul 2014
- Changelog 17 06 Jul 2014
- Changelog 16 29 Jun 2014
- Happy Birthday 22 Jun 2014
- Changelog 14 15 Jun 2014
- Losing My Way 08 Jun 2014
- Wildcard 02 Jun 2014
- Changelog 13 25 May 2014
- Changelog 12 16 May 2014
- WAI NO VIDEO (Again) 11 May 2014
- Changelog 10 04 May 2014
- Changelog 9 27 Apr 2014
- Changelog 8 20 Apr 2014
- Long Overdue Style Upgrade 18 Apr 2014
- WAI NO VIDEO 13 Apr 2014
- Changelog 7 07 Apr 2014
- Changelog 6 30 Mar 2014
- Changelog 5 23 Mar 2014
- Changelog 4 16 Mar 2014
- This Is Madness! 11 Mar 2014
- Changelog 3 09 Mar 2014
- Changelog 2 02 Mar 2014
- Changelog 1 23 Feb 2014
- Changelog 0 15 Feb 2014
- Payday The Heist 2 13 Jan 2014
- 730 Days Later 01 Jan 2014
- I Just Needed A Rest 12 Nov 2013
- Splinter Cell Blacklist 27 Aug 2013
- Gruelling Homework Assignment 26 Aug 2013
- Scripting Is Dead Long Live Scripting 14 Aug 2013
- The Reports Of My Death Are Greatly Exaggerated 05 Aug 2013
- 27 Gigawatts Of Cake 11 Jun 2013
- Trees Are Well Behaved 22 May 2013
- A Brief Project Update 14 May 2013
- Finite State Machines (are Boring) 16 Apr 2013
- Pathfinding 10 Apr 2013
- Artificial Stupidity Series 08 Apr 2013
- Valve Need To Stop Reading My Mind (and Other Miscellanea) 20 Mar 2013
- Elements Of Style 26 Feb 2013
- Moving To Axmingholmesbury 23 Feb 2013
- The Future Is Steamy 08 Feb 2013
- Mathematical Trickery 22 Jan 2013
- Thinking Aloud About Release 09 Jan 2013
- Game Developers Don't Make Timetables 03 Jan 2013
- What Is Heist? 20 Dec 2012
- How Does Procedural Generation Work? 14 Dec 2012
- Why Does Heist Keep Crashing? 07 Dec 2012
- What Isn't Procedural Generation? 23 Nov 2012
- What Is Procedural Generation? 18 Nov 2012
- Procedural Generation Series 15 Nov 2012
- Packet Encoding(3) 12 Nov 2012
- Packet Encoding(2) 08 Nov 2012
- Packet Encoding 07 Nov 2012
- Deployment Hax 28 Oct 2012
- Wibbly Wobbly Pipey Wipey 24 Oct 2012
- New Release(2) 24 Oct 2012
- New Release 20 Oct 2012
- Say What? 17 Oct 2012
- Get Up And Initiate That Session 15 Oct 2012
- Topological My Dear Watson 14 Oct 2012
- Omg Wtf Multiplayer 13 Oct 2012
- Full Steam Ahead 24 Sep 2012
- You Should Check Out Greenlight 01 Sep 2012
- It's Full Of Entities 20 Aug 2012
- Persistence 06 Aug 2012
- I'll Be Back 01 Aug 2012
- Artificial Stupidity 24 Jul 2012
- Overindulgence 16 Jul 2012
- Not My Cup Of Tea 09 Jul 2012
- Artsy Stuff 02 Jul 2012
- This Was A Triumph 25 Jun 2012
- Multiplayer Release 18 Jun 2012
- Fortnightly Fun 10 Jun 2012
- New Blog 31 May 2012