Advertisement

Time to give up my engine?

Started by December 16, 2024 08:28 PM
4 comments, last by RmbRT 7 hours, 9 minutes ago

I've been writing my engine on and off for the best part of 20 years. It has several nice features like blended animations, flexible materials, shadows, PBR (of sorts), etc., but I don't think I'll ever have the time to finish it and when I get hooked by it, it tends to consume me completely. I've got a young son and I'm 53 and over the past few months I've been feeling a little sad that those [probably several] thousand hours of hard work are just going to sit decaying on Git forever.

I'm not the best developer and the codebase is a mishmash of this and that but I've always been super passionate about writing engines, way more so than actually writing a game and it really has given me a tremendous amount of enjoyment over the years. It probably wouldn't take a huge amount of work to write a game with it, there's no scripting or anything like that and everything needs finishing, but I'm sure there's some stuff in there that people may find useful, like maybe answers to questions they have or examples of where they're stuck, animations, materials, terrains, etc. It makes use of ImGui too.

Has anyone got to the point where they've realised their engine isn't going anywhere and just given it away for other people to look at/use/take bits from?

Ah, a fellow “Unreal Engine Node-Skin Copier”, I see 😉

I took a bit lenience on the exact style of my engines material graph than you, though the visual-scripting is almost a 1:1 copy visually of Blueprints.

RobM said:
Has anyone got to the point where they've realised their engine isn't going anywhere and just given it away for other people to look at/use/take bits from?

No, thankfully not. I'm a lot younger still with no family, that's probably a plus. I also spend an even higher amount of time over a more constant period into it. Thereby, it's also more complete, having full scripting support, and pretty all the tools I need to work on the current game (2D RPG). That's probably my biggest take-away of what keeps the engine going in an orderly direction - you need a game to work on alongside the engine.
Did you ever try to make a complete game with yours? I feel that without a game, you'll just end up working on random features, which may or may not be needed or useful. You'll just put in random demo-scenes, this and that fancy stuff, but nothing that'll really get you towards an end goal. I'm also somebody who enjoys engine>game development, even so,having a practical game is required IMHO.

I was in that unfocused state for a long time initially myself, while at Unversity, where I started the engine. Most of the projects I developed the engine for were very open in scope, so there was no real need to fit the engine to the game specification, more the other way around. And in the last years, the engine was way too early to be useful for larger scale projects with a short time-scale of a few months, so I just had to go with Unreal for the team graduation projects. It was only when I started porting the Rpg that I had developed for some years on Rpg-Maker (which was in a playable state, but terrible due to RpgMaker being terrible). Though the game was developed enough, that in porting, I was finally able to set specific goals for features that were actually useful for developing a full game. It still took years to get to a productive state, but now that I am, I'm proud to say that, for the features that I do support, everything is pretty much better than what's available if I were to go with UN/UR. That's of course not a whole lot compared to the cazillion platforms, scenarios and packages that are available in those engines - but enough to make a (as of now) ~30h content-driven 2D Rpg-Game, so good enough in my book to keep me going 🙂

But again, I'm in a state where I can afford to keep going, due to afformentioned lack of private obligations. This state of being “consumed completely” for me is (mostly) the lifestyle I live, and want to live. Even if it's not for me, I wouldn't be sad in your situation. Many people long for having a family but can't have one for one reason or another, and as long as you enjoyed the time that you spent while working on your engine in the past, I wouldn't consider it wasted, even if nothing more comes out of it. Everything you do is worth it as long as you enjoy it, at least that's my philosophy.

Advertisement

Popularity of engines shot up about 15 years ago with Unreal and Unity, before then the focus was games.

“Make Games Not Engines” has been the mantra, and historically with few exceptions game engines grew out of games. Studios would build a game from scratch. Then they'd rip out game specific-stuff and make a second game with what remains. Then after finishing the second game they'd rip out game-specific stuff and make a third game. What remains between all the games is the start of an engine.

Most of the big games and game engines, including Unreal Engine, followed that pattern.

As for it being time to give up on it, that's more about self-discovery about why you were doing it to begin with. If your goal was to make a commercially viable product it never would have been such as a hobby project. If it had come from shipping games where you had to do the work associated with finalizing a release and polishing everything for game title after game title, then there would be a chance. A few hobby systems, engines, and toolkits have become mainstream while still remaining small enough for an individual.

For spending decades on a hobby project that you've enjoyed, that's the reward all by itself. Hopefully you've enjoyed your hobby of tinkering for it's own sake.

Life changes over that time. I have tons of code and game demos and a large engine also. I haven't touched it in 5 years really. It happens. With engines sometimes people dig too deep into engines like what you have with a complete editor versus just focusing on building a specific game.

NBA2K, Madden, Maneater, Killing Floor, Sims

I've been writing my compiler for 10 years now, scrapped it a few times, reworked a lot of it. I use my own language for all my stuff, but I never managed to finish the self-hosted compiler, and I'm stuck with an incomplete bootstrap compiler. However, it's what I like to work on. If you have a huge project and get upset about not getting recognition, or not ever finishing it, or whatever, then your mindset is wrong. Either you should dump your project, or you should take a step back and take joy in working on it again. That's why you started the project to begin with, I assume. But working on it for the sake of achieving some outcome will make it tedious and unrewarding to work on it. There is no shame in setting the project aside if you don't find any joy in working on it.

Another thing that may be missing is some innovative idea that will make your engine unique. Maybe that would give you joy in working on it again. For example for my language, I designed an entire ISA as the virtual machine my language targets, and that ISA standardises all the relevant multimedia periphery, as well as lets you control shader-like SIMD parallelism. The bytecode is then recompiled to x86 to emulate such a platform. It standardises input, graphics, audio, networking, etc., and has the final goal of having an FPGA implementation one day. So I'm creating a language and an abstract environment I'm programming for, which will eventually let me write programs for a cleanly designed, modern and future-proof hardware environment (similar to how back in the day, you could use the BIOS interrupts for everything, and writing an OS was pretty simple).

Since my ISA supports kernel-like parallel code, parallel parts of programs I write in it can be accelerated on the GPU. I plan to write an environment which lets me write code that directly writes the pixels etc. on the screen without explicitly invoking GPU commands, and then allow it to run on the GPU regardless. The CPU I envision is a mix of CPU and GPU, and instead of simply putting both into one chip like on modern integrated GPUs, I want the CPU to be able to switch into a dynamically-sized-vector execution mode during normal linear execution instead (like a GPU shader).

Anyway that was a lot of rambling, but I hope you can see from that that maybe if you don't feel confident about your project anymore, you're not dreaming big enough. And, again, don't get hung up on results or progress or recognition, that kills the joy. Do what you want, not what others want.

Walk with God.

Advertisement