Is it extremely complicated to develop your own game engine?? What if you only want to make it a 2d engine …and then later on heavily rewrite it and make it 3d…how hard would that exactly be? and if possible can someone give me some sources on this…I’ve been hearing about many companies doing this and im just curios the development process… ’
Thanks!
I would not recommend trying to write a 2d engine and rewrite as a 3d. You would likely keep the 2d and the 3d parts as modules.
Writing your own game engine can be easy of extremely difficult depending on the features you would like to include. It is like asking ‘how complicated is it to paint a painting’.
There will be some core parts that will be required: rendering, physics, resource loading, and states.
You should plan to spend quite a bit of time working on the engine, this could take anywhere from 3-24 months depending on the complexity and experience. Realistically you would need to sink quite a bit of time into this. You would also need to have quite a bit of knowledge of DirectX, resource management, and have to make sure that it will work on all target systems.
To be honest, unless you are planning on implementing special features that no other engine is capable of, I would not recommend doing a ground up engine. You could use a set of libraries to get you going, such as Havok etc.
You may need to write your own engine if:
The engine has special features that no other engine is capable of
The game is very small and the engine would be a one-off game (would not take much time)
The engine is very large, but would be used for several commercial games (much time and high reward)
The honest truth is, if you set off to create your own engine, and did not have a team or the background, then it would likely never get completed if it was a complex game. I ran down this path when i was younger, and got very far, but always ended up leaving the project because I was just reinventing the wheel. By the time you implement a new feature, Unity or other professional game engines have already implemented two. Don’t waste time reinventing the wheel, unless the wheel you plan to reinvent has some quality that does not yet exist.
If you decide to create your own engine, it would be a great learning experience, and there is a lot of value in that. Aside from that, if it is a simple game, and you don’t plan to resell the engine, I would not recommend going down that road alone.
This is just my opinion
It depends on your requirements. If your engine is only supporting one game and that game is relatively simple, then making an engine for that isn’t “extremely complicated”. Then again, I wouldn’t call it trivial either.
Complexity goes up significantly if you want your engine to support many games, or larger games.
Yes is very complicate, but not imposible, many nice game engines are be made by one person, as Maratis 3D. Make a 2D game engine is more easy and a good exercise for then make a 3D game engine, I recomend you see the sites of open source engines as Ogre 3D for see the process. Next year I will start my own 3D game engine based on the Three.js framework. Last years many game companies are developing their own engines because you can control all aspects of the game production.
Thank you everyone for your suggestions… I don’t have enough knowledge to make my engine… I’m afraid the the game I wanted to develop would be to complex to make on a engine I made… Soo yea haha I’m just gonna hold that project engine off for a while and use Unity for this project I kinda had in mind a engine kinda like runescapes
Without giving away too many details, what deature is too complicated for unity? You would be surprised what Unity can do.
That’s not what I meant hahaha Unity is amazing it’s just that I just kinda wanted to develop a engine just for a specific title
If you want to make your game engine, it is not as difficult as you might think I wrote a complete 3D / 2D engine, from scratch, in c++/'Opengl in approximately 2 months; you might want to look at these tutorials here : Learn OpenGL, extensive tutorial resource for learning Modern OpenGL ; it might take a little bit of time to learn opengl/c++; but you will have a better understanding of what really game programming is !
What features did your engine possess and how much prior knowledge did you have?
Yes it is. Game engine implies a general purpose engine and that just entails soo much. On the other hand pretty much any large task specific library can be called an engine. Terrain engine, pathfinding engine, etc… Lots of games have these types of engines that are specific to their game, or at the very least highly customized versions of some other engine.
Writing your own game engine for a specific game makes absolutely no sense. It violates one of the cardinal rules of software development which is don’t solve already solved problems. There is just no way that most of your game is so different from every other game out there that it requires it’s own engine. On the other hand you might very well have specific parts that require either a custom engine or a highly modified one. But even then you will be leveraging lessons learned from other engines, if not outright using a lot of existing code.
People who write their own engines as a learning exercise miss a very key thing. Which is that most likely you are simply learning how to do things WRONG. And that’s because the problem has almost certainly been worked on by lots of other people for many years, and the chances of you doing it better without having studied what has already been done? Basically zero. You will learn far more using an existing engine that was done well.
Also keep in mind that many companies are not actually writing their own game engines. That’s hardly ever done. They almost always start with something existing and/or leverage a lot of other existing libraries.
Yes, like Bethesda’s Creation engine is technically a modified GameBryo.
Easy to get hung up on semantics when discussing “engines” I think. There is a big difference between writing something from scratch using OpenGL vs. taking an existing rendering library, existing sound library, existing touch/input library and creating your own “engine” which is basically just a wrapper for all those things. That is done all the time and people still call it their game engine.
There is this company called Unity Technologies that I use that does exactly that. Sure they write some original engine code. But they also do a pretty good job integrating existing libraries like PhysX and Enlighten.
I was actually in Visual Studio yesterday trying to make a rendering device for a program I want to make, but every time I access DirectX Visual Studio hangs up on me and says it can’t access vshost (Delay) because another app may be accessing it. Another reason for me to HATE Visual Studio lol.
I was gonna make (not a game engine) but make a terrain Generator kinda thing like World Machine, GeoControl 2, etc.
Yeah exactly, just saying you don’t need to be trying to write the next Unity to prefer to roll your own in some cases. Ie. if I want to write a game for HTML5 I can use a existing game engine like Unity/UE/Phaser/Impact/Construct 2/etc. or I can simply import a handful of rendering/physics/sound/input libraries and write a bit of abstraction to access them and I’ve created an engine for a specific game(s) with barely a difference in difficulty.
That’s assuming 2D, now when you get into 3D I’d say the existing engines are the way to go because that difference is not trivial.
Indeed. At that point you are creating a “game”. If you can take like 80% of that code base and create a second game that is very different, then you are starting to make an engine.
Don’t waste your time unless you’re really really serious about doing this for important reasons. Unity does SO much for you that you would’ve have to have done yourself not so many years ago, it’s a HUGE time saver. You really really don’t want all the headache of managing an entire engine and having to do all kinds of lower-level programming. Sure some companies do their own engines but they also have tonnes of manpower and resources and want to differentiate themselves via technology innovations. If that’s not you, don’t waste your efforts. If you look back 5-10 years you’ll find a graveyard of countless ‘engines’ many of them 3d all trying to build the next big thing and almost every single one of them stalling and failing and falling dead.
Which at this point is either learning purposes or if you have special needs (ie an engine specifically for the demoscene).
One awesome result of this is that occasionally the developer(s) will release their engine for free. I stumbled upon one such engine about the time it was released as open source (MIT license). It might serve as a good starting point.
https://www.reddit.com/r/gamedev/comments/2fbkzr/dt3_open_sourcing_my_game_engine_fourteen_years/
And it often means engine was abandoned. As it is the case here (last github commit 10 months ago). And as it was the case with Torque.
An abandoned engine can be a good starting point though. I mentioned earlier that Bethesda’s Creation engine is basically the GameBryo engine. Did you know the company that developed GameBryo is basically defunct? Last update was 2012.