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
Please log in or register to post a reply.
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
That’s less than 2 years
True, but you asked how long till it was “useable”
A 3D engine is never finished, you can always add features until you die
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.
@stainless: i meant ‘2 years’ as a good thing.
I’ll be using directx (everything i listed in the original post).
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.
@vilem: I will probably release it for linux. Thanks.
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:
* Bullet physics
* Various DB connectors
* Xiph stuff
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.
Could you list the maths needed (vectors, matrices etc.)
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.
@TheNut: Khan academy is a good place to start, right? They’ve everything from maths to physics and it’s free to use.
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.
Is there any game math related concept not taught at khan academy
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.
Ok. Khan will have to do.