I've been thinking about developing a space sim game.
I have read many books about game development and am a somewhat experienced c++ programmer, but I do not have a lot of experience actually developing games. I also don't have any time constraints at present concerning the development timeline and plan to work on the game in my spare time. I was wondering what would be the best way to approach this concerning the choice of starting development with an existing engine or building the game up from smaller third-party components. At present I see my position as someone trying to gain the skills necessary to eventually be able to develop the space sim that I've been imagining. I think the process would be iterative, with me doing some development, learning lessons from it, then maybe refactoring or tearing down what I developed in previous iterations to make improvements along the path towards actually getting a viable game. Is it better to start the learning process by trying to develop the game using an existing engine or taking a more "build from scratch" approach (but still depending on smaller third party libraries - e.g. assimp, GFLW, OIS, Fmod).
Some features I am imagining for the game are :
first person perspective
ability to walk around on planets
ability to ride in ground and space vehicles
ability to walk around inside large starships and surface installations
realistic orbital mechanics
realistic aerodynamics
procedural planets with procedurally generated terrain
somewhat realistic looking planets and other space objects
open universe (many star systems and planets)
walk around as and interact with humanoid characters on planet surfaces, in surface installations, and in starships
realistic astronomical/planetary distance scales
seamless transitions from space to planetary surface
Probably good examples of engines similar to what I'm looking for would be space engine or Outerra (neither of these are complete and likely won't be for a long while). Obviously what I produce wouldn't come near the level of quality of those two, but I list them as an example of the type of game I'm imagining.
A major reason for the post is that I've read a lot of articles/posts on the Internet that suggest the "build from scratch" approach makes no sense and may be a waste of time. Currently I'm leaning towards the "build from scratch" approach as I do want to learn as much as I can about the inner workings of an engine and would like the control of developing everything myself instead of using a high-level interface to an existing engine. I also think I'd benefit from the fact that I would know the codebase inside and out. I've already learned a great deal about OpenGL and have read books concerning other low level game engine systems.
Given the type of game that I'm planning to make is it senseless to attempt the iterative, learn-as-you-go, "build-from-scratch" approach instead of using an existing engine. I would rather learn from the ground up, but I am not experienced enough to know if this is a case where this makes sense. I'm not planning to try to get a job in the industry as an engine programmer for example.
↧