DevSpace Technical Conference 2015

DevSpace

DevSpace Conference Overview

I gave two talks at the DevSpace technical conference in Huntsville, Alabama last weekend.  The conference was organized by frequent CodeStock speaker Chris Gardner.  I have a lot of respect for someone who starts a technical conference on their own from the ground up.  I had a great time at this conference as it was my first time speaking at a conference outside of the Knoxville, Tennessee area.  Huntsville is a very nice city in northern Alabama.  I had visited Huntsville about two years ago for a sporting event at the Propst Arena at the Von Braun Center in downtown Huntsville.  It was a great experience to return and speak at the conference center at the same location.

I stayed at the Embassy Suites, which is right next to the conference center and is connected by an enclosed bridge.  This was one of the nicest hotels I’ve ever stayed and the conference discount made the nightly price reasonable.  In the conference center, they have flags hanging from the ceiling representing all of the 50 states.  I noticed that the Georgia flag was the old blue one that was used in the late 90’s.

The first morning started out with a keynote from another speaker from Knoxville named Alan Stevens on the lower floor of the conference center.  The individual sessions took place on the upper floor.  A nice game room was provided by a local arcade shop.  I was able to take in a few games of Street Fighter II Hyper Edition, Galaga, and Star Trek pinball between sessions.  Best of all, the arcade games were set to free play.  Free T-shirts were given out by DealNews as well.

I attended sessions by fellow Knoxville Game Design member Michael Neel on Not Teaching Children Code and an Introduction to Unity.  There were other interesting sessions that I attended on network packet monitoring, functional code, REST best practices, prototyping mobile apps, and Kanban with Scrum.

Promoting Your Game with Social Media

My first talk was late on Friday afternoon.  I covered the various social media sites that can be used to promote a game and I also covered the analytics of each of the sites to measure your audience.  Many of the social media sites can be used to promote any product.  I also covered a few sites that were devoted specifically towards promoting games.  My talk did spark a lot of discussion from those who attended the session.  One person said that they found the ability to schedule a tweet in TweetDeck very helpful.  There was some interest in using the Twitter APIs and OAuth authentication.  I had written some code months ago in Ruby to pull data from Twitter using OAuth.  There was one question about when is the best time promote a new game and my best advice was continually promote through the development process so that you build a following.

Playmaker for Unity

My second talk was early Saturday afternoon on using Playmaker to develop Unity games.  Mike’s talk the previous day was a great introduction for my presentation, as it meant I didn’t have explain all of the basics of Unity and hopefully session attendees were already a little familiar with the Unity terminology.  In this presentation, I gave a demo of how to create a space shooter using Playmaker.  I had five basic steps, and I already had pre-built scenes for each step in the development process.  This made explaining things much easier, as I didn’t have to worry about doing all of the technical steps live, which can slow down the pace of the presentation.  Earlier in the week, I made a final polished version of the space shooter with models imported from the Unity Asset Store and many other special effects such as lighting, a scrolling background, and a tail renderer for the bullets.

 

Conclusion

In my opinion, the most difficult part of presenting is keeping track of time.  It also doesn’t help when your talk doesn’t end at the top of the hour, since there are usually never clocks in the room and your PowerPoint presentation in full screen covers the clock in the system tray.  The clock on my phone didn’t help, as it kept auto-sleeping after a minute.  When I’m sitting in the crowd during a session, the time seems to go by so slowly and I start thinking about how it’s going to be impossible to talk for an hour.  However, whenever I get up in front of a crowd everything seems to come naturally and the hour will fly by in what feels like just a few minutes.  I do like to cover all of my main points on my slides first, and then the remaining time will determine how in-depth I go into explaining the demo.  I did remember to bring a bottle of water with me this time, since it is really easy for your mouth to go dry while talking for an hour.

I had a great time at DevSpace, and I hope the conference continues to grow in the upcoming years.  I was really happy to be a speaker at a new conference to help get it off the ground so it will be held again for many more years to come. There is a severe lack of technical conferences in the southeastern United States, so I will do whatever I can to help establish new conferences. My only complaint was that the WiFi was spotty at some locations in the conference center.  My social media talk relied heavily on showing the different sites on the web, so I had to make sure that all of the sites were pre-loaded in my browser before I started my talk.  The projectors were a little old, but fortunately I packed my MacBook VGA adapter that I bought years ago and never used.  I definitely look forward to attending DevSpace 2016 next year!

Giga Guy

Version 3 (September 2015)

This version is being developed for the Mini LD #62.  It currently includes three boss battles with Air Guy, Metal Guy, and Wood Guy.  I am currently making development videos as I finish developing each of the boss battles.

 

Version 2 (August 2014)

This updated version was a 2D platformer, where you tried to make it as far as you could in the Air Guy stage.  Giga Guy was remodeled and animated in Blender.  This was a test project when I was learning Playmaker.

gamejolt_thumbnail

Updated side scrolling version.

Version 1 (May 2013)

Giga Guy started out as a 3D adventure game that I developed as I was starting to learn Unity.

Just a test project from when I started learning Unity3D.

screenshot001

 

Released

Monster Hotel


Monster Hotel

Overview

All of the monsters in Monsterland stopped by the local bar for a few drinks after a hard day of monster work.
Since drinking and driving is not permissible in Monsterland, the monsters need to find their way to the Monster Hotel to stay the night.  As the owner of Monster Hotel, you need to help the drunken monsters find their way to your establishment.

All monsters coming out of the bar are boogey men. Use your powers to transform the monsters to make their way to the Monster Hotel.

Wolf Man – Can dig through ground
Vampire – Allows the monster to land softly from a long drop
Frankie – Blocks other monsters from proceeding

Post Mortem

The game uses the same basic mechanics as the  Lemmings game that I first played on the SNES.  I remember Nintendo heavily promoting the game at the time, as it was featured on the cover of Nintendo Power.  In 48 hours, I knew I couldn’t implement all of the different Lemming abilities.  Therefore, I just picked three of the ones that I remembered.  Those were the digger, the floater, and the blocker.

For this game I used Tiled for generating an XML file containing the positions of the blocks, as well as the entry and exit positions.  The TMX file has to be renamed to TXT and placed in the Resources folder to be able to assign it to a TextAsset which is used by my UnityHelper XmlReader script.  Then the Prefabs are assigned to the script, which does the job of instantiating the Prefab objects at the correct positions.

I created an object which spawns the units at regular intervals.  The units will keep walking in a straight line until they collide with a wall.  I used a capsule collider for the unit, and I set the local Z velocity to a constant value on every frame.  When the unit collided with a object with the wall tag, I would rotate the unit by 180 degrees, which would make the unit walk in the other direction since the local Z is now pointing in the opposite direction.  Unfortunately, it would also detect a collision when the capsule collider touched the ground.  To fix this, I added a box collider in front of the unit which does not touch the ground and fires a trigger when it hits something with the wall tag.  By using a trigger, I ensure that my box does not react to the world physics.  I also added a similar trigger event so that the units reverse direction when bumping into each other.  Otherwise, the units would start stacking on top of each other.  Ideally, I would have the units pass through each other, but that problem would be too difficult to solve under the time constraints.  To keep the units pinned on the Z plane, I set the rigid body constraints on the Z position.

Another problem arose when the trigger box hits two wall blocks at the same time.  This would change the direction of the character, and then immediately change it back to the original direction.  To fix this, I added a small amount of delay to the trigger state so it would only fire on one trigger events.
The digger simply stops and starts digging a hole below his current position.  I determined which block to remove by shooting a ray downward from the unit’s position.  However, this really didn’t create a hole big enough for the units to fall through.  I used the position of the block removed and casted a ray to the left and right of that position, and destroyed the adjacent blocks as well.

The floater unit prevents the unit from dying after a long fall.  I added another collision event which compared the force returned from a collision, and if it is greater than a certain value (force of falling more than three units down) then it would destroy the unit.  When I was testing this, I never noticed the units dying, so it seemed like I was losing units for no reason.  For that reason, I spawned a particle effect where the unit was destroyed.  I just used a standard particle effect, but I wish I could have made a goopy style splatter.  To obtain the floating effect, I simply increased the drag value on the unit’s rigid body.
The blocker was fairly easy to implement.  When that ability is activated, I just increased the mass of the unit so that other units can not push it.  I also set the movement to the standing state, similar to the digger, so that the unit stays stationary.

I increased the available ability types by one for each stage.  That way, the player is not presented with all of the abilities at once.  Using the new ability type is essential for completing the current stage.  If I had more time, I would have liked to had more levels, and levels that would require using a combination of abilities to complete.

I saved the modeling and graphics for last.  In some of my past entries I would spend too much time on the modeling, so this would force me to do it quickly.  Since this is a monster theme, I decided to use a different monster for each ability.  The default creature is the boogeyman, since I think of the boogeyman as being any type of creature.  The Wolf Man is a digger because I think of canine type creatures as diggers.  I made the floater a vampire, since bat type creatures can fly.  I made the blocker a Frankenstein (shortened to “Frankie”) since he is big and immovable.  I wish I could have made a morphing effect when transitioning between abilities.

I used Blender for making the character models. I created a simple half outline in Gimp, and then I used that outline to form my models using loop cuts, resizing, and translating vertex positions.  I created a simple six bone armature and created a simple walk animation in the dope sheet action editor.  I then unwrapped the mesh using the “from view” option which makes painting the texture model much easier (although there is more stretching around the sides).  I exported the layout in the UV editor and painted the texture in Gimp.  I did mess up once by not separating the front and back layouts, so my creature had eyes in the back of its head.  Separating the back layout wasn’t too difficult, so I just had to draw the back side of the creature.

The boogeyman that I designed is just a simple imp type creature.  I used the same mesh for the wolf man, but I gave him pointy ears and I elongated his snout.  I tried giving the vampire wings, and used white face with a black rope with red trim.  I had “the master” from Manos: The Hands of Fate” in mind.  Frankie was given a blocky head and body, which was done by modifying the mesh.  I wasn’t going to spend the time modeling bolts into the side of his neck.

I modified the animations slightly for the monsters.  The vampire flaps his wings.  Frankie holds out his arms and twists his head in a similar fashion to the blocker in Lemmings.

I updated my GarageBand software to the latest version earlier in the week, and I used it on my Mac laptop for composing the music.  I used a B minor signature for composing the music.  I used some organs which sounded creepy and kept modifying the notes until it sounded okay.  I made another similar track which was a little slower for the title screen.

I recorded my own voice making howling, “blah”, and grunting sounds for each of the monster types.  I lowered the pitch and added echo effects to make the sound effects seem more creepy.

Overall, I am happy with what I was able to accomplish in two days.  This entry definitely feels more “gamey” than my previous Ludum Dare entries.  The biggest weakness of this entry is probably the lack of levels, since I only have three and ran out of time to make more.  I will probably make a short trailer and throw it up on Steam Greenlight to see what sort of response it gets.

 

Released