User blog:Russjohnson09/弾幕

Here I will outline the danmaku project that I will be working on over winter break.

Project details
I will be using Libgdx for the game development framework. One of the pros of this is that you can develop and do your debugging on your desktop before testing it on the Android. The compile time is significantly faster and so you can test code more often without it slowing you down.

Player
The player will be represented as a red circle which will be pretty small in comparison to the rest of the screen. This will be a placeholder for testing purposes. I plan to later replace this with a better looking graphic for the player. However, the red circle will remain as it represents the primary hitbox for the player. One of the main features of a danmaku game is the huge number of bullets on the screen at once leaving only narrow gaps to safely navigate. The player will also have a secondary hitbox. A collision between a bullet's hitbox and the player's secondary hitbox will not cause death, instead it will contribute to the player's graze count. This is another important aspect of danmaku games. Beginners will simply avoid bullets, but more advanced players will boost their score by getting close to as many bullets as possible and navigating through areas that were not thought to be possible.

Bullets
There many different types of bullets that can be made. They each have a function for their velocity along the x-axis and one for their velocity on the y-axis. A bullet may or may not have health. A bullet with health is typically bigger and may spawn more smaller bullets upon destruction.

Lasers
Lasers will first send out a green line across the screen that will eventually turn red and expand. While green the lasers do not kill the player, but as soon as they turn red they are deadly. Laser appear instantaneously on the screen and so a warning is given before they turn deadly. There are basically two kinds of lasers, ones that track the player and ones that do not. A combination of both can be used to make things very difficult.

Barrage
A barrage is a grouping of bullets that act together to form a pattern. This is one of the main appeals of danmaku (danmaku is the Japanese term for barrage). One simple barrage type is one in which a slow moving tracking bullet is fired. The various barrages are defined within the scripts.

Scripts
I plan to make the game in a way that will allow for custom scripts to be written. This will make the game easy to expand upon. A script will have some standard format where the bosses spawn point is defined, its movement is defined and the spawning of bullets are defined. There will be templates for different types of barrages that the boss can be used. The boss is really a special type of bullet. It has health and is somehow marked as being the boss.

Parametric Equations
I am thinking that every movement for the bullets and enemies can be described using parametric equations. This method can in fact make the programming code much more concise than dealing with things like velocity and direction in degrees and so I think I will do things this way. Straight paths are trivial and I know how to transform a $y = mx +b$ type equation to a parametric equation, so that should not be a problem. Here is a list of parametric equations. Converting a polar to parametric equation first involves going converting polar to Cartesian coordinates.

Shapes
Epicycloid

Music
The bullets intensity should go well with the music and so choreographing the bullet patterns should probably be done after the music has been picked out.

Bosses
Bosses will generally have some sort of theme attached to them and their spellcards match this theme.