A remake of classic shot'em'up, bullet hell, Touhou games. Also a PoC of gint performances
Go to file
Darks 242439c05b
Use keydown instead of events
2020-10-27 22:47:13 +01:00
assets-cg Testing dialogs 2020-10-25 00:44:52 +02:00
assets-fx Trying to be original in this first commit msg. Joking 2020-05-29 16:14:52 +02:00
assets-raw Trying to be original in this first commit msg. Joking 2020-05-29 16:14:52 +02:00
contents/dialogs Testing dialogs 2020-10-25 00:44:52 +02:00
include First demo for dialogs 2020-10-27 00:34:08 +01:00
src Use keydown instead of events 2020-10-27 22:47:13 +01:00
.gitignore Updated .gitignore & cleaned build directory 2020-05-31 00:17:56 +02:00
Makefile First demo for dialogs 2020-10-27 00:34:08 +01:00
Readme.md First demo for dialogs 2020-10-27 00:34:08 +01:00
Touhou.g3a Use keydown instead of events 2020-10-27 22:47:13 +01:00
assets.py Work on assets. Updated icon 2020-05-31 00:11:36 +02:00
project.cfg First demo for dialogs 2020-10-27 00:34:08 +01:00

Readme.md

Gameplay

Witches

Before the game starts, the player can choose two witches between the 8 available. The first one is used on normal mode, the second on focused mode. Each witch has unique properties and sometimes a special effect.

Modes

There are two gameplay modes:

  1. Normal
  2. Focused

The "focus" mode is triggered by pressing KEY_OPTN. The effect disapears when the key is released. Focus mode with speed divided by two, some bullets are ineffective, and usually a fire power focused on a single stream. They may have a special effect

Speeds are in px/s (play area is 270×224).

Id Name Spe Pow Special
0 Reimu Hakurei 194 130 +10% power when focused
1 Marisa Kirisame 208 130 Attract bonus when on top of the screen
2 Sariel 241 Do not attract bullets when not focused
3 Koakuma +15% chance of getting a powerup
4 Iku Nagae Start with 4 spells instead of 3
5 Sumireko Usami Wider fire angle when not focused
6 Hina Kagiyama +10% power when not focused
7 Kurumi

Power & fire

Power can go from 1 to

A bullet_t is always launched by the player. Else it's an enemy_t (even if it's an enemy bullet)

Powerups

There are 2 kinds of powerups: small ones and big ones. Small ones increase power by 1, big ones by 5.

Code architecture

Global vars

  • uint32_t us_elapsed: μs elapsed during the last frame
  • uint32_t frame: number of frames elapsed since the beginning of the game
  • player_t *player: general information about player
  • difficulty_t difficulty: the chosen difficulty of the game
  • bullet_t *bullets: the bullets sent by player

Objects

object_t is an object linked to physic or an updater. This means that an enemy as well as a bullet can be objects.

Object updater

An object updater is a function applied to an object. Its protoype must follow this: void f(object_t*). Due to the complexity of the game, it may use frame, us_elapsed; but it could also use player, difficulty or other global variables.

Graphics

Graphics are designed for color calcs. However, I try to be the most responsible possible to facilitate a port to monochrome calcs. Thus, code may be quite verbose when displaying sprites.