Welcome!


Welcome!

This site showcases the thesis capstone projects for the Full Sail Mobile Gaming Master of Science program. Students completing the program post their end of program project self evaluation here examining what went right and what went wrong during production.

The site provides examples of all completed projects, without regard to the quality of work. Final faculty evaluation of your project is separate from your postmortem. It is a place to share student work and start dialogue with faculty about completed and upcoming projects.

If you are adding a postmortem for a completed project to this blog, please do your best to provide a meaningful meta-level evaluation of your project. This helps students currently in the program have a better understanding of the critical points related to independent production, game development and design and project management. The template for the blog content and instructions can be found in the first post from July 2014.

Thank You,
MGMS Faculty

Sunday, March 27, 2016

Capstone Game Post Mortem: Robomancer

Game Summary: A turn-based tactics game aboard an abandoned space station

Author

Joshua Fox

Title

Robomancer

Genre

Turn-based tactics

Platform(s)

Android, eventually iOS and Windows

Revenue model

The game will be released as a free demo, with the first few levels included. Players wishing to play the full game can purchase the full version for $4.99.

Development tools/Language

Robomancer was created using Unity and C#, with art assets created in Maya and Photoshop.

Game audience

The target audience for this game is fans of other titles in this genre, such as Final Fantasy Tactics, XCOM, Fire Emblem, etc.

Copyright/Reference

Robomancer © 2015 Joshua Fox


Backstory

Sound Bite

One man's junk is another man's robotic army.

Executive Summary

Robomancer is a top-down, turn-based, tactical RPG set on a space station discovered by the main character. The hero finds the station is full of powered-down robots, and using his technical know-how he powers up a few and explores the station with them. The game features tactical battles in which positioning is key: the main character is more vulnerable than his robotic allies, but he also must stay close to them in order to direct them around the battlefield.

Inspiration

Science fiction stories have always fascinated me, especially those involving space stations--Star Trek: Deep Space Nine is one of my all-time favorite shows. Combine this with my love of tactics games, and you have Robomancer. I wanted to create a game that included the same feeling of danger and tension as the XCOM series as well as a diverse cast of characters and abilities like Final Fantasy Tactics into something uniquely my own.

Ideal

The initial vision for the capstone project was to create a slice of the eventual game. During the design process I included far more elements that I could implement in the capstone time frame alone; this was done in to create a cohesive design. Since the goal was to create a small slice of the overall design, for the most part I was successful. I would have liked to have had more visual content in the game in the form of character models and animations, as it would have added a lot more variety for the player. From a technical perspective, however, I think I achieved what I set out to do. Going forward most of the effort will be spent on creating additional content, though there still are some systems which were not in the capstone project that need to be implemented as well.

Gameplay Screencast



The Critique: What went right…

Unity

Unity is a powerful engine with a lot of capabilities. It is very easy to pick up and get started, though it is not without its own challenges when trying to something complex. Using Unity gave me a good start on my project, as all of the core systems for any game (a renderer, level editor, etc) are already in place.


Unity's Asset Store

Early on in the project I found some content packages in the asset store that allowed me to fill out a large portion of my game's assets (at least for the prototyping/capstone process), so I could focus on making those assets do something interesting. The asset store has a lot of good content which can provide solutions to common problems, as well as act as a learning tool in some cases.


Grid System

One of the first big systems that I wrote for Robomancer was the grid system. All unit actions and AI behaviors revolve around this system--finding units in range, determining a valid movement path, etc. Though I added to this and tweaked it a bit as the project progressed, by and large I got this system right from the beginning. A few extra bits of functionality here and there in the planning stages made later features which utilized the grid much easier to implement.

The 3D level on the right, and its grid representation on the left


Lightmapping

Unity's lightmapping system allows for light detail to be calculated and then "baked" into textures called lightmaps. These textures are then rendered on top of the static geometry at run-time, in lieu of using real-time lighting . As a result, the final rendering cost for an object using this method is much less than it would be using a more realistic, dynamic lighting model. Using these lightmaps, I was able to achieve a great deal of visual quality while still maintaining a high level of performance.


Another useful element to go along with lightmaps is what Unity refers to as Light Probes. Light Probes allow a moving object (such as the characters in the game) to look up information about the baked lighting, and change the colors of the objects based on their position in the level. What this means is that dynamic objects are affected by the lightmap information to give the impression of a detailed and dynamic lighting model. The result is not entirely realistic, but just hinting at a bit of realism can make a huge difference.

Light Probes hinting at realistic lighting



The Critique: What went wrong…

Unity

This was my first large project using Unity. Prior to this, my experience was limited to a tutorial here or there, and often those only covered the basics of the editor: dragging a GameObject onto a script variable, creating a Prefab, and so on. Creating Robomancer has been a crash course in how to use Unity on a deeper level, and I had to learn as I went along. Unity is a very flexible engine, and someone using it can accomplish virtually any task in a variety of ways. Unfortunately this is a double-edged sword, as some ways are better than others, with no real guidelines as to which is which for someone not completely familiar with the engine (e.g. me).

This is not the fault of Unity; the engine is there to support the developer's project, not structure it for them. This project forced me to develop some more organizational skills, something I often struggle with. Knowing what I know now, there are some things I would have structured differently from the beginning, and some things that I will rewrite once I resume work on the project.

Asset Store Content

Not all asset store content is created equally. The assets that I used for the bulk of the environments had issues with baking lightmaps, and I spent a fair amount of time attempting to debug the problem. Eventually, I discovered there was a problem with the way that Unity was importing the assets, and that it was a known issue with the version of Unity I used for the project (which was 5.2.1). A Unity developer had mentioned in a forum post I came across that the bug was fixed in a newer version of Unity, but I was reluctant to update in the middle of a project because that can be a risky thing to do. I found a workaround eventually, but the time spent trying to resolve those issues could have been spent elsewhere.

Lightmapping artifact from an Asset Store mesh


Incomplete Planning

There is the expression which says someone "Can't see the forest for the trees." It implies a person is missing out on the big picture because they are focused on the smaller details. I often have the opposite problem, in which I can't see the trees for the forest. I see the big picture, but the small (and often critical) details are overlooked. Early on in the project, I overlooked some of these details when planning some unit abilities, and the visual aspects of these abilities (unit models, animations, etc) were not planned. The features were implemented, but during usability tests everyone playing the game was confused about what was happening--understandable, given the lack of visual cues. Better planning at the beginning stages could have alleviated this.

Tutorial

I created the tutorial as my first level, and this ended being perhaps the worst decision I made on the project. First, I had no way of scripting level sequences or events (and didn't have time to create one), so every step of the tutorial had to be hand-crafted. I had to rip apart some existing functionality in order to be able to essentially pause in the middle of something and check to make sure players performed the correct action for that part of the tutorial.

This was all very tedious, but the real problem is that other game features were being implemented or tweaked after they were created for the tutorial. If I changed the way a system worked, I would have to make sure that the tutorial version of the system was modified as well. I made numerous tweaks and adjustments to the game after the tutorial was created, so I had to rework it over and over again. Going forward, I would save the tutorial until the very end, once I was certain the game and its features were finalized.


Summary

Overall I am very happy with my capstone project. I think the design is solid, and the implementation so far is good, given the tight time constraints during the last few months. Going forward there are some areas that need a bit of work, and there are still some missing systems and features, but this was only ever meant to be a slice of the final product. There are three big areas that I will be focusing on in the months leading up to this being released as a finished product.

Systems Redesign

Knowing what I know now about Unity, there are some things I would like to go back and change. How certain classes interact with each other, how GameObjects can be created dynamically, these types of things can be improved to make it easier to integrate into other systems later on.

Level Encounters

Currently the levels in the game play out as just an arena for the two teams to shoot at each other. Long-term, I would like to have levels play out as individual scenarios, with goals or objectives for the player along the way. This will make the game feel more like a progression through the levels (and the space station in which they are located), which is one of the overall goals for the game.

Asset Creation

The placeholder assets I used for this game were fantastic overall, but they are just that, placeholders. The main character needs to be created from scratch, as do many other units and the environments themselves. Having never created much content for a mobile game before now, I look forward to the challenge of creating interesting art assets that will run well on a mobile platform.

Publish

I plan on releasing Robomancer in mid- to late-2016. I would like for it to be completely finished by then, but if only the first few levels (i.e. the demo) are complete, I will still be releasing it then, with additional content to come out later as an update.

References

Fox, J. (2016). Robomancer [Android video game]. Oviedo, FL.

Saturday, March 19, 2016

Capstone Postmortem: Evolve or Die

Capstone Postmortem: Evolve or Die
Evolve or Die
Game Summary:
Game App Icon









Title
Evolve or Die
Genre
Action / RPG
Platform(s)
Android
Revenue model
Interstitial ads periodically during menus
Development tools/Language
Unity3D / C# Scripting
Game audience
Ages 10 – 40
Primarily developed to allow the largest target audience however between the learning curve and reading requirements it kept the audience between a certain age range.
Team
Matt Fenderson – Programming and Design
Copyright/Reference - cite yourself
Matt Fenderson (2016). Evolve or Die [Mobile Application Software] Virginia
Backstory:
Sound Bite
Challenge your opponents with a fight to the death, win and be rewarded with experience to evolve.
Executive Summary
Co-op online multiplayer matches, play with others against AI in a fight to the death to win your rewards in which you can use to gain more power.  Play as a creature that can grow and change into much more, choose your path and determine your own destiny!  Each player can choose to follow a path that suits their play, these paths branch and allow their play to grow and change into much more.  While other games may pit you against your enemies, never have you done it in such a unique manor of evolutionary style!
Inspiration
Many RPG’s and Action games such as Diablo, but with a different play style, in what I like to call a “Leveler” where the fun comes from building upon your character and growing. 
Ideal
While many games play a single protagonist I was going for something slightly different in which you play as a morphing and evolving creature that while you have your main game player leveling it unlocks and allows your actual physical being to change, unlocking additional stats and “abilities”.  Hopefully as this game in itself evolves, additional special attacks can be associated with each creature to truly unlock special attacks that could have effect on gameplay to give more reason for choosing between which creature the player would want to be.  The original concept of the single attack method was developed to ease learning time and make playing on mobile platforms easier.
Demo Screencast:
The Critique: What went right (Please include screenshots where appropriate)
Design & Aesthetics
Terrain Development

While a lot of design issues arose while creating Evolve or Die, one of the things that did go right was the terrain development, initially I had thought to use a single layout and swap out some textures to keep resources low while making it look like you’re in a different place, however it did not have that effect, it was very clear that the arena was the same thing with different textures.  So I had to go back and look at this, which I am very happy for, above are a couple full views of the terrains that players can play in, while still requiring flat areas to be walkable having the 3D elevation and extra detail for each terrain really helps get a player immersed in the scenery.
Project Management
I utilized Sourcetree as a UI for committing my project to Underdog Repository.  This helped enable me to keep backups and be able to revert to solid builds in case of something going wrong.  One practice that I utilized was prior to “risky” development or changes, I would commit a current state of the project with comments of what I was about to attempt, this enabled me to have a specific launch point if that risky process did not pay off and I just wanted to go back to a solid state.
Development
The best thing that happened to this entire project was the requirement for a complex AI, I developed an editor tool that would become a layout for easily selecting maneuvers in certain situations that allowed for the aI to pick the best possible maneuver given the current state of the battle.  This process utilized intrinsic indicators, parameters that are inherent to the match, such as the player’s creature types, number of players and the AI creature type.  This was cross referenced with extrinsic behaviors, things that are currently happening to the match that change over time, such as is the player moving towards the AI, player’s current health and AI’s health.  With as little as 3 modifiers (3 intrinsic and 3 extrinsic) I would have up to 21 potential situations that the AI would be able to pick the best behavior.  In my current build there are 525 possible situations that the AI can analyze!  Additionally, I have created the tool to programmatically build the combinations to allow for an increase/decrease in parameters as needed so as not to have to hand create each of the possible lists.  Also, each of the maneuvers (the option that can be selected from) is created as an enum so as additional options are created they are stored in the option list to choose from.  Here is an example (part of it) of what the tool looks like in use:

So simple and easy to use yet powerful to allow the AI to deduce the best choice for the situation, furthermore keeping a very organized layout to allow making changes stress-free.  
Testing
Testing was conducted on a multitude of devices, including the Bluestacks emulator, the target device (NVIDIA Shield) and some various smart phones.  This helped to ensure that lag was limited and that no matter the screen resolution the UI and camera worked correctly given the various devices.  Additionally, profiling was conducted through ADB (Android Debug Bridge) connection from Unity3D to the Shield device to get more real time profile updates from the actual device.
Business Model/Plan
In creation of Evolve or Die I relied on assets I developed, creative commons assets (freesound.org) and free assets from the Unity Asset store.  This kept costs down to nothing and allowed for quickly implementing design and layouts of environments.  Additionally I utilized the Google Admob package for Unity, which has no cost and simply requires an account (also free), to be associated with the Unity Game.  Utilizing the Google Play Game Services I was required to purchase the Developer License in order to enable cloud save and multiplayer which had a cost of $25 (Good for life).
The Critique: What went wrong (Please include screenshots where appropriate)
Design & Aesthetics
One of the largest design flaws in Evolve or Die are some of the feedback loops not entirely providing appropriate reactions to player’s inputs.  For example, as player’s level up and unlock new creature evolutions there isn’t any feedback as to this happening, a player would need to intrinsically know to check what level they are and look at the evolution tree to see any new creatures available.  In the future this could be fixed by providing animation screens of the new creatures being unlocked as well as level up notifications to show a player that something important has happened.  Ultimately I have found that my major weakness in game development is design, having this knowledge will really help in my progress as a game developer and I can focus on this weakness while relying on my strengths to push through and make myself better.
Project Management
While focused on development only, there were a lot of design related issues that could have been looked at, unfortunately due to time management and the development tasks already assigned this got pushed out of the picture. 
Development
While developing the AI Selection matrix there was some tricky issues happening that caused a lot of extra time to be wasted because the problem was not readily apparent.  The AI Selection Matrix utilized a 2D array [,] that associated the maneuver enum assigned by the user.  Unfortunately, unknown during the initial development these 2D arrays are not serialized, which means that as soon as the game was played the array was initialized and cleared out.  Once seeing this I wrote to the player prefs each of the array positions index of the enum, again unfortunately not thinking about where player prefs are written once the game is built for android the editor player prefs are not saved nor do they go with the android build.  As this happened later after testing I did not upfront realize there were any issues as the AI was still attacking the player (although it only used the default charge attack) but I had no reason to believe it was going through selecting any other choice.  Luckily, I had eventually decided to set all choices to hit and run and play on android to see how it looked, at that point only seeing the AI charge I had the realization that player prefs is specific to the device.  In order to overcome the base problem of the 2D array not being serialized I essentially took it and wrote it into a single array (row * column) which allowed Unity to serialize it and save my changes.
Testing
User testing was a huge boon for me, I was not able to get my primary audience to test my game periodically as the majority of people who were available to test my game were not of the standard type that would play it.  I had two ends of the spectrum age wise yet neither primarily plays this type of game, and those that were in the middle age spectrum were not really gamers.  While it did help to provide some inherent user interface problems having the actual feedback from a gamer that likes this type of game was not readily available.  An open public alpha testing may have helped however getting appropriate feedback in a consistent standardized form would have been a problem and would have caused a lot more time to just decipher the feedback that was provided.
Business Model/Plan
The interstitial ads cause a lot of grief for players, it takes them out of the game and forces them to focus on something else.  Also, getting the right amount of ads between menus seemed to cause issues as well, having more ads of course means more money however to many ads will drop your players interest.  I may go back and look at this and may look at doing banner ads during gameplay and only interstitial between the main game and menu (plus on game exit / open).  This will help to keep the player playing during normal times and only as they are in-between playing and changing settings do they get interrupted.
Summary:
I have learned a lot through this whole process, my strengths and weaknesses, and by determining these I hope to be able to focus my attention and improve upon both.  Identifying my weakness in design has really helped open my eyes to what it is and how it really benefits a game to being fun.  As I am primarily a developer/programmer I tend to focus more on getting things to work and function, seeing how giving some focus to design can really turn a well-functioning oiled machine into a fun playing game can help to keep a player interested and wanting to play.  I’ve always seen it as if the game is laggy and functions poorly that will quickly turn players off, but additionally without some kind of focus on feedback for the player it really doesn’t matter how many bells and whistles are running in the background if the player doesn’t care to stick around to find them. 

References

Atwood, J. (2007, 07 04). Game Development Postmortems. Retrieved from Coding Horror: http://blog.codinghorror.com/game-development-postmortems/
Bevilacqua, F. (2013, 10 24). Finite-State Machines: Theory and Implementation. Retrieved from envatotuts: http://gamedevelopment.tutsplus.com/tutorials/finite-state-machines-theory-and-implementation--gamedev-11867
Fenderson, M. (2016, 03 19). Evolve or Die. [Mobile Application Software]. Virginia.
freesound. (2016, 03 19). Retrieved from freesound.org: http://www.freesound.org/



Wednesday, February 24, 2016

Capstone Postmortem : Pixel Perfect

Pixel Perfect


Game Summary:
Game App Icon:
Title
Pixel Perfect
Genre
Platforming / Speed Running
Platform
Andriod
Revenue model
Inlaid ads between level loads
Development tools/Language
Unity5 C#
Game audience
Gamers age 25-35
Speed runners who engage in head to head competition for ranking on leaderboards. Female gamers may enjoy the trope free character design but are not being specifically targeted.
Team
Shawn Farris - Programming & Art
Music - Credit in game
Copyright/Reference 
Shawn Farris. (2016). Pixel Perfect [Mobile Video Game] Virginia : Shawn Farris
Backstory:
Sound Bite
Nothing is impossible but are you skilled enough?
Executive Summary
Pixel Perfect is a 2d platformer that synthesizes the core gameplay mechanics of what makes platformers popular and builds around the basics without additional frill. Players interact with simple controls to navigate increasingly difficult worlds and mechanics that will remind players of the “nintendo” hard style of play. Pixel Perfect also challenges standard tropes in gaming by having a strong female player character and approaching the entire genre with a satirical lens.
Inspiration
Pixel Perfect was inspired by my love of Metroid-Vania style games, platformers, and the blue bomber Megaman.
Capstone Game Scope
Ideal
The ideal behind Pixel Perfect was to create a powerful platformer that strips away some of the frill that has been added to platformers over the years. I wanted to approach the game from the point of view of creating a strong but mute female character that players could identify with through her body language and manifestation of her emotions. I also wanted to play with the trope of the navigational or tutorial character being a force for good for the player and being trust worthy.
Demo Screencast:
https://www.youtube.com/watch?v=TxsJZ1gE6uI

Final Screen Cast:
https://www.youtube.com/watch?v=xHY7y4-A9Rs
The Critique: What went right
Design & Aesthetics
Pixie's Emotions
Love02.pngDread01.pngPissed02.pngsad02.pngHappy02.pngSuprise02.png
A great deal of effort and iterative design was put into creating Pixie's emotions so that she would be understandable in both her "Emoticon" and her body language. Initially I designed her emotions and then sent out surveys to focus groups to get feedback. After changes were made based of user feedback I then had a serious of GTM with experts to refine her emotions even further. 
CarisPhoto on 2-12-16 at 3.24 PM.jpg Love02.png
All of these efforts paid off a great deal. In the end Pixie became a very strong character who stood on her own and conveyed emotions clearly. Most testers felt a strong identification with Pixie and clearly understood the emotions she was trying to convey.
Design and Mood
Doing iterative design to levels and lighting enabled me as the developer to convey a mood to the game that came across clearly to the players. It is a powerful moment when the player first enters the first level after the tutorial and the tutorial wizard "reveals the devastation a great evil has caused. This light sprite effect adds a great deal of mood to the game and elevates the game above the standard pixel art game style. 
UI
 
Design approached to try to impart story narrative even in menus and world maps.
Iconology underwent focus group and expert surveys.
Layout underwent multiple testing for control and layout.
What was hard to make work? Button layout and redundant notifications.
Project Management
Use of sourcetree and GIT enabled me to get into good habits of frequent updates with detailed descriptions. Strong version control practices are an important habit for any developer working with a company. Because of these strong version control practices no portion of code or art work was lost during the development process. I was able to work from several locations seamlessly on the overall game.
Development
Pixel Perfect uses the native code of the Unity engine efficiently and extends existing classes to be able to create effects such as the sprite lighting effects. Because of the engines fast prototyping and publishing abilities I was able to bug test quickly. Initially having multiple levels of difficultly and a speed run tracker/leaderboard were wish list items in development but because of the agile development method and smartly handled milestones I was ahead on development and able to put these wish list items into game.
Testing
Testing surveys provided a good deal of feedback from my focus group. I learned the important value of quantitative vs qualitative data. Being able to glean more information beyond 1-10 from a player is really important for getting good feedback. For this reason I will lean more towards talk-aloud testing in the future as it proved very helpful in the Pixel Perfect development process. Doing multiple test phases allowed for iterative design and changes to the game. During the development process I broke down individual sections of the game for testing which provided more focused feedback.
Business Model/Plan
I learned a great deal about what Pixel Perfect lacked and needed in order to be ready for a kickstarter to get the total game off the ground. I was able to discuss with experts in kickstarting games the process they took and what players expect in terms of incentives. I also got really good feedback when discussing with Full Sail staff various pricing methods and distribution options for Pixel Perfect. 
The Critique: What went wrong 
Design & Aesthetics
Creating all of the pixel art myself became time consuming. Because of the iterative design process required to create Pixie's emotions I ended up generating her sprites by hand several times. In the end I had begun to wish that I had created Pixie as a 3d model for faster rigging and changes to her animations. I could not have for seen this as a developer at the start of the game development though.
The limited scope of the vertical slice caused the narrative of Pixel Perfect to be crunched. The tutorial level especially feels very meaty with text that would have ordinarily been spread over several levels. Some elements with in the game were pushed in to earlier levels as they are important to the narrative and had to be shown in a vertical slice for player motivation to be shown. For example the player is meant to save a jar full of animals after every boss fight so they have to overcome the hurdle of several levels and then a boss to save these animals. However since bosses were not included in the vertical slice animals were placed at the end of the Dark Forest to show player motivation. Players commented however this placement felt like it had a lack of obstacle to overcome, which I agree with.
Development
Bugs existed in the early launch of Unity 5 that I as a developer had to wait for the next version of the engine to fix. 
As I coded the game I started to create a large script that handled all of the events with in each level. This became burdensome when it came time to make changes to timing or parts of each event. Had I coded more smartly I would have made code for each of these mini events so that if I need to make changes to one event I was only tweaking the timing and code of that one event. It became a pain to shift 50 events to fit one new event in.
I was unable to create a procedural generated dungeon which was part of original idea but was scrapped for the vertical slice.
I was also unable to get online leaderboards in the game. This was another wishlist item but I would have liked players to be able to compare themselves to other players even in the vertical slice.
Testing
Doing distance testing with the facility across two different types of devices had it's downfalls. While the staff was very helpful in attempting to take screen shots or videos of the bugs they were encountering I was often unable to fix a bug until I was personally able to replicate it. A more robust bug reporting system would have been helpful. Also being in person for this testing so I could have watched bugs as they happened would have helped. 
Business Model/Plan
I learned that Pixel Perfect needs more levels then the vertical slice and some kind of incentives such as lance texture changes in order to get a kickstarter funding. This is not necessarily something that went wrong in the capstone but a lesson in what more I need moving forward.
Other
Summary:
Pixel Perfect is:
Design driven game
Visually strong game
Compelling narrative
Unique platforming mechanics
Strong mute character that players relate to
Polished vertical slice
Multiple levels of difficulty
Built in speed running mechanics
References:
Shawn Farris. (2016). Pixel Perfect [Mobile Video Game] Virginia: Shawn Farris
Thompson, S., Walsh, T., Evans, E., & Evans, D. (2014, December 31). Postmortem: Pinball-RPG hybrid Rollers of the Realm. Retrieved February 11, 2016, from http://www.gamasutra.com/view/feature/233340/postmortem_pinballrpg_hybrid_.php
Harvey, C. (2013, September 23). Postmortem: DrinkBox Studios' Guacamelee! Retrieved February 11, 2016, from http://www.gamasutra.com/view/feature/200658/postmortem_drinkbox_studios_.php
WINTHER, Helle. Body Contact and Body Language: Moments of Personal Development and Social and Cultural Learning Processes in Movement Psychology and Education. Forum Qualitative Sozialforschung / Forum: Qualitative Social Research, [S.l.], v. 9, n. 2, may. 2008. ISSN 1438-5627. Available at: <http://www.qualitative-research.net/index.php/fqs/article/view/414>. Date accessed: 12 Feb. 2016.
Mehrabian, A. (1971). Silent messages. Belmont, CA: Wadsworth Publishing

Sunday, September 20, 2015

Capstone Game Post Mortem: Gold Jump


Capstone Game Post Mortem: Gold Jump

 Game Summary:

Author

Michael Bugglin

Title

Gold Jump

Genre

2D Puzzle Platformer

Platform(s)

Android

Revenue Model

The game is free-to-play; primary monetization will come from the in-app store.

Development Tools/Language

The game was developed using C# in Unity 5.0 (Unity Technologies, 2015). Custom artwork not obtained from external sources were created using Paintbrush (Soggy Waffles, 2010). Sound effects that needed to be shortened were modified using Online MP3 Cutter (123apps, 2015). Internal and external databases were implemented using EasySQLite and Parse APIs, respectively (FreCre, 2015; Parse, n.d.). The in-app store was created using the Soomla API (Dakar, 2015).

Game Audience

The main target audience is young adults (18+) and older, mainly those who play games on a regular basis. In particular, the game is targeted towards Diamond players (Hiwiller, 2011, p. 1).

Team

Michael Bugglin designed and developed the game as well as creating several icons.
Ian Thorpe created all artwork for the main characters.

Copyright/Reference

Gold Jump © 2015 Michael Bugglin
Bugglin, M. (2015). Gold Jump [Android game]. Hainesport, NJ: Michael Bugglin.

Demonstration Screencast

Backstory:

Sound Bite

“Will you jump high in the sky, or be bold for the gold?”

Executive Summary

Collecting treasures, including coins, is not the same in Gold Jump as it is in any other game, especially platformers. Too much gold will weigh you down excessively, so you will have to figure out how to get the gold to the end through some clever use of the environment. This platformer and puzzle hybrid genre will give you something to boast about to your friends if you manage to survive to the end, because you must watch out for many hazards, including bottomless pits and turrets that shoot fire!

Inspiration

The main game was primarily inspired by Commander Keen. I remembered how difficult it was to control your jumping height, and, subsequently, how difficult it was to get some of the more sinister teddy bear locations (id Software, 1990). From there, I had an idea where players had some freedom in altering their jumping capabilities, and that is where the coin mechanic originated. The level editor aspect was not inspired by Little Big Planet (Media Molecule, 2008), but by Everybody Edits instead. In Everybody Edits, a select few in a level are given editing privileges while everyone else observes (NouEE, spambler, & sepehr, 2015). Pieces of this gameplay can be seen in Gold Jump's level editor, even if all intended aspects did not make it into the current version.

Ideal

For the main game, players would have been able to share their successes in the game via app requests on Facebook (Facebook SDK, 2015). In addition, players would have their fastest completion times saved in leaderboards, so they could compare their best times with their friends' (Wilkinson, 2014). The ideal level editor would have allowed for up to four collaborators in one server along with many observers and the ability to chat with everyone in the room.
Gold Jump icon

The Critique: What went right…

Design & Aesthetics

Example of standard gameplay
 A majority of the necessary assets were available right from the beginning. Only a few assets, most notably icons, needed to be obtained during development, allowing a greater focus on coding. The game mechanics did not need to undergo any balancing changes. In other words, coins, crates, balloons, etc. function exactly as they were planned in the original design documents.

Project Management

Choosing to build the project with Unity had to be the best decision. Even if I had the money to afford working with Unreal (Epic Games, 2015), I would have known absolutely nothing about the engine. In addition, Cocos2d's rubbery fixes would not have worked for making a platformer (Chukong Technologies, 2014), and I would have had to use additional time to create my own engine. I knew enough about Unity to get the main game mechanics working quickly, and the engine worked well with allowing fixed movements and jumping heights.

Development

The music cross-fading mechanic worked well from the very beginning. It turned out to be not as much of a challenge as I originally thought once I discovered it can be done by playing multiple audio sources simultaneously. The internal database also worked properly at the start, and very few issues were encountered as the database was merged with the level storage system. Storing and retrieving external database entries also worked seamlessly for the most part.

Testing

User testing was widely successful in uncovering numerous issues with the game. Test sessions were able to be performed in scenarios where the game would actually be played. Player feedback was also instantaneous. Optimizations through the use of the profiler were also highly successful in improving the speed of the game.

Business Model/Plan

The project was very cost-effective. The only items purchased were the internal database plugin and several graphic packs. Including the in-app store was also a good choice as it removes the need to have annoying ads strewn throughout the game. The store also allows players to skip levels if they want by buying coins in place of finding them. It also allows players to create and share more custom levels at once with their friends, which should encourage said friends to do the same and make a good source of revenue.
In-app store

Other

Assets were relatively quick to find. OpenGameArt.org provided the majority of the graphics needed for the project (Kelsey, n.d.), and the Westar Music database was the source for almost all of the game's music and sound effects (Westar Music, 2014).

 

The Critique: What went wrong…

Design & Aesthetics

Some game mechanics were created that did not work with Unity's physics engine and did not add value to gameplay, like the coin grouping mechanic. Several of the levels had balancing issues on multiple occasions, most notably the now level 13. UI controls were frequently unresponsive due to order of operations and inefficiencies in the code.

Project Management

Bugs kept piling up, and sprint tasking kept getting pushed back to the point that features had to be cut, including chat windows, outfits, and idle poses. Networking was a problem to setup, and the new Unity networking system was not out at the time the project was started, which could have potentially avoided the many problems I encountered.

Development

The player's attempt at picking up the crate did not work out.
 The class diagram was poorly designed from the very beginning, resulting in a code architecture that needed to be modified after every sprint. Facebook app requests were cut due to the plugin failing to work without any visible errors and poor documentation of the plugin (Facebook SDK, 2015). The Google Play leaderboards plugin suffered a similar problem where authentication kept failing without any errors (Wilkinson, 2014). Networking desynchronization was common in the early level editor system due to missing information not saved to the server. The physics engine kept causing objects to stick to each other. The worst offender is crates, which would sometimes not rise at all when lifted by the player, or shoot into the sky instead.

Testing

The multithreading nature of Parse (n.d.) made debugging more difficult due to MonoDevelop's horrible debugger, and errors were not getting caught, either. I was never able to debug through the actual device due to unknown issues with connecting the debugger to the tablet. I was limited in how many devices I could use to test due to the standalone version not running at all; as a result, I had to reduce the number of players on a single server to two. While user testing was mostly successful, not everyone who participated was from the target audience due to communication issues with intended testers and time constraints.

Business Model/Plan

The original business plan resulted in issues with breaking even due to misunderstanding how to implement the marketing strategy. The misunderstandings also resulted in the marketing budget being more spread out than it should have been, which would not have been a good strategy.

Other

I knew very little about how Unity worked when starting this project. This resulted in the aforementioned bad class diagram as well as issues researching solutions to problems. In particular, an issue with pixelated characters plagued for the longest time, because I knew nothing about mip-mapping. This would have helped me solve the issue faster.

 
Example of the corrupt mip-map causing pixelation in the character art

Summary:

While the main game mostly matched the expectations I had hoped for, the same cannot be said about the level editor. The lack of chat windows and observers prevents the level editor from being the originally-planned social experience. Because I hope to get a job soon, the time I will have to spend on the project will be very limited. With balancing and networking fixes that still need to be done as well as the missing chat window and outfit feature, it may take me at least a year before the game is ready for release.

I believe I learned much about Unity through the course of developing this project, which will help me to make better games right from the start. I also learned to make sure that the designs I create should be tested to be feasible before proceeding with development. Otherwise, I could end up having the same problems I had with this project where the architecture changed every sprint. If I had the opportunity to redo the project, I would definitely rewrite the class diagram from scratch, so it can actually account for all the nuances I now know about Unity.

The high point of the project was the user testing. The quick feedback and the number of bugs discovered made refining the game much easier. The low point was definitely the enormous amount of bugs that kept cropping up. I ended up going from having two free sprints reserved for bug fixes to having to cut several features from the game. Regardless, I do hope to eventually release the game once it is ready. In fact, I would like to expand the game after release with more game mechanics to try out.

 

References

123apps. (2015). Online MP3 Cutter. Retrieved from http://mp3cut.net/

Bugglin, M. (2015). Gold Jump [Android game]. Hainesport, NJ: Michael Bugglin.

Chukong Technologies. (2014). Cocos2d-x (Version 3.3) [Software framework]. Available from http://www.cocos2d-x.org

Dakar, R. (2015). unity3d-store (Version 1.7.15) [Library]. Available from https://github.com/soomla/unity3d-store
Epic Games. (2015). Unreal Engine (Version 4) [IDE]. Available from https://www.unrealengine.com/what-is-unreal-engine-4

Facebook SDK for Unity (Version 6.2.1) [API]. (2015). Available from https://developers.facebook.com/docs/unity

FreCre. (2015). EasySQLite (Version 1.1) [Plugin]. Available from https://www.assetstore.unity3d.com/en/#!/content/26888

Hiwiller, Z. (2011). Player Types [Portable document format]. Retrieved from https://assethub.fso.fullsail.edu/assethub/Hiwiller_Player_Types_b85dca6e-c18f-4294-b8c6- 17472fa75ae6.pdf

id Software. (1990). Commander Keen in Invasion of the Vorticons [DOS game]. Apogee Software. Available from http://store.steampowered.com/app/9180

Kelsey, B. (n.d.). OpenGameArt.Org. Retrieved from http://opengameart.org

Media Molecule. (2008). Little Big Planet [Playstation 3 game]. Sony Computer Entertainment. Available from http://www.amazon.com/LittleBigPlanet-Playstation-3/dp/B001IVXI7C

[NouEE], [spambler], & [sepehr]. (2015). Everybody Edits [Flash game]. Kongregate. Retrieved from www.kongregate.com/games/NouEE/everybody-edits

Parse. (n.d.). Parse Unity SDK (Version 1.4.0) [API]. Available from https://parse.com/docs/downloads/

Soggy Waffles. (2010). Paintbrush (Version 2.1.1) [Software]. Available from http://downloads.sourceforge.net/paintbrush/Paintbrush-2.1.1.zip

Unity Technologies. (2015). Unity (Version 5.0.0f4 Personal) [IDE]. Available from http://unity3d.com/get-unity/download/archive

Westar Music. (2014). Westar Music. Retrieved from http://westarmusic.sourceaudio.com/#!albums

Wilkinson, C. (2014). Google Play Games plugin for Unity (Commit 92386ca225) [API]. Available from https://github.com/playgameservices/play-games-plugin-for-unity