About vinull (twitter: @vinull)
Awarded by GaTechGrad
on August 26, 2014
(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!)
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.
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.
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.
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.
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:
(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.
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.
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!
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.
And finally, as it tradition, here is a time-lapse of me making the whole thing – 17 hours compressed into 3 minutes!
(note, I wrote this for my blog which is why I spend time explaining LD48)
This past weekend I took part in my first ever Ludum Dare, a competition to complete a game in 48 hours. There is no prize for first place, there are no long lists of lawyer requirements to sign, and there are no restrictions on tools, platform, languages, or ever what counts as a “game”. The Ludum Dare is hardcore indie, and people do it for the love of creating games. How many people? This weekend saw over 2300 games created, 1600 of which entered into the competition and the rest into what is called the “Jam”.
The competition rules are few and straight forward. Work solo, create all code, art, and sound for your game in 48 hours. You can use any tool, but any code libraries must be available to all (if you want to use your own code library then you must post it publicly for anyone to use before the competition starts). You must also share your code for review though this is just incase any questions come up about the other rules, you retain all rights. If you want to break one of the rules and also take an extra day you can enter the jam which is judged separately. Judging is done by those who submit games.
For the LD48 (short hand for the competition) I decided to use Unity. I need to move away from my beloved XNA since Microsoft already has. Unity allows scripting with C# and Mono plus it supports every major platform and has a free version. To get ready I worked though a 3D Buzz Unity video tutorial and if you’re really curious you can see the result here.
I also spent time getting to know the LD48 process. A week before the contest people submit ideas for the theme, which then get collected and voted on. During the voting, one of the suggestions became very divisive: “potato”. Some felt that this was a joke theme that should have never made it to the final list. Others felt this was a great theme. Someone made a comic. Someone made another comic. Someone made a video. Things escalated on twitter. I made a decision to take a side. I don’t claim it was a wise decision, but I stand by it.
My first snag what the theme. Potato didn’t make the top 50 and “minimalism” was the theme. I don’t feel the game I created, a simple action RPG inspired by the classic Adventure on Atari 2600, meets the theme well. Yes, I can say it’s a minimal RPG stripped to its core, but guess what? All games in the LD48 are stripped to the core! If you have only 48 hours you are not going to make a very deep and complex game.
I spent an hour brainstorming ideas and then decided I didn’t have more time to waste and went with the idea for “Quest”.
What Went Right
I finished the game! It has about 15 minutes of gameplay, sounds, music, special effects even! This may not sound like much but this was my true goal. LD48 is filled with tales of designers who start but didn’t finish. I had only two weeks of experience with Unity but luckily didn’t get stuck too bad at any one spot.
I made all the 3D models in Unity from either the basic cube or sphere. This saved a lot of time as I’m not experienced with Blender and don’t have access to any pro level 3D modeling tools.
No tutorial. I only put the keys used on the start screen, and had the player face the castle. If you entered the castle, a message said “Retrieve the Chalice” giving you your quest and letting you know to come back here when done. This may sound like a small thing but to a game developer it’s a very big thing. Tutorials talk down to the player, but a player who discovers the game goals and rules feels a sense of accomplishment. I had my wife and two oldest daughters play the game with no guidance from me and they all got the goal, so I put this in the win column. (My wife and oldest also beat the game with no guidance too).
The music – I’m pretty happy with the theme song. I mean, it basic song writing 101 and I’m not going to win a Grammy or even get work as a freelance composer from it, but 6 years of band plus 1 year of music theory paid off! I posted the song to my soundcloud account:
What Went Wrong
This is the interesting part, right?
Collision detection – I have no idea how this really works in Unity. Three different times I had to stop and completely rewrite all my collision detection because a door wouldn’t work or the player would walk over a monster. To make matters worse, there have been changes to Unity regarding collision detection so many times I found Google gave me a link to an old article and there was a new, better method.
Sound effects – I used BFXR to generate all my sound effects, which is an excellent tool. The problem is it generates mostly 8-bit era sounds and none of these fit well with the sound I wanted. If it wasn’t against the rules I could have busted out my collection of purchased effects, but since it is against the rules I found sounds I could tolerate and moved on.
No mouse look – yea, wtf was I thinking? A first person game with no mouse look? Really!? Honestly, until I got comments about it I never noticed this. Since I’m also the one who made the decision to swap the common use of thumbsticks (move/look) on Incablocks I think there is a pattern here.
Difficulty – the game isn’t hard, but it’s not clear that the best way to fight enemies is to hit them, then step back before they can hit you. If you stand in place they will tear you apart. This is the main reason most people don’t finish and I probably should have come up with a way to let the player know to move back after attacking.
Overall I really enjoyed taking part in LD48 and will try to do again in the next one. I’ve learned I really like Unity even though it means I cannot deploy to my favorite platform Xbox (Unity supports Xbox, but not Xbox Live Indie Games which only allow XNA titles).
So if you’ve read all this and have 15 minutes, why not play Quest?
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!
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!