Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Sir Kaninchen (Deckbuilder Bullet Hell)

A topic by Qory created 48 days ago Views: 125 Replies: 4
Viewing posts 1 to 5
(2 edits)

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 deck
    • Stance 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 camera
    • Death
      • Edit: Pickup Drop Locations
  • Pickups
    • Obtaining them in-stage
    • What 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)

First devlog update in a while. Have a few things.

Bullet spawn rotation.


Bullet spawners in other objects.


Player tracking of mob objects (locked horizontal position).

Player tracking - aimed bullets

(There's an obvious gap in this one lol)

All of these are handled by the first iteration of the mob class I plan to be using, calling a customizable list of attack and behavior patterns (versatile and makes bosses easier).

Up next is probably player attacking/deck usage.

Added enemy health and player attacking.

Right now the samples only use a basic left and right swing in the deck (my partner commented that it looks like a windshield wiper). The important thing is that these are being instantiated based on the card called by the player. 9-health enemy with a 3-damage attack (most enemies will have 1 health, I'm doing this for the sake of bosses and the like. The attack tracks with the player even when it shouldn't logically, and has a slightly larger hitbox than the sprite, but I really don't care. It's better to give the player a bit of an advantage.

Testing the stance system, I set the card to instead use two duplicates, with a 5 second stance cooldown timer. Attempting to use it twice in a row will evoke the cooldown timer.

(Gifcam captured a bit of the earlier one too).

Next will probably be the camera handler and some spawners, even though the seedwork for bosses and powerups are being set.

(2 edits)

Powerups and the start of UI.

Looking at a few powerup types. So far these are just here and dropping in.


From top row, left to right, Points (small), Gold (small), Health (small), [Large variants of prior], Attack Power Up, Shield, Damping, Attack Power Up (Large), Shield (Large). The thing on the points is supposed to look like some kind of wheat or flower. I'm aware with the problem in having the coins both be blank, too.

Points will be typical, gotten through player actions. They will be able to be exchanged for Gold and lives at the end of each stage. There's more ways to get it, but it clears if a player restarts a stage.

Gold is gold. You spend it on lives and cards.

Attack Power Up is a bit self-explanatory, but I'll take a moment to explain how damage works here. Rather than just be a flat rate, players have three attack stats, Sword, Ranged, and Magic. I want to take a cue from Imperishable Night and eventually have the possibility of the player swapping characters when they're "focused," since that would explain an ingame movement decrease speed. In addition, individual cards have their own power. So, the damage calculation adds the damage dealing attack of the card's type, the card's actual value, and this modifier. For most enemies, this won't matter, but the additions would make some boss fights easier.

Shield and Damping should probably have their names swapped. When a player is hurt by damage, if there's a shield, then damage is first removed from the shield, and any current damping is removed from damage not absorbed by the shield before being applied to the player. Damping automatically reduces by 1 every 1.5 (or, rather, a damping time) seconds, allowing for lesser-invulnerability periods and temporary invulnerability periods, i.e. after a player respawns. Both of these are actively shown on the UI below the health, spaced out as a percentage against max health.


(Notice that a collision which previously killed the player does not affect them while the blue bar is still active).

I don't think GifCam did justice just what this bar looks like in action

Lol, I should probably make a little more clear what's happening in that... as a feature for the game, not a blog post, that is.

Doing cutscenes flexibly.

The camera handles cutscenes by loading up a text file with simple stageplay instructions. Each instruction has a set type (dialogue change, resume-gameplay, and level end), letting me do all that fun mid-stage dialogue, start, and ending. I'd like to add one to move/show/hide portrait actors, that way I can do stuff like swap characters around in them, but the important thing is I have it now.

Tying it to a central object also means activating it only needs a destroy-on-update object that advances the cutscene stageplay instruction by one, into a dialogue selection (there's a flag to track if the player is in a cutscene, so even if they can move, there's still a pseudo-pause happening.

Demonstration below. Portrait is Fable 4, because I had that laying in my images.

You'll notice the nameplates change character names too. That was intentional to show off that it's one thing changing and moving around, instead of a name for each actor. Then again I might want to change that later...