GLEST IDEAS COMPILATIONNow, the September board glinch whiped the board clear, with it, the Compilation. For those who don't know, this is a compilation of ideas to improve glest. This time around, I'm going to have a more organized post. This is not limited to Glest, but could be used for GAE (some functions may already be in GAE, I wouldn't know, since it won't work for me...) I don't have the original document, so this must be redone from scratch, I am aware I missed many things, so please repost them.
AIThis section concerns AI improvement and related AI issues.1) Extra Attacks - AI in glest don't use any other attacks. (ie: Archmage's Statis Fire) This is unfair, especially for powerful attacks.
2) Regroup - The AI are often easy to defeat because they can be spaced very far apart. Having them regroup every 20 or so spaces could prevent this very well.
3) 'Smart' Splash - AI (either yours or the CPUs) often attack units, and can kill many of your own units with that splash. Units should be ranked in usefulness (in the xmls) and if the combined rank of the afflicted ally units is LESS than the combined rank of the enemy units, then the attack goes on. Other wise, the AI should check for other attacks, or not do the attack at all.
4) Unneccessary Buildings - AI often build many 'Upgrade-only' buildings, such as the Archmage Tower. A place in the XML should specify the max number of buildings that should be built.
5) Random Attack-Paths - When the enemy attacks you, they always take the same route. Taking a different route may be a good idea.
6) CPU Levels - Offering three different levels of CPU difficulty, easy (for beginners), normal (for normal players), and ultra (for advanced players) where the CPU doesn't just get a resource boost, but becomes smarter and is more likely to use better strategies.
7) Strategies - Having the CPU follow random strategies including: All out attack, attack workers/isolated units, attack from different directions, attack by surrounding and advancing, protecting ranged units with melee units, etc; These strategies make the AI tougher, and depending on the difficulty level, the AI could use better strategies for harder battles. (And more exciting)
Tilesets and MapsThis section concerns tilesets and maps, as well as the Map Creator. XML Details - XMLs should have more options, including a way to pick the size of objects and add cellmaps. Also, allow custom weather effects (ie: sandstorm)
9) 3D Map Creator - An ideal map creator would have a 'Pick a Tileset' option, where you'd pick a tileset, and then be able to see the map in 3D. An alternative is a quick way to 'Preview the map in the game in a overhead view.
10) Undo - Add an 'undo/redo' command to the map maker. Many people make mistakes, and would want to undo those mistakes. Of course, if undo is added, so must redo.
11) Animation - Allow animation in tileset models. Nuf said.
OtherAll other ideas.12) Error Verification - When attemping to play glest, and there is an error, keep going and record ALL errors, not just the first one that is encountered. Maybe a seperate program that checks a techtree/faction for errors and makes a list of all errors.
13) AI Problem - Sometimes AI go wierd and just don't do anything. They would be normal, except that they would not harvest resources, and therefore, they soon become incapible of doing anything.
14) Command.xml - The CPU is very stupid at times, so this is my master idea: Program Glest so that it will check to see if there is a command.xml in the folder of each unit. If there isn't, Glest will just play that unit as normal, but if there is, a number of commands become available. The xml would have a number of places where you can tell Glest the purpose of the unit. There would be a number of boolean slots for defining the unit and such. Here is an example of what it could look like:
<command>
<purpose>
<scout="true"/> -- Is the unit a scout
<attacker="true"> -- Can the unit attack
<location="front"/> -- Location when attacking (back or front)
<gather-resource="true"> -- Can the unit gather resources
<stop-attacked="true"/> -- Stop gathering if attacked
<stop-enemy="true"/> -- Stop gathering if enemy sighted
<attack-priority="true"/> -- Attack command overrides gather resource
<resource preference="1,2,3"/> -- Resources prefered to gather (#)
<build="true">
<build-priority attack="true"/> -- Attack override build
<build-priority resource="false"/> -- Resource gathering override build
<build-priority scout="false"/> -- Scout override build
<random purpose="true>
<influence attack="0.75"/> -- chance of unit being geared toward attacker
<influence scout="0.05"/> -- chance of unit being geared towards scout
<influence resource="0.2"/> -- chance of unit being geared toward resources
</purpose>
<strategies>
<all-out="true"/> -- strategies used
<defensive="false"/>
<surround="true"/>
<multi-route="true"/>
<workers="false"/>
<ambush="false"/>
<randomize="false"/> -- randomize the strategies used
</strategies>
<information>
<unit-rank="6"> -- rank of usefulness (1-10)
<attack="8"/> -- rank of attacking
<defense="6"/> -- rank of defending
<gather="3"/> -- rank of gathering resources
<scout="7"/> -- rank of scouting
</unit-rank>
<regen="true"> -- can regen
<pull-back="15"/> -- retreat if HP is less than this percent
</regen>
<multi attacks="true"> -- unit has more than one attack
<use="1"> -- attack # 1
<amount="90"/> -- percentage of time to use attack
<use="2"> -- attack # 2
<amount="10"/> -- percentage of time to use attack
</multi>
<flee="false"/> -- unit should flee if outstrengthed
<distant-ranged="true"> -- If target is out of range for normal attack, use ranged attack
<override-near="3"/> -- distance for foe to be before switching to close range attack
</distant-ranged>
</information>
</command>
15) Night Values - Increase stats at night (in xml)
16) Water Thirsts - Everyone's thirsty for a water field. While very limited on its own, a land to water unit (ie: hyrda) could travel through water and land. Allow water travel to have its own animation by making it a new command.
17) Suicide - Allow die to be a command, so that one can have a unit that can suicide on a single target. (mixed with an attack command) [Did you know: when you kill the wannabe suicide unit with an another one, the other unit will receive a kill? - @kukac@]
I'm missing a bunch, but feel free to add your own. (And the missing ones) as well as comment these!
BTW, does anyone know a good tutorial that explains gaming c++ coding? I know mathmatic c++ pretty good, but I'm having trouble finding tutorials that are useful for learning to program in glest. (or other c++ games)