Skip to content

Latest commit

 

History

History
103 lines (103 loc) · 4.57 KB

TODO.org

File metadata and controls

103 lines (103 loc) · 4.57 KB

Free off-screen bullets back to the bullet pool

Create a bullet data type that wraps the bullet system and bullet id into one data structure

Create a BulletRef struct with member variables bullet and bullet_system

Change all bullet methods to take BulletRef as an argument instead of a bullet system and bullet index

Create some sane subdirectories for source and data files

Open port for a REPL so the program can be modified as it is running

Allow many types of bullet sprites

Create a sprite sheet struct with Guile bindings

Add a sprite sheet member variable to bullet system

Use sub-bitmaps of the sprite sheet to set bullet bitmaps

Add angular velocity to bullets

Add a bounding box to the bullet system that specifies the bounds of the game area

Bullets outside of this box are killed but right now it is hard-coded in remove_out_of_bounds_bullet

Add a bounding box struct

Add a counter to bullet system that counts active bullets

Rotate bullet sprites in the direction they are moving

Break Scheme code into modules

Coroutine module

Scheduler module

Bullet pattern primitives module

Yield functions module

Create some macros

Coroutine macro

Add keyboard event callbacks

Map allegro key codes to scheme symbols in a hash table

Add player and enemies

No need for C here, this can be done on the Scheme side

Add collision detection

Collision between player and enemy bullets

Collision between player bullets and enemies

Develop actual gameplay :P

Refactor game loop into several smaller functions

Control FPS rendering from Scheme

It’s hard-coded in the game loop right now

Create font smob

Pick a C code formatting style and STICK TO IT FFS

I keep switching brace styles for no good reason…

Get rid of those annoying compiler warnings for scm_c_define_gsubr

Need to talk to the folks on #guile about this

Improve bullet pool code

Use a more efficient method to find unused bullets in the pool.

Search for free bullets starting from the last index a free bullet was found + 1.

Refactor scheduler

Use the srfi-9 records module

Add GPL snippet to every source file

Implement reference counting for bullets to prevent weird bugs

Write unit tests

Need a good way to do this with Guile

Animated sprites

Expand font bindings

Bind more of Allegro’s font functions with Guile.

Add bindings for Allegro audio addon

Need some minimal bindings for background music and short sound effects

Sound effects

Audio streams

Custom window resolutions and fullscreen mode

Specify window size and fullscreen mode when initializing

Allow user to change screen size and fullscreen mode after initializing

Scenes

Separate game screens into units

2D scene graph

Add Director module

A concept lifted from cocos2d. the director manages the scenes in the game.

Prefix all C functions with gnumaku_

I was lazy and didn’t do this, but now Gnumaku is a shared lib so it’s necessary.

Level format

A proc + a Level record

Add a register procedure to bullet-types module

Allow user to register bullet types instead of having hardcoded ones

Switch to frame-based timing

Every time the update hook is called, a timer should be incremented by one and the game should use this to time events.

Time agenda events by frames

Time game object motion by frames

Use GOOPS

OOP will be nice for generic interfaces

Docstrings for EVERYTHING

I have been doing a terrible job at documenting this code.

Add event emitter class

Must support multiple listeners per event type.

UI Widgets

some ideas. some are necessary, others are likely not

Text label

Text input field

Menu

Text menu item

Text input menu item

Option cycle menu item

Toggle menu item

Container

Layout strategies

Manual

Vertical

Horizontal

Table (m x n)

Bullet System optimization

Only create a bullet ref when the user wants to script the bullets.

Fix bullet pool code

Gamma correction

Improve coroutines

Write a define-coroutine macro

Generic particle system

Define Scheme modules in the C code.