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

Wednesday, February 14, 2018

Capstone Game Post Mortem: Last Night on Earth Companion

Capstone Game Post Mortem: Last Night on Earth Companion
Jason Frehner
MGMS Program
Full Sail University
February 6, 2018

Game Summary: 
Author
Jason Frehner
Icon
Title
Last Night on Earth Companion
Genre
Board game Companion
Platform(s)
Android
Revenue model
$4.99
Development tools/Language
Unity 3D, C#, Vuforia, Android Studio, Java, Filter Forge, Taiga, JetBrains, Google Drive, Doxygen.
Game audience
Cooperative or solo tabletop games. Particularly those interested in zombies and the horror theme. Ages 12 and up. Players primarily fall into Bartle’s Achievers and Socializers player types (Schell. 2015, p 126).
Team
Nicky G. provided some art assets.
Copyright/Reference
Frehner, J. (2018). Last Night on Earth Companion [Android Application]. Copyright Jason Frehner.

Backstory:
Sound Bite
The living no longer plays the living dead.
Executive Summary
The Last Night on Earth Companion takes the role of Zombie player in The Last Night on Earth board game. This allows for a more cooperative group gaming experience or even solo play with the tabletop game. The AI uses a dynamic difficulty adjustment to ensure games do not become one-sided and that the tension of the game is always building.
Inspiration
The motivation and inspiration for a board game companion app are from other companion apps for tabletop games like Road to Legend (Fantasy Flight Games). These types of games and their digital companions allow for a range of uses from solo play to enhance the play of a group. The intention of this app was to bring some digital enhancements to a traditionally semi-cooperative game.
Ideal
The ideal companion would provide an assistant taking over the role of the zombie player with an AI that adjusted to each game, so it never felt like a game was easily won or lost. It would assist in the tracking of cards and effects, removing the cognitive load from the players, providing new ways to play with solo and campaign options. It would also provide quick access to learning and common questions during gameplay.

The Critique: What went right…
Design & Aesthetics
The color palette, graphics, and audio all add to the overall horror theme. The color palate used with the UI elements was inspired by the colors of the physical games box art. Animated shader was used to display a splatter vignette around the screen.


 The UI controls are clearly labeled and easy to use. Originally, I used more generic shaped UI images for the UI elements (Beffio). But recently update them to be more in line with the theme of the board game with stylized assets (Vital Zings). Particles were also used in the main menu scene to add to the visual appeal. These particles slowly float while fading in and out, they also have an animated shader attached that distorts them as to give them a slight shimmering effect.

Project Management
I enjoyed using Taiga for organizing, collecting information, tasks, sprints, and bugs. I would use it again for any small team collaborations or projects of a similar scope. It provided a well-organized space for tracking the project that I could easily access form just about anywhere or device.
Development
Unity and C# was a good choice for this project and the only time I felt restricted was with the NFC feature, which was a challenge, but the result still worked well within the Unity framework. I tried to keep my naming clear as to what methods did and provided additional comments where appropriate. One issue I ran into a few times was that if a function got renamed that is attached to a component event like a button, then unless you were looking at the component in the inspector to see the missing reference warning it may be missed, and the button will not function properly in the build. I would prefer that this would cause the build to fail like other missing references.
 The mechanics for the zombie turn AI works well. Moving through the different phases of the turn and playing cards, spawning zombies and presenting relevant information to the users. This is handled by the Zombie Turn Phases class, where the state of the phase is saved to a delegate so that returning from any UI menu picks up where it left off.
 The radial basis function (RBF) network was one of the most interesting learning aspects of the project. The written material by McCaffrey and Heaton were helpful in understanding and implementing the final result (Heaton) (McCaffrey). I chose the RBF type network over the more traditional perceptron based neural network for its speed and thought the lack of accuracy or fuzzy nature would be a benefit in this type of AI. The training and setup up of the network is done within the Unity editor and outside of the normal device gameplay. All inputs and details for creating the network are stored on a Google Drive Sheet using the Google Sheets for Unity plugin (Cyberian Software). For training and uploading the network parameters, I created an editor interface.

AR functionality is simple to use and can be accessed from the options menu during a game. When enabled it only requires the user to point the device at a hero card to view additional information. This was a late addition to the project and utilizes Unity’s inclusion of Vuforia into their framework. I copied the basic trackable event handler and updated it to the project’s needs of moving and updating a canvas object.

NFC functions on compatible devices with the saving and loading of a campaign state between missions. Originally this functionality was going to be implemented with a Unity asset, however, that asset became deprecated and no longer functioned with the current version of Unity. With some trial and error, I was able to put together a plugin in Android Studio that I could use in Unity that allows the reading and writing to NFC tags. From the Unity side, I use an NFC class for interacting with the plugin, along with checking and storing whether the device is NFC enabled or not.
Testing
Usability testing helped to shine a light on aspects of the companion that was not clear to the user or functioning as intended. Like when players were expecting to see an immediate update to the game log when a zombie was killed or when they would miss text not knowing that it had changed from the previous time they saw the panel. Debugging and unit testing was also helpful for tracking down roots to bugs and problems, particularly with zombie cards as it was not always easy to duplicate exact situations otherwise.
Business Model/Plan
The project is currently in an open beta release on the Google Play store with some sharing of access to Facebook groups. This has helped to get a few additional users over the last few weeks.

The Critique: What went wrong…
Design & Aesthetics
The RBF network does not affect the AI in multiple ways. For the amount of tracking of the game state and running through a trained network, while fast, has limited impact on the game. The artist I tried to work with didn’t get as far as I would have like before he was unable to assist anymore, leaving the map tiles inconsistent with each other and will need to be updated.
Project Management
It felt like I did a considerable amount of planning before development, I was constantly misjudging how much I could accomplish within a sprint and there was often a feeling that I was behind. I tried working with an artist and regular testers but that didn’t work out as planned and was further complicated by my extended leave of absence.
Development
NFC was the biggest setback. When prototyping I used an old Unity store asset, however during development it stopped working as intended. I resolved to get the functionality by creating my own plugin, a first for me and more complex than I expected. There was a lot of piecing together from different documentation and examples that took up a lot of time before it started being usable.
Testing
A lot more playtesting could have been done, particularly with the campaign, as this was a new feature not already part of the existing tabletop game. I did not feel I ever got the hang of the test first mentality, I felt I was getting better results using unit test to confirm a method was doing what I expected or to help track down problems.

Summary:
Moving forward I would like to update the map tile graphics before releasing to the Play store. Then testing and releasing for iOS. Beyond that, I would like to continue to expand the content and compatibility with additional zombie cards, missions, and zombie types. Still, in general, I am happy with the work I accomplished, the things I got to try and learn along the way like shaders and the RBF network, and the end result.

Screencast:


References
Beffio. (2017). UI – Builder. From https://assetstore.unity.com/packages/tools/gui/ui-builder-29757
Cyberian Software. Google Sheets for Unity 2, from https://www.assetstore.unity3d.com/en/#!/content/15570
Heaton, Jeff. Artificial Intelligences for Humans Volume 1: Fundamental Algorithms. Kindle Edition. 2013.
Heaton, Jeff. Artificial Intelligences for Humans Volume 2: Nature-Inspired Algorithms. Kindle Edition. 2014.
McCaffrey, James. Machine Learning Using C#. Syncfusion inc. 2014.
McCaffrey, James. Neural Networks Using C#. Syncfusion inc. 2014.
Fantasy Flight Games. (2017). Road to Legend [Android].
Flying Frog. Last Night on Earth: The Zombie Game. from http://www.flyingfrog.net/lastnightonearth/
Frehner, J. (2018). Last Night on Earth Companion [Android Application].
Frehner, J. (2018). Last Night on Earth Documentation. https://lnoedoc.000webhostapp.com
Shell, J. (2015). The Art of Game Design: A Book of Lenses. Boca Raton: CRC Press.
Vital Zigns. (2017). Grunge UI Kit. From https://assetstore.unity.com/packages/tools/gui/grunge-ui-kit-53815

Friday, February 24, 2017

Capstone Game Post Mortem: Coal Mine Escape

Capstone Game Post Mortem: Coal Mine Escape

Ryan Strong

MGMS Program

Full Sail University

February 2, 2017


Game Summary:

Game Icon


Title
Coal Mine Escape

Genre
Racer

Platform(s)
Android

Revenue model
Free, plan to use as vertical slice to place on Kickstarter for initial funds to help with creation of new maps and bikes.

Development tools/Language
-         Unity 5.4.2
-         C#

Game audience
Primary: Boys and Girls Ages 15-25

Team
The majority of the game was coded and designed myself, but I also used a few assets from the Unity asset store to help.

Copyright/Reference
Ryan Strong


Backstory:
Sound Bite
Coal Mine Escape! Can you get out before everything around you is left in ruin?

Executive Summary
Coal Mine Escape (CME) is a racing game with a twist. The player is set up on a dirt bike on a dirt road in the mountains of Tennessee near some coal mines. The player must use their skill to navigate tough terrain of the mountainous region by staying on the track and avoiding obstacles that show up in their path. There are Explosions around most turns that leave debris in the path of the player that must be avoided.

Demo Video


Inspiration
A few years back I was driving from Virginia Beach to a smaller town in Tennessee to visit my father and brother. While driving through I saw all of the mountains and the trees which gave me a feeling of serenity, it was peaceful and quiet. I chose this as my main area because of how it looked and felt. Then I thought what it would look like if there were something to go wrong with the mines, Tennessee is filled with old coal mines that are no longer in use. Using that as a main theme allowed me to come up with the idea of a series of explosions rocking the mountains. This to me made for a great set up to put the player in, they must escape before they are caught up in all of the destruction.


(Feds move to ban coal mining in East Tennessee range, 2015)

Ideal

I wanted a game that really put the player in the mindset of being trapped in a mountain area trying to escape. The player would feel like they had to hurry and get out before something bad happened to them. I wanted the trees to look like the ones that you see when you drive down a long stretch of highway, lots of leaves and green, but this wasn’t feasible with the limitations of the devices in use. I also wanted to have more foliage added in the form of flowing grass and nice bushes.


The Critique: What went right…


Design & Aesthetics
When dealing with the final design of my project I would like to initially point out that I was primarily focused on the actual aesthetics of it over some of the other aspects. This helped me put together a much better overall area for the game. One of the main things that I want to point out was the use of road signs in the game. I point this out because there are certain parts of the level that when the player is going through them, they have a lot of issues because the turns are much sharper than you would think they are. I placed road signs to help the player to understand that it was coming up and that they should slow down to be able to navigate that turn much more smoothly.




When looking at the Heads-Up-Display (HUD) in the game, the player is able to easily distinguish between the different aspects of the controls. I wanted to go with something that was more familiar to the player than something that wasn’t, so for the turn controls of the bike I utilized the arrows, this lets the player know that they will use them to actually turn the bike rather than what I originally went with, which happened to be one of the sides of the handlebar with an arrow attached to it. I attempted to make it all look extremely smooth so that it was more appealing to the player. The tachometer I went with actually helps with this as well, it provides a lot of information to the player in a small area, but luckily this information is something that is very easy to see and understand. While I went with MPH for the actual speed of the bike, I am not limited to that, I also have the ability to switch to KPH for the markets that mainly rely on those for speed.




One of the most important things that I added to the game that I felt really added to the feel that they had to escape was the use of different particle effects. Adding fire and smoke to the scene really gives the player a feeling that something is wrong, it helped me to tell a story. This game is nothing like any of the other games I have played on mobile device before, most of the motorcycle style games I have seen and played tend to put the player on a normal street just racing around or trying to avoid cars, I wanted something different, so I went with this style instead, letting the player see debris and disaster strike at multiple turns in the game.

The majority of the assets in the game I either purchased or found for free on the Unity asset store, this was very helpful in my design. I was able to take all of these items and either manipulate them to how I needed them for the game or to place in the position that I needed them to be at.

Project Management
For the project management side of my game, I actually didn’t use Underdog very often. The main reason for this is I found it much easier to utilize Google Drive and create a shared Excel document that my advisors could access at any time. I was able to put all of my tasks for each milestone into a separate sheet for each milestone, this helped me to order my tasks properly so they could be completed in a timely manner and if something didn’t work out one milestone, I could push it to the next for completion.

While I didn’t use Underdog for any of the scheduling, I did use it completely for the submission of my actual files, this was very useful especially if I needed to go back to a previous upload because of something breaking. I didn’t however use it for my builds, initially I put all of my builds into Underdog, but unfortunately, Underdog only allows for files sizes up to 100mb, this didn’t work out for me in the end as my file size actually exceeded that size by about 10 to 20mb. There for I utilized a Dropbox account that I created, I then shared with my advisors, I also set it up so anyone with the link to a specific build could download it at any time.

Development
One of the best choices I made when putting this game idea together was to utilize the Unity game engine. This game engine provides you with an enormous amount of stuff to choose from. I was able to create nearly anything I needed in a much shorter time than if I had to build everything myself. I utilized a lot of premade assets I purchased on the Unity store, this helped me with the design and development of everything with little to no extra work on a lot of items. I stuck to what I know when it came to any sort of coding or scripting, utilizing C# as my primary language helped to get the work done quickly and efficiently. Another nice thing that Unity did for me was in the form of physics, a lot of leg work is already done for you in the Unity engine so that you don’t have to worry as much about figuring it all out for yourself.

Testing
I found that testing of my game was a very important part of the entire design and development process. This was primarily due in part to the fact that I thought that certain things I put into the game would be easily understood or others that didn’t need much explaining at all, this couldn’t be further from the truth. Utilizing testing by either doing the testing myself or utilizing people to test for me, allowed me to see these flaws and to also see other minor things I didn’t notice.

Testing was a bit of a hard one to get because the majority of the testers I wanted weren’t easily available, so I had to rely on utilizing people that had tested the game for me once already, while this did get me a lot of the results that I needed, it also didn’t get me fresh eyes on the project. In the end, I was forced to utilize other forms of media to get my testers, I used Skype video calls to get a lot of the testing done, this was the only way I found it possible to get testers that hadn’t seen the game before, it did work out well in the end, but initially it was a bit taxing as people had to work around the limitations of the computer’s camera to get a proper test done.

Business Model/Plan
For my business model, I decided to go with a game that was completely free. I did this because one, I wanted to get my name out there, and two I wanted people to see I am willing to give them a game that would normally cost a few dollars on the store for free and it be something that was actually worth picking up. This to me is more important in the long run because it would give me a fan base and a following that in the end would be more willing to pay for another game in the future.

That being said, I also don’t plan on working on this game for free. I plan to put this game onto Kickstarter and attempt to raise funds that will help me be able to hire a few artists for more motorcycles and others for more tracks. This will make the design and development of the game go much smoother in the long run.

Other
One thing I would like to point out that probably helped me out the most in this entire endeavor, was taking time away from the project as a whole at times. There were many times when I would get stuck on something and not be able to progress past it, I would search for hours and even days online for answers to fix something that went wrong, not finding anything to help it. In the end, I would look at it and say, “you know what, I am done with you for now”, I would then leave it and not come back to it for either several hours or a few days. Then it would finally come to me, the problem that I was having was much easier to fix when I had a clear mind, I wasn’t thinking about what the problem was anymore, so it would just come to me. I think this is what really helped me to succeed, time, a very important thing.


The Critique: What went wrong…

Design & Aesthetics
The biggest problem that was faced during the design and aesthetics phase of my development process was when I decided to place a certain type of tree in the game. The trees that I chose to use were ones that looked more like a normal tree you would see if you looked out your window on a long drive through the county. The main problem with having these trees in the game were the number of polygons attached to make the tree look so remarkable. It had such a high poly count that when the game was loaded onto a mobile device, it basically put a stop to gameplay, the device would run extremely slow, preventing the player from being able to play the game. This was an enormous problem that had to be fixed right away, the easiest fix I found was replacing the trees with ones that had a really low poly count, making the game look a bit less than what I wanted it to look like, but still be able to function properly for players to play it.

Project Management
Initially when I put this game together, I had this grand idea of doing a game that involved other motorcycles racing against the player on multiple tracks. I wanted to have all types of race tracks for the player to choose from, letting them have a different experience for each race. This ended up being something that was completely out of scope. I ran into multiple issues getting everything to work properly, it would have taken months more than I was allotted to complete the project in. In the end, I decided on creating a completely new map with a single track that the player would have to race on and attempt to escape.

Development
Development was something that could have gone much smoother for me to start but unfortunately didn’t. The first major problem that I faced was one that I briefly mentioned above, dealing with the AI for the initial levels I wanted to have in the game. I spent days researching and attempting to get just one motorcycle to work as an AI element, it would move from one point to the next in a series of navigation points, but the animations for the bike didn’t function at all and the bike would constantly fall to one side while it progressed forward. I would spend the better part of two weeks attempting to get this to not happen, but my attempts were fruitless with this endeavor. Not only did I research as much as possible, but I also went as far as to get in contact with the developer of the asset I was using for the motorcycles to see if they had any recommendations or solutions to help, the only thing they could point me to was another asset that was no longer available for people to utilize. I had to abandon that attempt which in turn completely changed how the game played and looked.

There was one more thing that really went very wrong for me during the development phase, sharp turns. I wanted to add a sort of sharp turn to the game so that when the player arrived at one of the sharper curves on the track, they could hit a separate button which would allow them to make that turn without having to slow down if they didn’t want too. Initially I looked at changing the variable for the slip mechanic in the game, this did work slightly to allow the bike to make sharper turns, but it would only work in specific circumstances. If I set the slip value to what it needed to be for the bike to make the sharp turn and leave it as such when the game started, then the bike would do sharp turns constantly, it wouldn’t allow for less of a turn, the same was true for the reverse, if I set the value for a normal turn, you couldn’t do a sharp turn. I thought that creating a button, that when activated, could change the value of the slip, thus allowing the player to make a sharp turn at specific points in the game. Unfortunately, this didn’t actually change the value in game for the player, no matter how much I tried to get it to work, I couldn’t get it to function properly, leaving me with having to instead go a completely different route. I created instead a change in the max speed at specific areas on the track so when the player arrived at that point, they would only be able to go a set top speed, this limit made it possible for the player to make those turns much more easily.

Testing
Testing was a very difficult part of the entire development process for me this past few months. It was very hard for me to get different people to test the game, or those that said they were available when it came time to test were no longer available. This hurt my chances at achieving the most information possible from multiple people that would play this game. One thing I did do in the end that helped slightly was getting people to test over the internet, I would provide them with a copy of the game they would download onto their own mobile device, we would meet up on their preferred video messaging service, I was able to watch them play the game that way and record it for future use. This actually helped out slightly, but was still not as beneficial as having someone actually near me testing it.

Business Model/Plan
Since I made the decision to make this game free for anyone to play, I limited myself in the ability to gain any monetary value. While this is unfortunate for most, it is actually something that I feel isn’t as much of a what went wrong as opposed to being something that could help in the long run.


Summary:

While I was not able to complete what I originally put together for my project, I am overall happy with the final outcome. Once I took the time to design a completely new idea, I had a very strong idea setup that I was able to follow. This ended up being the game as we see it now, Coal Mine Escape. I believe that taking the time to revamp the original idea into something new is what gave me a new excitement into designing the game. This was much better for me in the long run, I took a lot of time creating something that I could be proud of.

While I personally feel this game is great as it is, there are still things that need to be done before it can be released to the mass markets. It would need to have more levels created so players have more to do, they currently are only able to complete the one level, this isn’t something that people will want to play more than once if that is the case. They might enjoy the fact they are able to attempt to get a higher score, but that is something that will get old fast, especially once they realize they have basically reached the highest possible score they can achieve. I would also add more motorcycles to the game so people can give themselves a bit more difficulty. To do these I would work with other developers and artists to create all of the levels and motorcycles.

Since this is the first game I have developed by myself, I feel as though I have completed a lot and was very successful at completing it. I learned a lot from my experience working on this game, things like what can and does go wrong when trying to develop a game from scratch, to other items that are much easier to complete. Since I was the only one doing all of the work to get this game to fruition, I was able to work a bit on some of the actual art side of the game as well, this really helped me with practice that will be needed for future endeavors into the whole mobile development side. I am happy with the experience I gained while putting this project together and hope others can enjoy it as well in the future.


References

Strong, R. (2017). Coal Mine Escape [Android Application].

Kickstarter. (n.d.). Retrieved February 24, 2017, from https://www.kickstarter.com/

One account. All of Google. (n.d.). Retrieved February 24, 2017, from https://drive.google.com/drive/my-drive

MGEMS Courses. (n.d.). Retrieved February 24, 2017, from https://edo.fullsail.edu/underdog/projects/mgms-courses/documents

Login. (n.d.). Retrieved February 24, 2017, from https://www.dropbox.com/home

Celebrate the season together, wherever you are. (n.d.). Retrieved February 24, 2017, from https://www.skype.com/en/

Feds move to ban coal mining in East Tennessee range. (n.d.). Retrieved February 23, 2017, from http://www.timesfreepress.com/news/local/story/2015/dec/12/feds-move-bcoal-mining-east-tennessee-range/340170/

Unity. (n.d.) Unity - Game Engine. [Android Application]. https://unity3d.com/



Monday, December 12, 2016

Capstone Game Postmortem: Overclock




Capstone Game Postmortem: Overclock

Richard Keller

MGMS Program

Full Sail University

December 10, 2016



Game Summary


Game App Icon



Title
Overclock

Genre
Lane Defense

Platforms
iOS and Android

Revenue Model
Premium: $1.29

Development Tools/Language
Unity 5.4.2 / C# / Git with Tower

Game Audience
Primary: Boys and Girls Ages 12-20, Secondary: Men and Women Ages 35-45

Team
Ricky Keller

Copyright/Reference
Richard Keller

Backstory


Sound Bite
Overclock! Fast-paced alien lane defense!

Executive Summary
Overclock is a lane defense game in which the player is able to reposition its units after initial placement. The player can place its attack units next to power converters in order to become overclocked. Becoming overclocked provides different abilities based on which power converter type is affecting the current attack unit. Position your attackers in coordination with your defensive units in order to hold off the incoming alien threat.

Inspiration
I wanted to make something similar the gameplay found in Plants vs Zombies but with a twist. I also enjoyed the cartoony light-hearted aesthetic that it brought. I was also very heavily inspired at the direction of design as is explained in the GDC Vault video How I Got My Mom to Play Through Plants vs. Zombies by George Fan.

Ideal
I was hoping for 10-12 levels that introduced unlockable levels, hero types, special abilities, and 7 enemy types. I was also hoping to have included some more custom assets so as to play with assets that required more that one tile at a time and enemies that wore earmuffs to protect themselves against audio debuffs. I also wanted to keep the heroes robot themed so I could play more with the wording of overlocking. The rest of the design details seemed to go well.

Demo Screencast


The Critique: What Went Right


Design and Aesthetics
The final design seems to be well-balanced and the bigger design decisions made to distinguish itself from other lane defense games seem to have paid off well. The two major decisions I want to point out are the ability to move your units at will after initial placement and the positioning of attack units next to power-converters. Separately these features may not have worked well, but together they allow for interesting gameplay as the player is able to cover their bases while still focusing on the pattern they'd like to build. Even more than that, their pattern can improve as the game continues.

Aesthetically, the end result turned out to look very sharp. Although I was unable to get exactly what I wanted from the Unity Asset Store, I found some assets online that fit the theme I wanted, light-hearted and approachable but still with a slight edge.


The in-game visuals look familiar and still new at the same time. I was happy with how professional the game itself looked despite art not being my forte. Initially I thought I would need to go with a faked 3D perspective in a 2D game world, similar to that of what Plants vs Zombies did, but I was happy that the idea of corridors worked quite well. Although I wasn't able to stick with robots for the final aesthetic, I was happy with the compromise of android-like figures.


I was happy with the idea of currency being earned as each enemy was defeated which borrows from the idea of sunlight in Plants vs Zombies but does not require any units specifically for income. It also requires the player to defend themselves before being rewarded with additional means to fortify their defense.

While I did not develop any of the assets myself, the layout and animation presentations were completely developed by me.

Project Management
I relied somewhat heavily on the issues tracker in Underdog to help with my backlog of items I wanted to complete. It was also helpful for tracking and resolving bugs as they arose.

Development
I hadn't worked with Unity 2D Sprites before, but I found them to be quite simple to work with. The scripting itself was fairly familiar to me, and the core features of unity, such as collision detection, physics, and the low-level memory management were all handled for me. This was nice because it allowed me to focus on gameplay programming as I wanted to focus more on design than development for this project.

Testing
A lot of my testing was trying to get it in the hands of as many people as possible and watching them play. There were several bugs that I was able to find out myself by simply trying to get the game to break, but since I was the sole developer on the project, it wasn't difficult for me to diagnose the root of the problem typically. The non-design bugs were very easy to fix in a short amount of time.

Business Model/Plan
The premium model seems to suit this game very well as no design aspect particularly sticks out as prime ad placement or the need for microtransactions. These could be added with a few small design changes, but they were never a part of the original plan.

The Critique: What Went Wrong


Design & Aesthetics
While the end result turned out nicely, there were a number of things that weren't able to be added. I would have liked for the levels themselves to unlock as you completed each level. I wasn't able to cap off the last round with a boss battle either. That is something that would have been nice to be added. 

After some of the last feedback received by play testers, the game seemed to be too difficult from the second level onward. For the most part, this was not an issue of the mechanics themselves not being able to provide a path to victory, but rather that the game did not slowly walk them through each ability the different units were capable of. I would have like to have included a more progressive tutorial that introduced one unit type at a time over several levels as each new unit was unlocked. Instead, the game introduced 3 out of 5 character types and delivered all types at the very beginning.

Although the game included an interactive tutorial, it also required a more detailed tutorial. This tutorial, however, was a bit too detailed as most people didn't care to stop to read everything.


This particular screen also didn't adhere very well to the inner 80% screen space rule.

Initially, I had planned to work with an artist friend of mine who works in the industry. After finishing the three items in the bottom left of the image above, the artist was forced to admit that he could not keep up with the time commitment required in order to complete this project. After that, I was forced to search online for assets to fit my theme. I was a bit disappointed that I could not implement some of my more custom ideas such as the enemies wearing earmuffs or robots that fit the right level of cartoony I was looking for.

Towards the end of the development cycle, I implemented a scoring system. In an effort to better give the players an idea of what actions were earning them points, I implemented the idea of floating points. The problem was that points are earned for each successful attack and the players thought the floating points were readouts of damage dealt. After not coming to a quick alternative solution, I made the decision to remove them as to not confuse the player.



Project Management
I didn't make very good use of the GANTT chart made available to me in Underdog and mostly stuck to the issue tracker. The technical design doc helped me keep my items of highest priority in order, and the issue tracker was able to help me organize my features into sprints three at a time.

Development
Something I would have loved to put more time into was developing some flashier visuals. It was difficult for some players to tell that the power-converters could be used in combination, meaning that the damage power-converter could be used with the speed power-converter to produce both extra damage bullets at a quicker rate. Something as simple as having the tiles cycle through their currently available power ups or displaying the colors in a split view would have been very helpful for the user, but in the end I had to prioritize other things such as the tutorial and the core aesthetic looking sharp.

I don't care too much for the way managers needed to be implemented in Unity, by adding a script that needs to keep state to an object in the scene that will never be destroyed, but it got the job done for spawning enemies and keeping track of tile allocation and power ups.

Testing
Something that came up in testing as unnatural was the idea of tapping the characters on the bottom of the left to build them before dragging them from the build bench onto the board itself. Every player wanted to drag the characters straight from their icon on the bottom left to the board directly. This seemed like a good change to make, but by the time it became prioritized, it was too late in the development cycle and affected too many other aspects of the game. I eventually determined that it was too risky to change so late in the development cycle.

Business Model/Plan
The premium model is a hard sell for this game as other games such as Plants vs Zombies 2 are free-to-play, and is backed by a much larger development staff. For a commercial release, I'd have to look at a pricing model with a lower risk to curious players.

Summary


I'm happy that I was able to stick pretty close to what I had originally planned. Other than the change from robots to androids, I was able to develop the game I wanted to with the exception of a few missing features. I'm also happy with my choice to focus on design rather than development for this project. As a graduate of the GDBS program, I wanted to switch it up to focus on some different aspects of game development.

There are some things I'd like to do with this game before a commercial release, however. While I feel it's on the right track to being deliverable, it needs to be adjusted with some of the missing features I referenced above. It should also adhere to a more progressive tutorial system to teach the players how to best play the game while still providing a good level of challenge. I'd also like to experiment more with an artist who can be dedicated to the project in order to provide the charm the game requires.

Although this is not the first game I've developed, I feel like I've learned a lot focusing more on design. It's a difficult thing to find that right level of balance for a game when trying to help the player teach themselves how to play. It was also nice to stretch myself in making more artistic decisions than I expected I'd need to make. I feel more comfortable approaching game development as a team of one, and while I would definitely do a few things different next time, I was happy that some of my design ideas turned out well.

References


Tower. (n.d.) The most powerful git tool for Mac and Windows. [OSX Application]. https://www.git-tower.com/mac/

Unity. (n.d.) Unity - Game Engine. [OSX Application]. https://unity3d.com/

(Fan, G.) (2012.) How I Got My Mom to Play Plants vs Zombies. Retrieved from http://www.gdcvault.com/play/1015541/How-I-Got-My-Mom

PopCap Games. (2009.) Plants vs. Zombies. Retrieved from http://www.popcap.com/plants-vs-zombies-1

PopCap Games. (2013.) Plants vs. Zombies 2: It's about time. Retrieved from http://www.popcap.com/plants-vs-zombies-2