top of page

Dream Keeper

Project Type

Game Genre

​Platform

Language Used

Engine

Other software

Date published

Personal project, solely development

Top-down Shooter, Card games

PC

C#

Unity

Mixcraft (Audio), Photoshop (Art)

2019 / 07 / 30

Dream Keeper is a survival game that combines top-down-shooters with deck building that plays in real-time. Using types of cards such as Gun Card, Magazine Card, Magic Card to strategize your deck and playstyle to survive in this horror.

This is by far my game that I proud of the most, I designed and built all the system by myself such as card casting, deck building, and the game events that will engage the players. Most important about making these game works is how to design a game both combining turn-based card games and real-time shooting games and how it should be implemented in a way that makes sense. And thanks for my friends to make the art in the game for me to accomplish this awesome project.

Check more at: https://store.steampowered.com/app/1120970/Dream_Keeper/

Systems

Combat System: 

The combat system includes using Magazine Cards to reload your gun, Gun Cards to switch your weapon with unique abilities, and Magic Cards for changing the situation to favor the players. For shooting enemies detection, I'm using line renderer as bullet trails, and whenever the line hit a collider, it will detect the layer is shootable or not, ignore the collider if not shootable.

Health Type/ Bullet Type System:

Magazine Cards have bullet types with Normal, Anti-armor, Pin, and Morph bullets which will deal with different damage to different health types of enemies. So in the code, I have to detect the current bullet type first in order to multiply by the different multipliers.

Card System:

Gun Cards have abilities like "whenever you cast a card, give this weapon + 5 damage", so I have to program whenever you do something, the gun will establish the value with the new one. Casting card function contains a switch case includes all cards' functions, when casting cards, it will go through the function and feed the card ID to the switch to do things according to the given ID.

Deck-Building System:

In the deck-building system, I let the player build their custom decks up to 5 custom decks, if a card is used in one deck, it can still be used in other decks. There's no limitation to how they build the deck as long as they don't exceed the limit maximum number the card can be established in a deck. The players can also name their decks to not be confused by the decks they build. The method I'm using is simply adding elements of the card's ID the player adds to the deck, before adding, it will sort to put the card to the desired index sorting by ID with using List.InsertAt(Index).

Card Forging/Dismantling System:

In the players' collections, cards can be dismantled into shards or forged with shards. If a player wants a specific card and they don't want to wait till the chance to obtain it in his next card pack, they can dismantle the cards they don't want and forge it with shards they obtained by dismantling them. By adding the public static integer to get and set will do.

Card Pack System:

Card Packs can be obtained through the arena, normal game mode, and endless modes, this is heavily balanced with how many card packs they can obtain throughout the game and also balanced with expectations in mathematics with the rarity of cards. Theoretically, the data balancing here I did with this project makes the player obtain all the cards in the collection if they beat the normal mode, arena mode, and endless mode with an average of the clear rate. Whenever the player opens a pack, It will go through a random number generation with the rarity to determine which rarity of the card to obtain and randomly generates the card with that rarity.

© 2020 By Dern Lin. Proudly created with Wix.com

bottom of page