The Great Apple
Big Cheese
Firstly, this is a draft. It will almost certainly get improved later when people apart from myself can actually access this forum.
Aims:
The main aim of this project is to improve Civ 4 as a game without altering the default game that the user sees at all (unless they want it to be altered). I've split possible changes up into 6 sections.
1) AI
2) UI
3) Performance
4) Modablilty
5) Bug Fixes
6) Gameplay Tweaks
Guidelines are as follows:
1) AI - the AI changes must make the AI better than the current release version of the mod without significantly degrading game performance. The AI should not cheat in any way, and ideally treat the human as any other AI (although the default AI has some code which recognises the human...)
2) UI - it could be more information, or better displaying of imformation. Try to keep to Civ 4 styles of tooltips and menu selection, and don't overdo the clutter. Also, while customisable items are good, make sure you don't include too many, as it would be very easy for it to get out of hand.
3) Performance - this could be tiny optimisations in the code, or masive re-writings of functions. All I ask is that your code runs faster than the code it replaces, and that it does exactly the same thing as the code it replaces.
4) Moddability - make sure that the added modding feature is easy to understand, as well as potentially useful. Too many added features will slow the game, as well as make existing features more complicated to use. These features should have no effect unless activated by a modder.
5) Bug Fixes - fixing silly little glitches. Please make sure that the bug is a bug, and not a feature before you go and kill it.
6) Gameplay Tweaks - these should always have an enable/disable switch in the CCP options tab and should be disabled by default. If you want to add a gameplay tweak to the mod I suggest you make a thread explaining what you are tweaking, and why you are tweaking it. If the community as a whole decides that it would be a good option to have, then feel free to go for it. Please bear in mind that we don't want too many options, or it will be confusing to the user, and very hard to code an AI to take into account all the different options.
These guidelines are by no means definative. You may think that your code meets them, others may not. Even if it doesn't, it might still be included if enough people thing that it should be. It might be an idea to make a post saying what you plan on doing before you launch into it, just in case.
Summissions:
To sumbit a change please post the changed files in this forum, as well as a brief explaination of what your changes do, and why. The changes must be clearly commented, and you must have tested them to make sure that they do work, and do have the results that you think they will have. It would be nice if you could also try and code in the style set out by Firaxis, although this isn't essential.
The entire source-code for the mod will be available for download both in the sticky on this forum, as well as on SourceForge, and our own server. I suggest you test your changes with this version rather than the default version, as it may conflict with current mods.
Backward Compatabilty:
Ideally, we want every revision of this mod to be backwardly compatable with the previous version. While this will not be possible with all mods, can I ask that when modding you take this into account. If you can't avoid it, then please do NOT upload your mod immediately. Instead, if you wait until it is announced that the next version of the mod will break backward compatabilty, and then add your code.
Commenting Style:
The general commenting style for the mod is as follows. It would help alot when editing code if everybody could stick to these guildlines. While some parts are optional, I suggest you include them as it will make any future edits of your code by yourself, or anybody else easier.
NOTE: If you want your code compatable with a global disable/enalble switch which can be accessed in game please include this format with your changes:
You probably don't have to do it if you're just making a performance tweak, but if you're altering game behaviour it would be nice...
Aims:
The main aim of this project is to improve Civ 4 as a game without altering the default game that the user sees at all (unless they want it to be altered). I've split possible changes up into 6 sections.
1) AI
2) UI
3) Performance
4) Modablilty
5) Bug Fixes
6) Gameplay Tweaks
Guidelines are as follows:
1) AI - the AI changes must make the AI better than the current release version of the mod without significantly degrading game performance. The AI should not cheat in any way, and ideally treat the human as any other AI (although the default AI has some code which recognises the human...)
2) UI - it could be more information, or better displaying of imformation. Try to keep to Civ 4 styles of tooltips and menu selection, and don't overdo the clutter. Also, while customisable items are good, make sure you don't include too many, as it would be very easy for it to get out of hand.
3) Performance - this could be tiny optimisations in the code, or masive re-writings of functions. All I ask is that your code runs faster than the code it replaces, and that it does exactly the same thing as the code it replaces.
4) Moddability - make sure that the added modding feature is easy to understand, as well as potentially useful. Too many added features will slow the game, as well as make existing features more complicated to use. These features should have no effect unless activated by a modder.
5) Bug Fixes - fixing silly little glitches. Please make sure that the bug is a bug, and not a feature before you go and kill it.
6) Gameplay Tweaks - these should always have an enable/disable switch in the CCP options tab and should be disabled by default. If you want to add a gameplay tweak to the mod I suggest you make a thread explaining what you are tweaking, and why you are tweaking it. If the community as a whole decides that it would be a good option to have, then feel free to go for it. Please bear in mind that we don't want too many options, or it will be confusing to the user, and very hard to code an AI to take into account all the different options.
These guidelines are by no means definative. You may think that your code meets them, others may not. Even if it doesn't, it might still be included if enough people thing that it should be. It might be an idea to make a post saying what you plan on doing before you launch into it, just in case.
Summissions:
To sumbit a change please post the changed files in this forum, as well as a brief explaination of what your changes do, and why. The changes must be clearly commented, and you must have tested them to make sure that they do work, and do have the results that you think they will have. It would be nice if you could also try and code in the style set out by Firaxis, although this isn't essential.
The entire source-code for the mod will be available for download both in the sticky on this forum, as well as on SourceForge, and our own server. I suggest you test your changes with this version rather than the default version, as it may conflict with current mods.
Backward Compatabilty:
Ideally, we want every revision of this mod to be backwardly compatable with the previous version. While this will not be possible with all mods, can I ask that when modding you take this into account. If you can't avoid it, then please do NOT upload your mod immediately. Instead, if you wait until it is announced that the next version of the mod will break backward compatabilty, and then add your code.
Commenting Style:
The general commenting style for the mod is as follows. It would help alot when editing code if everybody could stick to these guildlines. While some parts are optional, I suggest you include them as it will make any future edits of your code by yourself, or anybody else easier.
- 1) Header: All mod changes are listed in one log file. This file contains the mod name (brief), the author name, the mod version, the release date of the mod, and the files which the mod edits.
- 2) Types of changes -
- a) Single line changes:
Format:
<code> /* Mod Name | Author Name | Mod version of update (optional) | Comment (optional) | Date changed (optional)*/
For example:
Code:doAITalk(i); /* TalkingAI | TGA | v1.1 | Calls the talking function | 26 March 06 */
- b) New functions:
Format:
/* Mod Name | Author Name | Mod version of update (optional) | Comment (optional) | Date changed (optional) */
<code>
For example:
Code:/* TalkingAI | TGA | v1.1 | Works out what the AI says | 26 March 06 */ void doAITalk(int iTalkType) { if (iTalkType == 1) { AISay("You fight like a dairy farmer"); } }
- c) - Editted functions:
Format:
/* START -- Mod Name | Author Name | Mod version of update (optional) | Comment (optional) | Date changed (optional) */
<code>
/* END -- Mod Name | Author Name | Mod version of update (optional)*/
If code is being replaced, then it should be left commented out so that it can be easily reverted. This code should be within the change brackets so that it can be easily seen.
For example:
Code:<code> /* START -- TalkingAI | TGA | v1.0 | Makes the AI say 'hi' if you are at war with him | 26 March 06 */ if (bLandWar) { AISay("Hi"); } /* END -- TalkingAI | TGA | v1.0 */ <code>
Dates should not be in a format which can be easily confused. dd/mm/yy and mm/dd/yy are not acceptable, as they can be easily misread.
Personally I prefer editted code comments to be completely untabbed so that they can be spotted more easily when combining. I supose it doesn't really matter. - a) Single line changes:
NOTE: If you want your code compatable with a global disable/enalble switch which can be accessed in game please include this format with your changes:
Code:
if (bCppEnabled == true)
{new function}
else
{old function}