Developer: Alberto Santiago Game Title: GoatPunks Release: January 20, 2017
My name is Alberto Santiago, former 3D artist for animated feature films and TVCs, turned indie game developer. For the past three years, I’ve lived in the mountains removing myself from the 9-to-5 grind to concentrate on learning and building a game from the ground up. Having minimal programming experience, the challenge was great, but the excitement high. I’m the sole developer of GoatPunks, putting together all the code, art, sound and marketing.
Inspiration: Why Goats?
I was venturing down a main street in Sydney when I noticed a man casually walking his pet pygmy goat – not something you see every day, especially in the city. After watching amazing clips of tiny kid goats running and bouncing around, jumping off obstacles and into each other, I thought they looked like they were having so much fun. There were also videos where goats climbed steep cliffs and walls just for the sake of climbing. It seemed a peculiar behavior for an animal with hoofs to climb the craziest terrains. The tower structure of my game was already in the back of my mind, and the idea of playful goat characters seemed to fit.
Building the Levels
I began by immersing myself in the concept of different worlds, collecting as many visual references as possible to suit the stage theme required, e.g. Steampunk, Candy Mountain, Desert Punk, etc. This process took quite some time to find the right elements and pieces to work in a tower format. Once the mental image was clear, I laid down a sketch then built the production model from there. For example, the Hipster Punk stage had a grimy city street facade inspired by an anime called Tekkon Kinkreet.
When designing a game, it’s common to assign words to a set of foundational pillars to help govern the decision-making process. For one of my pillars I had the word “Cute.” I felt the Japanese had this idea down to perfection. They created monsters and demon characters but still made them cute. I tried to bring this idea through to all stages of the game, using rounded shapes and pastel colors to soften harsh lines and give a gentle storybook feel. Studio Ghibli’s works, like Totoro, Howls Moving Castle, and Nausicaa, provided a template. Showcasing GoatPunks at Tokyo Game Show, I felt I accomplished this level of cuteness. Every Japanese girl that played the game said excitedly, “Mecha Kawaii,” which translates as “Very Cute.”
Transitioning 2D Sketches to 3D Worlds
The way I use sketches is more like a bookmark to remind me where I leave off mentally. The 3D structure was always 3D in my head, so there wasn’t much of a translation issue. After working with 3D art/design for ten years, it was quicker to visualize things in a 3D state.
There were small things I hadn’t anticipated once I built the tower. For instance, the head clearance for the goats was too low. There were protruding geometry shapes covering the goats’ heads as they ran underneath a platform. I ended up stretching the stage vertically to give each goat a bit more head room.
The challenge of creating a variety of maps was giving each stage a different game mechanic. GoatPunks gameplay required various methods to boost a player to the top of the mountain. This was challenging as there were only so many ways to propel a player upwards, and each of these functions had to fit within the context of the stage. Eventually, I came up with eight different boost methods: from hopping on a bird and waiting for its wings to spread, and then pulling the trigger to get launched; to bouncing on jelly; to traveling through tunnels; to getting shot out of steam cannons; to riding on flaming lanterns, etc.
A Unique Art Direction
If I headed in too abstract an art direction or implemented geometric and rigid structures, the layouts didn’t work with the rest of the game; they became more like a mathematics textbook than a children’s storybook. Each stage had to fit within a certain level of fantasy.
Achieving Complexity & Scale
Each level design was constructed from a set of tiered models, ranging from non-distinct and repeatable to highly-distinct and sparse. The non-distinct pieces were put together like Lego to form the base structure of the stage. The highly-distinct pieces were used as decoration to break up the monotony and achieve an organic design look that scaled using a minimal amount of pieces.
Textures and UV layouts were crucial to finding the balance between tiled textures and image resolution. Each level used only one texture atlas for game optimization. Definition, lighting, and shadows were ‘faked’ by painting everything in the texture map. Eliminating real-time lighting made the game run more efficiently. A lot of design decisions involved a balance of both program optimization and trying to achieve the most visually interesting structure.
Tools to create Multiplayer
Regarding local multiplayer, the tools and structure used to accomplish this were all custom built within Unity. For online multiplayer, I’ve gone through various tools to try and get this to work. After a year, Unity’s first network engine was rendered obsolete. I then refactored the GoatPunks code to fit Unity’s new network solution. However, there were many limitations with this new setup. And thus I will now try Photon Unity Networking to get online multiplayer working.
Creating a local multiplayer game is quite simple. In my case, I needed to add four cameras and create four different sets of user interfaces. Online multiplayer on the other hand is tough. At first, I thought multiplayer online games mirrored everything across each computer and buttons were sent remotely to control a single instance of the game. I was very wrong. The way it works is creating separate games, one on each computer, and then syncing key variables across the network to make it seem like you’re playing the same game. Lag is always an issue. You have to prepare for events where variables aren’t sent fast enough. Both games on each computer must decide how to catch up with the delayed information. Things get complicated quickly with online multiplayer.
Player Objectives & Variations of Goats
The primary object of the game is to stay on top of the tower for 30 seconds to win. Once up on top, you can throw down bombs to defend yourself, essentially king of the hill in a very literal sense. Each goat has different characteristics that let you play in a variety of styles. These characteristics place a certain emphasis on one of four attributes: Speed, Shield, Charge, and Skill. A shield powerful character, such as the Steam Punk goat, will be balanced with low speed. Goats like the Ninja Punk are exceptionally fast but have little to no shield power. Ninja Punk goats race to the top and maneuver to avoid incoming bombs.
There are nine different characters in GoatPunks each with their set of skills, attributes, and home stage. Currently, there is Icey Punk, Ninja Punk, Desert Punk, Candy Punk, Hipster Punk, Totem Punk, Windmill Punk, Steam Punk, and Volcano Punk.
Cosmetic attributes or vanity items do not add skills to the existing assigned skill set of a goat. It’s purely for fun of customization, allowing players to select their favorite color combination or accessories to distinguish their character from the crowd.
Every character has a moment of invincibility with their shield. However, this moment is extended or reduced depending on the character’s traits. Steam Punk goats get invincibility time extended for longer protection. When a shield is no longer in invincibility state, it still protects the character, but the shield is lost if hit. One strategy in using this goat is to move up carefully and be ready to fend off other goats and falling bombs using your shield.
Importance of Multiplayer
Multiplayer was always the primary focus of GoatPunks. I built the game with the intention of playing it with friends in the same room, like I used to play Smash Bros and Bomberman in high school. There was a lack of party games for a while as most platforms focused online and on single player for accessibility. I initially intended to be on mobile until a few test runs of the game proved to be an isolating experience. Before giving up, I converted to a split screen local multiplayer to see how players took to the format. The amount of excitement GoatPunks received was ten fold. The trash talking between players was intense. That’s when I knew GoatPunks was finally getting somewhere.
Abilities and Power-Ups
Developing skills for goats was tricky. As with most things in GoatPunks, I invented everything from scratch, even down to the way you battle with other goats. I kept the controls as intuitive as possible. The way I think of the battle exchanges in GoatPunks is similar to the game Rock, Scissors, Paper, but I used Shield, Charge Attack, and Head-Butt. A shield can block a head-butt, a charge can destroy a shield, and a head-butt is quicker to knock someone off if they’re preparing to make a charge attack. These controls allow a combinational mix-up of strategies you use to try and stay on top. The intention of adding these abilities was to create a quick, intuitive battle to resemble the lightning fast decision making of pulling out a rock in a Rock, Scissors or Paper match.
The power-ups you collect along the way boost your characters’ ability. One strategy is to collect all the ammo power-ups at the beginning of the game. When you make it to the top, you can throw down multiple bombs at once. Because you can be so overpowered when you get to the top, I balanced that out by using a delay to reload the bombs. If a player fires three times continuously, there is a breathing point in-between barrages, giving other players an opportunity strike.
How do you make the experience fun and compelling in Multiplayer?
To keep the experience fun, I believe it’s about trying to level the playing field for players of all different skill levels ( i.e. beginner, intermediate, and master.) My intention is to cater a great deal to the beginner player, so everything is geared in their favor to have the most fun.
When beginners first pick up the game, they quickly grasp how to control their goat and even understand the general objective of the game. At an intermediate skill level, players begin to utilize abilities like shield, charge, and skill. To become a master, timing becomes essential to help you recover from a fall by pressing the action button as you bounce.
I designed the game so difficult for a master to win increases, leveling the playing field once again. I achieved the leveling indirectly by a function used to push forward an end game. Two seconds are removed from the total thirty seconds for every time you get your goat to the top after you’ve been spawned. A player who makes it to the top and falls ten times will remove twenty seconds from their total thirty. So every time they make it to the top they will only have ten seconds to stay on top and win. Balance is achieved between beginner players and master players. Beginners tend to make it to the top and fall a lot, reducing their time to win. Master players fall less often and so their amount of time to win is longer.
With online patches introduced to a lot of competitive multiplayer games, does it affect the way the characters/levels were originally designed?
Yeah absolutely, it can affect the way characters or levels were originally designed. This is the nature of game development. You try to predict as much as possible, but there is only so much you can plan for. Once your game releases to the real world you adapt. Developing a game in-house is only part of the way to completion. Once it’s released, it goes through another life cycle of evolution to become a game for everyone.
This year, GoatPunks showcased at SXSW, Casual Connect, PAX West and Tokyo Game Show. I prioritized the feedback and focused on what I believed would be the most impactful changes to benefit the game. My goal is to get through all feedback before the next convention; this approach keeps me on my toes.
At this point, GoatPunks has only been available as a private beta and has yet to be fully released. Feedback from beta-testers has shaped and influenced development of the game, Currently, the top request is for online multiplayer, my last hurdle to full release. I look forward to the interaction with the Steam community on release of the game.
GoatPunks has been in development for about three years. The gameplay time hasn’t changed all that much, although the metagame became more extensive and the goals of the game changed significantly. I’ve spent more time on the game than anticipated but enjoyed the diversity of the roles I played in the game development and learning all aspects of the industry. It kept me interested.
I must have re-written the game five times over. Assets have been discarded and game goals re-worked. But that’s all part of the learning process. You have to be willing to abandon the old to move forward. Over time, the style transitioned from a clean look, with no textures or faceted geometry, to a painterly, pastel, cartoon style I feel is unique with lots of personality.
It’s good to know the game I held so close for so long is catching people’s attention. When you’re a solo developer, it’s challenging to create any noise to get people to notice, so awards help greatly and provide motivational fuel to keep pushing ahead.
I’m proud in 3 years I learned to program a game from scratch, tackling advanced systems like artificial intelligence and online multiplayer. Three years ago it seemed impossible. Everything in this game is new territory for me, even the art style. Despite being a 3D artist, I never had the freedom to experiment with a style like this. Creating visuals for the game took me back to when I started when creating was about playing and having fun.
We thank Alberto Santiago for talking about the development process of GoatPunks.