Hecticube Postmortem

Hecticube is a multiplayer pong-like mobile game where you shoot bullets at a ball in order to make it hit your opponent's goal. Instead of scoring points, each time a goal is hit it shrinks until it's completely destroyed. It's the first game I've ever made mostly by myself, and was a very fun and challenging experience. A lot of the project went swimmingly, but like most other projects, some things were just a nightmare.

 

What went right?

Visuals

If there is one thing I can say that I am at least 98% pleased with, it is the visual aesthetic of Hecticube. I am a fan of the phrase "less is more", and I think I nailed it with the art here. From what I have seen at events where I've showcased it, the art does a fantastic job of attracting people to play and even encouraging them to play more even just to witness it in action. This is one thing I wouldn't change a single bit. A good looking game is a game that everyone will show some interest in.

 

Gameplay / Fun

It took me a very long time to arrive at the final gameplay mechanics. This is because it started out as a PC World Cup themed Pong game which I decided to move over to mobile. Eventually though, I broke it down and remade it specifically for mobile and the end result has proven to be a very fun and challenging, hectic experience. I found this especially true in the multiplayer mode of the game. It was initially multiplayer only, and you really feel the excitement and energy when playing with someone else.

 

Sound Design

Hecticube's sound design was masterfully done by George Hufnagl. I will never forget the first time George sent me a video with all the sounds and music in play - it's as if he literally breathed an new life into the game as if he was a fire breathing dragon. It's magical. The sound perfectly compliments the visuals and they truly combine to convey the hectic nature the game's name implies. Getting a professional to do things you aren't especially great at will always be your best option. The sound ended up being the most expensive aspect of the development, but it's also in my opinion, the best aspect of the game. Thanks George.

 

Experience Gained

Hecticube marks the first time that I've done every aspect of the game (sound design excluded) from start to finish on my own. The experience was packed with victories and defeat. My biggest victory however was learning how to use Unity and vastly improving my minimal coding skills. Hecticube (World Cuppong) initially stated as a project for me to just learn Unity, and while I have so much more to learn, I think it was a great start for me.

 

What went wrong?

 

Lengthy Development Cycle

I didn't clearly define what my ultimate vision and goals were until way too late into the game's development. This lead me to constantly change the game and feature creep unnecessarily. Combine this with the fact that I have a full time job, and we have an extra long development cycle on our hands. If you are going to be developing a game (or any product for that matter) after already spending time and energy at a full-time job, you must have everything properly planned. Otherwise, a lot of time may be wasted as a result.

 

Released Unfinished / Updates

Because of how long the game was taking me to make, I decided to figure out what the minimum viable product was and launch with that instead. This is my biggest regret. Not only did I end up launching only part of the vision for the game, but I think this also hindered the sales as well. Also, after the launch, I felt more and more unmotivated to actually push major updates because I already hit my launch deadline and the game was out in the world. This has been one of my biggest takeaways. Finish your initial vision, then launch. Don't let anything rush your process and negatively impact the product.

 

Platform Switch

As I briefly mentioned earlier, Hecticube originated as a PC game called World Cuppong, a World Cup themed Pong game. At some point in the development, I decided to try it out on mobile and I was initially sold on the idea. It was only after extensive play testing that I finally realized that the game just wasn't as fun as it was on PC. I couldn't pin point exactly why that was at first, but then i realized that it was just not a right fit for the platform. Instead of trying to rethink the idea and how it would work on mobile (or even just going back to PC), I was trying to fit a square peg into a round hole. Eventually it all worked out nicely, but it definitely added significantly to the development time. Know your platform and build specifically for that.

 

Android Fragmentation

Speaking of platforms, Hecticube launched both on Android and iOS. On iOS, it's a beautiful experience. It runs exactly as I want it to. On Android however, it drastically varies. Now, if you know me, you know I am an avid Android user and fan and I'm usually using the latest hardware from Google. However, developing for Android can truly prove to be a nightmare. On some devices, Hecticube doesn't even have shadows. On some it lags. At one point, the game consistently crashed, but only on newer devices. How is that even possible, that the newer ones crash? It was just very frustrating, and looking forward, I'm definitely going to have to find a better way to deal with Android (that is, if I even stick to mobile at all).

 

Lack of persistent marketing & promotion

I think Hecticube came very strongly out of the gate with a launch ad, a plethora of tweets and support by other devs and friends, and a few articles already written up. After that however, promotion fell pretty flat. This was partly due to me being busy with my day job, and partly because I simply didn't have everything planned out for post launch promotion. Don't wait till your game is launched to think about and make promotional and marketing material. Getting your game known is just as important as making the game itself - if nobody knows your game exists, it's almost as if you didn't even release it.

 

Price

Lastly, the price. I was torn all throughout development on the issue of whether or not I should have made the game free with in-app purchases or a paid app. Some industry vets who I trust said "Hey, it's your first game. Make it free so that you'll get more eyes on it." Others who I equally trusted and whose opinions I equally valued said "No, always make it paid, even if it's just a dollar. This helps to add worth and value to the game and makes it get taken more seriously." I ended up following the latter advice and Hecticube was released at a $1.99 price point. In retrospect, while the artist side of me is still quite fine that I made it paid and lost potential gamers, the developer in me just wants everybody to get their hands on it. Also, though the game does have a single player aspect to it, the local multiplayer is where the real fun lies, and making it a paid app I feel has hindered people from wanting to delve into it. This is why, as of this posting, Hecticube is now free on both Android and iOS. I really want everybody to experience the game, and judging by both the low conversion rate (store views vs actual downloads) and the amount of pirated copies, I think it's safe to say people are interested, just not interested enough to buy it yet because they don't know me as a developer yet. I'm not sure how much that matters on mobile, but we'll see.

 

Conclusion

All in all, I am very proud of Hecticube, especially considering that it's my first solo effort and the second game in general that I've ever worked on. While (in my opinion) I succeeded in making a very solid mobile multiplayer experience, there were ultimately a few issues that stopped it from achieving its full potential, but those were very necessary lessons for me to learn going forward as a developer.

If you haven't gotten a chance to play it, as I previously mentioned, Hecticube is available for free on both iOS and Android. Feel free to check it out and if you do, please leave me a review on the store! Thanks for making it all the way to the end of this article, and a special thanks to those who followed and supported me on my first of many game dev adventures.

The Art Direction of Hecticube

Although I worked on every aspect of Hecticube by myself (excluding the excellent sound design done by George Hufnagl), I wanted to write about the Art Direction in particular because that is what I am well versed in. Game design and especially programming are things I am very new to and I've just been kind of winging it. Maybe one day I'll write about my misadventures through the world of programming to really give you a laugh.

 

An evolution of the past.

Screenshots from Shapes & Sound: The Shape Shooter

As a lover of aesthetically stimulating design, I decided that Hecticube would be a slight departure from the last game I art directed (Shapes & Sound: The Shape Shooter, which was developed by myself and two other Jamaicans under the name ARRG Studios), at least in some aspects. Shapes & Sound shares a similar aesthetic in that it is very minimal and geometric. We had decided however that we were going to go against the grain and stick with a fully monochromatic colour palette. It was a very fun yet challenging design limitation because it challenged me to create minimal graphics that had to stand out on their own without the use of any colour whatsoever. This meant that I couldn't rely on colour to save any visual flaws, but instead I had to make everything as polished as I could.

 

Squares. Squares everywhere.

Taking the geometric nature of Shapes & Sound and simplifying it even more, I put design limitations on myself to make every element in the game entirely out of squares (though Hecticube is actually made entirely of three dimensional objects, for the purpose of this post we're going to pretend that everything is flat) as well as to not use any textures or patterns. I broke the first rule in a few places, namely with the play / back icons which are triangular, as well as with the game's text. Everything else, however, has a simple four sided face, and there are no curves in the game (again, with the exception of the text).

 

Visual preferences.

Since Hecticube is so minimal, I wanted to really push the visuals by adding very vibrant colours throughout the game. Still, I limited myself to nine themes that the player could pick from, each consisting of five colours - the main colour, the secondary colour, a colour for each player's bullets, and the brightest colour which was usually very close to pure white, used for the main cube and for text. Further pushing the visual design, I decided that I didn't just want to use the default Unity shadows but I wanted to utilize a custom material instead which would give me full control over each object's main colour and shadow colour. The end result was that I could make the shadows more rich and saturated, or, I could make them a completely different colour all together from the original colour, making the game feel even more artistic.  

 

 

It has a pulse.

For those who don't know, I come from a motion graphics background, and so I am a huge fan of a wide variety of animation styles. I am also one who believes that it's all in the details. "Every mickle mek a muckle" as Jamaicans would say, meaning everything adds up to make the final product. Coming from that background in coherence with having a keen eye for details, it was imperative that Hecticube was rich with animation. I didn't want to just make the game work and stop there. I added animations, no matter how minute, in every single area that I could find that would benefit from it. Don't get me wrong, I wasn't going to add animations just for the sake of adding animations - less is more - but if an animation could further polish the game or especially if it enhanced the player's understanding of the game, it was added.

 

My ultimate wishes for Hecticube is that you and everyone else has a wonderful experience with it and that it will forever resonate with you. However, if for some reason the game just isn't for you, I at least hope that you enjoy and appreciate the visuals it has to offer.

“F5” (Refresh)

 I’ve been working on Hecticube from about some time in June, right before the 2014 World Cup. Back then, it was just a PC game called World Cuppong. Actually, it started out as just me trying to making Pong, then it became something a bit bigger. Since then, I’ve finished World Cuppong, tried to make World Cuppong into a mobile game, then at some point realized that it just wasn’t the same and it evolved into the Hecticube of today.

Since I started, I’ve been maintaining (I’m using that word loosely) the same Unity file and the same scripts. The game has gone through at least 4 different controls schemes and 3 different main gameplay mechanics. On top of that, I still have no idea what is causing the game to crash on new devices such as a Moto X 2014 or a Samsung Galaxy Note 4. So what is a dev to do? Refresh.

I made a brand spanking new Unity file and I’m in the process of making brand new scripts, referencing some of the old code I wrote mixed with newer, better ideas of how to make the game run. This way too, I can more accurately figure out what the bug is that’s making the game crash and kill it. I want to smush it under my bare feet until it’s not even recognizable as a bug anymore. I’m out for blood… Okay that may be a bit much, but it’s seriously, pardon the pun, bugging me.

Hopefully I can work all of this out while making the game run more efficiently. Once I get back to where I was before the refresh, I’m not sure what I’ll tackle yet, but it’ll either be implementing AI or power ups. I’m leaning towards the latter because If I do the AI first, I’ll have to worry about making it work with power ups later.

Although quite daunting, it’s actually quite nice starting something from scratch. Quite, refreshing.

Logo Animation

I finally got a chance to animate the logo! I’m so thrilled with the final result. This is also the first time I’ve animated something fully in code too, so I’m pretty pleased that it works so nicely. Good thing it wasn’t a more complex animation else I’d be in trouble haha.

Basically, what’s happening is a few camera tricks. First off, the game uses an orthographic camera, meaning that no matter what the z depth of an object is, it always looks the same size. Next, there’s actually a blue plane which the shadows are being cast upon. The letters aren’t fading on, but instead they are changing from the same light blue as the background to white (I just used Color.Lerp). To make the shadows grow, I animated the letters in z space so that they start off flush with the plane and end up protruding from it - also the letters (and everything else in the game) are made in 3D. Put these together with a nice offset in time, and ladies and gentlemen we have a logo animation!

Mini “Android Fragmentation” Rant.

The following is strictly a rant about my latest experience with Android fragmentation. I apologize in advance.

Developing a game (and by extension, any app I suppose) for Android is truly a roller coaster ride. While you have some awesome advantages like being able to easily drag-and-drop a build of the game to the device and installing it - all free of charge, you also have some disadvantages. One disadvantage, and probably the biggest one, is fragmentation. Jah know, I couldn’t hate that word more. Android fragmentation has been complained about well documented around the internet so I wont get into the specifics here. Basically, Android fragmentation talks about the hundreds of android devices there are, all made by different companies with different hardware & software (in comparison to iOS which has less than 30 devices which have all been made by one company - Apple). I’ve experienced it before in the form of a game running slower on one device than it would on another, but I experienced something brand new today with Hecticube.

I own and test on a Nexus 5, so I figure that, you know, the game will run the same or better on anything newer than a Nexus 5, and it will run the same or slower on anything older / with less impressive specs. I’ve tested it on a Galaxy Nexus (old phone) and while it does experience some lag, it runs. Okay cool. Tested it on some other devices. Worked like a charm. In comes the brand new 2014 Moto X. Crash!… I’m sorry, what? How does it crash on a brand new device (with better specs than my Nexus 5 too) when old, lesser spec’d phones are running it without crashing? It really rattled my brain. The same happened with a Samsung Note 4 and another new Moto, the 2014 Moto G. At this point I was thinking, hey, Hecticube must just not like new things! That must be it! But no, that doesn’t make any sense.

At the end of the day (i.e. as I’m writing this) I have yet to figure out why exactly it would crash on those newer devices while on older ones it worked just fine, but at least I figured out where it was crashing and resolved the issue. I’m fine with / have accepted the fact that fragmentation sometimes works like PC fragmentation does, where basically old stuff can’t run certain things that new stuff can. I am not fine however with these random crashes on new things. I thought that’s the entire point of them being new! Hopefully, I don’t run into any more serious inexplicable fragmentation issues, especially because I don’t want to have to harass my friends to try build after build to see if this / that works or doesn’t again (special thanks to those who were patient with and helped me!) or waste an entire day again.

End Rant.

New Mechanics

Hello friends. I’m gonna keep this short and sweet for you guys. I was struggling to make the pong-like controls work for a touch platform, and I lost what made the game initially fun. So, I changed up the main mechanics. Instead of the players controlling a bar to hit the ball back and forth, players now shoot little square shots at the ball in order to get the ball to hit their opponent’s goal. That’s all. I’ll start posting more frequently again in order to not only keep you folks up to date, but also to keep me on point & motivated.

Touch Controls

     It is currently 6:58am. I can hear my roommate moving about and starting her day. The sun is still rising, casting beautiful light on the city that never sleeps. It’s the perfect place for me, clearly, because I never slept either. I was up working on HectiCube making the necessary changes to it to make it work on phones & tablets - it’s surprising just how much you may have to change depending on the game. I thought it would be really simple, but of course, what works in my mind will probably never work exactly the same in reality. For the most part, it was a smooth (but tedious) process of changing variables to suit the new portrait view of the game. I found that the game’s nature lends itself well to using one hand (maybe two with a tablet), and utilizing the portrait view simply just makes sense for two people using one device. Once all that was done, my next task was to change the control scheme for the game. When it was World Cuppong on the PC, it was just simple directional movement using WASD or the arrow keys and I used physics to make the characters move. Seeing as how touch screen devices have no keys, alternate paths had to be taken. I pretty much spent my entire night testing a few different ways to control the characters. I knew for sure that I wanted the player to have direct control over their character by tapping the screen and dragging them where they want to move them, I just wasn’t sure how to accomplish this.

At first, I had taken the code I used before and tweaked it so that if you pressed above the character, it would go up, below it, go down, etc… Well, that was a bust. The character would never stay still and kept overshooting where it was supposed to be going =/. Next I tried to make the character kinematic instead of using physics. This worked pretty well in terms of moving the character, but then I had an even bigger problem. The ball wasn’t responding how it was supposed to to the character. It was barely moving at all. Eventually my friend Audley said that because I essentially disabled the physics on the player, it wasn’t adding any force to the ball thus making it not move at all. Thanks to Google however, I found out how to essentially “Lerp” but with velocity. Problem solved. Another issue I was having was figuring out how to make the device register touches on both sides of the screen without them interfering with one another, but I gave up on that after a while and decided to focus on just the character movement. I guess I’ll go back to that next. 

Mobile development is a whole different beast from on the PC, but I accept the challenge, and I will slay it.

Introducing Hecticube

Hello friend / fan / fellow developer. You have arrived at the lovely home for my new game, HectiCube. Over the course of the next year (ideally I’d like it to be “finished” within a year) I will be posting my progress, discoveries, troubles, GIFs, videos, builds, and everything else relating to the game.

I’ll try to update it as much as I can once there’s something good to post. Hopefully, you’ll be entertained and hey, maybe you’ll even learn something.