From 775f52332943da7f44d5a5fcbc3ffb78c6ee5a31 Mon Sep 17 00:00:00 2001 From: dsc Date: Fri, 25 Mar 2011 02:23:00 -0700 Subject: [PATCH] Adds later notes. --- wiki/ai-language.md | 32 ++++++++++++++++++++++++++++++ wiki/ai.md | 32 ------------------------------ wiki/gameplay/index.md | 15 ++++++++----- wiki/gameplay/items.md | 10 ++++++++- wiki/notes.md | 19 ----------------- wiki/notes/index.md | 2 + wiki/notes/later.md | 49 ++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 101 insertions(+), 58 deletions(-) create mode 100644 wiki/ai-language.md delete mode 100644 wiki/ai.md create mode 100644 wiki/gameplay/enemies.md delete mode 100644 wiki/notes.md create mode 100644 wiki/notes/index.md create mode 100644 wiki/notes/later.md diff --git a/wiki/ai-language.md b/wiki/ai-language.md new file mode 100644 index 0000000..5f4d6fb --- /dev/null +++ b/wiki/ai-language.md @@ -0,0 +1,32 @@ +# Tank AI Language + +## Types + +- `Loc`: Object with properties `x` and `y`, representing a position on the map. +- `Rect`: Object with properties `x1`, `y1`, `x2`, `y2`, representing the top-left and bottom-right locations of a region on the map. +- `Agent`: An object that reprensents both your tank and all agents discovered with various lookup methods. See below for properties. + +## Agent Properties + +- `stats`: Agent's stats. + - `hp`: Agent's health. + - `move`: Agent's move speed in squares/sec. + - `speed`: Agent's attack cooldown wait-time in sec. + - `shots`: Maximum projectiles the agent can have in the air at once. +- `loc`: Loc of the top-left point of the agent on the map. +- `boundingBox`: Rect of the agent's absolute map position. +- `midpoint`: Loc of the agent's midpoint position on the map. +- `nShots`: Number of shots the agent currently has in the air. + +## Functions + +- `shoot(x,y)`: Fires a shot at (x,y) if possible. +- `move(x,y)`: Moves directly toward (x,y) if possible. +- `ableToShoot()` -> `Boolean`: Whether your tank is able to fire at the moment. +- `find(x1,y1,x2,y2)` -> `Agent[]`: Returns a list of all agents within the map bounds specified. +- `findNearLike(ticks, filter)` -> `Agent[]`: Returns a list of agents within `ticks` movement distance away that match the filter. +- `findClosest(agents)` -> `Agent`: Returns the closest agent to this tank in the supplied list, or null if none are supplied. +- `willCollide(agents, wiggle)` -> `Agent[]`: Returns the list of agents which will collide with this agent (within `wiggle` width/height pixels). +- `calculatePath(point)` +- `calculatePath(x,y)`: Calculates a path from your current location to (x,y), taking into account walls, and then queues it for future moves. + diff --git a/wiki/ai.md b/wiki/ai.md deleted file mode 100644 index 5f4d6fb..0000000 --- a/wiki/ai.md +++ /dev/null @@ -1,32 +0,0 @@ -# Tank AI Language - -## Types - -- `Loc`: Object with properties `x` and `y`, representing a position on the map. -- `Rect`: Object with properties `x1`, `y1`, `x2`, `y2`, representing the top-left and bottom-right locations of a region on the map. -- `Agent`: An object that reprensents both your tank and all agents discovered with various lookup methods. See below for properties. - -## Agent Properties - -- `stats`: Agent's stats. - - `hp`: Agent's health. - - `move`: Agent's move speed in squares/sec. - - `speed`: Agent's attack cooldown wait-time in sec. - - `shots`: Maximum projectiles the agent can have in the air at once. -- `loc`: Loc of the top-left point of the agent on the map. -- `boundingBox`: Rect of the agent's absolute map position. -- `midpoint`: Loc of the agent's midpoint position on the map. -- `nShots`: Number of shots the agent currently has in the air. - -## Functions - -- `shoot(x,y)`: Fires a shot at (x,y) if possible. -- `move(x,y)`: Moves directly toward (x,y) if possible. -- `ableToShoot()` -> `Boolean`: Whether your tank is able to fire at the moment. -- `find(x1,y1,x2,y2)` -> `Agent[]`: Returns a list of all agents within the map bounds specified. -- `findNearLike(ticks, filter)` -> `Agent[]`: Returns a list of agents within `ticks` movement distance away that match the filter. -- `findClosest(agents)` -> `Agent`: Returns the closest agent to this tank in the supplied list, or null if none are supplied. -- `willCollide(agents, wiggle)` -> `Agent[]`: Returns the list of agents which will collide with this agent (within `wiggle` width/height pixels). -- `calculatePath(point)` -- `calculatePath(x,y)`: Calculates a path from your current location to (x,y), taking into account walls, and then queues it for future moves. - diff --git a/wiki/gameplay/enemies.md b/wiki/gameplay/enemies.md new file mode 100644 index 0000000..e69de29 diff --git a/wiki/gameplay/index.md b/wiki/gameplay/index.md index 639b940..d32a897 100644 --- a/wiki/gameplay/index.md +++ b/wiki/gameplay/index.md @@ -37,22 +37,25 @@ This doc describes the single-player gameplay for both the browser and iOS versi - Free gestures can be rebound (two/three finger swipe, double-tap, triple-tap) -## Gameplay Ideas +## Gameplay - No camera control: camera centers on tank and moves with it, though player can zoom the map - No number games: all items are qualitative (so, ex: only bosses have more than 1hp, but items (like shields) might absorb damage) - Allies: companion AI tanks which play for your side (beware friendly fire)- Mutable Environment: obstacles can be destroyed with the right weapons, enemies can be pushed - -## Items +### Items See [Item Ideas](/gameplay/items). +### Enemies + +See [Enemy Ideas](/gameplay/enemies). + -## Tank Attributes +## Unit Attributes - Movement: speed, turning speed - Cannon: cooldown, max in air, recoil? -- Bullets: speed, num bounces, proximity, AOE explosion -- Toughness: hp (Bosses only), shields, resistance to certain classes of weapons +- Bullets: speed, num bounces, proximity, AOE explosion, size, timeout, range, seeking, proc, sleep, stun, immobilize, confuse, slave +- Toughness: hp (Bosses only), shields, armor ## Flavor diff --git a/wiki/gameplay/items.md b/wiki/gameplay/items.md index e73daa2..90caf00 100644 --- a/wiki/gameplay/items.md +++ b/wiki/gameplay/items.md @@ -75,4 +75,12 @@ Jot down ideas for items here. All ideas welcome: the goal is to have an enormou - *Proximity ("Prox")*: A weapon that detonates in proximity to a damageable target. - *Proc*: A chance on each shot of a weapon to have a special effect. - +## Snippets +- Bullet attributes: size, speed, timeout, range, burst, AoE explosion, prox, seeking, drill bonus +- Tank attributes: move, rotate, recoil damping, push-power, thorns? +- Weapon attributes: cooldown, multishot, proc(x), charges/ammo, +- Status: sleep, stun, slow, immobilize, blind, confuse, slave +- Traps, time-bombs +- Push+hold shield +- Minion tanks with taunt +- Blink diff --git a/wiki/notes.md b/wiki/notes.md deleted file mode 100644 index 2c03c50..0000000 --- a/wiki/notes.md +++ /dev/null @@ -1,19 +0,0 @@ -# Bugs - -# TODOs - -- AI: Lead shots on moving targets -- Config-driven unit-types (name, stats, properties; pointers to behavior scripts, assets) -- Game scoring -- Support touch events (for iPad?) -- Migrate A* code into PathMap - - -# Code Notes -- Replace *2 and /2 with shifts at compile-time -- Clipping will suck (masking is easy -- overflow:hidden) -- Classes should have generalize()-ed version of instance methods on them. - - -# Other Notes -- GA for littlestbattletanks.com: UA-20115336-1 diff --git a/wiki/notes/index.md b/wiki/notes/index.md new file mode 100644 index 0000000..abb8881 --- /dev/null +++ b/wiki/notes/index.md @@ -0,0 +1,2 @@ + +- GA for littlestbattletanks.com: UA-20115336-1 diff --git a/wiki/notes/later.md b/wiki/notes/later.md new file mode 100644 index 0000000..18df0d2 --- /dev/null +++ b/wiki/notes/later.md @@ -0,0 +1,49 @@ +# Tanks Later + +## Buckets + +- **Buff UI**: icon, name, desc, countdown; obey flag to hide +- **Equip + Item UI** + - Default icon border/frame + - On hover: color slot if ok to equip + - Automatically add stats, equip-tags to tooltip + - Outline open bags + - Bubble inventory events to DOM + - Q: Drop/destroy items y|n? +- **Help + Info Overlay**: Modal overlay with tooltips for terrain, enemies, UI, slots, items, commands +- **Hotkeys**: Belt with 4 slots; key to toggle backpack; UI to reassign? +- **Buff Priority**: `Unit.recalculateStats()` -- can't just delegate to each item in turn; have to sort on priority first +- **AI DSL**: patrol, tether, flock +- **Buff Stats**: by %, by ref to another stat, by formula +- **Units** + - Lead shots on moving targets + - Rotate Stat: rotate before move + - Rotate bullet art on fire to match trajectory + - `Unit.isAwake()`: search stat -- sleep after time w/o seeing an enemy (don't apply to allies); wake radius stat + - thinking stat: ticks b/t recalc of "plan" -- continue last plan otherwise + - Emit AI emoticons during planning +- **Levels**: progression; propagate loot between levels +- **Items** + - Weapon mod slots + - Charged items/ammo + - Bullet expire time or range +- **Level Builder** + - HTML app -> build YAML files -> WebDAV to save + - Use & Edit data defs -> palettes + - Visual level editor +- **Pathing** + - A* to use 1px grid -- isBlocked() will have to check unit size & collision types + - Remove density -- can do it all with blocking type + - Refactor collision test from Traversal into Map.pathing + +## lttl junk + +- Move Player into `player.yaml` from `units.yaml` +- Kill replay logging +- `Game.onDestroy()` to notify Things to clean up listeners +- Remove countdown +- Weapons to specify cannon art +- Targeting cursor +- Tank tracks, bullet trails +- Make Ezl canvas abstractions match cocos2d + -- 1.7.0.4