top of page

MIXCITY ARENA

Lead Game Designer | Gameplay Programmer

Role

Lead Designer | Gameplay Programmer

Presence

From early prototype to current state

Engine

Unity

Type

Profesionnal

Genre

MOBA | Tower Defense

Platform

PC

Status

In development

ABOUT

Mixcity Arena is a 3v3 MOBA game taking place in a futuristic world, where athletes from all types of sports fight each other in an arena.

Mixcity Arena revisits classic MOBA games, adding tower defense mechanics. In Mixcity Arena, you can upgrade your towers and buy special minions to help you in lane.

Mixcity Arena offers accessible gameplay with innovative and entertaining experiences.

PORTFOLIO PRIVATE ACCESS

Details about most of the work I've done on this project is locked behind a password.

Please click the button below and use the password available on my resume to get access to more details, more images and code snippets of my work.

MY ACHIEVEMENTS

On this project, I was Lead Game Designer for the whole prototype and early alpha phase, and then switched to Gameplay Programmer.

As a Lead Game Designer:

  • Shaped the basis of the game following the direction of the Creative Director.

  • Led a team of 3 designers from prototype phase to alpha phase.

  • Wrote and kept up to date the GDD and other technical documentation.

  • Lightened programmers’ work by prototyping some game design features on Unity using C# in order to test them before developing them.

  • Increased players possibilities by designing new content such as champions, items and new mechanics.

  • Game is still under development, so gameplay details about my work as a Lead Game Designer can't be shared.

As a Gameplay Programmer:

  • Developed most of the champions of the game, taking into account client/server interaction.

  • Increased player possibilities by developing some gameplay elements such as a bush invisibility system.

  • Assets integration (models, animations, FX)

  • Created new game modes such as 1v1 and a 2v2 game mode.

  • Increased player onboarding by fully developing the game tutorial (system and content).

  • Bugfixing most of gameplay's oriented bugs.

UNIT DESIGN & PROGRAMMING

As a Lead Game Designer, my team and I designed the champions in the game.

Then, as a Gameplay Programmer, I developed most of the champions, including the following one, Malia.

Developing Malia was a challenge, as it required extending several base classes to support its unique mechanics.

This included implementing skill resets triggered by other skills and adding a health bar extension to display Kata points.

​The complexity was further increased by the client/server architecture, requiring careful synchronization to ensure consistent behavior across the network.

KARATEKA compress_edited_edited.png
Karateka P.jpg

Kata - Passive

Malia's skills generate Kata Points for 7 secondes.

When Malia reaches 5 Kata Points, her base skills' cooldown are reset.

Karateka Q.jpg

Ayumi ashi

Malia dashes in the the targeted direction, dealing damage to all enemies she hits. The skill can be used again in the following 4 seconds.

Generates 1 Kata Point if a champion is hit.

Karateka W.jpg

Kiai

Malia shouts and gains a shield for 5 secondes.

Generates 1 Kata Point.

Karateka E.jpg

Mae-geri

Malia deals damage to the targeted enemy, stuns it for a short amount of time and slows it.

Generates 1 Kata Point.

Karateka R.jpg

Hangetsu

Malia dashes in the targeted direction, stopping at the first enemy hit. Malia can reuse this skill within 6 secondes, up to 3 times.

Each subsequent use deals increasing damage and generates 1, 2 then 3 Kata Points.

Another particularly challenging champion to develop was Irina, who can switch between two stances, altering all her skills and basic attacks, allowing her to switch between ranged and melee auto attacks.

To implement Irina, I had to rework the skill initialization system, which initializes skills when a champion spawns, to also initialize her second set of skills.

Additionally, I had to modify the skill level-up system, which was originally designed to upgrade only the current skill. For Irina, it had to simultaneously level up both her active and alternate skills.

Irina's stance also affects her idle and running animations, requiring proper synchronization across clients to ensure all players correctly recognize her current stance

BUSH INVISIBILTY SYSTEM

As a Gameplay Programmer, I implemented a bush invisibility system that dynamically manages unit visibility based on team presence.

Bushes work as follow:

- If only units from one team are inside a bush, they are invisible.

- If units from multiple teams are present, they are visible for to each other.

This system ensures that players hidden within bushes remain invisible unless an enemy unit is also present.

To efficiently track multiple teams within a bush, I used a bitwise enum flag, allowing efficient combination and comparison of team values using bitwise operations.

All logic is handled server-side, and the invisibility effect is applied through our Network Status Effect system, which synchronizes the status with clients by adding or removing the invisibility effect accordingly.

Below is a snippet from the Bush script I implemented:

CODE SNIPPET - Bush.cs
TUTORIAL

I developed a fully custom tutorial system from scratch, designed as a structured sequence of steps, guiding the player through essential mechanics (ex: "Move here", "Defeat this unit", etc...).

At the core of this system is the TutorialManager script, responsible for initialization, event management, and step progression. It manages two key components: ITutorialBackgroundTask and ITutorialStep, both implemented as Serialized Interfaces for more flexibility.

  • ITutorialBackgroundTask handles persistent tasks that run independently of the current step.

  • ITutorialStep represents a single tutorial step, implementing functions such as Init, Update, Complete, Replay and SetContext, allowing for reusable and easily configurable tutorial steps.

Thanks to its Serialized Interface structure, this system is easily configurable and extendable.

It allows for easy modifications, such as adding or removing steps or even creating entirely new tutorial.

 

Additionally, this system is also gameplay-independant, making it reusable across multiple games. The only gameplay-specific  elements are the implementations of the ITutorialStep and ITutorialBackgroundTask interfaces.

Code snippets demonstrating some of the code I wrote for the TutorialManager and a TutorialStep, as well as videos of the tutorials are available in the private part of my portfolio.

TutorialManager.PNG
NEW GAME MODES

As a Gameplay Programmer, I was reponsible for implementing two new game modes: a 1v1 and a 2v2 game mode.

The goal was to extend the existing gameplay systems without modifying any of the core mechanics of the original 3v3 mode, ensuring stability and preventing regressions.

I achieved it by primarily subscribing to existing events to integrate new mechanics seamlessly, and creating new ones when necessary. Since adding new events to existing code has a low risk of introducing bugs, this approach was the preferred solution.

These modes had to be implemented with client/serverc architecture in mind, for all actions and interfaces elements.

Code snippets showcasing my implementation of core mechanics for these modes are available in the private part of my portfolio.

bottom of page