Book Reviews Game Development Unity 3D

Review: Unity Multiplayer Games by Alan R. Stagner


Disclosure: I was sent a free review copy of this e-book by the Publisher.

Format:

I made use of both the PDF & Kindle versions of this book while reading it. The PDF version displayed well on a Nexus 7 as well as my PC, where I used it to type in the many examples provided. The few graphics used in the book were mostly for configuration of Unity components, but all of them were in color in the PDF version.  I did most of my reading through the Kindle version.  It read smoothly on my Kindle Touch, and the code snippets displayed about as well as they can in that format.

Source code as well as errata are available for the examples in this book from the publisher’s websitePackt Publishing.  All examples are in C#.

Audience

This book is best suited for developers who have a working knowledge of the basics of Unity as well as experience using C#.  The author, thankfully, does not spend much time reviewing these two tools.  There are hundreds of other resources for learning Unity, and those should be explored before covering the topics in this book.  This book is a great introduction to multiplayer programming.  While a few intermediate and advanced topics are covered, it’s mostly geared toward beginners.
read more »

Quick Thoughts

Welcome

Holding a candle in a haunted house.

This is my new blog. My old one had grown defunct due to my neglect, and I am excited for a fresh start. I plan on posting my progress in learning game design, some book reviews, and my random thoughts on life, writing, and programming.

Portfolio Web Projects

Knowyo.org Facebook Application

Facebook Application Screenshot

Client: Wyoming Department of Health

Where: The app primarily lives on knowyo.org and the Facebook page.

Purpose:  Increase STD risk awareness and encourage Wyoming citizens to get tested.

What I Did:  I built an interface using the Facebook SDK in PHP & javascript with artwork by our team at Adbay.com.  This project came together pretty quickly.  A user should login to the app through the Facebook canvas page or a standalone mobile version.  The application reads their friends list and compiles a “most likely had/have STDs” friend counter based on Wyoming STD statistics.  Due to privacy concerns, the application does not look at profile information for the user friends, nor does it make any assumptions about your friends and their STD status.  It is a very loose estimator that will hopefully encourage awareness about the users risk.

The primary challenges were addressing changes in the Facebook SDK between the creation of the app and launch.  This application went through many rounds of approval before launch, and Facebook changed not only how their developer management panel works, but also the pathways for deploying a canvas application on mobile devices.  Because of this, I had to create a stand alone web version of the application for mobile devices.

Game Development Games Projects Portfolio Unity 3D

Ludum Dare 27 Entry: 10 Seconds of Night

10 Seconds of Night Title Screen

Entry Link: 10 Seconds of Night

10 Seconds of Night was my second game jam entry.  The Minion Studios team and I decided that we had so much fun the first time around, we would give it another shot.  The theme this time around was “10 Seconds”.  We settled on the idea of being a werewolf for 10 seconds of gameplay, then switching to a human player for another 10 seconds.  During the werewolf period, the player would have no control over his character.  Instead, an AI would direct the werewolf to consume nearby villagers.  There would be a day/night cycle that reflected this.

I was in charge of getting the human player off the ground with camera/controls, some level design, and programming the interactivity in the environment.

Ludum Dare 27 Game Jam Entry Development Screenshot

After the first day of development

I initially started to design a world that was similar to Super Mario Galaxy.  I imagined that the whole level would be round and the player could run infinitely around this little globe that contained the village and the mountains.  I built a small demo of this, including a full character controller, but we weren’t getting the look/feel we wanted with that, so we opted for a flattened bowl, with the mountains forming a natural boundary for the player.

After the first day, Eric had create a huge number of models for me to work with including a character with animations.   I set up the animations for the characters in Unity, hooked them up for the player to our control system, and we were off and running around!  I also started working on picking up items.  I will admit I did waste some time here on making the smoke on the houses and the snow particle effects.  It was a lot of fun, and I couldn’t help myself.

Ludum Dare 27 Game Jam Entry Development Screenshot

Another shot of our hero in the woods outside the village.

The original concept involved a lot of interactivity, including collecting items that would allow you to cage or inhibit your werewolf self.  The only working item in the game is a Hemlock plant which will basically poison you.  This is considered a winning outcome in the game.  I also created little word bubbles that would pop up over the villagers heads with randomized phrases stored in a text file.  These would hopefully give hints as to how to win the game.  We did add a lamb shank.  You can pick it up, but you can’t use it.  It was supposed to allow you to prevent the werewolf from feeding on villagers by distracting him for the night with the shank you drop.  We also envisioned having game mechanics for if the player is spotted while transforming into the werewolf.  Any villagers left alive after you transformed back into a human would try to kill you.  We unfortunately did not have enough time to implement this.

Ludum Dare 27 Game Jam Entry Development Screenshot

Problems, Problems, Problems

We built this project before our team was really comfortable with using a version control system and Unity.  We have since corrected this by teaching the whole team, including our artist, how to use Subversion correctly within the Unity workflow.  Not having this in place for any of our jam entries has been a huge hindrance.  We’ve had problems like in the screenshot above when migrating assets.  The materials on the body parts and blood particles from the werewolf kills were disconnected from their game objects during the transfer.

We also ran into a multitude of other stumbling blocks:

  • Lighting: I wasted quite a bit of time by trying to mix dynamic and baked lighting.  During a game jam was not the time to play with this.
  • 10 Seconds:  10 seconds was a great amount of time for the werewolf to slaughter villagers, but it was not good from  a player time standpoint.  So, we adjusted the human time to be 30 seconds and the werewolf time to be 10
  • The majority of the gameplay did not make it into the game.  We wasted time on other pieces that should have gone into making a fun game.  Instead, it’s kind of boring to play.
  • The werewolf & villager mechanics were created by another team member.  He and I did not collaborate much until the last minute.  If we had combined our work earlier, we would have been able to accomplish a lot more.  Also, he lost 24 hours worth of work in a computer crash, so that sucked.
  • We should have tightened the design to begin with.  We make this mistake constantly on jam projects and regular projects.

Overall, I had a great time making this game.  I had higher hopes for it, but I learned so much I definitely don’t regret the work we did.  We really grew as a team with this one.

Game Development Games Projects Unity 3D

Ludum Dare 26 Entry: Minimalist Horror Story

Ludum Dare 26 Game Jam Entry

Entry: Minimalist Horror Story

Minimalist Horror Story is our entry into the Ludum Dare 26 Game Jam.  The theme of the jam was “Minimalism”, and required our team at Minion Studios to create a game around this theme in 72 hours.  I am not sure what ideas we passed up for this one, but I know Sonny suggested doing a horror game at some point.  All of us jumped at the chance to design this game.

I was in charge of level design and the character controller.  Sonny was in charge of the monster as well as creating a random spawn system for pickups.  Eric was our amazing artist on this one, doing animation and all of the models.  Damon added the particle effects in the house and the candle lighting.

I began the first night by working on level design.  Eric had made a rough sketch of the house when we initially started the jam.  I took his sketch and mocked it up in Autodesk Homestyler.  I am not sure where we can up with the idea to greybox the level.  I almost feel like it just sort of happened without us thinking about it.

Once I had the floors laid out in Homestyler, I built the level in Unity using the default cube game objects scaled to the size of my walls and floors.  This was my first time doing this in Unity, and also only the second time we had used Unity to make anything.   The levels came together very quickly, and we found out some problems with our layout right away.  Once we had adjusted the layout and scale, I used a script I had found on the Unity Wiki to export the layout as an .obj file.  Eric then imported this into 3ds Max and cleaned it up to create the final levels.

He added the basement and the attic, then exported them back to me to place in the game along with all the furniture.  One problem I ran into is that all of the furniture was exported as subobjects of the house.  I did not know a lot about prefabs back then, and I royally screwed up by not using them to create all of our duplicate objects.  We use almost everything more than once in the house, but many objects do not retain their scale.  I also should have used prefabs to create more interactive items like the dressers, etc…  After this project I learned a lot about Unity and how to maximize your output with things like prefabs.

I created the character controller in an empty environment on just a plane, then move it into our level once the basic features were completed.   I messed up some math as some point, as I made it very unforgiving when trying to interact with the environment.  Often times, you have to be very far away to interact with an object, as up close it just doesn’t happen.  I did not have time to fix this before we finished the jam.

I wired up the scares.  I would have done a lot of these far differently.

  • The footsteps scare at the bottom of the stairs needs to happen sooner.  I was hoping it would be a queue to go back up the stairs to check it out.  Most people just ignore it.  As such, many miss out on the attic.
  • The rocking chair scare happens too far away from the chair itself.  With the limited lighting, players don’t often see the chair moving and can’t figure out what the sound is without the visual context.
  • The furnace needed to have sound added to it.  We just ran out of time to hook it up.
  • The bats took way too long, though they are effective.  I wish I would have known how to use the animator in Unity.  Instead, I hand coded all the vector points the bats should follow and interpolated them along the points.

There were a lot of other mishaps, like the candle burning sideways instead of down and the wrong control scheme being listed in the instructions, but I am still very pleased with how this game turned out.  We placed 7th in the Jam’s mood category, and received hundreds of comments, both positive and negative.  Eric posted an entry for the game on GameJolt.  We never posted the game itself, but discovered that even 9 months later a lot of people were still playing it and were interested in what we were up to.

This was the first game I ever completed.  We had a lot of false starts before this, but this game had a beginning, end, and a fun/scary in-between.  I am very excited about the feedback we got on this.  From comments on our social media channels, to youtube videos of people getting scared and jumping out of their chairs.  It was an incredible experience and sealed my pursuit of a game development career. 

Here are videos we’ve found of people playing our game:

Portfolio Web Projects

MuviStar Rewards Program

muvico

ClientMuvico Entertainment, L.L.C.

Where: muvistar.muvico.com

Purpose: Design customer facing software that would interact with the Ticketsoft Loyalty API to allow theater customers to access their earned rewards.  Also, provide theater management with a content management system for editing users data and collecting reports on loyalty usage.

What I Did: I used the CodeIgniter PHP framework to design a complete content management system for this client’s loyalty program.  It interfaced with the Ticketsoft servers to provide customer data, to allow managers to add points and rewards to customer cards, and to show a transaction history for each customer.   I also integrated Facebook Connect for customer logins.

muvico2

I also designed a javascript animation for the rewards bar as well as a popcorn bucket that fills up with popping kernels based on your point level.

Challenges included dealing with one of the largest theater clients we’ve worked with as far as transactions per day.  The client required a large number of additional features beyond our usual Ticketsoft integration.  This meant tuning the database and PHP configurations to optimize the implementation of these features.  We also moved this site to cloud hosting.  It was the first of our loyalty clients on this type of hosting.  This required changing the application to work in a Linux environment versus the Windows server it originally ran on.