   Libraries
  I've recently started planning a game engine and spent the last few weeks reading tutorials. The engine should mainly be for FPS games but I still far from completely understand exactly what it needs to contain.. I'll learn as I go. Now I'm looking at different libraries that could help me with certain parts of the engine.SDL - keyboard, mouse, joystick input and audioOpenGL - graphicsOpenSceneGraph - as far as I've understood, a way to store all game world objects in a good way to improve performanceSDL and OSG use the LGPL license. Does that mean I can use these in a commercial product (if I get to that) without any license fees? My budget is currently 0 so otherwise I'll have to look for something else.Any more useful libraries you could recommend?   
  I would recommend using a math library as well.  GLM is a simple math library that works well with OpenGL; and if you know GLSL then it will be extremely simple.I wouldn't worry too much about the licensing and just focus on writing your game and enjoying the process.By the way, people will most likely suggest writing a game instead of an engine.  But if you are willing to learn and aren't afraid of learning from mistakes and complete rewrites then you'll be fine.Good luck on your engine.   ;  You should take some time to think about tool support. There happen to be a few editors for shooters around, so you could adapt your game to accept one of the existing formats, or write some conversion tools. A good toolchain is important for games that heavily rely on content - and most shooters do.You may also want to look into Ogre, for the rendering part, or into some other 3D game engines.   ;  GLM is interesting, I might use that as well. I'm not familiar with GLSL yet so maybe I should read about that first. My current knowledge is limited to fairly simple use of C++ and a little OpenGL :-/ but I intend to learn a lot during this project and hopefully in the end I'll have something nice to build a game on top.Tool support I assume is for example a map/level editor? I'll consider that, it could be useful.I've been planning to take a look at other engines such as OGRE to see if that could teach me something about structure, features, etc. I'll get to that soon.Thanks!   ;  I avoided complete rewrites of my game engine by treating every part as a class, this means i can plug in the classes. Also it means i can scrap a class i think is a joke, combine classes, all without affecting parts that are good.OOP, is the way to develop a game engine with the least rewriting of your program.;  I've been reading a lot and one thing I'm sure of is that I won't use any singletons. I'll have a global variable of an engine class which has things such as scenemanager, resourcemanager, input, etc as members (and in turn those members will have other members and so on). That way I should have access to everything where I need it. A class for each feature. If I need to rewrite something, it won't be a mess.   ;  For making a UI for the menu(s) of a game, what could I use?What I want to able to do is add buttons, dropdownlists, maybe a progress bar, etc, etc.I have looked through the SDL documentation but while it can set up a window, it doesn't seem like it can create any controls inside the window. I want the engine to be cross-platform so using WIN32 wouldn't be an option and I'm not sure it can be mixed with an SDL window anyway.   ;  In the OpenGL engine I created, I developed the GUI control items (buttons, scrollbars, menus etc) myself.It is not too difficult to do if you just want some simple interactions.  However if your whole game is going to rely on them with nested tabs and layers, then I would highly recommend finding a 3rd party tool to do it for you.  It would be a lot of work to code yourself.I also find http://www.geometrictools.com/ very helpful when working with collisions and physics type calculations.   