Have you made a game engine

C3b6f4f7af5ac965836a3cdfc5c449a9
0
Nathan2222 101 Dec 30, 2013 at 12:54

Hi all. Forum newbie.

Been searching google for things like “my 3d game engine project” to see already created engines and how long it took to make them. Haven’t gotten any new results so i thought to ask here. I just wanna know how long it took to get the 3d game engine to a usable state (years/months). How many/what libraries you use (ogre, fmod, directx, physx, havok, qt, cegui etc.) and if c++, which language Thanks :).

15 Replies

Please log in or register to post a reply.

B5262118b588a5a420230bfbef4a2cdf
0
Stainless 151 Dec 30, 2013 at 14:01

For me, I have written many 3D engines.

Probably easiest to list by machine if I can get this awful formatting system to do what I want….

C64 3 months 6502

Atari ST 4 months 68000

Amiga 2 days (ported from ST) 68000

PC (CGA) 3 weeks 8086

PC (VGA) 3 weeks 8086

OpenGL (no shaders) 3 weeks C++

OpenGL (with shaders) 2 months C++

OpenGLES (no shaders) 2 days C++

OpenGLES (with shaders) 2 weeks C++

XNA 1 month C#

I never use libraries, usually because of license or stability issues

C3b6f4f7af5ac965836a3cdfc5c449a9
0
Nathan2222 101 Dec 30, 2013 at 17:27

That’s less than 2 years

B5262118b588a5a420230bfbef4a2cdf
0
Stainless 151 Dec 31, 2013 at 00:27

True, but you asked how long till it was “useable”

A 3D engine is never finished, you can always add features until you die

B20d81438814b6ba7da7ff8eb502d039
0
Vilem_Otte 117 Dec 31, 2013 at 00:28

Yes, several. I won’t give a list - rather than that I’ll describe my newest (work-in-progress one).

Creating core functionality took around a week (part time work). Adding further stuff - 6 months of part-time work so far, and it will take more. Don’t be scared by the number, it has really a ton of features, naming few of them: - Cloth physics; Ray tracing reflections (through custom OpenCL ray tracer); Custom full-featured GUI; etc.

Implementing each feature takes time, it’s up to you whether you need it for a game (or software) or don’t.

I’ve used some libraries so far - namely Alure, Open Dynamics Engine - apart from them I also use standard and platform libraries.

C3b6f4f7af5ac965836a3cdfc5c449a9
0
Nathan2222 101 Dec 31, 2013 at 09:02

@stainless: i meant ‘2 years’ as a good thing.
I’ll be using directx (everything i listed in the original post).
Thanks

B20d81438814b6ba7da7ff8eb502d039
0
Vilem_Otte 117 Dec 31, 2013 at 12:31

Just a little note to Direct3D vs. OpenGL, once you learn one of them to some extent, it’s very easy to switch to another. I also recommend you to try also OpenGL once you are finished with Direct3D, it might be viable for future - e.g. you might decide to F.e. release your engine for Linux.

C3b6f4f7af5ac965836a3cdfc5c449a9
0
Nathan2222 101 Dec 31, 2013 at 14:28

@vilem: I will probably release it for linux. Thanks.

6837d514b487de395be51432d9cdd078
0
TheNut 179 Dec 31, 2013 at 16:49

As Stainless mentioned, engine development never really stops. Depending on the complexity of your project and your goals, you could get something up and running within as little as a couple weeks to a couple months. Either way, your engine will undergo improvements as your understanding of the APIs and engineering skills improve.

I often avoid 3rd party libraries unless they are provided with a flexible license and provide simple enough functionality that it imposes minimal risk and size. If feasible, I’ll write my own portable code to provide the functionality. For example, I ported most of the important parts of the .NET BCL and WPF over to C++. I now enjoy the ease and productive benefits of working with the .NET API in a multi-platform C++ engine. Some of the 3rd party libraries I use solve other complex problems I didn’t want to spend time on: * Box2D * Bullet physics * Various DB connectors * LUA * libjpeg * OpenSSL * Xiph stuff * Zlib

For all other stuff like supporting BMP, PNG, TGA, HDR, WAV, SVG, TTF, OBJ, ZIP, HTTP, etc. I wrote my own code. It was both an educational exercise and to provide small, lightweight, and portable code to use. This is over a span of many years of course. Each new year brings in new features and more productive frameworks. It’s an evolving process.

C3b6f4f7af5ac965836a3cdfc5c449a9
0
Nathan2222 101 Dec 31, 2013 at 17:12

Could you list the maths needed (vectors, matrices etc.)

6837d514b487de395be51432d9cdd078
0
TheNut 179 Jan 01, 2014 at 17:13

Generally you should know linear algebra. Any 1st year University course (and book) will cover enough material for you to get by. Vectors and matrices are broad topics and their complexity is determined with what you do with them. For example, vector dot, cross, magnitude, or matrix determinant, quaternions, euler angles, etc. It’s not enough to simply know these operations, but what they’re for and why you do it. That could take a bit of time to absorb because the field of mathematics and 3D graphics (or gameplay, or physics, etc.) are not often intertwined. Alternatively, there’s many frameworks out there like XNA and DirectXTK (the successor to XNA) that include all these math routines for you. This reduces the problem to simply understanding 3D space.

I would say calculus is not as important as algebra. You could probably get by without knowing any calculus. It’s certainly nice to know and if you ever plan on writing a scientific module like any type of simulator (particle, physics, cloth), then you will definitely need some calculus background (in addition to algebra).

Once you get a handle for the above, the rest will come on its own. You will dive into topics that are very specific and require its own research. For example, Bezier curves, colour space, HDR, noise, random number generators, and intersection testing (which uses Algebra) will be topics you run into at some point.

C3b6f4f7af5ac965836a3cdfc5c449a9
0
Nathan2222 101 Jan 01, 2014 at 17:55

@TheNut: Khan academy is a good place to start, right? They’ve everything from maths to physics and it’s free to use.

6837d514b487de395be51432d9cdd078
0
TheNut 179 Jan 02, 2014 at 06:24

I don’t know anything about Khan academy, so I can’t say. Quick glance at their topics indicate they do cover the basics, so I suppose you could start there. You might have questions and it helps to have a professor / teaching assistant to help with that.

C3b6f4f7af5ac965836a3cdfc5c449a9
0
Nathan2222 101 Jan 02, 2014 at 09:10

Is there any game math related concept not taught at khan academy

6837d514b487de395be51432d9cdd078
0
TheNut 179 Jan 03, 2014 at 16:00

You’ll have to find that out :) Just taking a quick glance, they have linear algebra on there plus some calculus, geometry, and trig stuff. They also cover parametric equations and Cartesian coordinates, which is good. If this is something you’re doing on your own time, then give it a try. Though I personally wouldn’t recommend any online or free courses as a substitute for the real thing.

C3b6f4f7af5ac965836a3cdfc5c449a9
0
Nathan2222 101 Jan 03, 2014 at 20:47

Ok. Khan will have to do.