How To Create your own game Engine Like Unreal,Cryengine ,and Unity Engines

Hey Guys on a Totally Unrelated note …I know its ironic how come I’m asking on how to create an engine on the website of by far the BEST GAME engine’s Website…but i just wanted to ask if you guys know of any information of how to create your own Game Engine/SDK that is Similar to Cryengine…I just finished high school and i have started learning C++ and the Java Languages…and I’ve have started reading Jason Gregory’s Game Engine Architecture book so before I head into a College isn’t there anyone that knows of any source where I can gain knowledge…so I can begin my own Engine while I Study…(not to say that Unity isn’t enough but for my Goals/Or “FUTURE GAME PROJECT” it is crucial to have my own Engine hope you Understand) and if there is anyone who has Programmed AN engine or Specifically This Very Unity How Did you Make it There ,what did you need to do? I want To start this before I start my Game

My Career Goal…Game Programmer/Computer Scientist/Game Designer (of Course)

Please do get Back To Me …Osiris…
Thanks…

1 Like

This sounds like something @ could provide some input on. :wink:

If you need to ask, you don’t need to ask :slight_smile:

8 Likes

BennyBox on YouTube has a great series on creating a game engine. It was great help. He starts in Java, but soon converts to C++. And for anyone saying not to tackle it, don’t listen. Now don’t try to go create Unreal or Unity by yourself, but making Tetris or Pong from scratch will be an amazing learning experience. You’ll have a deeper and better understanding of things under the hood when you start using Unity/Unreal/whatever.

You don’t need much tools, simply an IDE and compiler. You build all the rest. Enjoy writing out Matrix and Quaternion libraries :wink:

7 Likes

Honestly, it’s not worth doing and is basically a waste of time unless you specifically aspire to be a low-level engine programmer. I can almost guarantee you could spend 10 years working on it, and it still won’t be as good as Unity is today (forget that Unity itself keeps advancing all the while). Not to mention that after that whole time, you still wouldn’t have a game completed (only a not-as-good-as-Unity engine).

So, if you want to be a game programmer, program a game. If you want to be a game designer, design a game. Creating an engine is only really interesting sort of as a personal milestone or portfolio piece. It could certainly get you a job, and many big studios still do custom engines for their own reasons. However, as an indie developer it is pointless.

10 Likes

First up standardise your spelling and grammar. Understanding and using convention is a very important step in becoming a viable coder. Start with getting forum posts right, then work your way up.

Think very carefully about this before you embark on building your own engine. Chances are whatever you can build on your own will be far less then what the hundreds of engineers at Unity can build. You aren’t going to be able to support multiple platforms. Or approach a feature set anywhere near Unity. So consider - Is your valuable time best spent on building an engine? Or does building a framework on top of the engine meet your needs?

4 Likes

Start programming the engine. Then keep doing it for about 5…7 years, preferably in team. Then you’ll have your own engine, which will be inferior to every other engine on the market.

4 Likes

Developing an engine is a big undertaking. You will learn a lot by doing this which will help you immensely in game development. Only downside is, you need a lot of time, a lot.
I think, this book will help you out.
http://www.gameenginebook.com/

Don’t let the naysayers completely turn you off the idea. There’s plenty to learn from it. That being said…

Don’t “make an engine”. Instead, “make a game”. Especially if it’s your first. Generalising without prior experience rarely goes well.

Plus, as the book you’re reading will tell you, the runtime bits are only a small part of an engine. A huge amount of work is about tools, workflows, and integration with third party stuff. On what experience are you going to base the decisions you make when you design those things? (Do a search for the “Four Stages of Competence”. Where do you think you are?)

Making games without an off-the-shelf engine is definitely doable and a great experience. I think any serious games programmer can benefit a lot from doing it at least once. But, when it comes time to get jobs done, and to start projects you actually intend to finish, then its also time to consider what’s actually the best tool for the job. And that’s where taking advantage of the work of others has real value. The only person who cares about your engine is you.

6 Likes

I considered suggesting to read the sourcecode of one of the open source engines from id software to get an overview. Would you say this is a good idea? I won’t ever write my own engine, I just wonder if that even would be a good starting point.

What are the chances he’ll understand any of it though?

2 Likes

Here: https://handmadehero.org

He makes the game in C/C++ and it’s all from scratch so first he has to make the engine. And making the engine may not be as big of a job as some people are making it out to be. He’s made about 240 videos so far and I think he programs for 1 hour in each of them. So that’s 240 hours of programming, but he’s had a fairly acceptable engine going for a long time. Anyway, 240 hours is “just” 6 weeks of full-time programming if it was your job. I’m sure I’ve spent more than 240 hours on some of my barely started Unity projects.

I also recommend the project for those of you who are never going to attempt what he’s doing. I’m never going to attempt something like that, but it’s still very interesting to watch. The guy doing the project is extremely knowledgeable and he’s a great speaker and great at teaching.

2 Likes

Reading an existing engine source code isn’t going to be easy, especially if you have never done it before (speaking from experience). It may take you months to understand how the important parts work.

I’d suggest starting with something simpler, for example DirectX tutorials:

http://www.rastertek.com/tutdx11s2.html
http://www.rastertek.com/tutdx11.html

That will allow you to write small parts of a renderer, game loop, etc in an incremental and guided way.

Or, grab a book about game engines. That works too :).

8 Likes

Making an engine for a single game isn’t too bad, especially if it’s single platform, moreso if its well defined in advance.

Most people who talk of “building an engine” don’t mean that though. They mean a generic, reusable toolset, possibly with support for multiple platforms. Those are the things that make it time consuming and, since nobody has unlimited time, ultimately quite challenging.

3 Likes

As a 1 man operation the engine probably isn’t going to get very far. I think step 1 is find out what part of the engine you can do, then step 2 is put a team together for making the other parts.

If your engine is going to have manual reference counting, 2d graphics, basic audio and basic input (reading keycodes for known devices), then you could probably have an alpha of an engine like that ready in 4 months. I know this because I took a class in college 2 or 3 years ago that involved making a game with c and sdl 1.2. By the end of it, a handful of people had bits of graphics, audio, reference and input management that could be reused.

Yeah, I understand, but it’s still probably one of the best starting points out there. Especially if your goal is, as OP said, a “FUTURE GAME PROJECT”. Making a generic engine to make your own games with is stupid in my opinion. You either use a an existing generic engine or you make a specific engine for your game because the generic engines didn’t fit your needs. And later on you can start making your specific engine more generic just like Epic did, I guess, if you’re going to make more games with it.

But if you think programming the engine is the fun part then by all means go nuts and make it support anything and everything. :stuck_out_tongue:

There are lower level frameworks/engines than Unity that can be great teaching instruments. When I found SDL it was a “whoa” moment for me and I learned a lot about setting up my own level stacks and entity system. If I remember right handmade hero doesn’t even use SDL just goes straight to C and OpenGL, in my opinion that’s a layer unnecessarily deep unless you truly are trying to make an engine for a single platform.

He’s making the project on Windows, but he’s said the project will support all the major platforms and that it’s written in such a way that it will be easy to port to more platforms. I have never heard of SDL, but I assume it’s some kind of library, and Casey, the guy behind Handmade Hero, is actively avoiding libraries because he wants to show how you can do everything yourself, at least to the extent it makes sense. I’m sure that if you follow the project from the start and get intimate with it then you know how to replace certain parts with libraries if you so desire. :slight_smile:

But I actually haven’t watched him in a long time because I’m waiting for him to get back to the actual game and implementing potentially cool mechanics and whatnot. I’m not that interested in the raw behind the scenes stuff.

I remember that in all the games I tried to make before I started with Unity I got to the point where I needed collision detection and then I gave up, so no low level stuff for me, only design. :stuck_out_tongue:

Yes, the Simple DirectMedia Layer is a library. It officially supports Windows, OS X, Linux, Android and iOS. It was created by Sam Lantinga who used to be the lead software engineer at Blizzard but now works for Valve.

It’s a fantastic library for beginners. It’s written in C but works with C++ and has bindings to C#, Lua, Python and others.

4 Likes

Just learn C++ and then start with opengl or directx