Well I have been searching for game creation help and have found that an engine is the base of the entire game like the player creation is made easier as well custom graphics and physics or similar items. You also need to think of the next couple games that you plan to do and use the engine to build very little into your game which is already built for you.
If you want to learn what a game engine is, how if functions, or want to build one here is how is should go.
GLFW - For opening an OpenGL window. It's a great little C library
that opens windows on pretty much anything. Which is great because
that's one less thing to worry about.
GLEW - Managing OpenGL extensions. If you're gonna do OpenGL, there's really no getting around this one.
Lua - Scripting. Although not yet used in my game, it's pretty much the go-to language for scripting in the industry because of its
fast virtual machine implementation.
Protobuf - Managing external state. You can find a documentation it here. The short of
it is that you could use protobuf wherever you'd normally use XML.
Qt - For standard containers and string manipulation. you don't need to use the entire Qt set of libraries, only the QtCore one. This gives
you access to QList (std::vector), QHash (optimized std::map), QString
(std::string with multiple encoding support) and lots of other
goodies. Part of the reason you should go with it is because the
documentation is superb.
GLM - Math library. If you just want math in your game, this is the library for you.
freetype-gl - Text rendering. It's a very well-written library for rendering text in OpenGL, you could do
a whole lot worse.
libRocket - GUI library based on HTML and CSS. It's great when you just want a UI on the screen, but gets problematic if you want to
add animations.
Find the list here
These are great ideas for an engine just combine the libraries and build the game off of the engine you build from theses although it will take you sometime to finish if you dont have a fine team. Also I have read over this list and many others and this is the best 2d list. Also you don't need to build an engine UI because you only need the basics of the engine and build a separate project for each game. Here is how to do it right.
- Engine.h
- enginepart1.h
- enginepart2.h
- enginepart3.h (ect.)
(use .h not .cpp for engine because you can not reference engine.cpp but you can reference engine.h)
after building that
- Game.cpp
- gameresources.h (resources include referencing Engine.h)
- gamepart1.h
- gamepart2.h (etc.)
And build the engine in a fashion like this but not 100% like this would be optimal
- Framework: Math, Random, Utility, Asset, Network, Window, Graphics, Audio, ...
- Player: AbstractPlayer, Score, Input, Collision, Reaction, Skill, Inventory, ...
- Map: AbstractMap, Area, Town, NPC, ...
- Enemy: AbstractEnemy, Creep, Boss, BaseAI, FuzzyAI, ...
- State: IntroScreen, MainMenu, LoginScreen, Game, PauseMenu, ...
- Interface: Button, Text, InputBox, ...
Found this here
Build it like this kind of
- Framework: Math, Random, Utility, Asset, Network, Window, Graphics, Audio, ...
- Entities/Characters: Player, Enemy NPCs, Friendly NPCs, BaseAI ...
- Map: Map/Level Editor (if you want), Map Objects (can be placed here), Special Map Features, ...
- State Control: Intro Screen, Main Menu, Logic Screen, Game State, Pause Menu(s), ...
- Interface: Button, Text, Input Box, ...