Rebelle
Technical Game Designer & Gameplay Programmer
Overview:
Rebelle is a 2D roguelike deckbuilder game set in the world of a medieval fairytales book. After an accident involving the writer, the book got hit by black inkt that is slowly spreading through out the book and corrupting all the classical fairytales storys of characteurs like, Belle and the beast, Pinokio, Puss in boots, red hood and many more.
In the game you play as Belle who with the help of teapot and pinokio combat the corruped versions of fairytale characteurs, by fighting them in a “slay the spire” type fashion, and liberating the corrupted tiles on the map. In the game you can buy, unlock, discard or upgrade cards in the shop, to create your own ideal build to triumph with.
Platform: PC
Tools Used: Unity engine
Time frame: 6 months
Genre: Roguelike deckbuilder
TeamSize: 8
Inspiration: Slay the spire
itch.io https://rebelle-game.itch.io/rebelle
Github: TTeamChimp_Deckbuilder_Game
Roll Info
Technical Game Designer & Gameplay programmer:
I created a modular Class System for the all the Cards & Enemies in the game, This allowed me to make a base class where new types of Cards & Enemies could easily be created.
I created Dev Tools that allowed other game designers to quickly change or add new cards and enemy types to the game.
Character Damage and Reaction System to provide responsive player feedback.
The Animation systems for every character
I created the following card/enemy effects: Bleed, Heal, Blunt, Armor, Anti-Armor.
I made the Grid-Map System that generates an encounter based on what kind of grid the player is on in the map.
I created the Finite State Machine for the game flow/state.
Handeld all UI Assets including card-art and animations.
My Goals for the project
To gain tech design experience, I created user-friendly in-game tools using C# and Unity to enable easy addition and modification of game cards by the team without programmer assistance.
Get more Technical Game Design Experience
I applied new coding practices, facing challenges as the sole programmer. Managed to create a modular card system for easy in-game card changes, inspired by game industry techniques for scalability and efficiency.
Challenging myself as a Gameplay Programmer
Old system
New System
Halfway trough development we had to transition from our old prototype build to the virtual slice build we intended to make. During this proces I went to work reworking much of the old system and implementing a new system based on the programming practises of (Unity Events, Game manager State machine, C# enums & Singeltons)
Game overhall
One of the new changes implemented was using a state machine in the game manager to dictate the flow of the game. Although this wasn’t my first time working with state machines, I never saw their use other than for regulating game Ai. Using a state machine to dictate game flow was the best thing I had ever discovered. Normally when you would want to switch from level you would have to switch scenes or have a
State machine
Development tools
As the only programmer in the group, I developed several tools that allowed my teammates and I to easily add or change gameplay items. With this system, artists could easily upload their art into the cards, while for playtesting purposes and balancing, card stats could easily be changed by whoever was overseeing the playtest. This way, the team didn't have to rely on their only programmer to do every minor change in the game, giving me more time to focus on implementing other features and aspects of the game.
Tools for game cards
To let teammates easily add or change cards I created a designer tool for the cards in the game. With this tool you can easily change the stats, name, description, image, and abilities of each card.
Modulair card design
To let artists, do their thing with designing player cards, I created a modular system for the cards that would let artists easily change the border, icons, colors, fonts, etc. of the card, with out having to involve me.
Card abilities
Card games by their nature require a lot of designing and playtesting to give the player the right type of freedom to come up with their own strategies and builds for each game session. With this in mind I created several base abilities with which me or a teammate could simply drag and drop that ability onto the card creation tool, and from there depending on what the ability was, decide how much damage, healing, shielding, bleeding effect it would have. This way we could make a card that would do 1 slashing damage that when upgraded or buffed could do 10 or more.
Enemy stats
Enemies were made in the same way as the cards where, this way artists could easily change the name, image, and stats of enemies. You can simply drag and drop the art for an enemy and change his stats without much knowledge of using the unity engine.
Finite state machine
To better control the flow of the game, I created a finite state machine where I could easily transition from each state in the game. With this state machine I only needed to assign to each UI button which screen it had to transition to. This made adding new features like a shop or an options screen very easy during development.
Enemies state machine
Enemies also used a state machine to trigger their abilities. Each enemy had 4 action it could randomly select on their turn namely: heal self, shield self, basic attack, and special attack. The stats for each of these abilities could always easily be changed by either me or a teammate.