Greetings for the first time, fellow independent game developers! I'm part of a duo of programmers and several other researchers working on a grand-strategy game without any corporate support or monetary incentive (hummus & fruit shall do).
The game, currently under the working name perestroika
is in its infant steps and the time has come for our miniscule team to decide on how to build the foundations for this game.
Here is the current situation: We have some alpha math codes written in Lua(!), mostly for the purpose of testing and experimenting. We plan to either translate these codes into C++ or write our own interpreter (in order to keep the format we have been working with. We have been putting equations written down on paper directly into Lua so far), although the latter is much less likely.
And our engine - this is the main element I wanted to present to the community and ask the experienced fellows here about:
We are currently at the point at which, having completed algorithms for a few of the basics, compiled a set of working test-codes (mostly based around the simulated world economy), we feel that in order to apply any code and test it properly we need an engine, as so far our disjointed programs and scripts are of little use in testing, let alone actually making a game.
We have started to write an engine in C++, and have a plan as to how it will run: The engine will be a base program which loads data from arrays and feeds it to a set of classes within the engine which in turn use the hardcoded algorithms and loading code to compile the data into each separate element of the game. For example: A tile of the game's map will have a data file, probably JSOND unless we find a better format, which will be loaded and subsequently presented to the player in the UI and run through each of the "scripts" (I call them scripts, but they will be either part of the engine and probably, during this very early testing period, individual programs) in order to generate the dynamic world which is to be played in. The point of this is to achieve a minimal amount of hardcoding: all of the attributes of the game are loaded by a barebones engine which we are currently writing in C++ which basically feeds the data to our algorithms.
I can procure any of what we currently have upon request if the explanation has been unclear. The engine is currently capable of checking a data file and recognising the attribution of a text label to a certain country, and loading a certain image according to that country's ID (here we have, basically, a rudimentary flag loading program). It is being built on gradually.
There is a tool that we are considering using for at least some parts of the game's core functions: SDL
. We might use this to take care of input & rendering (although our rendering is currently fairly simple, we expect to run into problems using a tilemap to render Earth made up of individually selectable tiles, resolutions at different zoom levels and graphical representations of the game's selectable elements which are yet to be created).
As for actual development of the game's data files, we intend to make full advantage of our hardcoding-light plan and write a series of (semi) user-friendly editors for each type of data file or class which will be fed to the core game program - the intention of this is to, on the one hand, make the game easy for us to edit during testing phases, as we should simply be able to open up the files for the elements of our game (say, a country) and edit them using forms. On the other hand it will be very useful, we imagine, for future patches on our game, expansions, mods and all that malarkey.
So, community, what I want to ask you is this: Is the aforementioned plan seaworthy, is it plainly stupid, or is it perhaps somewhere inbetween? My experience with programming so far in my life has been almost entirely mathematical, with the small exception of a few text-based games, while my partner has a little more experience with engines for basic platformers and C libraries.
I, as well as my partner, will stick around to converse with anybody who's willing to give advice, as well as answer any questions concerning anything that I have omitted or been unclear about.