Your Guide to Seeing Mike at CodeStock 2014

Update:

The Quest for Fun talk has been moved to Saturday at 4:30 PM (and Getting Started with MongoDB in .Net has been moved up to 1:50 PM) – no room change on either.  This was to make room so that I can sit in on the CodeStock Annual Women in Technology Panel Saturday 1:50 PM in room 400a.

Original Post:

It’s that time of year when Knoxville, TN becomes frequently mentioned on Twitter in tech circles – aka CodeStock!

This year there are 2 days, featuring 70 speakers, giving 120 presentations to 450 attendees and I know what you’re thinking – how can I increase my odds of seeing Mike speak at CodeStock will all this going on?  Well fear no more, this handy guide will let you know where your best chances to watch Mike in action will be.

To maximize your potential download Guidebook to your mobile device, download the CodeStock 2014 Schedule, mark the following sessions on “My Schedule” and turn on all forms of alert in the app.

The first chance will be Friday at 9:55 AM in room 413b, where Mike will be presenting Game Development with Unity:

Unity is a cross platform game development IDE that can target PC. Mac, Linux, Web, iOS, Android, PlayStation (PS3, PS4, Vita, and PSM), Xbox (360 and XboxOne), and Wii U - many of these for free. Code in Unity can be written in JavaScript or C# and uses the open source .Net implementation Mono under the hood. You can even use Visual Studio as the code editor! This session will be a live demonstration of Unity, and a look at some simple games made with Unity. The format will be an instructor led discussion so come with any questions you have about Unity. For more information about Unity or to download the free version visit unity3d.com

The next opportunity will be Saturday at 9:50 AM in room 400b, where Mike will be presenting Building a 2D Tile Engine in Unity:

Tile engines are the workhorses of the 2D world. From platformers to RPGs to puzzle games, a good tile engine can allow a single or small developer staff to create a large, expressive game they might be able to otherwise. For XNA I had created an open source tile engine called XTiled and when I switched to Unity I wanted to bring my tile engine with me. This meant not only learning how to extend the Unity editor, but also how to efficiently construct a game on the framework. This session covers using the UTiled engine in Unity, how it works, and how to extend the Unity editor for your own plugins and games.

The last session is a last minute addition and will be Saturday at 1:50 PM in room 413b, where Mike will do an encore of his 2013 session Quest for Fun:

What is fun? What makes an activity exciting and enjoyable? Can fun be planned? Can you design fun the same way an architect designs a building? These are more than abstract thoughts, but questions that kept me awake at night. As a game designer I want to know if I'm creating something fun long before the game is in beta test and years of development were wasted. This session represents the years of research I spent answering the question, and the questions that followed. We will cover why people play games, expectations of the design, decoding feedback, and most importantly the preferences of the player and how they relate to our own. Ultimately this is a talk about how to be a better developer through the lens of game design, so even if you are not interested in creating games you will come away enlightened!

These won’t be your only chances to see Mike – expect random Mike appearances in the audience of other sessions, lighting talks, and open spaces.  It may be overwhelming to be in the presence of one such as Mike but rest assured he’s a very humble, down to earth guy with not the slight bit of an ego!

Posted By Mike On Wednesday, July 09, 2014
No Comments

"Jungle Noir" Postmortem - Ludum Dare #29

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:

Posted By Mike On Tuesday, May 06, 2014
Filed under ld48 unity | No Comments

TechCo Open Lab Hours and Upcoming AppCamp

Two announcements from the Technology Cooperative  this week:

First, the TechCo will be open Tuesdays and Wednesdays from 6:30 to 8:00 PM each week and we hope to extend these days and hours in the next couple of months.  This is a "open lab" time, there is no set lesson plan but there is someone to help and answer questions.  I am the primary volunteer for Tuesday night so if you want to talk tech, or bring a student who wants to get into tech (be it Raspberry Pi, App Development, Game Design, Music Creation, or anything else) feel free to drop by.

Second, the TechCo will be running and AppCamp for teens on May 31st.  This will be an all day class on building a mobile app using Android and the MIT App Inventor system.  If you know any teens who would be interested, follow the link above for details and registration (space it limited so don't wait!).

Posted By Mike On Thursday, April 17, 2014
Filed under techco | No Comments

Old Laptop or Outdated Tablet? Consider Donating it to a Kid and Making a Big Impact!

Warning - direct solicitation for charity follows.

There is a good chance if you read my blog, or follow me on twitter that you are very connected to technology.  Getting new hardware isn't just a pleasure, it's often part of the job.  One side effect is a collection of slightly outdated, but replaced hardware that sits unused in the garage.  Actually I'll bet most of my readers are not so efficient as to move the old tech to the garage, and instead it sits under one layer of books and papers on the desk!

Sometimes you can find a new home for the tech within the circle of family and friends, but if not I'd like to ask you to consider donating it to the Technology Cooperative.

Closing the digital divide means getting every child access to technology, and access that's more than a computer in the school library.  A child should feel free to experiment on a computer without fear a parent or teacher will be because "now they have to reinstall the system".  A child is also much more engaged when they have ownership - this is "my" tablet and it runs "my" game and it's the coolest tablet in the world because there are no other tablets like mine!

So once you donate, what happens after that?

For Android Tablets and Phones we'll setup App Inventor and start teaching the child programming in one of the most fun ways possible.  App Inventor uses a drag and drop style system (think Scratch) for mobile game and app development.  The amazing part is the development is instant - drag a button on to the development surface in a web browser and see it appear immediately on the tablet.  This quick feedback loop not only give a child the confidence they can program, but also sparks the imagination of all the things they could create.

Laptops are first reviewed for operating system.  If the laptop has a verifiable license and registration key, we'll reinstall the system.  If not we'll install Linux and fiddle with any drivers issues to get it running.  After that it's time for Scratch mentioned above.

Scratch and App Inventor are solid first steps.  As a child grasps the concepts in programming we can move to Python or even jump right in to a professional SDK or framework like Unity.  Of course, this is only one part of what it takes to develop software, so along the way we may get into Gimp, Inkscape, Blender, and software like Open Office that can help with school work.

Microsoft and Apple tablets and phones are welcome, though due to their closed nature are not as easy to open up for development like Android is with App Inventor.  Things are changing all the time however and every child is a unique case, so these devices are just as welcome as the rest.

Old desktop computers are generally not useful.  They require a lot of space the child may not have.  They are not portable, so a child cannot easily bring their desktop to the TechCo for lessons and take it home with them to continue on their own.  We will accept a desktop only after we've had a chance to review it first.  It will need to be somewhat modern and we don't want any CRT monitors.  Storage of these older bulky systems becomes an issue and we've tried it and decided the best policy for us was not to accept desktops unless we can use them as classroom computers.  For me, this means being able to install and run Unity to teach game development with.

"This is all great, but what if I don't have any old tech and still want to donate?!"

The request is for old tech, but new tech works just as well!  There are several $60 - $90 Android tablets that are prefect for App Inventor.  Specs aren't important, but when looking keep an eye out for "runs Android 4.1" or greater to be on a safe side.  A good example is this model we found on Amazon and ordered for a child.

Old fashion donations of money are also welcome.  Information for donating via PayPal can be found on our website.  There are even programs by Amazon and Kroger that will donate money to the TechCo without any cost to you except a few clicks setting up the Technology Cooperative as your target non-profit.  The Technology Cooperative is a Federal 501c3 Non Profit and all of your donations may be tax deductible.

If you have any questions, or things to donate you can get in touch with us at techco(at)techco.org

Posted By Mike On Tuesday, April 01, 2014
Filed under techco | No Comments

“YoGo Burger” Postmortem - Ludum Dare #28

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.

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

Posted By Mike On Thursday, December 19, 2013
Filed under ld48 unity | No Comments

About Michael

Michael C. Neel, born 1976 in Houston, TX and now live in Knoxvile, TN. Software developer, currently .Net focused. Board member of ETNUG and organizes CodeStock, East Tennessee's annual developers conference. .Net speaker, a Microsoft ASP.NET MVP and ASPInsider. Co-Founder of FuncWorks, LLC and GameMarx.

Proud father of two amazing girls, Rachel and Hannah, and loving husband to Cicelie who inflates and pops his ego as necessary.

 Subscribe to ViNull.com |  Comments

Follow me on Twitter | Contact Me

XNA 3D Primer by Michael C. Neel

XNA 3D Primer by Michael C. Neel
Buy Now: [ Amazon ] [ Wrox ]

GameMarx

CodeStock

ASPInsiders Member

ETNUG Member