Showing posts with label Game Industry. Show all posts
Showing posts with label Game Industry. Show all posts

Wednesday, September 19, 2012

New Project Day 7 of 7 Recap (finally)

NOTE - So I'll admit this 7-day project ended up stretching out much longer than I thought it would in terms of the overall duration. I plan to do a postmortem regarding this project and some of the lessons I've learned to improve the experience when I do it again.

Spent my last day on this project getting my hands dirty with GUI stuff, which ended up swallowing most of my day. I decided to use the NGUI plugin for creating my UI's in Unity for this project, and while it's nice I was scrambling to learn enough to get it functional in my game in any usable form.  I did get a basic score and time display working and added a flare text pop-ups when you gain points, which feels good.

I also spent a bit of time improving the feel of the game by added sounds and animations for user input actions like pressing tiles, dragging times, flipping tiles and detonating tiles.  Below is a small clip to highlight the user feedback.


You can really see the tiles pop-up larger when selected or dragged over while creating a drag connection.  I deliberately made the tiles scale up very large because this will be an iPhone game, and I wanted the tiles to grow large enough so the player can see them under their finger.  I originally used a small scale up, however when I was testing on the phone it didn't read well, so I decided to make it crazy large and felt pretty happy with it.

As for the game mode I talked about earlier, I've decided I probably won't go with that for the final game I release. I kind of liked it, however it felt very un-directed and lacking in substance.  I'm going to spend some time trying out more of a simon-says type mode where you need to create matches based on combinations of shapes the game presents you.  I'll post updates on that as it develops.

I plan to doing a postmortem summary as a different post, however I just wanted to say this "7-day" project was an awesome experience for me and really pulled me out of a funk.  Once I digest some of the lessons from this first experience, I plan on doing another 7-day game in the near future to keep my momentum and creative juices flowing, so stay tuned!

And as a final note, a fellow Raleigh studio BitMonster Games released Lili, their first iOS game today.  I highly recommend you check it out, it's a beautiful game.
Liliā„¢ - BitMonster, Inc.

Monday, May 21, 2012

Fixing Long Load Times in Shatter Crash

Development on Shatter Crash is moving along pretty well, we are currently working on polishing, UI and bug fixing.  One of the things I decided to tackle today was the long load times we were seeing when traveling from our game play scene back to the main menu scene.  This was especially bad on the iPad's, where we could see load times between 10 and 15 seconds.

The first thing I did was use Unity's cool profiler tool to get a sense of where time was being spent by running the game on my computer. However this ended up failing horribly because the editor continually stalled or crashed while I did deep profiling, probably because the call trees were incredibly deep.  Doing regular, non-deep profiling, didn't flag anything that jumped out as problematic, so I began to suspect the issue had to do with asset loading. As a note, as far as I know Unity's profiler doesn't give much details about asset loading/unloading, so this was simply a theory. (As a note, I didn't have wifi access at the time, so was unable to directly profile the game running on the device.)

I began to suspect the extended load times had to do with our GUI solution forcing Unity to pull in a lot of textures and create a number of object hierarchies.  I tested this by creating an iPad build with most of the UI ripped out to see how much faster the main menu loaded.  To my surprise, it only dropped the load time from ~15 seconds to ~14 seconds...looks like the GUI isn't to blame. I eventually resorted to brute force debugging by removing objects from the scene and pushing a new build to the device to see if things got better.  This certainly wasn't an ideal debug flow, but it did work.

I eventually found the cause of the load time spikes was related to how we referenced the puzzle data for Shatter Crash's game levels.  Our puzzle data is stored in ScriptableObjects for convenience, and each 'level' contains lists with hundreds, or thousands, of entries which define each piece on a puzzle board. For simplicity, I had created a script and prefab which directly referenced each of these puzzle ScriptableObjects (about 30), and this prefab was referenced in the main menu.  Removing the reference to this puzzle container prefab dropped our load times from ~15 to ~3 seconds...sweet problem found!  It seems Unity was taking a long time to load the main menu because it was loading and parsing all the list data in each of the puzzle data files.

Now that I knew the cause of the problem, the fix was fairly straightforward, although a bit tedious.  I changed the puzzle loading system to use Resources.Load to dynamically load the puzzle data we needed on-demand.  I generally shy away from using the Resources.Load() much because it's a real pain in the butt to keep asset paths up-to-date, and when I do I generally write unit tests to validate the existing paths are good.  While I was copy pasting strings, I came up with an idea for a new tool to automatically create Resource paths, hopefully I'll have a chance to create it in the near future

*UPDATE* - The game described here was ultimately released as 'Shatter Crash'.  I edited several places where I referenced it by its old name 'Access Point' to refer to the new name

Thursday, April 23, 2009

Finally online

So I finally got around to setting this up. I put off doing this for about 2 months because I couldn't figure out a name I liked. Sounds insane now that I think about it...but I'm a stickler for little details like that.

I decided to start this so I could share some of the experiences, lessons, tricks and tweaks I've come across during my time as a games/serious games developer. What are serious games? The short answer is using game technology and ideas to develop engaging training software (Wikipedia's definition if you like). Before I started working full-time, I spent a large portion of my college time as one of the lead programmers for the UT2004 mod Red Orchestra. That was a quite an experience, during my time there we won Phase 2 and 3 of the Make Something Unreal Contest for best FPS mod. The experience and exposure from Red Orchestra is what eventually landed me my first (and still current) job in the industry.

The next couple posts will be advice on how to break into the game industry. I know it's a pretty jaded topic, but since I lived through it I might as well share it.