Exbots Revolution - The Development Process

This page covers:

  • The project goals

  • The creative and design process of the game from my perspective as a gameplay designer and programmer

  • The "behind the scenes", ideas, what worked and what didn't work during the design of this game

Setting project goals

When I started this project, I had in mind:

  1. To create a game quite different from my previous game Battleships Collide

  2. To improve my non-development design skill: Art

  3. To create a game people would want to be addicted to by the enhancing user experience

IMPLEMENTING IDEAS AND GOALS

My previous game Battleships Collide is an interstellar sci-fi space shooter. A game involving lots of spaceships. But I decided to try something different, something simpler. So I began brainstorming new ideas till I landed my favorite: a platformer run and gun style game. I got the idea when I was playing one of my old games called Contra.

The second and third goals were quite tricky given the fact that I'm not an artist, I can't create something so spectacularly appealing to the eyes. However I managed improve my artistic skills by watching a lot of tutorial videos, reading various articles and documentations I could find about the artistic pipeline, the creative and design process, what goes through an artist's mind as they created an art piece, how they decided which and what objects to be used in a particular situation, what draws the viewer's eyes, the processes, methods, philosophies that are employed by game and video artists as they work to create an immersive fictional world.

After spending a few days researching and learning, I grew increasingly more confident on how this game would end up like. So I went to work....

THE DAWN OF EXBOTS REVOLUTION

Game Orientation

The first idea I had for the game's orientation was a 2D landscape environment, this sounded easy to make because, well, it's 2D, you only had to consider movements in just 2 dimensions, and it looked easy to optimize so performance wouldn't be a problem.

Character Design

The initial player character

Now I had a basic overview of the game, so then I went on to the next step, creating a main character, one that'll represent the player in the game's world.

In order to do this, I thought...what would this game be about? After tossing some ideas like medieval, futuristic, modern... I came to combine futuristic and modern, and thought...what if the character was a robot of some sort. Then I opened up my notebook and Adobe Photoshop and started doodling some ideas. It was incredibly difficult to come up with one at this stage seeing that I'm not a graphics artist.

So then I started browsing through assets looking for a perfect sprite character but couldn't find one that fits. Then I went back to the drawing board. The next day, I reevaluated my requirements and thought, "what if the characters were 3D, but still moved in 2D? It'll be like a 2.5D game". With that in mind, I went back to the asset store and searched for humanoid characters that would fit the description of a robot. Fortunately, I found one, an asset made by Viktor Yurov.

Now, this character was good enough for a level design test, but had a few issues with animations. The animation style isn't one that just fits a lively "military" character. I had the idea of using a military style animation to convey an idea that this character had been trained by a secret governmental organization. So to fix this problem, I adapted it's original animations to my own using Unity's procedural animation solution known as Animation Rigging. Then I wrote a quick movement code to work with both the physics engine and the animations. I wasn't very good with animations so I ended up with this:

The second choice player character

Of course, the animations doesn't feel quite right. The jump animation was quite unnatural, the run animation made the character feel a bit static.

So, I went over to get animations for free using Mixammo. I got a few animations and substituted them in, did a few tweaks and got something fairly decent.

Furnishing Animations and Level Prototype

At this stage of prototyping, I briefly paused on developing the player character and decided to use that time to build a level, a world to test the character and how he might fit with the environment. For the environment, I thought of having its background look like the side of a regular building, nothing too high tech to draw in a lot of eyes(seeing that the theme is about a secret agency and all), but something average to hide what's going on inside. However, seeing that this is a mobile game and performance is a priority, I improvised the building environment by using a flat plane with only 4 vertex counts, and made normal maps and textures using Materialize to create depth illusions on a flat surface, the material on this geometric plane rendered on one side too. And of course this is a platformer game so I have to make platforms for the characters to jump/walk on. I opened up blender and made a quick model of some platforms, then polished it with textures floor textures from opengameart, then imported into Unity.


Then I went back to play-test my character and observed that the animation that played as he came down from an elevated platform before hitting the ground has minor glitch, the glitch was that during this animation, the character is not in good position to fire his weapon. I easily fixed this by smoothly interpolating between jump animations and landing animations. Then I examined the player character behaviors in a few platformer games I got from google play store games and YouTube and found that almost all of these games had the ability to double jump. So, why not make that? It looked like a little fun mechanic to have on the player character.

At this point in the game, I started doing a lot of play tests, shared the game with a few friends on Samyam's Discord Server and received a lot of wonderful feedback and suggestions, the most suggestion being to model the environment to suit the character. After some time searching on the asset store, I found a great character from the same artist as the previous one. And made a custom cartoon shader with the help of Unity's shader graph to fit the character right into the environment. This new character was well received and liked by testers and artists that saw the prototype, then I decided his name would be Akira, the series protagonist. The previous character would eventually become the antagonist known as Vigor Acer.

The Antogonist - Vigor Acer

The third and final choice player character - Akira

Designing UX, Abilities And Weapons

User Experience

To enhance the gameplay flow and add to it's platformer game mechanics, I used particle effects for the weapons, made a simple UI, added post processing effects, employed Unity's baked global illumination, added ragdoll physics and sound effects, and utilized Cinemachine to create a dynamic camera system that involves smooth camera transitions, look ahead camera view, smooth zoom out/in, camera shakes on weapon impact with an object.

Weapons and abilities in-depth

The Buck Shot

Regular Shot

Spreading Bullets

Explosive Bullet

Missile

Electron beam

Grenade

Plasma beam

Nuclear storm

Cluster grenades

Boomernade

Photon beam

Triple jump

Double health

Unlimited ammo

Weapons - Details

Now that a basic level is made, I turned to weapons, I wanted high tech weapons to sell the sci-fi story in the game. Then I made a rough list containing descriptions of various sci-fi weapons I came across while playing other games, researching sci-fi weapons and watching Star Trek. Then began 3D modelling on blender and ended up making 10 low poly weapons and got 1 more weapons from the assets store. In order to keep these weapons and have good mobile app performance, I decided to make just one sci-fi firearm shoot all these weapons.

I wrote C# code for the mechanics of these weapons and designed them to look futuristic with their unique abilities and features and really sell that epic feeling and action ambience of the game. Their names and capabilities:

  • The buck shot - An infinite ammo loaded bullet shell, does nothing fancy, fires straight forward. Designed to be the default weapon to be used by Akira

  • Regular shot - One of the default weapons used by Akira. Behaves like the buck shot, but slightly faster and slightly more powerful than the buck shot. One of the default weapons used by Akira.

  • Spreading bullets - Smaller versions of the explosive bullet that spreads out into 4 individual shells that captures enemies that are above, below or just at the same level as the player. Unlocked when the player voluntarily watches an ad or purchases the weapons/abilities pack.

  • Explosive bullets - A bigger bullet shell with low velocity that behaves like the buck shot, but deadlier because it explodes upon impact with any surface. Unlocked when the player voluntarily watches an ad or purchases the weapons/abilities pack.

  • Missile - A weapon with great speed and accuracy, a powerful rocket launcher. Unlocked when the player voluntarily watches an ad or purchases the weapons/abilities pack.

  • Electron beam - A very powerful weapon with great versatility. Fire once, and it makes its way forward or upwards. Unlocked when the player voluntarily watches an ad or purchases the weapons/abilities pack.

  • Grenade - A single grenades that explodes into 5 bursts of miniaturized explosions. Unlocked when the player voluntarily watches an ad or purchases the weapons/abilities pack.

  • Plasma beam - A powerful weapon made out plasma shards from a dying star. Unlocked when the player voluntarily watches an ad or purchases the weapons/abilities pack.

  • Nuclear storm - An incredibly powerful weapon, a living nuclear energy incredibly dangerous given its ability to do a lot of damage to an enemy and then reverse it's trajectory to hit any other enemy that might be lurking behind the player. Unlocked when the player voluntarily watches an ad or purchases the weapons/abilities pack.

  • Cluster grenades - 5 times as powerful as the grenade, and rapid fires from this weapon will be sure to instantly clear every enemy in its path. Unlocked when the player voluntarily watches an ad or purchases the weapons/abilities pack.

  • Boomernade - A weapon of mass destruction! Half a boomerang, half a grenade. Known for its unique feature, a weapon that when fired, flies around bouncing over obstacles and enemies to rain down fire and bounce around the environment until it dies. Unlocked when the player voluntarily watches an ad or purchases the weapons/abilities pack.

  • Photon beam - A line of light created when fired, powerful enough to pass through solid objects and damage enemies in its path. Unlocked when the player voluntarily watches an ad or purchases the weapons/abilities pack.

Abilities Details

These weapons were impressive, but seeing how Akira is this powerful hitman, he'd have some skills too. Then I gave him the ability to not only double jump as seen in most platformer game, but to triple jump, have double max health and have unlimited ammo for all weapons.

Levels, Dialogues, Aesthetics

To create an adventurous and action game, I split the game into 3 different modes:

  1. The story mode: In which we witness and guide the player character (Akira) through the game's storyline as he hunts down other exbots and his former employers.

  2. The epic levels: Here, we guide Akira through a longer, more rigorous and dangerous set of levels involving machines, bosses, traps and even more dangerous exbots.

  3. The survival mode: A small level in which players exhibit their run n gun skills by killing as many exbots for as long as they can to set new high scores.


These modes each have their own environment ambience, tone and objectives.

The story mode revolves around a hitman who sought revenge, and eventually gets what he asked for. The environment design for this mode is hugely centered on an enormous building that supposedly houses the operations of the Exbots bureau. I wanted to generate a nighttime vibe in the game because, the night is known to be the perfect time to do some silent assassinations, so I got most of the action in this mode to take place inside the building, and at night.


The Story Mode

Scene layouts design screenshots

Based on the game's storyline premise, and the fact that I want to save on build size, I decided that the entire story mode level be carried out in a gigantic building.

So I created and downloaded different variations of objects, props and platforms while maintaining the same brick wall background but with different lighting conditions. I had to modify the rotations and scale on these objects and reuse them in the scenes to save on memory and performance

In order to create a storyline feel to the game I designed a quick cutscene before each level loads, these cutscenes involved Akira making snarky comments about what is going to happen in the level.

The Epic Levels

Scene layouts design screenshots

At the end of the short 10 level, the game felt a little short, like it needed more action packed content. I took inspiration from most games that were divided into chapters (each chapter had a number of levels in them) to create another mode, one that was quite different from the story mode, but with the same thematic objectives...to reach the end of the level.

I brainstormed a lot of ideas on how the environment could be, each time I did, I wanted to make sure the environment had the same "brick walls" concept as it is in the story mode. I had an idea ti model a bunch of buildings with windows and cast fog over them to create an environment with depth, and another idea to model and take a rendered seamless image of a simple building environment on Blender, then write C# code to create a parallax illusion as Akira moves. These ideas caused some weird behavior that would draw the player's attention away from the action but into the environment.

At the end I used a modified version of my original idea for the story mode, a bigger building under constructions. So, I got a wall texture from opengamesart, modified them with Materialize and imported them into Unity, then applied them on a one-sided 3D plane, then made bigger platforms for the characters to walk on, increased ambient occlusion to create depth in the scene, added and reused a few construction props I found from the unity assets store, and furnished the lighting.

Now the environment looked set, but in order to make it more interesting, I had to make these levels on the epic mode to be more challenging than the story mode, to accomplish this, I:

  • Stretched each level to have their exits far from the player, and the only way to win is by eliminating the bosses.

  • Created a puzzle-like feature in the levels where the player has to hurry to leave an area in time, or make it onto another platform on time.

  • Added traps like burning nozzles, platforms made of pins and nails,swinging mace, etc.


And finally furnished the levels with post processing and outdoor sunlight lighting.

Monetization

I always loved the concept of free games. Games are supposed to be fun, enjoyable and accessible to everyone, you don't have to be rich or poor, if you have a phone, just play, so why not make this one free. And that's what I did. But of course, a developer's gotta earn from their hard work, right? That's where monetization comes in.

I integrated two monetization techniques in this game

  1. In-App Purchases(IAP)

  2. In-Game Advertisements(Ads)

Any talented platformer gamer could easily complete the entire levels in this game with Akira's default abilities and weapons without even needing a boost. Some might find it quite hard to achieve the same feat, so they'll have to either purchase power-ups by spending real money that unlocks all of Akira's abilities and weapons or watch advertisements in the game and unlock their preferred weapon completely for free.

Advertisements placed inside the game makes it possible for developers of the game to earn from the game each time an ad is displayed through the game. So I partnered with Yodo1 and integrated their advertisement solution called MAS, and with the help of Jamal, my customer success manager at Yodo1, I strategically placed ads in various parts of the game, and implemented three variations of these ads to maximize the game's revenue:

  • Banner - These are ads placed at either the top or bottom of the screen and will be displayed when the player is on the game but not currently playing a level. This was done this way to earn from the ads and to avoid a scenario where the ad disrupts the gameplay flow thereby causing the player to rage quit or uninstall the application.

  • Interstitial - Full screen ads that are placed at the end of a level. When Akira completes a level or dies in a level, a brief ad is played on the screen.

  • Rewarded Video - Full screen ads that are in place to grant Akira, an extra life force, unlock a weapon or ability. So each time the player wants a power up, they select the ability/weapon, an ad plays, at the end of the ad, the ability/weapon is unlocked.

A great strategy I had to ensure a good income from ads is to link the weapons and abilities in a way that in order to unlock the most powerful of them, you must unlock the least powerful. And if the game is exited, the player would have to watch the ads again to unlock them.

Optimizations

A game is enjoyable when it is actually playable, this means that there should be no lags, unnecessary slow motion or performance spikes throughout the gameplay.

Of course, another cause for concern with optimizations is the final build size, many people would more likely install and play a low download sized game than a huge sized one.

With both of these ideas in mind, I began making this game. So...

  • I always chose low poly models because they have lower vertices and triangles that essentially makes the GPU's work easier.

  • I use Unity's URP and utilized it's forward rendering and lightmapping technique to create realistic lighting that are only calculated once instead of every frame for every static objects in the game(static objects are those objects in the game world that do not move) and used URP's low performance shaders like the Simple lit, Baked lit and Unlit on meshes depending on their purpose in the game.

  • I shrunk down texture sizes to create faster load times, reduce memory footprint and increase rendering performance

  • I reduced CPU's workload by either combining meshes or utilizing Unity's draw call batching techniques(Dynamic batching and Static batching), then used Unity's occlusion culling and a custom code I wrote designed to reduced the amount of visible geometry and unnecessary computations done.

  • I setup audio load types for efficient RAM utilization.

  • I reduced realtime shadow qualities.

  • I recycled objects like the weapons by using the object pooling technique.

  • I made use of the frame debugger, profiler and logcat windows to evaluate the game's performance and optimize where necessary.

  • I took advantage of the android app bundle(aab) delivery system to provide a lower download size for the game on google play store.

EXBOTS REVOLUTION - PC

The PC version of this game features lots of upgrades mostly in graphics, visuals and gameplay mechanics. Using unity, I employed procedural animations(with animation rigging), fully adaptable and scalable keyboard, mouse and controller support(with the new input system), and GPU based particle simulations(with the VFX graph) to produce a more enjoyable gaming experience that surpasses the mobile version due to mobile phone hardware limitations.