Thanks VM. I took a peak and it looks good from the distance. I also like your answers here.
A few things for now:
1. Prepare and upload a short instruction file for us on âhow toâ set up the files once a part can be tested for function. âWhat to do if I am full of energy to help, but I am a total noob?â, etc. For now I see mostly source files with high level functions only, which I guess were not compiled yet and testing is too early.
2. I recommend that you follow the main design development principles of
http://www.c-evo.org, which has open source Delphi code. I am not sure if you are OK with Delphi. Delphi is one of the fastest codes and his code takes very small place. Most of the problems were already solved there, such as efficient coding, pathfinding, UI, embeddable independent AI, turn based movement system, entire game step by step recoding, random map generation, etc.
3. Plan to eventually place the entire game online on a server. Players would get into the game through an account, and the game state, game logic, random number generation would be on the server, but most other data would be local to the client. Player computer will not have full knowledge on the game state and player will not be able to cheat, save, reload, etc. without server knowing it, etc. Yes, making anti-cheat efforts is extremely important and not too early, even for a single player game! There will be no tweak and cheat codes running on local computers to modify game play without server knowing it. The game is discrete and every step is recorded. Cheats can be identified on server.
4. Code efficiency: do not neglect this! Code must run fast, and should be bug free (not an easy goal). Look at Freeciv for a horrible example how inefficient, slow code can kill a great project.
5. Make the battle play part early. For this I can try to develop AI. I think that the AIâs should be allowed to be stored on either the server or local clients and perhaps in the end I will be able to create locally learning AIâs for clients. (very hard and long term goal only).
6. Do not develop AI, but plan for easy integration and replacement. There are 3 levels:
First, game level AI effecting any game play. E.g. pathfinding, loading/unloading, stacking units, determining group movement speed, etc. (smart response triggered by user actions). You can develop those and store, perhaps with user interface.
Second: Battle AI, stored with individual AI modules (there will be a variation in AIâs battle play, depending which module will be used, etc.).
Third: overland AI, which also includes diplomacy. This is the hardest and the latest target. This should be stored together with the battle AI, but in different file.
7. Do not commit too deep to one specific interpretation of the game. Try to make selection of options open. For example: the combat mechanism should be allowed to be changed easily later. The number and effect of spells should be easy to change. Unit stats should be easy to change, etc. Nonprogrammers should be able to do. Make room for options in the beginning of the game through the UI.
8. Here is a post by Serena, which partly answers your questions:
The combat algorithm is as follows:
1. Pre-melee: Attacker executes Breath, Thrown, and Gaze attacks.
2. Pre-melee: Defender executes Gaze attacks.
3. Pre-melee: Resolve casualties.
4. Melee: Attacker executes Immolation, Poison, Touch, and Melee attacks.
5. First Strike: Resolve casualties if attacker has (unnegated) First Strike.
6. Melee: Defender executes Immolation, Poison, Touch, and Melee attacks.
7. Melee: Resolve casualties.
This is the way I have implemented it in my
combat simulator.
I think you are off to an excellent start!