Viva Sancho Villa
Contents
Gameplay Video
The Game
My 5th published game as a programmer, and 1st game as a designer.
I joined the team in June 2014, becoming the only programmer in a group of artists and animators who had never worked in a video-game before but wanted to make one. It became my responsibility not only to code, but also to lead the team in the development process.
In this project I was a designer as well as a programmer. Using Unity, I programmed the whole game: all the game mechanics, controls, enemies, bosses, etc.
And as a designer I helped the game become, from a simple idea of “let’s make a mexican themed runner” into the amazing game that has reached top places in the AppStore and Google Play.
Features
✓ 4 worlds
✓ 40 levels
✓ 6 epic boss fights!
Bosses
The idea was originally just to have a mexican themed runner with some fighting mechanics: jumping, slashing, and shooting. When joining the design process, I came up with some ideas to add more flavour to the game. Some of these ideas were simple, such as the addition of pets, bouncy platforms, vanishing platforms, moving platforms, enemy behaviours, switches to toggle objects, etc. On each of the 4 worlds we introduce different game mechanics that fit with the theme of said world. However, my most important addition to the design process was bosses.
Originally the game was going to have bosses, but the game mechanics would remain exactly the same for all of them: the player would be running while the boss is in the background running by his side and tossing stuff at him. I thought this was boring and repetitive, so I asked the team to allow me to design bosses differently, what I wanted was for each boss to be a completely new and different experience from the rest of the game. The team agreed and here’s how the bosses of the game ended up:
Boss 1 – Gordorco:
Design
The first boss of the game, here the character stops running for the first time and the player can now freely move him in every direction to fight a boss that becomes bigger and faster with each hit, bouncing all over the room each time he hits a wall. A simple boss fight to introduce the player to these new, changing game mechanics.
Programming
With the creation of this boss, I also created a system which allowed me to script different events for introducing bosses. I also had to create a base state machine that all bosses would need. Even though this boss only has one “stage”, so to say, the future bosses would be more complex and would require a strong, robust system so that I could have as many stages/forms as needed.
Boss 2 – Cochipuerco
Design
We considered the previous boss to be a mini-boss, so this one would be the first “real” boss. I wanted to convey the feeling of an epic fight (inspired by games such as “shadow of the colossus”), so the boss was made much larger and the main character would now fight him on horseback. The boss would have 3 different attacks: roll at the player with great speed, spit an egg full of tiny larvae, summon an acid rain which caused dangerous puddles on the ground. The game mechanics were very similar to the normal game: running, jumping, slashing and shooting. However, the scale of the enemy gave the fight a much different and unique impression without having to re-learn how to play the game.
Programming
This boss is the first one that has more than 1 stage, since he has different attacks. The systems I created while programming the Gordorco allowed me to have a much faster time with this boss’s state machine so that I could focus on making the attacks feel the way we wanted and for the fight to be epic.
Boss 3 – Cyber-Gordorco
Design
We liked our first boss so much that we decided to give him a second chance at beating the player. This time, however, the mechanics were changed slightly. Now the boss had a weak-spot, rather than being able to get hit anywhere. This increased the difficulty quite a bit and felt like a brand new experience, while the robustness of the original boss’s code allowed me to code this battle quite quickly.
Programming
This boss re-used most of the code from Gordorco with some new additions, so it was pretty quick to make.
Boss 4 – Cpt. Rehiloco
Design
I had once suggested that we should have a level in the clouds. The rest of the team quickly pitched some ideas in how to make it interesting, and the central theme of our cloud level became giant “skyscraper” corns. This level introduced the player to lots of new mechanics, such as moving platforms, bouncy platforms, etc. We wanted to transfer the true impression of the character actually being in the clouds.
Since the level was now high up in the air, I thought the best idea would be to have a flying boss, of course.
As a tribute to bullet hell/shmups that we played and loved, I decided to create a bullet hell boss. The player now shoots automatically and just needs to move his flying character around to avoid the barrage of bullets that the boss fires at him. The boss has different bullet patterns which the player must learn or understand in order to survive unharmed, and also summons some minions to help him out. While the coding of the boss itself was done quickly, the controls were pretty tricky to get right. After multiple attempts, trials and failures, we managed to find the sweet spot for the controls. Once that was done, this boss fight quickly became a favourite both inside the office and with all our beta testers.
Programming
My favourite boss to create. From the bullet patterns to the way the summoned enemies move, programming this boss fight felt like a synchronized dance.
Boss 5 – Rhino
Design
By this point of the game, the player already has lightning fast reflexes. And what better way to prove it than by making a boss consisting of twitch based mechanics. We didn’t want it to feel just like a “quick time event” level, instead we wanted it to be more like DDR/Pump it up: The boss charges at the player, they both have an arrow on top of their heads respectively, pointing in the same direction. Once the arrows are aligned, the player must attack in that direction. If he does it correctly, then the boss falls stunned, and the player can proceed to unleash a barrage of attacks on it during a certain timeframe. As his health decreases, the boss becomes faster and the player may even need to perform more than one correct movement in order to knock it down.
Programming
This boss was fairly simple to code, the difficult part was making it “feel right”. While the premise is quite simple, it took us different iterations of it until we found the right one.
Boss 6 – La Llorona
Design
The current final boss of the game, and a fan favourite of Mexican folklore. “La llorona” was planned to be inside a looping cabin, throwing stuff at the player. Again, I thought this was just too banal and decided to change it up. Based on the original legend of “la llorona”, a woman who drowned her children in a nearby river, I decided that the best place to place this boss fight would be in said river. To add a bit more of Mexican folklore, the main character would be riding a Chalupa.
La Llorona appears in her famous ghost form, cries (another important part of the myth) and goes underwater. Shadows will now appear on the surface of the river, moving around and, eventually, a pair of ghostly hands will come out trying to grab and injure the player.
She then comes back out and cries once again, this time summoning ghosts (her children) to attack the player.
The only way for the player to beat her (because his attacks don’t damage her in her ghost form) is to turn on the candle that sometimes appears, sitting on a floating log. During previous levels, the player had been taught that candles kill ghosts, so when he activates this candle, la llorona will morph into her solid, fleshed out form. Now the player’s attacks will damage her.
As her health goes down, the number of ghostly hands that try to grab the player increases.
This level also became quite popular with testers due to the interesting controls. The player’s movement does feel as if he were on top of a river.
Programming
The fight mechanics are the same as in the normal game, the interesting thing was making the movement of the player feel as if he were on an actual boat. The boss mechanics were fairly simple to create thanks to the robust state machine system.
Game Programming
Physics
The physics systems I coded for this game go from the simple jumping and running to sliding, double jumping, bouncing on enemies, bean jetpack, projectile physics, etc. Most of these were custom physics, since making them automatic with Unity’s physics system wasn’t enough for the feel we wanted.
Combat Mechanics
The thing that called the attention of our testers and reviewers the most is the game’s combat system. The jumping and running is nothing out of the ordinary, but once the character finds his sword at the end of the first level, a whole world of opportunities opens, it’s the true core of the game.
The combo system allows the player to create complex attack sequences to destroy his enemies. This game mechanic is the one that took us the longest to implement. Even though I programmed it quite quickly, it was then tested and tweaked multiple times until “it felt right”. The player can attack in any direction, while on ground or in the air, and some different attack sequences can trigger special moves that fire a special animation and send the enemies flying into oblivion.
Apart from the machete, there are other weapons in the game. See the Items section. However, all these other weapons have limited use since they either need ammo or just disappear some seconds after grabbing the powerup. This means that the main weapon and the one that mattered the most to us was the machete.
Each boss fight had its own unique combat mechanics as well, for more information on that, see the Bosses section.
Artificial Intelligence
In the game, some enemies just walk. However, some others have different behaviours. There are enemies that chase the player, there are enemies that fire homing bullets to the player, there are enemies that move in certain patters.
The most complex AI was for the bosses, which had their own state machines. For more information on that, see the Bosses section.
Items
The Revolver: the player’s secondary weapon. He can fire up to 6 homing bullets. After that, he needs to find one of the ammo boxes that are scattered in the levels.
The Yellow Pepper: the player is transformed into a fireball which runs faster and destroys everything in his path, not only enemies but also certain scene objects like boxes.
The Red Pepper: the player becomes a giant monster which walks slower but is able to spit an infinite amount of homing fireballs at his enemies (while the powerup lasts, of course). He can also jump, which causes all the enemies to fly away once he lands.
The Bean: this is a jetpack, which allows the player to reach higher places or to cross cliffs that he otherwise wouldn’t be able to. This item allowed the level designers to create different paths for the player to take, adding replayability to the levels.
Misc
Being the only programmer on the team, I had to code everything in the game apart from the aforementioned subjects.
A very important part was making tools so that the level designers, who had never used unity before, had an easier time building the levels. And while some level building tools were fairly complex, sometimes the most important tools are the simplest ones: in the editor mode, the player leaves a trail. This allowed the level designers to see the paths that the player takes while moving around the level, giving them information on how to place items, coins or even enemies better.
Links
To download the game, you can go to the following websites:
Chart Rankings
iOS
#4 in Action Games – Costa Rica (November, 2015)
#5 in Action Games – Argentina (November, 2015)
#6 in Action Games – Spain (November, 2015)
#4 in Arcade Games – Costa Rica, Chile (November, 2015)
#3 in Arcade Games – Spain, Argentina (November, 2015)
#6 in Arcade Games – Colombia (November, 2015)
#8 in Arcade Games – Guatemala (November, 2015)
#9 in Arcade Games – Mexico (November, 2015)
Reached top 100 in Arcade Games in 10 countries
Featured in “Best New Games” in 18 countries
Android
#3 in Action Games – Mexico (November, 2015)
#19 (overall) – Mexico (November, 2015)
#77 in Action Games – USA (November, 2015)
Reached top 100 in Action Games in 84 countries
All images from Viva Sancho Villa are property of 2DNutz