vinull

LD26

This is the best time to learn Unity right…. right!?

Yes, I plan to learn Unity while trying to create a game in 48 hours – there is no flaw in this plan!

Okay, the backstory is I’m an ex-XNA developer and I need to move on.  I’m currently looking at Unity, MonoGame, and Sunburn since these are all C# based.  I’d probably be better with MonoGame or Sunburn, but reading the guides on LD48 I decided to use Unity and target the web player.

I’ll use Paint.NET and BFXR for art and sound.  If I have the time, I’ll use FL Studio for music.  I have at the ready the Unity 2D Toolkit and Spline.

I’ve just setup and tested out OBS with Twitch.tv and every looks good.  The live stream will be of technical high quality even if the content isn’t ;)

This will be my first LD48 and I’m very much looking forward to it!

“Quest” Complete

I just uploaded my game “Quest” – I feel really good finishing my first Ludum Dare!  I feel good about finishing, I feel okay about the game.  I never came up with an idea for the theme I felt strongly about.  Next time I think I’ll spend some time brainstorming ideas from the final voting round.

This make my second project completed with Unity.  I still am not sure how collision works in the damn thing, but I’m closer now.  I streamed all my coding to my twitch.tv account and Open Broadcaster Software proved it is professional grade!

Looking forward to seeing the other entries after dinner – and a shower!

LD28

“YoGo Burger” Postmortem

(Posted to my blog as well)

This past weekend was another Ludum Dare game competition, and the second one I’ve taken part in (this first you can read about here).  I also organized a local meetup with the Knox Game Design group and we had five games in total submitted by the deadline.  So without further adieu, here is my wrap up of what went right, and what went wrong!

Theme “You Only Get  One”

For my game, YoGo Burger, I used the theme in a few ways.  The setup is, due to some budget cuts, you can only put one topping on a burger.  The customer will either be okay with it, or hate it and this will affect the amount of tip you get.  To make matters worse, if a single customer complains to management you’ll be fired.  To keep this from happening you use your tip money for bribes.

In practice the game is like playing multiple games of Mastermind at the same time.  Customers will get back in line and order a second burger and if you remember what they liked before you can use that to get it right the second (and third, forth, etc) time.  To make it interesting I reset the customer preferences each day, added more customers, and I also upped the value weights behind what they like and don’t.  The effect is you’ll probably be deep in debt and fired by the end.

The design was very emergent.  The initial idea was a Burger Time / Tapper  / Diner Dash clone with one ingredient.  It’s fair to say I didn’t really have a strong direction at the start, but as I added mechanics it began to take shape.  I’m very happy with where I wound up and think that this kind of creative exercise is what the Ludum Dare excels at (even if the game isn’t fun for very long).

Programming in Unity

Just like the last time, I used the competition as an excuse to learn new technology.  You might say this is the wrong time to learn something new, but twice now I’ve done it and shipped a game so we’ll have to agree to disagree.  The new tech this round was Unity 4.3’s new 2D support.

Having working in Unity before, and having read up on the new features, this wasn’t so bad.  Prior to the competition I had started porting my XTiled library to Unity, so I wasn’t completely green for this project.  I had to google an issue here and there, but for the most part things went smooth.  For the most part.  Let’s talk animation…

Unity revamped their animation system for the 4.x release, and it’s now called “Mecanim”.  It’s a very complex, yet powerful setup allowing you to define animations then link them with a state engine and create smooth transitions procedurally.   That’s all good, but I need to move a sprite a few steps to the right and this seemed impossible.  I’m sure spending more time with the system is what’s needed, but I have reservations about any system that cannot handle a simple, common use case well.  If you cannot do the simple well, how am I to trust you won’t make the complex a nightmare?

In the end I wrote a few lines of code to handle all animations.  I’m a programmer, it’s what I do.

Graphics

Nothing good to report here.

I am no longer satisfied making excuses that “I’m a developer” or hearing “not bad for developer art” or worse “it’s so bad it’s good – you nailed the MS Paint ironic art style!”.  See, I’m not trying for that.  I don’t expect to be amazing, but I think it’s perfectly fine to expect decent.  I commonly tell people I’m not “talented” I’ve just spent a lot of time writing code and anyone can reach where I’m at.  I believe this to be true of anything, and it’s time I took my own advice.

So next year I’ll be reading up on art 101 and spending quality time with Gimp, Inkscape, and even Blender.  Check back with me after 10,000 hours.

Sound

I needed exactly one sound effect for my game, so why is this even a section? Because it was my favorite part of the whole competition!

I wanted a cash register sound when a customer paid for their order, but because of the rules I cannot use anything I didn’t make during the competition and this include sound effects.  Normally I’d use the amazing bfxr app to generate game sounds, but it wasn’t really suited for this task.  I grabbed a portable microphone and headed out to hunt samples Foley style!

In the end I used a bell from my daughter’s bicycle and the opening and slamming shut a wooden drawer full of screws, bolts, and nuts.  I then edited and combined those samples in Audacity, speeding up the playback by about 150%.  The end result was a very convincing cash register ca-ching!

Music

While I’m a horrible graphic artist, I am “decent” at music.  This time I wanted to use my own guitar playing (as Dylan and Levi have done), however I’ve never actually hooked up a live instrument to FL Studio with my current audio gear.  This led to a frustrating session of attempted guitar recordings before I decided there wasn’t enough time left to keep fooling with it and went with all synths – something I’m pretty comfortable with.  (Yesterday I tried again, and it turns out I made a very simple mixer error).

The music inspiration came from the depressing, you-can’t-win-gameplay and reminded me of Papers Please.  To get in the mood I loaded up some depressing Russian folk songs and waltzes until I had the right state of mind.  Not going to win a Grammy, but I think it fit the game well.

YoGo Burger Theme on Soundcloud

And finally, as it tradition, here is a time-lapse of me making the whole thing – 17 hours compressed into 3 minutes!

Tags: LD28, music, postmortem, timelapse, unity

LD29

“Jungle Noir” Postmortem – Ludum Dare #29

(Originally posted to ViNull.com)

The twenty-ninth Ludum Dare was my third and the second time the Knoxville Game Design (KGD) meetup participated as a location.  The last time the KGD took part there was much press coverage that still seems a little surreal.  Less press this time, but five games were made by members over the course of a weekend.  (Hey, now is a good time to sign up for the KGD mailing list to get meetup reminders!)

Meet #TeamNeel

Instead of entering the solo “compo” I choose to enter the “jam” with a team (if that sounds confusing read the FAQ).  The team was comprised of myself, my oldest daughter Rachel (13) and my second daughter Hannah (11).  Both Hannah and Rachel have experience making games with Scratch and App Inventor as well as knowledge of Inkscape and Gimp.  I offer experience in Unity, Audacity, Reaper, and Paint.Net and together our powers combined to form #TeamNeel.  The hash tag is required, as is making the finger sign when said aloud.

The Good

In the early DFA backer videos, Tim Shafer explains his process for designing a game.  I’ve used his process multiple times with great success (in short, spend a good chunk of time free writing and after a bit you’ll have a game design).  This was the first time I went through the process with someone else (Rachel – Hannah was on a school trip Friday night).  The results did not disappoint – we met the theme “beneath the surface” with a hidden object game mixed with a film noir plot in a jungle setting.

I set up a Kanban board on Trello and gave a brief explanation of the process to Hannah and Rachel.  I was surprised by how efficiently this made everything.  I’m a big believer in agile but I didn’t expect it to work so well with two team members that had never used any project management system before.  The girls got the concept of a pull flow, breaking up tasks into small self contained units, and working on one task at a time until it’s completed so well they even told me when I hadn’t updated my own tickets.  I fear the day they learn about code reviews!

I’ve always wanted to make a game with voice acting, for fun and for the experience.  In the alternate reality where I make games for my indie studio full time we always include voice acting.  In this reality it’s a bit harder to pull off.  On Sunday we were sufficiently along in development that we could record lines for all the characters (with special guest Cicelie reading for the Sexy Toucan).  We’re not going to win any awards with our voice talents, but in context of a game jam I think we did a really good job.

Having a game with this much dialog and voice acting meant a script had to be written.  This was another first for me, and I used a table layout in Word that I saw Tim use in a DFA video.  I transferred this data to XML and the bulk of the game’s code was reading and rendering the dialog (and playing the audio dialog at the same time).  The table system I used was a simple three column layout with a column for the speaker, the dialog, and what characters should be on screen when the line is seen.  I had some issues (mentioned below) but overall this was a helpful process that I’ll use again.

Rachel created all of the objects and scene art in Inkscape and Hannah created all of the character art Gimp.  When it came time to create the credits screen they collaborated, but not without an argument of which tool was better.  I wonder if Gimp vs Inkscape will be as big as Vi vs Emacs.  Probably not – both Gimp and Inkscape are useful whereas Emacs is just taking up hard drive space.

The Bad

I mentioned the script above, and the problem I had most was keeping the XML and Word file in sync.  I initially assumed I wouldn’t need to keep them in sync, that once I converted all the dialog to XML I would no longer need the Word file.  In reality the Word file was printed out for reading during the recording session and needed to match the game exactly.  There may be a tool out there that exists to solve this problem and I plan to find it or write it before I do another game dialog script.

The plan was to create a click and point adventure game, which quickly became an hidden object game, which almost became a visual novel.  We had to cut some puzzle scenes to fit in the voice acting but if I’m being honest those scenes were not worth keeping.  Designing actual puzzles takes a lot of time, and I think you could only do it well in a game jam if you had a team member who did that part full time.  Still, I would have liked to have more interaction in the game than what we ended with.

The Ugly

I don’t have anything for this section.  Nothing went wildly off the rails, we never lost hours to a bug or gameplay issue, and no road blocks ever shut down progress.  This will ever happen again in my lifetime.

Closing Thoughts

I really enjoyed sharing my passion for game development with my daughters and look forward to doing it again.  To all the parents, siblings, and friends I highly recommend making a team and entering a game jam.  Game design combines so many different disciplines everyone has something to offer to the process and there is something to learn for everyone as well.  Not to mention it’s a lot of fun!

I’ve noticed something from my game jam games – I tend to create “experience” games rather than “mechanic” games.  Each of my Ludum Dare games have been designed to complete in a single play session of 5-10 minutes long, with no intent of replay value.  Several of my game ideas are either for a similar games, or designed around key moments.  I don’t think this is a good or bad thing, but I think it’s good that I can identify a design bias.  Not sure if I will lean into this bias more or force myself to create a mechanics driven game next.

You can play Jungle Noir at http://www.ludumdare.com/compo/ludum-dare-29/?action=preview&uid=19362

As I’ve done for my prior games, here is a time-lapse of the development:

Tags: jam, postmortem

Comments

06. May 2014 · 20:22 UTC
Nice post mortem. It’s cool that you got your kids involved.

I agree about emacs. Who has the time to memorize all of those weird control sequences? Just don’t tell RMS that I said that. ;D
06. May 2014 · 20:35 UTC
Emacs? Vi? Bah! I don’t mess with either one. Nano is my friend 😀

That is one of the coolest time lapse videos I’ve seen. Getting to see what your girls were doing as well as what you were up to made it quite interesting.
08. May 2014 · 12:24 UTC
Sadly I wasn’t able to capture Hannah’s Screen – I think I’ve got the stuff to add a third, but didn’t try it out before the jam started. I put the stream up on a TV in my office too so we could see what each other was working on and it made it easy to ask questions and get feedback quickly.