So, I've been sitting on this for a while now, but something in another community gave me a kick in the pants to start working on this.
Sir Kaninchen is my idea for a Bullet Hell game. In it, players will control the title character, Sir Erich Kaninchen, a super-soldier knight of the Kingdom of Ostfeld in a world where soul-magic guided industry after the age of chivalry, and also eventually Princess Gail Lavendel, after rescuing her from the Legion of Tastinnte. Little do the two know that the rescue mission was a ploy to send the young warrior to his death in a faraway land, far enough to be unable to obstruct a coup of their home kingdom.
Gameplay
Players will dodge hordes of enemies in a near-constant barrage of projectiles. To fight back, players will use cards to activate Erich/Gail's attacks, usually simple things like a slash or a shot, or heavier specials. After a card is used, the character will be in a set stance. If a player's selected card is 'prepped' by their current stance, they can use it immediately. Otherwise, they'll need a moment to drop their stance. I.E. a player from no stance can swing their sword to the left. If the player's next card is 'prepped' by the character holding a sword to the left, they'll attack as soon as the card is used, same as if it was from neutral. Otherwise, the player will take a moment to reset back to neutral before attacking.
Smart deckbuilding will allow players to chain cards and stances for continuous attacks, or, in conventional SHMUP terms, treat the deckbuilding as a means to create/alter the player's shot type. There will be three decks a player has onhand (by default, one for 'unfocused' movement, one for 'focused' movement, and one for specials, although "specials" is not a movement type, so players will be able to put whatever they want in it), with abilities to customize them post-stage if they wish.
Because the player's first available character is sword-focused, aggressive play will be encouraged, though ranged options are planned.
What's here so far.
I've been sitting on a very primitive script for this for probably years, never getting around to it since I wanted to get another project finished. I didn't have time to get the other game I was working on finished, and now that I have time again I don't really care to at the moment. I may go back to Dawnforth.
So far, I have the basics of the Bullet Hell mechanics. Emitters spawn bullets, bullets can kill players, and players can respawn.
I focused mostly on getting emitter options set. The delay between rounds can be changed on-the-fly, along with number of bullets per round and spread angle (singular, 30 degree angle, 90 degree angle, half-circle, circle). I also added in rotation functionality.
(The pauses in the gif are from me changing the values of the emitter in Unity's editor. The low framerate is just to make the gif small enough to upload)
Roadmap
Instead of doing feature-with-stage, I would rather lay out the framework needed to make each stage, then make the stages, so this is just going to be a checklist.
- Add player deck functionality
Use from single player deck and "action locking"- Scrolling within player deck
- Extra player decks and switching between them
Calling actions from player deckStance system
- Add camera handler
- Scrolling, player auto-movement, and off-camera auto-killer (I would like the ability to change player direction at certain points in a level, i.e. to run alongside a castle rampart after scaling it)
- Scroll-triggered emitters
- Scroll-cease
- Enemies (Basic)
Make them able to be killed by either the player or cameraDeath- Edit: Pickup Drop Locations
- Pickups
Obtaining them in-stageWhat do they do? (Health, action-speed-up, damage boost)
- Cutscenes
Mid-stage (portraits, dialogue, skip)- Between-stage
- Post-stage (post-boss, transition)
- Bosses
- Activation
- Designated attack patterns ("Arcana")
Cutscene trigger on death
- UI
Health display- Card display
- Score display
- Pause
- Menuing
- Saving
- Loading
- Stage Selection
- Start Game
- Options
- Sound
- "Taverns" (Between-stages)