I want my game to be built around pixel graphics. The pixels aren't square but by using ▄ we can make them almost square. I might use some other characters like ░, ▒, ▓ and •. I will use a buffer to store the pixel graphics.
There's 16 colors, and we can subdivide each character into 2 pixels (by using ▄). In RAM this will optimally take 4 bits per pixel and 8 bits or 1 byte per character. Sending it over USART take a lot more, but since we only update some pixels we could be smart and save bandwidth. Additionally we could up the USART speed.
- Spaceship.
- (Nice to have) Unaffected (or at least less affected) by the gravity field. (Canonical explanation is that the ship computer auto corrects)
- WASD for moving, arrow keys for aiming/shooting.
- (Nice to have) Shift for switching weapon
- Can be broken for loot and points.
- Somewhat gravitationally attractive.
- Crashing into it hurts.
- To be avoided.
- Very gravitationally attractive.
- Getting sucked into it kills.
- Alien ships.
- Similar weapons? (To save development time)
- Very little health/shields compared to player.
- Killing them gives points.
- Bends around black holes.
- Laser travels at light speed.
- Drawn using the aseprite pixel perfect algorithm. (https://imgur.com/uiyzvcY)
- Laser weapon doesn't use ammunition, but it overheats.
- Slower projectiles, so they curve more.
- More damage? (Can be fine tuned after play-testing)
- Uses ammunition.
- It's a nuke.
- High damage within an area.
- Very costly.
- Highlights the dubious ethics of a blood-soaked space conquest.
- Cool, flashy explosion.
- Projectile ammunition
- Repair kit (restores shields/health)
- Super shields (makes you invulnerable for a limited time)
- Nuclear bomb
- Extra lives
- Multiple bullets, (We will have multiple bullets on screen. I think this counts)
- Score / high score, (Destroying enemies and astroids gives points)
- Game controlled through PuTTY/Keyboard,
- Sound from buzzer, (Noise when player is hit and when nukes go off.)
- Show info on RGB LED, (Health gradient from green to red.)
We will show the player the following information in the PuTTY view.
- Lives
- Shield status / health
- Laser temperature
- Projectiles left
- Nukes left
And the following on the LCD
- Lives
- Points
What features/tasks I will do when.
- Game design
- Plan project
- Git repository
- Rendering system
- PuTTY input system
- Game loop
- Player rendering
- Fixed point arithmetic API
- Player movement
- Enemy rendering
- Enemy movement (+ AI)
- Projectiles
- Enemy bullet
- Multiple enemies
- Enemy death
- Player damage/health/death
- Death screen
- Boss key (Måske)
- Help screen
MVP, write on report. Flowchart + Blokdiagram.
- Laser
- Gravity
- Weapon switching
- Nuke
- LCD HUD
- PuTTY HUD
- Astroids
- Loot
- Projectile ammunition
- Repair kit (restores shields/health)
- Super shields (makes you invulnerable for a limited time)
- Nuclear bomb
- Extra lives
- Buzzer audio
- Black holes
- Damage from colliding with black holes + astroids + enemies
- Points (from killing stuff)
- Record gameplay
- Draw API flowcharts (Ref: Slide #11 of Course Lecture 2)
- Document API and HAL (Ref: Slide #10 of Course Lecture 2)
- Write report
- Write report
I might need additional time as this is a pretty crammed timeline.
Make the firing phase for AI only fire a max of 5 shots. (x)
Firing -> (Idle, Approaching) (x) Idle -> (Approaching, Firing) (x) Approaching -> Firing (x)
Flee -> (Flee, Firing) (x) Damage => Flee (sometimes, when under a health limit) (x) 0 health => Dying (plays little animation and the removes self)
When ships are outside the screen, they shouldn't be able to fire. But it would be cool if they could come back. I might just make ships that go off screen vanish, as that is easiest. But they'd only vanish if they're Fleeing.
Blue bullets hitting enemies should be instant Blue bullets only have self grace Purple bullets ??? Every bullet has a "shooter" id, 0 is player, 1 and up is enemies Bullets have a grace period but only for the relevant id.
Add glowy pink stuff Couldn't do because of the limitations of UART and my rendering system.
Add the ability to reset the game