Skip to content

Latest commit

 

History

History
137 lines (121 loc) · 3.4 KB

TODO.org

File metadata and controls

137 lines (121 loc) · 3.4 KB

Things To Do

Implement all bullet properties

Need scheme procedures to get/set the following:

  • [X] position
  • [X] direction
  • [X] speed
  • [X] accelleration
  • [X] angular velocity
  • [X] life
  • [-] type
    • [X] tile
    • [X] hitbox
    • [ ] blend mode (alpha or additive)
    • [X] directional (rotates with the bullet)
    • [ ] color
    • [ ] scale

Also need:

  • [X] emit-bullet procedure that accepts all properties.

Collision detection

  • [X] Remove bullets that collide with something.
  • [X] Use a callback to handle damaging enemies and killing the player.

Animated sprites

  • [X] Add Animation type
  • [X] Add Animation member variable to Sprite

Splash screen

The intro screen with game logo that tells you to ‘Press Any Key’ or something.

  • [X] User sees an intro screen with background image, game title, and a prompt to press a key
  • [X] Add config option for background image
  • [X] Add config option for title image

Main menu screen

To be tasked later…

Asset customization

  • [ ] Allow the user to specify what assets (art, music, etc.) to load

Port agenda to C?

Could reduce GC runs.

Configuration variables

SCM_VARIABLE in C, set! them in init.scm.

  • [X] debug-mode
  • [X] lives-per-credit
  • [X] initial-credits

Create DSL

A good domain specific language will allow for very elegant game scripts to be written.

  • [ ] define-stage
    • [ ] name
    • [ ] description
    • [ ] map
    • [ ] script
  • [ ] define-player
    • [ ] name
    • [ ] description
    • [ ] hitbox
    • [ ] speed
    • [ ] tileset
    • [ ] animations
  • [ ] define-enemy
    • [ ] name
    • [ ] description
    • [ ] hitbox
    • [ ] health
    • [ ] points
    • [ ] tileset
    • [ ] animations
    • [ ] script
  • [ ] define-item
    • [ ] name
    • [ ] tileset
    • [ ] animation
    • [ ] script

Add ParticleSystem type

Useful for cool effects like explosions and whatnot.

Remove Entity union

I don’t think there is good reason to have Player, Enemy, etc. all in a union. If anything, each of these structs should have an Entity member instead for common data.

  • [X] Remove Entity union
  • [X] Create new Entity type with the following member variables
    • name
    • position
    • tileset
    • animation
    • sprite
    • agenda
    • hitbox
  • [X] Refactor Player and Enemy so that they have an Entity member
  • [X] BulletSystem is not an Entity, silly
  • [X] Remove duplicated logic with types that have an Entity member.

Add Items

Items are basically particles that execute a script when the player touches them.

  • [ ] Add Item type
    • name
    • tileset
    • animation
    • script
  • [ ] Add ItemSystem
    • Use GArray to store items efficiently

Refactor ParticleSystem, BulletSystem, and ItemSystem

All of these systems behave differently, but there’s some common logic and data that can be extracted, hopefully.

  • [ ] DRY up common logic and data.

Add Stages

Stages encapsulate a game level.

  • [X] Create Stage type.
    • title
    • description
    • map
    • script

Add prototype system

We want to specify the recipe for making a particular type of enemy, and then stamp out clones of it. There needs to be some system of registering a prototype and asking for a clone to be made.

  • [X] GshmupEnemyType
  • [ ] GshmupPlayerType
  • [X] GshmupBulletType

Add asset management

  • [ ] Map directories to asset types
  • [-] Cache asset instances
    • [X] Images
    • [X] Sprite Sheets
    • [ ] Sound effects
    • [ ] Music