top of page

What I've done

  • Gameplay programming - Entire game

  • Management - Production organisation & Task tracking

  • Game design - Action phase macro design

  • Sound - SFX & Musics

What I've learned

  • Game architecture

  • Make a game on all aspect of Unity

  • Mobile game optimization

  • Tool creations

  • GitHub use for Unity

  • Handling stress about work pressure

Description

   Crab'Maga is a mobile game where you manage your crab's army. Your goal is to reconquere the beach occupied by a hord of hermit crabs.

   Each crab have his own behaviour, therefore its own weaknesses and strengths. 

You have to use the right crabs to fight against your enemy.

   We were 5 students to work on this project which lasted 5 months.

GAME ART

Lead GA & character modeling : Louise Akiko Poullain

Concept art : Léon Leclerc

3D & UI : Anaïs Lachi

GAME DESIGN

System, GD & Economics : Simon Goldgrab

GAME PROG

Gameplay & system : Quentin Roussel

Challenges

For this project we had three major challenges:

- I was the only programmer and was working on my first mobile game.

- Our group was made of 1 game designer, 3 artists and 1 programmer, therefore we didn't have an important production force.

- To be more efficient, I had to made our project more accessible to our game designer cause he wasn't confortable with Unity.

At the beginning of the production, we had to find strong solutions to face those challenges.

The solution : SCRIPTABLE OBJECTS !

There are two tools which helped us to develop Crab'Maga:

 - This conference showing how to use scriptable objects other than stock of datas 

https://www.youtube.com/watch?v=raQ3iHhE_Kk

- And a user friendly tool named 'Unity Atom' to work with scriptable objects

https://github.com/unity-atoms/unity-atoms

How to make our units as modulary as possible ?

At first, I defined a useful interface to define my behaviour, here : IPassifBehaviour.

A scriptable object will implement this interface. I developed the behaviour in this. Here, it's the BasePassifEffect class which implements IPassifBehaviour.

BehaviourExemple.PNG

In this way, every object can easily receive a new behaviour by reference. It works like a component system but it's more modulable and easy to use it in our scripts.

The Entity object will implement IPassifBehaviour by reference.

How the game designer can create easely a new Unit ?

Our Units are simply built, based on the Entity class which has useful gameplay function. This class can contain behaviours, controllers, and call some game events at any given moment in the game. 

Units are a group of Entity and inherit of Entity. This way, Units can have a general behaviour and each Entity of an Unit have their own behaviour.
 

Each group is built with a scriptable object in input, thus creating a new scriptable object and defining new behaviours, allowing to create a new variation of a crab. 

Only the creation of behaviour and balancing took time during the production.

An easy access to data for balancing

Each tweakable variable and behaviours are stocked in a Dictionary with an enum as key.

This structure has some defaults and some qualities:

Each behaviour needs implement an interface or abstract method to constrain a common structure between all behaviours. 

It's easy to use and understand, very modulary and friendly for debugging.

Quick level creation with scriptable objects

During this production, we had to test and iterate quickly on each level. We needed to prototype quickly a new level without creating new scenes. 

Each level was initialized with data contained in scriptable objects. Thus, we could easily pass data between scenes, which was useful to save quickly a data like scoring.

The game designer was independant to iterate on the level design quickly.

Best answer to attack is counter attack !

For the game I had to develop an AI for the enemies. Unfortunately, the end of production arriving quickly I had to develop an AI system as fast as possible.

My design proposition was to define AI rules tested during some moment of the action phase or during some action of the player. 

Each level is composed of three IA Rules.

For better appreciation of the rules balancing, each rule would change its "ratio" value according to the player win or loss. It defines the difficulty of this rule according to the others rules associated with the level.

© 2024 Copyright :
All product names, logos and brands are property of their responsive owner.
All company, product and services names used in this website are for identifications purpose only. Use of these names, logos, and brands does not imply endorsement.
bottom of page