Live data from Hacker News

Making video games (without an engine) in 2025

noelberry.ca

81–90 of 257 posts

Re: Making video games (without an engine) in 2025

#81
post #72
post #20

Earlier quoted context omitted.

>Many people often say that making an engine from scratch takes too long. But how long does it take to properly learn Unreal or Unity such that you can have an idea and turn it into a game without friction? Presumably, once your engine is finished, you are at that level of expertise instantly, which is a huge time saver. In my opinion, the more experienced of an engineer you are, the more the scales tip in the favor…

> Specifically, I tried to recreate Braid's system (without knowing it existed), where you can rewind your game to any point in time. It required support from all the engine's subsystems - to rewind scripts, physics, etc. Not necessarily. You can write your own "snapshotable allocator" that allows you to rewind back in time anything, even the state of unmodified 3rd party libraries and interpreters (as long as you ca…

Feels like fiddling with snapshotting raw C++ memory is a can of worms (you listed some of the pitfalls yourself). Most of my snapshotting happened at the scripting runtime level, where everything is well-defined and well-understood: I manually snapshotted the VM's heap memory, the green threads' stack memory, the current instruction pointer of every green thread etc. I could safely validate those snapshots without segfaulting on a corrupted savefile, because it was a well-defined file format. The same code worked both as a time-travel snapshotter and as a general savefile format.

I think this is dangerous and can lead to remote execution attacks:

>The snapshot could even be exchanged over the network, assuming the receiving side has the same endianness, the same pointer size, is running the same binary, and can mmap the same memory location.

For physics, I needed to restore all those remembered motion vectors; for audio - current playback time, etc. Same as yours:

>The rest of the memory (the textures, the 3D models, the audio, the UI, etc...) should be allocated by your usual non-snapshotting allocator"

Re: Making video games (without an engine) in 2025

#83
post #28
post #22

Earlier quoted context omitted.

My graduation thesis was porting a particles visualization engine from NeXTSTEP/Objective-C into Windows 95/Visual C++, based on OpenGL, with samples like marching cubes. This is a single bullet point on modern engines feature list.

And now that you’ve done it, you could probably reimplement it better in a fraction of the time.

Except that I wouldn't, because most of that stuff would be a shader nowdays, and depending on the API version, not the same kind of shader.

This kind of stuff is fun, if the end goal is to become a game engine or tools engineer, if the goal is to make a game, it is mostly yak shaving.

Re: Making video games (without an engine) in 2025

#84
That was a very fun read! While I’m using Godot for my hacking simulator game, Botnet of Ares [0] I think the native C# approach is very much justified in this case, and Noel clearly has had massive success with Celeste.

I like Godot because of the UI primitives built into the engine. For a UI heavy simulation game like mine, the game engine does a lot of the heavy lifting. Sure, I don’t use 90% of the 2D/3D features of the engine, but that’s okay.

[0] https://store.steampowered.com/app/3627290/Botnet_of_Ares/

Re: Making video games (without an engine) in 2025

#85
post #48

I've never delivered a game anyone's really paid for, so take with a grain of salt, but imho the big win when you are writing your own stuff is you get to decide what not to include. That sounds obvious but it really isn't. One example: maybe you don't need any object culling at all. Nobody tells you this. Anything you look up will talk about octrees, portals, clusters, and so on - but you might be totally fine just…

I agree with almost everything except:

> Thing is - when you're writing an _engine_ you need all that. You don't get to tell people writing games that you don't really need shadows or that they need to limit the number of game objects to some number etc. But when you're writing a _game_ (and you can call part of that game the engine), suddenly you get to tweak things and exclude things in all these ways that are perfectly fine.

When you're making an engine it's perfectly fine to bake in constraints. Probably most famously PICO-8 does that very intentionally and is written by just one person. Similarly RPGMaker and a bunch of other 'genre specific' game engines also do this. It's just that everyone tries to make something super general purpose which is really a Sisyphean task.

Re: Making video games (without an engine) in 2025

#86
post #82

Maybe a dumb question, but what is the C# compiler and runtime that you use? I used to be up to date with .NET and Mono and stuff but I'm 10 years out of date

Modern .NET/C# is cross-platform by default (CoreCLR runtime). You don't need Mono anymore.

Re: Making video games (without an engine) in 2025

#87
I agree with a lot of this, and am similarily working on my own code-only C# game framework meant as a spiritual successfor to XNA/Monogame (using Sokol instead of SDL):

https://zinc.graphics/

In OP's post as well he brings up some of the main factors that make modern C# incredible:

- Cross platform development (and runtime).

- NativeAOT Compiling (great for consoles, provided you have backend headers).

- Native Hot-reloading.

- Reflection

I'd also add:

- Source Generators

Modern C# is incredible. I think people still discount it due to its admittedly bad legacy, but the past five years of C# and CoreCLR development make me feel like it's truly a language that has everything necessary but isn't baroque or overburdened. My only major request, Union types, is also in proposal and will (hopefully) come in the next year or so:

https://github.com/dotnet/csharplang/blob/main/proposals/Typ...

Re: Making video games (without an engine) in 2025

#88

For anything I have ever tried to make, I always find myself fighting the engine. Whether it is Godot, Unity or Unreal. They all feel like a ready made game that you add assets and mod. The problem for me is that I mostly don't want to make that game. An analogy that comes to mind from the web dev world, it feels like the engines are like wordpress. Prebaked and ready to show content, but the moment your objective do…

Exactly. If you want your game to look exactly like every other game on Google Play, complete with all the same, long, janky splash screens and rendering hitches and slightly screwy text rendering and random audio glitches, use Unity.

All that might be acceptable for an adware befouled "idle RPG" style game on mobile (and they're all that kind of game these days). But it really galled me that people were using Unity so heavily for VR. It's extremely difficult to get a Unity game to work well on the standalone VR headsets. To hit the performance targets required by the Meta Quest Store, you really have to rewrite large portions of the engine to get around the fact that Unity is a disorganized, single-threaded, allocation-happy mess.

If you want your game to be a quality piece of software, you can't start with a garbage as your foundation.

Re: Making video games (without an engine) in 2025

#89

So, does everything he said about C# sound about right? I have no real desire to use it, but I'm curious if his opinion was more or less accurate. Not looking for a flame war, just knowledge

Yes, C# has had low-level primitives since 1.0 and it has only gotten better in this regard. This means that it's worse than Java at things like devirtualizing calls, but you can write allocation-free hot loops in C# these days.

It's also cross-platform and has multiple deployment modes: you can ship the runtime and the program separately (good when you control the end-user machines, like in an enterprise settings), you can tree-shake the runtime and ship it with the program, or you can tree-shake the runtime and use the AOT compiler to ship a go-like native binary.

The JIT compiler is still better for long-running processes like servers, but for one-shot programs where the startup time is critical, like CLI tools and FaaS, the AOT compiler is really great.

Re: Making video games (without an engine) in 2025

#90
post #82

Maybe a dumb question, but what is the C# compiler and runtime that you use? I used to be up to date with .NET and Mono and stuff but I'm 10 years out of date

I am not at all familiar with C# development, but the author mentions Native-AOT, which, from a cursory look, seems like a C# compiler.

https://learn.microsoft.com/en-us/dotnet/core/deploying/nati...

Post reply on HN