1. Critical Strike
2. Features
2.1. Gameplay Structure
2.1.1. Tower Defense-style
2.1.1.1. Variable creep path chosen
2.1.1.1.1. The creeps cannot walk through a tower, so the player can and should create a maze of towers, and by doing so vastly increasing the distance creeps need to walk from spawn to goal. Pro: The funnier way Con: More challenging to implement in a satisfying way.
2.1.1.1.2. IDEAS
2.1.1.2. Alternative was: Static creep path
2.1.1.2.1. The creeps follow a predefined path, with the player building towers on the sides of the path. Pro: Presumably simpler to implement well Con: Less fun than #1
2.1.2. Description
2.1.2.1. Two-dimensional array of tiles, viewed from above. A bunch of creeps spawn at one end of the map, attempting to reach the other. The player has to construct self-autonomous towers in between. The towers automagically fire at the creeps when in range. The creeps cannot walk through a tower, so the player can and should create a maze of towers, and by doing so vastly increasing the distance from spawn to goal.
2.2. Levels (spawns)
2.2.1. Each level
2.2.1.1. "Building pause"
2.2.1.1.1. 10 second countdown?
2.2.1.1.2. Instant start upon key press
2.2.1.1.3. Pause countdown-functionality
2.2.1.2. Unique creep class
2.2.1.2.1. Customization possibilities
2.2.1.2.2. Types
2.3. Currency
2.3.1. Gold
2.3.1.1. New Towers
2.3.1.2. Upgrading Towers
2.3.2. Experience
2.3.2.1. Individual experience for each tower
2.3.2.2. Global experience
2.3.2.2.1. Purchasing Global modifiers
2.4. Towers
2.4.1. Projectiles
2.4.1.1. Types
2.4.1.1.1. Silver
2.4.1.1.2. Ice
2.4.1.1.3. Poison
2.4.1.1.4. Area of Effect
2.4.2. Making Bridges?
2.4.2.1. Would increase the variation of mazes you could create. For example: Make a circle-maze, and then a bridge starting in the middle of the circle and ending outside it, and then force the creeps to enter the circle in order to get to the goal.
2.4.3. AI
2.4.3.1. Make it prefer weak enemies, and secondly enemies closer to the goal
2.5. Creeps
2.5.1. Categories?
2.5.1.1. For example, a zombie category, Vampire category, dark magician category, evil mercenaries.
2.5.1.2. To each category an unlimited amount of images can be added.
2.5.1.3. Each level in the game uses a category.
2.5.1.4. Categories are intended to be used multiple times during the course of the game.
2.5.1.5. Each wave of enemies are made up from the images in the active category, randomly dispersed to each unit.
2.5.1.6. Each category may have a special trait(s). Example: Vampires are fast, but might be weak against silver.
2.5.1.7. This would make the process of adding more levels to the game much more dynamic, without having to rely on making a new image too.
2.6. Sessions
2.6.1. Pickle (save) game class if game is shut down
2.7. Specializations?
2.7.1. Talent point rewarding system
2.7.1.1. "more Splash damage", "More Slow effect" etc.
2.7.1.2. Allowing faster exp?
2.7.1.3. Rewarded after a couple of levels? each 3-4 levels you get 1 point
2.7.1.4. Allow Critical strikes on a type of tower?
2.7.1.5. Allowing player to spamclick for damage?^^
2.7.2. Adding spells?
2.7.2.1. "Nuke" - Clears the whole map of creep-waves
2.7.2.2. "Slow" - Slows every creep on a certian area/ entire map
2.7.2.3. "Single Bomb" - Hits targeted creep for X amount of damage. Increased by the number of towers on map.
2.8. More Maps
2.8.1. With different sets of walls. Swamps?
2.9. Randomness
2.9.1. Stochastic system - the system's subsequent state is determined both by the process's predictable actions and by a random element. Although, the player is encouraged to plan the maze thoroughly. Through controllable building-pauses and a capable easing User-interface.
2.9.2. Non-deterministic (mathematics) - the same input to the game does not neccessarily produce the same end.
2.10. Proposed Tower Types Structure
2.10.1. Arrow Tower
2.10.1.1. Rapid Tower
2.10.1.2. Ballista
2.10.2. Frost Tower
2.10.2.1. Ice Tower
2.10.3. Ember Tower
2.10.3.1. Fire Tower
2.10.4. Aura Tower
2.10.4.1. Rapid Fire Aura
2.10.4.2. Improved Range Aura
2.10.4.3. Damage Boost Aura
3. Modification
3.1. Configuration file
3.1.1. In-game options menu?
3.2. Instructions on how to mod creeps/towers.
3.2.1. Source code
3.2.2. Text-file for the purpose?
3.3. Text-files for storing Creep/tower attributes. Dynamically loaded on game start - passed along as class parameters and stored in a dictionary. This design decision would make the Creep_1 , _2, _3 classes and so on approach obsolete.
3.3.1. XML?
3.3.1.1. If I get way too much time over, consider making a GUI editor for tower and wave edits.
4. Audio
4.1. Music theme?
4.2. Sounds
4.2.1. Creep dies
4.2.2. Tower placement
4.2.3. Projectiles? Might end up noisy
5. Launch aims?
5.1. http://pygame.org
5.2. www.ModDB.com
5.3. www.sourceforge.net
5.4. http://phelerox.wordpress.com
5.5. PCGamer?
5.6. Development
5.6.1. Sourceforge.net
5.6.2. Launchpad.net
6. Current Major Ideas
7. Tools
7.1. Python - http://python.org
7.1.1. Pygame - http://pygame.org
7.1.1.1. Evaluate the possibility of using PyOpenGL to do the drawing
7.1.2. py2exe - http://py2exe.org
7.1.2.1. pygame2exe - http://www.pygame.org/wiki/Pygame2exe
7.2. Imaging
7.2.1. Gimp
7.2.2. Photoshop
7.3. Audio
7.3.1. Audacity?
7.4. Version control
7.4.1. Bazaar - http://bazaar-vcs.org
7.4.1.1. Instructions
7.4.1.1.1. Tutorial: http://doc.bazaar-vcs.org/bzr.dev/en/mini-tutorial/index.html | A recent version of the game can be found here - https://code.launchpad.net/~baxemyr/+junk/towerdefense Install bazaar, set it up, and type "bzr branch lp:~baxemyr/+junk/towerdefense" in a command-line to fetch the game into your active directory. You may need to create a http://launchpad.net account (not sure). A development-history can be seen here ( http://bazaar.launchpad.net/~baxemyr/+junk/towerdefense/changes ).
7.5. Dropbox
7.5.1. Description
7.5.1.1. * All three developers "share the same folder" through Dropbox. Pro's: Instant, automatic access to the newest version. No need for manually sending files, and putting it together regularly. Bazaar is simple, but this is simpler for beginners! Unvaluable! Con's: * Risky, since everyone can, by a simple mistake, destroy for all others. How do we minimize this risk? Regular security backups? Could Marco write an automatic script for this? o Due to launchpad, this is not an imminent problem. * It would have been easier to see who has done what if everyone used bazaar instead, but that is demanding a bit too much, and hence only resulting in decreased efficiency.
8. Design/Layout
8.1. Resolution
8.1.1. 600 pixels in height is max, to be able to work on small screens.
8.1.2. Towers 40x40px
8.1.3. Creeps' movement-precision is 20x20 px so creeps shouldnt really be larger, but up to about 30x30 is okay because of the richer detail.
8.2. Tower Placement
8.2.1. Ideas
8.2.1.1. Tower range
8.2.1.2. Transparent representation
8.3. Tower Selection
8.3.1. Ideas
8.3.1.1. Info in right panel
8.3.1.2. Info in tooltip upon hover
8.4. Buttons
8.4.1. Purchasable Towers
8.4.1.1. Where?
8.4.1.1.1. Mid-right panel
8.4.1.1.2. Image buttons on side. Clicking "Towers"/"[B]uild" results in a popup widget showing with available towers for selection. The last selected tower is selected by default, and remains placable as long as your gold lasts. Changing selection is possible until the widget is expressly closed.
8.4.2. Sell/Upgrade buttons
8.4.2.1. Where?
8.4.2.1.1. At the information box?
8.4.3. Button tooltips
8.5. Temporary Messages
8.5.1. Popup text
8.5.1.1. Flashy
8.5.1.1.1. Animated upwards, with random x-direction
8.5.1.1.2. Smaller font over time
8.5.2. Possibly: Popup text with neat background/frame
8.6. Keyboard shortcuts
8.6.1. Pause (menu??)
8.6.1.1. P or Esc or Space?
8.6.2. Sell button
8.6.2.1. S
8.7. Effects
8.7.1. How to implement blood?
8.8. Start/Goal Look
8.8.1. Start
8.8.2. Goal/Base
8.8.2.1. A wall surviving 25 enemies' worth of attacks. After one attack the enemy dies from an arrow from the wall. After 25 attacks, the wall is razed, and the 5 occupying humans remains. Each human survives one attack, and an attacking creep is slain after one attack by the rest of the humans. The creep attacking the last human would survive though.
8.9. Reducing the "click-feast"-effect.
8.9.1. Queing of tower placement?
8.9.2. Versatile keyboard shortcuts
8.9.3. Smart UI-design for tower purchasing
9. Coding
9.1. Inspiration
9.1.1. Hackers and Painters
9.1.2. "Software Artisan"
9.1.3. PEP 8
9.1.4. Practical Tips for Independent Game Developing
9.1.5. How to build a game in a week from scratch with no budget
9.1.6. The four golden rules to be a better software developer.
9.1.7. Game Programming Wiki
9.1.8. Make Great Shit
9.2. TODO
9.2.1. Solve the tower-placement collision issues
9.2.1.1. Prevent placing of towers on creeps?
9.2.2. Pathfinding
9.2.2.1. Make creeps unable to move diagonally (at least through towers) Or??
9.2.3. Menu
9.2.3.1. Items
9.2.3.1.1. Start Game(/Resume?)
9.2.3.1.2. Options
9.2.3.1.3. Exit
9.2.4. Point system
9.3. DONE
9.3.1. Solve the tower-placement collision issues
9.3.1.1. Prevent placing of towers upon other towers
9.3.2. Make Creeps and Towers easy to add
10. Resources
10.1. Art
10.1.1. Molotov.nu