A remake of classic shot'em'up, bullet hell, Touhou games. Also a PoC of gint performances
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Darks 9ca4fd1d37
WIP
1 month ago
assets-cg Updated assets 1 month ago
assets-fx Trying to be original in this first commit msg. Joking 6 months ago
assets-raw Trying to be original in this first commit msg. Joking 6 months ago
include WIP 1 month ago
src WIP 1 month ago
.gitignore Updated .gitignore & cleaned build directory 6 months ago
Makefile Updated assets 1 month ago
Readme.md Added Readme 1 month ago
Touhou.g3a Worked on some tests. 6 months ago
assets.py Work on assets. Updated icon 6 months ago
project.cfg Updated assets 1 month ago

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 bombs 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.