
Custom Game Engines: A Small Study - panic
https://gist.github.com/raysan5/909dc6cf33ed40223eb0dfe625c0de74
======
klodolph
Unity, Unreal, Godot, Game Maker etc are all so popular these days it’s easy
to lose sight of how you can make a game with a “custom engine”.

“Make games, not engines” is fine advice in general but you can make an engine
for _your specific game_ without making that engine look like Unity. You don’t
need a sophisticated custom level editor, you can just use something off the
shelf like Tiled. You don’t need an extension language (like C# or Lua), you
can just do the whole engine + game in one project, with one language.

You might also have a valuable mental toolkit that is squandered when using an
existing engine. I can’t count all the times I’ve said, “I know how to
implement that, but not in Unity.” My mental model of how objects are drawn to
the screen consists entirely of buffers and shader program invocations. There
are also plenty of games that just don’t benefit from some of the core
features of engines, like physics, and need to roll their own anyway.

Some games have fairly custom needs and aren’t a good match for existing
engines (like _No Man’s Sky_ or _Minecraft_ ) and some games (especially 2D
games) have very simple needs and an engine doesn’t provide as much of an edge
over something like a framework (e.g. MonoGame) or platform abstraction
library (e.g. SDL).

Or in short, “custom engine” does not automatically mean “half-baked
alternative to Unity”. Just how it’s totally fine to make your next web app
backend without using a high-level framework, and it’s totally fine to make
your next frontend without React. If anything, it’s easier than ever to make a
frontend without React, just like it’s easier than ever to make a game without
Unity.

~~~
phaus
Got any recommendations on how someone that can code a little but isn't a
professional might go about learning to make an engine?

~~~
klodolph
What kind of engine do you want to make and what is your goal by making that
engine?

The generic, one-size-fits-some advice is: Go and make three games, and by the
time you’re done with the third game, you’ll have a clear idea of what you
want from an engine.

~~~
mekanicalsyncop
I'd like to eventually learn to make a simple 3d engine suitable for a retro
FPS. However, to start with I'd like to learn how to make 2d engines for side
scrolling or isometric action games.

Basically, game dev is a hobby for me so I'm in no rush to actually publish a
game. I'm interested in learning nearly every aspect of how games are made.

I've already been playing around with Unity and Game Maker Studio a bit. I'm
continuing to learn Unity but rather than spending tons of time learning how
to use a game engine's libraries I would prefer to learn how these things are
built and make one myself.

~~~
klodolph
You might find it valuable to make some simple games without using an existing
engine. For example, a simple action platformer game is nice because the
physics can be pretty simple.

------
bullen
Cave Story is another one-person game, he made everything himself; art, music
and code.

With time, as technology peaks; more one-person engines will appear because
you don't have to chase the next big thing all the time.

I'm building a MMO from scratch since 20 years back, the most recent MMO that
uses my server is free-to-play this weekend:

[https://store.steampowered.com/app/486310/Meadow/](https://store.steampowered.com/app/486310/Meadow/)

The source for the backend is here:

[https://github.com/tinspin/fuse](https://github.com/tinspin/fuse)

You can call it a one-man MMO backend.

I'm going to release a MVP for the C++ 3D MMO client in about a month
hopefully, here is a tech demo for it:

[http://talk.binarytask.com/task?id=579711216639635462](http://talk.binarytask.com/task?id=579711216639635462)

~~~
throwaway894345
As someone who writes a lot of server code, I've always been curious about the
architecture for MMOs--how do you handle issues of scale (or is it fine to
assume everything is running on the same server)? If you do concern yourself
with scale, presumably you have to "shard" your universe somehow? Do you shard
by in-game geographical regions? If so, how do you handle players moving from
one region (shard) to another? What is the best practice for handling game
state? A SQL database? A redis server? Or maybe you just keep things in memory
and persist asynchronously? Can anyone recommend blog posts or similar on
these subjects?

~~~
chongli
Fun fact: the word "shard" in this context was coined by the dev team of the
first major commercial MMO, Ultima Online, as an in-universe explanation for
why the game world was split into multiple servers.

If you're looking for an exemplary server architecture for MMOs, look no
further than UO. That game came out in 1997 and supported worlds with
thousands of players and millions of persistent objects. Players could build
their own houses within the game world, decorate (and later design) them to an
incredible degree [1], and have other players visit (welcome or not). Players
could run their own shops within their homes and sell their own hand-crafted,
signed goods (weapons, armour, clothing, furniture) in addition to any found
treasure they wanted to offer.

What made UO so impressive, technically, was how they accomplished all of this
on such modest hardware as was available in 1995 [2]. This second link is to
the GDC postmortem of the game. If you're interested, I recommend you check it
out. It may not answer all your technical questions but it's extremely
interesting nonetheless. The story of how they had to shard the game is part
of the talk.

I'm pretty sure they did not use any off-the-shelf databases as the
performance would have been terrible at the time. Everything would have been
custom. The custom networking protocol is extremely reserved (not chatty),
since it was designed for dial-up modems. Even when you run the game on modern
hardware with broadband, the game uses on the order of a few megabytes _per
day_ of traffic.

[1]
[https://duckduckgo.com/?q=uo+house+decoration&t=osx&iax=imag...](https://duckduckgo.com/?q=uo+house+decoration&t=osx&iax=images&ia=images)

[2]
[https://www.youtube.com/watch?v=lnnsDi7Sxq0](https://www.youtube.com/watch?v=lnnsDi7Sxq0)

~~~
scott_s
I have heard Richard Garriott claim credit for coining "shard," and I'm very
skeptical. The first database paper I could find that uses "shard" (as an
acronym: System for Highly Available Replicated DAta) is from 1986:
[https://dl.acm.org/doi/book/10.5555/889956](https://dl.acm.org/doi/book/10.5555/889956)

~~~
teraflop
Those authors may have been first, but I seriously doubt they were a
significant influence on the term's popularity. If there's one thing I've
learned from reading a lot of CS papers, it's that pretty much any word you
pick out of a hat has been used as an acronym by _somebody_.

The paper you link to doesn't use "shard" as a noun, and in fact it doesn't
describe a system that has "shards" in the sense that UO and just about
everyone else since then has understood that term, i.e. independent partitions
of a dataset:

> The reader is referred to [SBK] for a detailed description of the
> architecture of the SHARD system. Briefly, the main ideas are as follows.
> The network consists of a collection of nodes, _each of which has a copy of
> the complete database._

(emphasis mine)

Additionally, according to Google Scholar, that paper was only ever cited 21
times. I checked the 16 of those citations for which full-text is available,
and not a single one of them used the word "shard" as anything other than a
passing reference to the name of the system itself.

------
flafla2
I noticed an omission on this list was Minecraft. Today, the game of course
has thousands of engineers working on the various versions of the game due to
its success. But in the beginning (and throughout Alpha/Beta and during the
beginning years of its 1.0 development) it was built on a hacked-together Java
LIBJDX 2.0-based engine.

Here's the first video uploaded by Notch when he first embarked on a new "Cave
game":
[https://www.youtube.com/watch?v=UMpv5kZ9-rE](https://www.youtube.com/watch?v=UMpv5kZ9-rE)
(the original video is blocked in the US for some reason)

An interesting side-effect of this technical decision was that the game was
heavily moddable. Java byte code is relatively easy to decompile, and class
files easily modularize the various components of the game. So installing a
mod amounted to un-zipping the minecraft.jar file and replacing .class files
with modded ones. In fact, this is still how modding works in the Java version
of the game.

~~~
pageandrew
I find it hard to believe that Minecraft today has thousands of engineers
working on it.

~~~
meheleventyone
Minecraft the Java game certainly doesn't but the whole IP probably has a lot
more people working on it than people think. You have the Java version,
Bedrock version, AR game and all the ancillary porting involved as well as all
the backend services etc. powering Realms and the other bits and pieces. I
think thousands of engineers is a massive exaggeration but it's certainly
going to be a lot.

~~~
TotempaaltJ
Mojang, the developer of Minecraft, had 70 employees in 2016. It will
definitely not have thousands by now. Maybe hundreds.

~~~
meheleventyone
Yes that's what I said.

~~~
sorryitstrue
Interesting that you interpreted this as a correction and not support of your
point

~~~
meheleventyone
I guess that's because of the design of the interface here. Generally speaking
if I support or agree with something I upvote it. I typically only reply if I
have something useful to add or I disagree. That also seems to be the general
style of commenting here at least in my experience.

------
speps
Regarding A Plague Tale, I used to work at Asobo Studio on the Engine/Tools
team. That was during the Toy Story 3 / Disney Pixar Heroes period. The in-
house engine is called Zouna and is very good. However, the piece of software
that was the most interesting to me is their in house level editor called
PAWAP (can't remember what the acronym meant) . It's a 20+ years old C++
codebase dating back to Kalisto (where most of the founders of Asobo used to
work), of course modernised over time. I changed code that was written before
C++98 was standardised! The Engine team is amazing there and it shows in the
games.

~~~
benjaminsuch
The graphics of A Plague Tale are astounding. Great job from all of them.

------
Laremere
As with all things, there's a balance and a place for technical trade offs to
be made. The first entry on the list, Activision/Blizzard, built Hearthstone
in Unity. A better case study would look at what games are successful, and
then look at what engines they use.

One way to look at things, is who in recent years won the (imo) biggest indie
game award, the Seumas McNally Grand Prize:

\- A Short Hike: Unity

\- Return of the Obra Dinn: Unity

\- Night in the Woods: Unity

\- Quadrilateral Cowboy: id Tech 4

\- Her Story: Unity

\- Outer Wilds: Unity

\- Papers, Please: custom using OpenFL/Haxe

\- Cart Life: Adventure Game Studio

I admittedly started looking because I knew Obra Din was Unity, so there's
some bias in category selection. That brings us to 2013. That 5/8 Unity, and
7/8 using an engine. The remaining 1/8 (Papers, Please) was developed by Lukas
Pope, who later made Return of the Obra Dinn in Unity. This is a list chosen
by game developers, but I would think that would skew the list towards
impressive custom things.

I do agree with the spirit of the post: You don't have to use an engine.
Nothing about a game engine is magical. There's lots of success stories on
both sides.

~~~
joveian
I am disabled and have played a bunch of games (DRM-free only, via GOG or
Humble Bundle) and I can confirm that Unity games are extremely common,
including on tiny 2d games, visual novels, etc. I wouldn't be surprised if
over 5 of 8 games in the past decade (or at least the last 8 years) used
Unity.

Interestingly, from the Wikipedia page it seems that Unity was a result of
"our game didn't do well but we made awesome tools". They now have 2000+
employees according to Wikipedia.

The employee numbers on some of these companies is misleading. Nintendo does
not just make video games, but the employee count covers everyone. CD Projekt
employee count includes GOG and is somehow mostly the developer side, but GOG
still has 172 employees (but not a single employee over 50, and only 2 in all
of CD Projekt :/, also for anyone else wondering while I'm looking at the
stats, GOG is a bit under and the rest of CD Projekt a bit over 25% women). It
looks like Valve does both development and Steam with 360ish employees.

Also publishers often do quite a bit of QA and such for games they publish
(even if it often doesn't seem like it :/), so comparing publishers with
studios that have outside publishers is also not getting the full picture.

Also worth noting the open source RenPy that a number of visual novels use.

------
yellowapple
One surprising omission here was Paradox, which uses its own in-house engine
for (AFAICT) all of its grand strategy games (though this seems to apply only
to their own studio(s); Cities: Skylines, for example, is Unity-based, and I
believe Surviving Mars derives from whatever engine Haemimont uses for its
Tropico games).

TaleWorlds is another studio that wrote its own engine for Mount & Blade
(reused later for M&B Warband and its expansions), and more recently developed
a new engine from scratch for the recently-released (and 8 years awaited)
Mount & Blade 2: Bannerlord. The older M&B games were definitely niche, but
Bannerlord's definitely notable going by the numbers (it's currently in the
Top 10 games by concurrent players per steamcharts.com, though that seems to
be tapering off now that the novelty's wearing off a bit; it also broke
Steam's payment processing within minutes after launch). Early Access, but
still an interesting example.

~~~
Kinrany
Did they really develop a new engine? This is an interesting case then:
Bannerlord feels like a really polished Warband.

The opposite seems way more common: a sequel that tries to be different but
noticeably uses the same tech under the hood.

~~~
yellowapple
Yep, entirely new engine. Warband used a custom bytecode-like programming
language that required Python scripts to generate, whereas Bannerlord uses C#
and XML. The engine rewrite is a big reason why it took so long to develop,
but it was well worth it.

------
koonsolo
I'm working on my own 'no-code' game creation tool for almost 10 years now.

I had to create my own game engine because it had to be 100% data driven, and
none of the existing ones really fitted my need.

The cool thing about a data driven engine is that there is no building and
restarting phase. You just edit everything inside the running game.

You can check it out at [https://rpgplayground.com](https://rpgplayground.com)
.

~~~
chrismaltby
Looks great, I'm working on a similar kind of project specifically for making
Game Boy games.

[https://www.gbstudio.dev/](https://www.gbstudio.dev/)

I'll definitely have a look at your project for some ideas.

~~~
Andrex
Just want to say I love your project, and shout loudly about it to whoever
will listen. :P It's very exciting! Thank you for your work.

------
midnightclubbed
Many of these game 'engines' are not engines at all in the Unreal/Unity sense
of things. More a collection of libraries and code that are used to implement
a game. For many games this is just fine (and sometimes a better fit than a
monolithic engine).

If you can't take a read-only copy of the engine and implement a game on top
of that then you don't have an engine. Marketing will still want you to name
the 'engine' though!

Back in the earlier days of Unreal there was an industry joke that Unreal was
great if you were making a single player third person space marine game on
Xbox or PC. Unreal has come a very long way since then and is a truly
wonderful achievement but it took a huge amount of time, resources and skill
to get it to where it is now.

~~~
clarry
> If you can't take a read-only copy of the engine and implement a game on top
> of that then you don't have an engine. Marketing will still want you to name
> the 'engine' though!

I guess id Tech 1 -- which they licensed to many developers -- was not an
engine then? I don't think that's a useful definition.

> Back in the earlier days of Unreal there was an industry joke that Unreal
> was great if you were making a single player third person space marine game
> on Xbox or PC.

Did Unreal really fall that far after the glory days of Unreal, Unreal
Tournament '99, Deus Ex, Clive Barker's Undying..? Wow. The Xbox generation of
games really ruined so many things.

------
dmitriid
I highly recommend Jonathan Blow's (Braid, The Witness) streams on custom
programming language development (jai [1]) and game development:
[https://www.youtube.com/channel/UCCuoqzrsHlwv1YyPKLuMDUQ](https://www.youtube.com/channel/UCCuoqzrsHlwv1YyPKLuMDUQ)

In one of the videos he says that the big engines are trying to be everything
for everybody, and there's value in developing a custom engine for your game's
specific needs.

[1] [https://inductive.no/jai/](https://inductive.no/jai/)

~~~
meheleventyone
I think the other thing to note is that you aren't really making an engine
just making the game. You might have some reused bits culled from one game to
the next but that's not really "an engine" so to speak.

~~~
klodolph
I disagree on this one, for sure. That definition of “engine” is too narrow.

There’s a tendency these days for people to think of “game engine” in terms of
the big, general-purpose engines like Unity, Unreal, and Godot. However, by
analogy, a car still has an engine even if that engine was purpose-built for
the specific car and is never reused in other cars.

It would be really weird to have to come up with a different name for the game
engine for _The Witness_ — what would you even call that, if not an “engine”?
So, “engine” is going to refer to custom, never-reused engines in games until
we get a better word for it.

~~~
meheleventyone
I'd call something an engine if it were reasonably general and could be
repurposed. In the same way I can take the engine out of one car and plumb it
into another. I'd also say an engine has to provide a relatively complete set
of functionality otherwise you're building a library or framework. SDL as a
classic example of that.

I also think it's fine to think in terms of the game you're making between
"game stuff" and "engine stuff" where the "engine stuff" is essentially things
that could reasonably be repurposed.

In the example of The Witness I'd not call it anything as it doesn't exist
separately to it as far as I'm aware. I'd still understand someone who
referred to it as the game engine though.

The main point IMO is that making an engine implies more than just making the
tech needed to power a game.

~~~
klodolph
> The main point IMO is that making an engine implies more than just making
> the tech needed to power a game.

Then I think we have a very fundamental disagreement here. Your definition for
“engine” is definitely not mine.

If we can’t talk about the engine for _The Witness_ we are at a loss, because
there isn’t a different word that we could reasonably use, besides “engine”.

~~~
meheleventyone
I said I’d understand if you talked about the engine of The Witness. I think
that is a fairly common colloquial expression. Engine is a fairly fuzzy
concept at best. That you think there isn’t a different word like ‘tech’,
‘framework’, ‘libraries’ or the myriad of alternatives is by the by.

For example some of the framework for The Witness was ported to Jai for the
sokoban game Thekla is working on.

------
ashtonkem
In the medium sized category, Valve is the obvious odd child. They have a
small number of employees, but they also famously make Steam. This certainly
requires a large amount of engineering effort, but also brings in literal
billions in cash. They could almost certainly afford to outsource the creation
of a custom game engine, since they have the cash flow and it’s probably not
as core an activity as maintaining Steam.

But it could also be in house. I don’t have a feel for how many engineers it
takes to make a game engine.

~~~
dx87
Speaking of Valve's source engine, in the recent chat log leaks, the Valve
employee says the Source 2 engine is essentially just the Source 1 engine with
new physics tacked on.

~~~
boarnoah
I guess in comparison to how far other storied engines such as UE4 have come,
Source 2 does feel like its much less of a step forward.

One thing I really like is the level editor tools, with Hammer for source 2
they've re-implemented BSP geometry tools with geometry tools that use static
meshes.

A good/modern geometry level editor workflow is sorely lacking on the other
available engines.

~~~
pugworthy
I really agree here. I've used Hammer since... well since it was Worldcraft
and I used it for Quake levels. Maybe it's a VI vs EMACS type thing, but I
latched onto it pretty quickly, and have always found it the easiest editor to
use.

I'm really curious how they will expand it for VR level editing with the Alyx
release. One thing I think you'd need is a way to quickly view the environment
in VR while editing. This seems really important if you want to carefully
craft some specific visuals for VR, or certain interactions. Can for example
the player stand next to a hole in a wall and reach through it to access
something.

------
pengaru
I've been dabbling a bit in game development in recent years and have so far
taken the approach of just building small composable libraries or headers
encompassing units of functionality as needed.

This of course meant progress was rather slow-going early on, having no prior
experience with things like 3D rendering or the related math, spatial
indexes/collision detection, the list goes on... I figured by creating
everything as needed I would at least be getting a better understanding of
what's going on and how everything comes together, plus owning all of the code
doesn't hurt.

Last weekend I successfully participated in a 24hr irc art contest by
submitting a small game using some of these components, and I'm happy to say
it's a whole lot easier for me to slap something simple together today with
this pile of parts than it was a couple years ago.

I made a Show HN about the 24hr contest submission since it's all GPL and
thought some HNers might enjoy poking at it, but it didn't seem to get any
notice. This was the post if interested
[https://news.ycombinator.com/item?id=22940287](https://news.ycombinator.com/item?id=22940287)

------
knackfuss
I am making a custom c++ 3D game engine using openGL right now and it's a
massive undertaking. I have a lot of respect for folks like Jonathan Blow who
manages to be an incredible game designer while also being a super programmer.
In my case, i just decided to give it a try because if i ever watch an
engine/game maker software tutorial again i will most likely throw up.The
amount of trivia knowledge you need to have to make something in those engines
is huge and usually non transferible between them. Also if you want to make
sure you will provide the absolute best experience possible for your players,
you need to have control of the low level stuff. I may be wrong but i don't
think Unity allows you that kind of control. Two examples are Subnautica and
Firewatch, while being excelent games in their own way, fail miserably in
loading up the game assets in time after player spawn (subnautica mostly) and
are filled with visual artifacts and texture problems (both games) while The
Witness does not give you even the smallest hickup whatsoever.

~~~
DeathArrow
>Also if you want to make sure you will provide the absolute best experience
possible for your players, you need to have control of the low level stuff.

I disagree with that. Sometimes you need, sometimes you don't.

>I may be wrong but i don't think Unity allows you that kind of control.

It allows you to use your own level stuff, like your own custom renderer, or
your own physics engines. Some studios releasing AAA games do that, because
they have the resources.

------
nsomaru
Came here to mention Sapiens, an indie written from scratch by this guy named
Dave, from NZ. Dave is great and goes through his development process of the
custom Lua engine he wrote for his game engine, the AI, as well as design
decions. Follow him here:
[https://www.youtube.com/user/majiDave](https://www.youtube.com/user/majiDave)

------
badsectoracula
It seems to be missing Dunia (Far Cry series) in the Ubisoft list. You could
say that since it is based on an (early) CryEngine it isn't "custom" but it
already contains engines that were forked off 3rd party engines (IW from Quake
3, Creation from NetImmerse, Source 2 from Quake 1, etc).

~~~
theandrewbailey
Quake: [https://en.wikipedia.org/wiki/File:Quake_-
_family_tree_2.svg](https://en.wikipedia.org/wiki/File:Quake_-
_family_tree_2.svg)

Cryengine:
[https://en.wikipedia.org/wiki/File:Cryengine_Family_Tree_201...](https://en.wikipedia.org/wiki/File:Cryengine_Family_Tree_2016.svg)

------
davedx
> It would be really nice to know how many engineers are working on the engine
> division for each company, I'm sure there would be some big surprises,
> probably by the low number of engineers working in the engine and tools!

When I worked for Free Radical Design we had two big AAA games in development
both using the FRD in-house custom game engine. I'd say the engineer split was
something like 30:30:30 between engine and the two games, with another split
between engine programming and tool programming (though there was some cross
over there, for example one of the guys on the game team I was on worked on
the game editor). The engine was really impressive - it was cross platform and
ran on *Nix, Windows, XBox 360 and PS3. The engine guys did an amazing job on
it.

------
jokoon
Urho3d seems like it's a new engine, it seems like it's pretty good.

Ogre3D is mentioned, but it's not as easy to use as it was, the doc seems
poor, there are 2 versions of the engine (although it's a normal thing
nowadays), so it seems the engine is dying.

------
billfruit
A couple rather remarkable engines not listed: -Whatever isometric games like
AOE2DE are using and the custom engine used in Brigador. Brigador, esp, I read
that the developers found that none of existing engines could satisfy their
vision, so then spent a few years building their own. Finally it turned out
good, the game though made by a very small team, looks spectacular, and runs
well even on low end hardware.

-Whatever Avalanche Studio's are using for their games like Just Cause, Renegade Ops, and Mad Max. They graphics seems not only look good, but very performant on medium to low end PCs.

~~~
som33
They use their own engine called the APEX engine.

"Just Cause 2 was announced in January 2008. Powered by the Apex Engine 2.0"

------
phn
Really interesting!

The small studios (or one-man armies) are the ones using custom stuff because
they have to do it all anyways, no biggie having to do a little leg work to
import stuff.

When you're a bigger studio, having to coordinate and support multiple teams
with different workflows, the engine and the tools it provides play a much
bigger role. The studios with such scale either build something that works for
them, or use some existing one provided by others.

~~~
s9w
I think the biggest reason for the custom code in the small teams is that they
make 2D games. A 2D engine barely deserves the name and it's usually more
hassle adapt to a 3rd party engine and its limitations than just write it
yourself.

~~~
jfkebwjsbx
> A 2D engine barely deserves the name

If you say so. The vast majority of programmers would have no clue where to
start if you put them up to the task.

A game engine is much more than a renderer, which is the only easier part in
2D versus 3D.

~~~
s9w
Sure there's a place for these engines. They abstract away graphics layers and
bring convenience. But if you are a (semi-?) professional game dev, that's not
a major hurdle.

I have a toy game in play around in my free time and started with SDL like so
many. You can create windows and draw bitmaps really easily. But sooner rather
than later you discover limits (bugs, performance limitations, less than ideal
APIs) and see that just writing OpenGL code yourself is actually easier and
more flexible. Many people go down that road.

edit: Concerning your edit about "more than a renderer": Yeah that other stuff
is annoying and many still use SDL, SFML or whatever for that. See Factorio
and many many others who do the rendering themselves and offload the other
crap. I do that myself too.

~~~
onion2k
_They abstract away graphics layers and bring convenience._

And bring physics, input, asset loading, networking, systems, scripting, etc.

~~~
TeMPOraL
> _And bring physics, input, asset loading, networking, systems, scripting,
> etc._

Along with their own idiosyncrasies and assumptions. Which is something you
may decide you do not want to deal with. E.g. hand-coding the little physics
you need may be easier than learning the physics engine's API and adjusting
your own architecture to mesh with it.

~~~
onion2k
Yes. That's a very fair point. Most engines I've seen try to implement a
general physics model that can handle every genre of games, and there's a lot
to be gained by not using that and building something more focused on what you
actually need.

~~~
meheleventyone
Further to that very few engines are developing their own general purpose
physics solver and are using middleware. Bullet, PhysX and Box2D are the most
popular.

Roblox is the only really big engine company I can think of that actually
develops their own physics tech (because they started off doing it).

~~~
Jasper_
NVIDIA completely bungled PhysX because they chased accuracy for ML/robotics
reasons in the newer releases, and the latest PhysX is slower and deprecated
useful games tech like cloth.

So both Unreal and Unity now have their own physics tech.

~~~
lasagnaphil
What do you mean by slower? Is it the new TGS solver you’re talking about
(which is optional and really doesn’t need to be on for games)?

You’re right that it seems like Unreal and Unity are ditching PhysX for
something else (Unreal for the new Chaos engine, Unity for their new DOTS
engine in collaboration with Havok). I’m just surprised that PhysX‘s
performance problems had something to do with the move.

~~~
Jasper_
Unity started their physics engine as a test of the job system. When they got
the latest PhysX drop, and it was slower, they made it into a full team.
Unreal had been annoyed with PhysX for a while, and entertained the idea of
writing their own, but never actually did it. When Unity engineers told them
about the latest PhysX updates, they launched the Chaos project.

NVIDIA's incompetence is what kicked both of them off, basically. Both engines
will continue to support PhysX 3.6 for existing customers.

------
wxkn
Game engines are super interesting. The variety of different things happening
in the program, the audio/visual aspect, the real-time nature of the
application. It's _exciting_ to work on. It just feels like there is a
software machine chugging forward.

A few years ago I made a mostly crappy 2D arcade game with a custom engine
("Fractus" on Steam). It basically started as a way to learn graphics tech and
try out some visualization ideas. Slowly it turned into a real project. For a
long time the journey of creating an engine was the main thing. Unfortunately,
I think this shows in the final game quality... still working on that. I
remember reading a post about having a "forever project". It's that piece of
software that you keep going back to hack on because it feels good. I find a
graphics engine to be a good choice for this.

If you have an idea/design/plan for a game, you probably shouldn't make your
own engine without a compelling reason. But what if you don't really have an
idea, yet still want to get into the programming side of games? Try working on
a toy engine!

------
joveian
I was curios about Falcom since they have such consistently good games. I
couldn't find a detailed lists but it sounds like most Falcom games (Including
recent Ys games) use their own custom engine called the "Yamaneko Engine".
Tokyo Xanadu and Cold Steel I and II (not sure about later ones) use Sony's
PhyreEngine. They had 62 employees in 2019 according to Wikipedia.

------
CM30
Nice list! Interesting to see the breakdown of companies and which engines
they use/which ones use completely custom ones and which use modified versions
of stuff like Unity and Unreal engine.

That said, it might be interesting to look at companies that changed from
using custom engines to stuff like Unity/Unreal at some point, or perhaps the
other way around. I remember Rare originally building most of their game
engines inhouse at one point, but their Xbox 360/Xbox One era games seem to
have changed that.

It's also interesting to note that there are also quite a few custom game
engines being made for various fan game development scenes too, as well as off
the shelf ones specifically made for games based on that series.

Or that the same 'build games not engines' and 'unless everything is custom
it's not worth it' debates exist there too.

Either way, some of the notable ones there include:

\- Hello Engine, which was basically a hybrid of various 2D Mario titles in a
way that made it very easy to use as a level editor. Has roughly the same
reputation as Unity does on Steam because of that, with at least one game
basically marketing itself as a parody of it as a result. \- Gatete Engine,
with a fairly similar featureset, but a more modern coding style \- Super
Mario Bros X, a level editor created by the guy behind Terraria, which has
since ended up decompiled and remade in a different programming language by
fans, with various forks made based on that.

There are also obviously a ton of individuals and small groups building their
own engines for individual games in that community too.

Finally, the whole 'make games not engines' thing doesn't have to refer to the
entire engine. No, it can be equally easy to get distracted by the possibility
of adding extra features to an existing one too.

------
Wowfunhappy
One I didn't see on here—probably because they're not particularly well
known—is the custom engine built by Coilworks for their game, Cloudbuilt[1].

I find this super impressive, because (A) Coilworks was tiny, and (B)
Cloudbuilt is a fully 3D, polygonal game.

While the simple graphics likely help, Super Cloudbuilt performs well, with
great frame pacing and minimal input latency—not something I can say about a
lot of more mainstream games on traditional engines. And Super Cloudbuilt is a
lot of fun!

\---

[1]
[https://www.double11.com/games/supercloudbuilt/](https://www.double11.com/games/supercloudbuilt/)

------
aeturnum
Adding to the list of small, single-developer-multi-year 2d games:
Starsector[1]. It's a modern descendant of a whole set of top down shooters (I
found it looking for a modern Escape Velocity, but it's quite different). The
developer is very active and the modding community is huge - lots of total
conversions and expansions have been created by the community.

[1] [https://fractalsoftworks.com/](https://fractalsoftworks.com/)

~~~
adrianpike
Did you ever find a good modern Escape Velocity? I lost a lot of time to that
game back in the day, and it's still one my favorites of all time.

~~~
aeturnum
The answer I've found the most often is Endless Sky[1]. It's open source and
has the look. I've installed it and messed about before, but never gotten
enough into it to feel like it's a worthy successor (for me).

Of course, EV Nova was released for Windows and still runs fine. I'll start a
new campaign every few years. Not sure if you can still purchase it legally
tho - the company has gone under[2].

Also - if you enjoy EV, I highly recommend checking out Subspace! It's not the
same, exactly, but it scratches a lot of the same itches for me.

[1]
[https://store.steampowered.com/app/404410/Endless_Sky/](https://store.steampowered.com/app/404410/Endless_Sky/)

[2]
[https://en.wikipedia.org/wiki/Ambrosia_Software](https://en.wikipedia.org/wiki/Ambrosia_Software)

------
bregma
The general rule for small (single-developer or maybe teams of single digits)
studios is "make games, not engines".

Turns out people don't play engines, they play games. Just finishing making a
game is hard enough and most don't make it that far. If you have to finish
your engine before you start the remaining 90% of game development, well, keep
your day job.

~~~
klodolph
That’s a reasonable general rule but it’s too easy to remember the short
version “make games, not engines” and forget the underlying advice, which is
more subtle.

Making a game engine _first_ and then making a game _second_ is a fools
errand, even if your goal is to make the game engine. However, you can make
the engine in parallel with the game. Making a purpose-built engine in
parallel with a game can be very reasonable.

Having made a number of games with and without off-the-shelf engines, whether
or not a custom engine makes sense depends heavily on the specifics of your
team and the game you are making.

~~~
midnightclubbed
This is a great point and often forgotten at game studios. Without a game
driving the engine feature set you will almost certainly end up with an engine
design that tries to do 'everything' because your target is Unreal/Unity.

------
sibane
Something that could probably be added is that many people and studios still
use third-party engines for prototyping new projects.

------
baud147258
Regarding the Fox Engine of Konami, in addition to the Pro Evolution Soccer
games, it was also used for Metal Gear Solid V

------
tryauuum
can I recommend «Autumn Night 3D Shooter» here? It's a short 3d shooter with
custom engine that was made with love. Author boasts about it being 100%
software-renderer (in other words, it doesn't use GPU acceleration)

------
gldev3
What a nice little gist, just what i needed to get motivated over the weekend.

