8 ms·
So, you want to make a game engine (2023)
- kyzcdev 2mo agoI believe the instinct to develop a game engine or framework comes down from loving programming and being passionate about mastering a tool. We humans love mastering something and we love masters, when we build something from scratch we own it, we are master of it and we lead the decision. That's so comforting and pleasurable, and the reward we see at the end of the path motivates us. But on the process it's too hard. Nowadays I have the urge to combine a physics engine, rendering engine, ecs engine to develop my own game which I guess I'll quit in the middle. As developers I believe we should limit ourselves from doomcoding.
- daledavies 2mo agoI think we have to try these things at least once. My own attempt to write a javascript framework ended with me realising that I needed to put more effort into planning and research, which was a valuable lesson for me.
- kyzcdev 2mo agoYes building tools from scratch is a great way to learn. In my carrier a rewrote bunch of front-end frameworks, but then instead of rewriting everything from scratch I decided to simplify existing structures. Once I tried to create my own front-end framework from scratch. I created signal library, mounting/unmouting, context etc but never able to write v-dom diffing or using existing vdom libraries. Then I decided just implement my API on top of Preact. Preact did vdom-diffing for me and mounting/unmounting which was enough for my need. The final project looked nothing like Preact, it even had it's own context system, data loading, signals, setup + render and context which just hooks itself into Preact Context but taught me a lot about how a front-end framework work.
- vector_spaces 2mo agoRight, I think the usual point here that if your goal is to make a game, then this is usually the painful route and conveniently one that up-fronts the likely more exciting and comfortable part for a software engineer, namely the software engineering. It also tends to defer the very important business of learning rather quickly whether our idea even leads to a fun game in the first place That said, it's still a worthwhile exercise that one can learn a lot from.
- kyzcdev 2mo agoBalance is required for everything. There was a youtuber called Randy, he tried to build everything from scratch using C and it took him 6-7 years to finally release a game. Meanwhile I watched a youtuber who just made games from fake-ads in Unity and marketed it well and earned bunch of money. Do we want money or do we want to get the pleasure of being an engineer and make money as a side quest? There was a video of tsoding about why he doesn't have a job, he says "when I have enough money for my needs I just go into coding instead of working". I like his vision. He likes coding for the sake of programming and earns money as a side quest.
- lstodd 2mo agoThere is another angle: what if you want to express yourself, but, say, Unity is too limiting? Existing game engines were made to express existing ideas and while there is some stretch they do have hard limits.
- jamiejquinn 2mo agoHard agree. AFAIK Jon Blow's Braid couldn't be made with an existing engine (at the time) due to its time warping mechanics. That's a big reason I like developing games with frameworks. It allows reusibility and access to clever code, while still remaining flexible enough to support weird mechanics.
- indy 2mo agoIt helps to just write games and then over time an engine will emerge from the common code you carry across projects. Starting from a checklist of features for a game engine almost always ends in wasted effort
- lstodd 2mo agoExactly.
- whstl 2mo agoI dunno if I agree it's doomcoding. I have worked briefly in the game industry long ago (not in engine teams though) and ended up writing a few engines for myself after leaving, a couple quite complete. It’s just a hobby like another. I have zero interest in writing a full game on top of it, or even publishing it. But do you know who NEVER gives me grief about it? People I know who work at Unity or [previous employer] writing AAA engines. My last monstrosity is a Rust one with zero dependencies other than the std-lib/OS, Metal/DX12/Vulkan, its own physics engine, spatial audio, vm for scripting and other stuff. I will probably do nothing with it other than having updated my skills in a lot of areas.
- drivers99 2mo agoWhat's doomcoding? (It's not mentioned in the article and it doesn't appear to be a related term when I google it.) It sounds negative ("doom" + "we should limit ourselves" from it) but everything you said in the context before that sounds good.
- kyzcdev 2mo agoCoding for pleasure I mean. We start a project and then get bored. Like Doomscrolling, for pleasure.
- nsyne 2mo agoI don't think I agree with this. Doomscrolling has a negative connotation - of wasting your time and being unhealthy for the mind. I don't see coding the same way. Sometimes, I code to finish a project and it's a major milestone and I feel accomplished. Other times, I just code something because it sounds like I'd enjoy it and it's fun. I feel fulfilled nonetheless, even if it goes nowhere. I wouldn't equate it to doomscrolling.
- em3rgent0rdr 2mo ago"Pridecoding"?
- jewel 2mo ago"Hobbyhacking"?
- ml_giant 2mo agoMaybe just “coding”?
- kaycebasques 2mo ago"Creating"
- kyzcdev 2mo ago
- socalgal2 2mo agoThe instinct to make a game engine is it's well known how to do it and you just follow examples all over the the place and each few days you check off a box and feel like you're making progress. It's much easier than making a game itself. There is no known list of do X, do Y, do Z that leads to a game. In that sense, games are harder than game engines because a game is unknown, a game engine is well known. IF you want to make a game engine, building one is progress If you want to make a game, building a game engine is the illusion of progress. When you're done making the engine you'll be no further along on your game than if you'd used an existing engine. Usually you'll be behind because those other engines have so many features and tools that you have yet to implement. Sure, you don't need every feature, but you may be surprised at all of the little things you end up having to write.
- dvh 2mo agoMaking game engine is the fun part, making actual game with it is the boring part.
- elpocko 2mo ago[flagged]
- xgulfie 2mo agoI don't think everybody thinks they can make game engine, nor do I think nobody has ever shipped a single game in their life
- deleted 2mo ago[deleted]
- badsectoracula 2mo agoThe first time i tried to make a game engine i didn't knew how to make a game engine and failed. The second time, same thing. But eventually i did manage to make a game engine. I even got to work professionally into making game engines for years. Nowadays i can make a game engine just fine. Sure, trying to make a thing you don't know how to make will most likely end up with you not making it, but that is the case for pretty much everything.
- fourseventy 2mo agoSpeak for yourself dude. I programmed a game engine in Java in 2011 right after I graduated college, and it powers a game that I launched on Steam in 2015. https://github.com/FourSeventy/sylver_engine https://github.com/FourSeventy/sylver_engine
- deleted 2mo ago[deleted]
- elpocko 2mo ago[flagged]
- cjk 2mo agoFor me, the interest in engine-making is to give myself a toolkit that is suited for the kinds of games I want to make, rather than an engine that is trying to be everything to everyone. Also to avoid the Unreal Engine monoculture.
- MomsAVoxell 2mo agoAll game engines eventually become an OS. All OS's eventually become game engines.
- krapp 2mo agoName a game engine that became an OS, and name an OS that became a game engine.
- MomsAVoxell 2mo agoUnreal Engine. Microsoft Windows.
- krapp 2mo agoUnreal engine isn't an OS. It is installed and run on a computer already running an OS. Windows is not a game engine. Being able to play games on Windows doesn't make it a game engine.
- MomsAVoxell 2mo agoUnreal Engine allows the widespread deployment of applications catering to a tightly bound framework - a system, upon which standard operations can be completed. It functions standardly, independently of any OS upon which it is hosted. There is no distinction between an OS hosted on another OS, nor is there a requirement that for an OS to be considered an operating system, no other operating system can be involved. Windows is a game engine because you can write standard games for it, standardly, and its base SDK’s support game development, natively - it also of course supports other game engines, which eventually become capable of hosting applications (and are thus OS’s), because: Windows is an OS and it is a game engine…
- badsectoracula 2mo ago(Considering the linked section) that is more or less how Petra Engine[0] came to be - making a gamejam game[1] for MSDOS over a few weeks. Though while i did make it for that specific game, i always had in mind that i may want to use it for other games in the future too so i tried to make it more "generic" and keep the engine and game bits separate while avoiding too many game-specific stuff (didn't fully manage it though - in the end i've been removing PAP-specific things and a bunch of hardcoded stuff over the years whenever i feel like using it). That said, despite making a bunch of demos[2][3][4][5] since 2021 when i made the game, i never made any game using it after that as i always lose interest - perhaps i do need to be making an engine from scratch to keep myself interested :-P. [0] http://runtimeterror.com/tech/petra/ http://runtimeterror.com/tech/petra/ (note the version is very old and i've made a lot of improvements since then - this includes the Codeberg repository which i'll move somewhere else at some point) [1] https://bad-sector.itch.io/post-apocalyptic-petra https://bad-sector.itch.io/post-apocalyptic-petra [2] http://runtimeterror.com/pages/iv/images/44d7537fb719e00fdcd44b3623610632.png http://runtimeterror.com/pages/iv/images/44d7537fb719e00fdcd... [3] http://runtimeterror.com/pages/iv/images/d22ff83dd5e5109e02e0671964303dbe.png http://runtimeterror.com/pages/iv/images/d22ff83dd5e5109e02e... [4] http://runtimeterror.com/pages/iv/images/1da6a4bce430a8d85071b7d1afacab78.png http://runtimeterror.com/pages/iv/images/1da6a4bce430a8d8507... [5] https://www.youtube.com/watch?v=zx9KmkTLcB0 https://www.youtube.com/watch?v=zx9KmkTLcB0
- doctorpangloss 2mo ago> perhaps i do need to be making an engine from scratch to keep myself interested you're not the only one. jonathan blow has made tons of money selling games and also needs to write a whole programming language for 100h to keep him interested enough to yield 1h of content. i can't really say much about the people who say don't program game engines (or whatever thing they don't like) in terms of opportunity costs (a generous name for this category of complaining), other than they would be bad at both making art and making money.
- socalgal2 2mo ago> i can't really say much about the people who say don't program game engines (or whatever thing they don't like) in terms of opportunity costs (a generous name for this category of complaining), other than they would be bad at both making art and making money. What a ridiculous take. Making a game engine is to games like building a camera is to making movies. Once a blue moon some new camera enables some new technique (the Matirx), but mostly people just use the tools that exist. The same is true in games. Tons of super popular and successful games didn't write their own game engine and made both art and money. I'm watching a friend, claiming he wants to make a game company, burn through all of this money instead making a game engine. If he succeeds, great! But I suspect he'll just run out of money before he's even started working on a game. If it was fun to make, great too. But I think he'll look back on it as throwing away an oppotunity.
- jujube3 2mo agoClaude, build me a game engine. Make no mistakes.
- damienmeur 2mo agoI cannot recommend more to try the Ray Tracer challenge and if possible without AI. It helps you build a full ray tracer / 3D engine only guided with tests, really powerful to learn test driven development. What s cool is that just being driven with tests still allows you to do it in any language you want. Plus you ll learn a quintillion of stuff about mathematics. This is really the kind of project that makes you go to a real senior SWE
- mamcx 2mo agoReading the article show it talk about something else that build a "game engine" from scratch, what it says instead is *build a "engine"* to make the kind of games you will do over and over" that is more practical and attainable. From developers this is how in-house frameworks work, that are mostly reusing other frameworks and libraries and create a sort of pseudo DSL.
- NotGMan 2mo ago95% of the code will be the engine code. The game the other 5%.
- zooi 2mo agoIn my experience it's closer to the other way around. For example, one of my recent games has 20k lines of engine code and 40k lines of game code.
- cpill 2mo agoI guess the really hard part about game engineers isn't writing them, it's making them portable to more than platform, which is the really boring, tedious, expensive part. this is why I'll never write a game engine.
- whstl 2mo agoMy first pro job in gaming was in porting. In my experience, while it does require knowledge in OS and rendering APIs, the platform/RHI-specific code is quite small compared to most other subsystems of a moderately-sized game. Unless there is absolutely no abstraction, e.g.: with OpenGL being called from random parts of the game, porting is a matter of mostly gluing two interfaces together.
- teleforce 2mo agoPlease check this interview with Lewis Nicolle who created his own game engine with D language for his new game Art of Reflection [1],[2]. [1] Why D Programming Language? https://www.youtube.com/watch?v=teWQbYvPBTg https://www.youtube.com/watch?v=teWQbYvPBTg [2] Art of Reflection: https://store.steampowered.com/app/2290770/The_Art_of_Reflection/ https://store.steampowered.com/app/2290770/The_Art_of_Reflec...
- krapp 2mo agoI want to differentiate between "game engine" and "framework" here, even knowing the distinction is subjective. To me a game engine includes UI elements that package the entire process of game development into a coherent application. Sprite editors, code editors, asset management, physics, all in a neat package. Bonus points I guess for coming up with a quirky bespoke internal scripting language that only gets used with that engine. You can wind up with a utility library that makes writing games easier but to me that still isn't a "game engine" per se. And I think that's the really difficult part. Everyone probably just uses DearImGUI anyway but that's still an entire layer of abstraction and difficulty on top of writing the game utility code itself, and it encompasses things most developers won't find fun or interesting or even may not know how to do. How do you support multiple platforms? How do you deal with data files? How do you import and export a project? Handle input? Sound? You got a triangle on screen? Great! Now you have to implement the rest of the universe - textures, lighting, UV mapping, shaders, models, skeletons, rigging, animations. Now do physics. Every single aspect of engine design is an entire discipline unto itself. Of course it also matters how specifically tailored and non-general you want to make an engine. Engines exist just for making RPGs or visual novels. But even then, to me, it isn't an "engine" unless it's packaged into a GUI with coherent design principles.