21 Apr

Ludum Dare 32: Skull Bomb Game Jam Post Mortem

I did my first game jam this weekend! I participated in the jam portion of Ludum Dare 32 and made a little game called Skull Bomb (play it here). The theme was “An Unconventional Weapon” and after it was announced I brainstormed a bit before settling on ‘blowing yourself up’ as my interpretation of the theme. I didn’t want to have my player character blowing up other humans so I decided to make the game about a world taken over by evil robots. This also worked in my favor that I didn’t have to program any sort of realistic AI.

I’ve been really wanting to do a Ludum Dare since I learned about it but being a dad, having a job, etc always seem to stand in the way of coming up with 48 uninterrupted hours on the jam weekends. This time I decided to not let that stop me and jammed in the hours after my kids bedtime, for a total of maybe 16 or so hours over the 72 hour jam period. I’m really glad I did!
What went well:

I made a game! Not waiting for the perfect moment and the planets to align allowed me to actually make something.

I scoped correctly. I picked a topic I was able to finish in the time I had without crazy crunching.

Used Unity 5. That went well, Unity ran smoothly, few crashes and weird bugs. I think it crashed once.

Using Unity’s Navigation for AI. Setting up the enemy units as Navmesh Agents worked great. I made an array of destinations and selected randomly from that to get enemies moving around un-predictably. Easy and effective.

Simple Sound Design. I added some spooky synth drones that I made with Logic X’s built in Sculpture synthesizer. Sculpture is a physical modeling synth and I love the timbres you can get out of it, I thought they set a good, ominous and abstract tone for the game.

Narrative via Voice Over. This was probably the best received aspect of the project. I wrote a simple voiceover script describing a dystopian sci fi world overrun by machines and laid out the players mission. I had my girlfriend N. read this and did a bit of editing and mixing in Logic. Details I was happy with that people commented on as well were the cut-up phone maze style strings of numbers that added to the overall dehumanizing atmosphere. Using a voice over was cheap and easy (maybe 2 hours work to write, edit, mix and implement) and added a whole narrative layer to the game that I thought was very effective. Because it ran in the background at startup it allowed the player to experience the narrative without having to wait, read or otherwise be delayed from experiencing the game play. Several people commenting on the game remarked on how well the voice over worked so that was definitely a high point.

New Genre/Mechanic. I’ve never tried to make a stealth / sneaking style game and was quite happy with that aspect of it. I definitely learned a lot and enjoyed working with the form in a short format. This is perhaps my favorite aspect of jamming, the chance to try out different genres or ideas in a short form, low stakes way and get feedback.

Art Style. The art style that I chose was simple, minimal and achievable. I was happy with the result and felt like it worked well with the theme. I got a few nice comments on it so I consider that a success, especially since I consider myself a non-artist. I also got pretty close to my initial ‘vision’ visually.

Getting Feedback / Iterating. By posting the build a few hours before the deadline I got some very useful, maybe critical feedback about playability, controls and clarity. This included a lack of clarity on where to go which I tried to address and not locking the mouse cursor which lead to issues in browser based play. Catching these early was good. I’ll definitely aim to do this in the future, getting those little bits of feedback before finalizing was great.

What went poorly:

Level Design. Several people commented that they wandered around, didn’t know where to go, couldn’t find the goal. The way I laid out the level had no clear (or unclear) path through it, it was just a big box. After getting that feedback I added a moment in the beginning where the player falls from high up and gets a chance to see the black box that represents the server. In hindsight I really gave the player almost no clues as to where to go. I even was considering initially having the monolith change it’s location each time player spawned to add replayability and difficulty. I realize now that that would have been a mistake.

Difficulty. The difficulty was very inconsistent. Sometimes the enemies randomly left big clear paths, sometimes they created impossible, inescapable situations. With more time or better planning I would have set up some more carefully planned routes for the AI to patrol that interlocked, created gaps etc. As Twitter friend @ChrisLaPollo points out though that these are the types of things that you learn in making a jam game and can polish up after.

Browser Support. Annoyingly Google Chrome dropped support for NPAPI plugins right before the jam breaking support for Unity Web Player. The game played fine in other browsers but this was just kinda annoying.

Control Tuning / Playtesting. Several players complained that the movement speed was a little slow. I actually bumped it up a bit but probably could have taken it up a little higher. More playtesting earlier probably would have helped this but given that I was jamming on my own in my apartment I didn’t have local playtesters available. In the future I’d like to try and jam with a team and / or at a space with other people. I think this would have helped a lot to catch this and some other issues before posting.

Play the game here, or watch a video below:

09 Apr

Where I’ve Been

Aaaaand we’re back. A few of you NewbQuest listeners / watchers / readers have very politely asked me what’s up with the show via Twitter (@mattmirrorfish). It’s been a pretty busy period for me, with the main news being: I got a new job! I’m now part of the Online Content Team at Unity Technologies and help out there with making videos for the Unity YouTube channel as well as doing about half of the weekly Monday afternoon (US EST time) Twitch streams teaching Unity. It’s an awesome job and I’m super happy to be doing it. It’s definitely in line with the mission of what NewbQuest is all about. The sad fact though is that it’s pretty time and energy intensive and because it’s similar to what I was doing for the show it’s caused me to go on a bit of a hiatus. I’m bringing the show back to life to release an episode that I’ve (shamefully) been sitting on for quite a few months with the excellent Steve Swink (sorry Steve!) and I’m aiming to make some more regular updates here now that I’m settled into my new job, new apartment and generally re-arranged life!
For those who use Unity I’d love for you to check out my first big project for them which is a 14 part tutorial series on creating a 2D Roguelike game. This is aimed at intermediate Unity users but if you’re a beginner with a lot of gumption and desire feel free to dive on in.

I’ve also been working slowly away on my procedural flying butterfly shooter Pollen and have made some progress with it. You can check out some gameplay footage of the first two levels here:

05 Jun

Pollen DevLog 2: Clouds, New Enemy Spawning, Sounds

pollen_ss_041114

 

 

Pollen is a game project I’m working on in Unity, it’s basically my first game and I’ve been working on it part time since October 2013 while teaching myself programming and game design fundamentals.  I’m calling it a low poly butterfly action rogue-like like.  It’s probably more ambitious of a project than I should have attempted as a first real thing but I am nothing if not ambitious.  It’s been slow but I’ve also been teaching myself a lot of stuff in the process. It’s been deliciously fun.  In this devblog I demonstrated my new sound effects, new clouds and new dragonfly enemy type.  This is a short devblog where I show some gameplay and explain the latest stuff I’ve done.

11 Mar

Obsessive Compulsive Development Talk

Screen Shot 2014-06-05 at 2.48.37 PM

Just watched a really good talk from Matt Gilgenbach of 24 Caret games about the struggles and mistakes he made during the development of his game Retro/Grade.  It’s a really emotionally raw and honest talk about a series of bad decisions he and his partner made in terms of investing way too much time in things that didn’t ultimately result in the success of his game.

I think there are some really useful lessons for new developers here even if his is not a new developer story. Here are a few takeaways I got from it:

1) Play Where You Can Win: as a small indie studio trying to compete on things like 3D rendering quality against AAA studios is a losing battle. Choose an art style where you can do something expressive and polished within your resources.

2) Set a Deadline: Gilgenbach describes a circular loop they fell into of being afraid to ship since they’d spent so much time, which caused them to invest more time (and money). Choose a date or other trigger that will force you to call the product good enough, not keep tweaking and adding endlessly.

3) Focus on Saleable Features: This is a bit of a hard one but important I think.  Technical features like frame rate and resolution help sell games but they are secondary. It’s more important to invest energy into features that are easy to communicate to the player like: “You can turn into a badass dragon and fly around burning stuff!” Not: “We created a modular re-usable game engine for all our future games!”

I highly recommend this talk and want to offer my thanks to Matt Gilgenbach for being so open, honest and vulnerable in sharing this valuable information. Talking about painful experiences like this takes courage, especially in such a public platform.

Check out the talk here for free from GDC Vault, and check out Retro/Grade on steam here.

23 Nov

Newbquest Dev Blog 5: Simple 3d Procedural Level Generation, Physics Based Weapons

 

In this latest update in this series of dev blogs documenting my progress learning Unity, procedural content generation and scripting I show how I have created a very simple procedural level generation system and physics based weapons for my flying six degree of freedom roguelike game Butterfly.

I’ve been very interested in the roguelike hybrids that have appearing recently, games like Spelunky and Risk of Rain.  I love the idea of procedural content generation, especially with regard to levels.  I’ve been experimenting with it myself and have come up with a very simple system that is working for my current game project Butterfly.  I can’t tell you how excited I was when I actually hit play on Unity and it spawned that first randomized level!  So coooooool.

I’ve also added some pretty cool physics based stuff to the game including re-working my homing missile system to be physics based instead of using transform manipulation.  The result is a lot more graceful and less glitchy.  In the process I have been learning a TON about javascript and unityscript and am really enjoying that.  I’m actually getting to the point where I can imagine and write scripts that do the things I want without having to google for hours to find something pre-built.  That is an incredible feeling.

I have to also take a moment to express how much fun it is working with the Unity platform and community.  The people on the forums and Unity Answers site are just incredibly friendly and helpful and I have learned a huge amount just reading the existing body of questions and answers.  If you are on the fence about choosing Unity as a platform I really can’t recommend it more highly.

26 Oct

Butterfly Dev Blog 4: Shields and Ammo

In this update I added a shield system where you press and hold a key to spawn a shield around you which blocks projectiles.  The shield has a ‘capacity’ resource which runs down the longer you hold it. When it runs out the shield stops working. When you release the key, the shield will recharge and fill back up in between engagements. I also added an ammo function which tracks how many missiles you are allowed to fire and disables the firing capability when you run out.  For me both of these tweaks are an attempt to add more frequent and relevant decision making to the game. I want the player to be having to make as many decisions as possible over the course of the game and so am trying to add mechanics which force them to consider their next action, even if they are doing so very quickly.  The balance between something fast paced and strategic is interesting to me and something I’m hoping to explore further as I go.

 

19 Oct

Newbquest Dev Blog 3: Health System & New Music System

Just added some new features to the game, the latest is a simple health system, big shout out to Jessie Etzler for the free script and easy to follow YouTube tutorial here. I’ve also added a simple music system I wrote myself where depending on where you are in the game world it will crossfade between three different music loops. I walk through the script of how I did it in the blog, maybe it will give you some ideas for music systems in your own games. I also made some improvements to the targeting system for the enemies which still needs a bunch of work but is feeling a lot more responsive and fun. Combined with the health and music it’s starting to feel more like a real game experience, which definitely has me feeling more motivated.

17 Oct

Newbquest Developer Blog 2: Game Design and Music Sample

Trying to keep the rhythm of posting something every day or at least every day I work on the project.  Today was a long day at work so I am sharing a short piece of music and a game design document I created in Xmind.  Xmind is a cool, free mind mapping / flow chart tool which you can download here.  I enjoy it for this type of project design work and you might too.

Was this interesting at all? Not sure if this type of non-unity focused content is interesting or useful for anyone but I’m still figuring out the format here. Thanks for checking it out!

16 Oct

Newbquest Developer Blog 1: Butterfly Intro

I’m back! It’s been a while. I was very busy, but now, here I am.  I’ve decided to experiment with a new format for this blog which will focus on posting short video developer blogs, showing the progress I am making with learning to make games in Unity.  This is a short intro to my current level of progress, as I work further on the project I will provide more detailed explanations of what’s going on and what I’m up to. This first short video is showing what I’ve created so far and explaining a few of the systems involved.

The project I’m currently working on has the working title: Butterfly.  The basic idea is that you fly around in 3d space  as a butterfly and shoot missiles at other butterflies.  Although at the moment it’s quite absurd my goal is to develop it into something more visually beautiful. I’d like it to be a visual audio experience as much as a game and so I’ve got some placeholder audio and visual assets in there to start.  Once I get things going a little less shakily I’ll post some web players so you can try the mechanics yourself.

A few notes about my approach.

My goal in posting these videos and blog posts is to try to meet other people who share my interests, and to hold myself accountable and motivate myself to make progress. I feel like having an audience, even if it’s very small, will help to keep me on track.  I was very inspired by what the people at Overgrowth are doing with their documentation project. I am not as cool as them, nor is my game, but hey.

I am very inspired by the Lean Startup methodology so a big part of the reason I am sharing this in such an early state is to try to get some impressions and feedback from anyone who looks at it.  I welcome all feedback, positive, negative and everything in between.  If you think this is a dumb idea, that’d be great to hear! If you’d like to see it go in another direction, that’d be great too.  My goal is to try to build up this simple prototype and iterate on it until it becomes something cool and fun and to try to do that in a fairly public way through this blog.

I’d love to hear from you! Feel free to leave a comment here or on the YouTube page where the video lives. I promise to reply to everyone.

Thanks!

Matt