GameEngine from start to finish(DevLog)
@ L. Spiro
That looks great, well done:
@ Solid Spy
Depends on what you're doing with it, you could choose the CryEngine .XML way of listing objects. But I'm inclined to agree, neither do I particularly like that system and I also don't believe it's very user friendly.
@ jbadams
Yeah I'd love to post it on here, the development blog section seems to be split into several posts. Whereas I'd like to keep updating in sections on a specific post and then getting feedback as I go along. Just like a thread really, is this possible?
@ Nathan
Yes C#
Part 1 (Build engines not games)
I'll explain the title later :
As said, I'll cover the shear basics and questions asked.. When I originally started the hardest thing was to find what I needed to get going.. So I'll simplify the startup procedure and answer questions I've seen asked many times.
What is a game engine?
The question is very open to interpretation, diluted further with modern commercial and freeware (Open source) game engines. Simply put, I see a game engine as a solution to build and develop games quickly. The toolset size is dependant on what a developer is intending to do, you wouldn't focus on orthographic (2D) projection for a 3D game (let's move past the UI for now), but a multi-platform commercial engine like Unity would. There's several features in this tutorial that many engines wouldn't use of need, so they don't have them.. But they are still an engine, then we have open source products like Ogre3D and Horde3D which are rendering engines. Rendering is a term for displaying graphics, whether using Microsoft's implementation direct3D or the multi-platform OpenGL.
Why would I build my own engine?
A lot of what I say is subjective and it's for you to make your own mind up, but I will say don't attempt to build an engine if the following applies:
- A current engine serves all purposes required
- You haven't used a game engine before and at the very least, you're unfamiliar with putting a basic game together.
- You haven't discovered the limitations of a specific engine.
Building an engine can aid in multiple areas:
- Closed source engines are difficult to modify if impossible
- Deep understanding of not only how games work, but how tools fit together
- Feature set's can always be improved and added
- Financial return
Anyone deciding to build an engine has to weigh up is it worth it, this is NOT A COMMITMENT TO MAKE LIGHTLY and in most cases isn't worth the effort.
What's the difference between a game and an engine?
Not as much as one would expect, a game requires a renderer / physics / input / audio / UI and a way to be executed on a system / load resources / save games.
Many a time code is re-used from a game to build an engine around it, if you're going to do it from scratch then you might as well build what is in essence a level editor which allows you to quickly craft scenes and event's.. That's where the engine comes in, because once completed everything is done in the background.
What is the toolset we need?
Ok a list of tools:
SDL 2.0 (http://www.libsdl.org/)
Glew (http://glew.sourceforge.net/)
QT Creator (Because it's cross platform and supports widget's, (VIsual studio can also use QT widgets) (http://qt-project.org/wiki/Category:Tools::QtCreator)
UI (http://cegui.org.uk/) I'm open to other suggestions for vector or widget based solutions
Nvidia Physx 3.1 SDK (https://developer.nvidia.com/physx-sdk-v31)
Build engines not games
Wrapping this portion up, I saw an article saying build games not engines. Which rings very true, but there is more to it and not everything is black and white. As said, the best path is to find an engine that works for you. Failing that, you will spend a large portion of time building an engine for your game and time will be consumed building toolsets instead of writing an actual game itself. In a nutshell, this word TIME is the greatest challenge here.. A large high fidelity game may take 2 - 3 years to complete, add an additional 2 years for an engine, then ask yourself. Do you have the time?
In part 2, I'll be discussing openGL and Math:
Wrapping this portion up, I saw an article saying build games not engines. Which rings very true, but there is more to it and not everything is black and white.
I think it's worth linking to the article at this point for anyone unfamiliar with it: write games, not engines. A lot of people simply read the title and maybe skim a little of the text and assume the article is telling you not to create an engine at all, but that's not actually the point it makes; rather, it suggests an approach to engine creation where you start by writing one or more games and refactoring out the useful functionality to form the basis of your engine -- and it's a very good approach for ensuring your engine meets the requirements of a real game without wasting your time on features that might not be needed.
Obviously not an approach for everyone, but valuable advice to read and consider. Looking forward to seeing how your efforts progress!
(...and yes, if you really feel like you prefer to keep this as a forum topic rather than journal entries that's fine, although I'll move you from For Beginners to Game Programming. :))
Wrapping this portion up, I saw an article saying build games not engines. Which rings very true, but there is more to it and not everything is black and white.I think it's worth linking to the article at this point for anyone unfamiliar with it: write games, not engines. A lot of people simply read the title and maybe skim a little of the text and assume the article is telling you not to create an engine at all, but that's not actually the point it makes; rather, it suggests an approach to engine creation where you start by writing one or more games and refactoring out the useful functionality to form the basis of your engine -- and it's a very good approach for ensuring your engine meets the requirements of a real game without wasting your time on features that might not be needed.
Obviously not an approach for everyone, but valuable advice to read and consider. Looking forward to seeing how your efforts progress!
(...and yes, if you really feel like you prefer to keep this as a forum topic rather than journal entries that's fine, although I'll move you from For Beginners to Game Programming. )
Sounds great, thanks for the citation. That actually wasn't the one I originally read, the article linked shows you should make a game and have an engine built around it which is right on the money and my intentions..
Also thanks for the move and appreciate the input, from everyone.. I really do, I don't pretend to know everything and I love it when a community comes together to get a solution put together.
I'll just add, any information / point of view or opinion is not a reflection of the company I work at. This is my own personal take on things..