Working on "How to plan and design a game engine" and I'm looking for feedback

Greetings friends of old, I request a fragment of your time to borrow your experiences using and creating game engines.

Here’s the reddit post:

Why am I posting it here?:

The game engine I’ve been working on for the past 9 years is in Java, I plan on using the knowledge I gained from that to make a series of sorts showing designing and creating a game engine.

And the content:


I have a presentation I’m using to organize my thoughts:

I’m looking for criticism on the overall endeavor, if I’m missing a component, or if I’m missing any features that one might want in a game engine. Anyone should be able to comment on the presentation above.
I’m also trying to figure out what the best medium would be to communicate this. My ideas thus far:

  • A video going over the entire presentation offering explanations and examples of everything. This is the simplest but also lacks actual API design.

  • A series of videos or articles, one for each component, that goes over everything in the slide and also offers high level designs on the solutions one might choose per feature.

  • A combination of 1 and 2 so one offers a complete overview and the second allows more detail if the person is interested.

  • Doing #3 except with actual code being developed in a few different languages (Java, C++, C#, TypeScript) and something that shows off the code working.

Now as you can tell it really could escalate in how much work could be done. This is something I’ve been very passionate about for the past 11 years (have been refining my own GE for that long) so I’m up for the challenge. If I get enough support for #3 or #4 I’ll need to figure out how to convince my wife its worth the time, not sure how to do that yet.

I’m already actively working on the end result game engine so #3 or #4 is doable, I just need to determine if it will be worth my time.
Thanks for reading and any input you may have!

I just don’t understand one thing.
why do you work on a game engine?
do you willing to create game with it in the end?
if so then you’re better to stick to something that already works and not try to invent to wheel.
you’re better create games and not engines.
general purpose code is worthless

This was the most interesting thing I read this month, and will help me greatly making the foundation of my game.

He is writing a general guide to game engines, so where’s your problem?

Not everyone has the end goal of creating a game - some of us enjoy the art of crafting code, applying designs we’ve learned over time to provide solutions to problems that no one has before. I’m actually far better off creating engines - I lack the resources to finish a game (art, sound, etc), I always stop when the interesting problems are solved.

General purpose code is worthless? I get it, you must be new to programming. It’s built on general purpose code. Also, a game engine isn’t general purpose code… it has very specific purposes, specific time and memory constraints… produces very interesting problems to solve for game engines.

Who said I plan on reinventing the wheel? There are parts of my work that NO other game engines available have…

Thanks for taking time on reading the presentation and providing some constructive criticism!

ClickerMonkey beat me to it, but some people don’t want to make a game. They want to make something that other people can use to make games, which in my opinion can be fuck load harder than making a game. Are you Hydroque?

Now as you can tell it really could escalate in how much work could be done.

Perhaps consider linking to or including a supplemental reading list to others work. The two I’d look at first Game Programming Patterns (free web version) and Game Engine Architecture

I think the biggest benefit to anything you’ll create is the comparative implementation of the different components of a game engine particularly if you can pull off doing it in several languages. The biggest criticism I’ve read about Game Engine Architecture is that it doesn’t include source code for a complete engine; it is rather thorough in broadly going over the major components though. I’d find it hard to believe that you’ll be able to come up with a 1000 page treatise and that’s just one book out there. You could link to supplemental material that is topical and more in depth as well for AI, audio, networking, etc.

There are parts of my work that NO other game engines available have.

This is an extraordinary claim, but if so then certainly include thorough descriptions of your work and working code examples if you intend to enlighten.

The biggest criticism I’ve read about Game Engine Architecture is that it doesn’t include source code for a complete engine

This was definitely a bummer, I’ve used this book as a resource to ensure I’m covering features that other games have.

This is an extraordinary claim

  • The existing steering behavior libraries out there are a joke - very poorly designed and lack an alarming number of features. I don’t have the current version of that library published but you can check out Steerio to see my previous work. The current version of the code is a mishmash, I was in the middle of redesign. You should still be able to see it though.
  • The existing path finding libraries out there aren’t terribly generic - don’t really support partial & incremental path finding, a good way to rate limit, and good support for dynamic maps where nodes can change traversability and have all existing paths re-evaluate
  • My animation library is extremely generic, you can have the most advanced animation control for anything (color changing, camera movement, to skeletal animations)
  • My entity component system allows the dev to swap between implementations (there are ~4 different ways components & entities could be stored, and depending on your game one might outperform another)
  • My debugging utilities make live on-screen performance/event charts extremely simple. Using Round robin databases they can capture an entire game’s metrics while using a fixed amount of memory - and then dump the charting data for offline investigation.
  • The networking component takes lessons learned from GafferOnGames and UDK and offers additional validation, RPC, and performance oriented features into an open source library
  • You can define which entity management system (OOP vs DOP) you want to use for update & render (you can use a mixture since your entity update logic often doesn’t represent the structure necessary for efficiently rendering a scene)
  • All of my systems allows the dev to define their game based on tasks - these are used to control how much time is spent per frame, and can also be used to multithread
  • Most importantly, my engine focuses on allowing any of its components to be included into an existing game and provide simple ways to integrate them. Only want to use the steering behavior API? Awesome, you can use your own object and your own Vector classes, just implement 2 simple classes and you’re golden.

This is a lot to claim, and some of my claims may be on outdated knowledge - but if time permits I can explain anything in more detail.