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: 
Jason Frehner
Last Night on Earth Companion
Board game Companion
Revenue model
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).
Nicky G. provided some art assets.
Frehner, J. (2018). Last Night on Earth Companion [Android Application]. Copyright Jason Frehner.

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.
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.
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.
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.
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.
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.
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.

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.


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

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.