Why did I use my own engine?


#1

I am getting asked this a lot, why I decided to make my own engine in order to create Sapiens, and why I didn’t “just use Unity/Unreal/Godot etc.”

So rather than answer everyone individually, now I can point you all here!

a) The main reason is because I can.

I started making games in 2003. Unity didn’t exist then. There were a few engines around at that time, but the options weren’t as good as they are now. I would guess that the majority of people who made games did so from scratch, and every game I made in the early days used my own custom engine with OpenGL.

So when I sat down to start Sapiens, I did so with over 15 years experience making my own engines vs. zero years experience using Unity or Unreal. That alone is a pretty big factor! It would be crazy to throw all of that experience away unless I really had no other option.

I am also lucky enough to have the time to make my own engine. I don’t have any investors or publishers breathing down my neck wanting to see gameplay/content immediately. I have the funds from the successes of my previous games to be able to take my time with this game.

b) I’d rather know exactly how everything works

Using an engine means that large parts of what is going on are hidden in a black box. Even if you have source access, you didn’t write that code, and it can be hard to figure out how it works. Having written every line of code myself, I know exactly how it works, how best to use it, where to look when things don’t work. This benefit especially now that I am getting into the later stages of development really can’t be understated.

d) Sapiens is not normal

This is kind of a minor point compared to the others, but still worth mentioning.

The engines are extremely flexible, and I’m fairly certain I could have made Sapiens using them. However they are designed mostly towards fairly small worlds with static geometry. Sapiens with it’s earth-scale planet needs to have an engine with double precision all the way through. It needs a terrain generation system which can support extremely fast on-the-fly tessellation, in multiplayer, with modification support. It needs to create and render thousands of trees/rocks/plants/animals across the entire surface of a planet seamlessly as you explore, every one of them being able to be moved or removed.

I have no doubt that attempting to achieve all of this would have had me fighting with the engine every step of the way. It could have been done, but it would not have been as fun, and ultimately I would have written a whole lot of the same code, just in a different environment that I had less control over.

e) I enjoy it

This is probably the second biggest factor. I just really enjoy writing the engine code too. It feels good, it provides a nice variety of work through my day, and it’s just really rewarding, enjoyable work. I love my job.

Yeah but you’re wrong and I still think you’re crazy

There are definitely down sides too. It has taken me longer to get to working on gameplay than it would have. I had to spend months porting my renderer to Vulkan because the industry changed underneath me, Unity or Unreal would have given that to me for free. Cross platform support isn’t quite so easy. And there are no doubt other sacrifices I have made too.

If you think you’d be better off making a game in Unity, you’re almost certainly right. Creating even a 2D game engine is very hard, and it’s taken me 15 years to learn enough to be able to make this engine and game.

But for me, there is no doubt I made the right decision. The best solution is the solution that gets you out of bed in the morning.


How did you create the map
Sapiens FAQ
#2

Very interesting :open_mouth: to me this game seems nearly impossible yet some how you can manage it haha :smiley:


#3

I have always preferred making my own engine - yes it will never be as good as something like Unity/Unreal in terms of completeness, but I feel like it is a lot more rewarding to be able to point at your creation and say - see this thing? Well I built it all on my own, start to finish!


#4

“The best solution is the solution that gets you out of bed in the morning.” I’m adding that to my “unexpectedly poetic quotes” word document.


#5

I’ve always felt that indie devs would be inclined to use Unreal or some other pre-made engines. Most games with their own engine are seemingly AAA so this looks like a big task to make an engine solo. A lot of games that have gone done this path have a lot of bugs in their engines- but I have faith, best of luck throughout this game creating journey!


#6

Any resources you’d suggest to a beginning programmer to make a game engine? I’m not a big fan of hoods and would like to understand what’s underneath.


#7

I think the best thing is to do it. Maybe try making a few mods for games that support them readily, then try starting from scratch once you’re familiar with coding for games.


#8

And there are tutorials out there for creating game engines. Of course doing everything yourself is better for your development, but when you don’t know where to start you could first do 2-3 Tutorials and then start your own from scratch.

If You Steal From One Author, It’s Plagiarism; If You Steal From Many, It’s Research

But no matter what you do, it will take time.


#9

What books and languages would you recommend reading and learning for someone who is interested in writing their own game engine? Assuming minimal knowledge about rendering and no knowledge of working with graphics cards and concurrent programming.


#10

C++ seems to be a good start and also often used:

But one recommendation I often hear is not to read books upon books but just to start. And if you have minimal knowledge just follow tutorials and take inspirations from github repositories. If you have specific questions for more detailed questions, you could buy books for that.