Geoff Alday

VR Prototype

So it turns out, the time spent learning how to make games as a personal interest earlier this year has become useful in my work life. A few months ago, I started thinking about and exploring how emerging technologies can be used with Watershed. The general approach has been to identify a technology, come up with a use case around learning/training, and create a working prototype that sends data to Watershed to be reported on. The first of these was Amazon Alexa which was quite fun.

There were more than a few ideas about where to go next. Given the amount of interest and buzz in the tech industry around virtual reality, I decided to dig into that. The use case we landed on was around identifying industrial safety hazards.

The prototype I’m currently working on uses a number of technologies. Since I don’t own any high-end VR hardware, I decided to go with the Google VR SDK and build a Google Cardboard app that runs on my iPhone. I’m also using the open source TinCan.NET library and JSON .NET asset for Unity to send data to our platform.

With a Google Cardboard app, there are three basic inputs you can work with: look at, look away, and click. I decided that when a user looks at and clicks on each unique safety hazard, the prototype should send data to Watershed expressing who identified it. There are a few other data points I’m considering collecting as well.

Though I wanted to create all the 3D assets myself, for the sake of time I instead leveraged Unity’s Asset Store. This allowed me to construct the simulation’s environment in a matter of days instead of months. I’m using a mixture of both free and paid assets. I’m pretty happy with the results though part of me still wants to dust off my 3D modeling skills. Another part of me wants to add roaming zombies.

Industrial Safety Hazards Unity screenshot Screenshot of the prototype in Unity

Video capture of the simulation running in Unity

Facebook 360 photo of the simulation environment (click to open and pan around)

There is still more to do before I can call this prototype done. When I get there, I’ll write a more exhaustive post about the process, challenges, and successes. For now, I wanted to capture my thoughts and progress so far.

Game Finished

I have finished developing the throwaway game Alien Dash. Woo-hoo! This is my first tangible effort toward learning game design and development. It’s only 4 levels but all the basics seem to be there to expand on for this type of game.

Video of finished game.

I’m pretty happy with all I’ve learned since I started this process a little over a month ago. Next steps are getting professional feedback on the code and coding patterns I used. Also figuring out what sort of game to make next.

You can play the finished game in a desktop web browser here: Alien Dash.

Game Progress

Last week was surprisingly productive on the learning game development front. A list of what was accomplished:

  • Added the source code to git and Github
  • Game name shows up when installed on phone
  • Added music and sound effects
  • Implemented a generic singleton class other classes can inherit from (vs writing that code over and over again)
  • Implemented Unity’s audio mixer for better control of music and sound effect levels
  • Tweaked the player’s ground check settings for better late jumps
  • Save game state to player prefs
  • Destroy death particles when they’re done
  • Implement a parallax background
  • Removed unused scripts and sprites
  • Tweaked levels and added a new level
  • Fix a number of bugs

Video of game with music, sound, and me dying a lot.

Even though the list of things to do will likely grow, the end is in sight. I’m 83% of the way there. That’s pretty exciting.

Game Progress

A good milestone was hit late last week in my learning game development journey. I finished a full basic game loop. This means you can: start a new game, restart a level when you die, quit a level when you die, progress between levels when you reach a level’s goal, and quit the game when you’re tired of dying. I also came up with the name Alien Dash for the game. With all this accomplished, it’s a lot easier to play the game.

Full basic game loop

I realized this weekend I have finished half of what I want to complete. I’d like to have everything checked off within the next 2 weeks. After that, I plan to seek out people who actually do game development to have them review my code and overall process (i.e. I’m seeking professional critiques).

Game progress card Features and tasks done so far

Whenever I’ve had the chance, I let people try out the game. This has included my kids, their friends, and people I work with. It’s fun watching them play and I learn so much from what they say and do. I’ve tweaked quite a few things based on this already. In that spirit, today I made a Mac build of Alien Dash anyone can download.

Game Progress

Slow progress the past few days due to trying, and failing, to implement 2D ray casting to prevent the player from being able to jump while in the air.

Example of the pesky multiple jump thing I was wrestling with.

After switching to using a ground trigger object. Also added a second level.

Learning Game Development

One of my goals this year is to design, build, and release a mobile phone and tablet game (iOS and probably Android). Right now my current focus is on creating a throwaway running platformer game as a way to understand the game development cycle. I’m learning about game structure, game loops, touch interactions, how to integrate art, and so much more. I’m using the Unity game engine along with free game art from Kenney. Below are a few videos of my progress so far.

Basic jump and physics working on my computer. Also quicksand.

Learned how to get something deployed to my iPhone. Also added a basic start screen.

Integrated game art, player animations, a slightly better jump, and made the camera stop when the player dies.

Tweaked the level by adding hazards and a goal. Learned a lot about what to do, and what not to do, re: spritesheets. Note how the tiles have some ugly visual artifacts.

Cleaned up visual artifacts, implemented better jumps (i.e. tap once for a short jump and hold for a longer jump), added a static background, added a vignette camera effect, and added more hazards to make the level harder.