Come to the Pre-Jam Game Developer Meetup

The GameJam is fast approaching! Wondering what a GameJam is like? Want an idea of the type of restrictions the theme will put you under? Come on out a few days early to prepare! The monthly St. Louis Game Developer meetup for July will be ALLZ about the JAMZ! (cool 90s caps lock and s to z replacement is optional).

Here’s the info:

Site:

http://www.meetup.com/St-Louis-Game-Developers/events/21754991/

When:
Wednesday, July 6th · 7:00pm – some time after 9:00PM

Where:
InsideOut Wellness & Acupuncture
Lower floor – park around back and just go down the stairs.
8230 Forsyth Blvd
Clayton, MO

Cost:
FREE!

This meeting will be preparation for the big STL GameJam a few days later. You’ll find a fake theme below, and your goal from now until the meetup is come up with some ideas that fit this theme that might be doable during the 48 hour span of the GameJam. At the meetup you can present your ideas to the group, and we’ll discuss those ideas in terms of how well they fit the theme, whether they’re doable within a span of 48 hours, and anything else we can think of. The goal is to try to piece together an understanding of what it takes to make a game in a weekend.

On top of that, we’ll discuss middleware tools that can speed up your progress at the GameJam, and answer any questions you might have about the Jam itself. Whether you plan on attending the GameJam or can’t make it and just want to hang out with some fun-loving game developers, this is a meetup that shouldn’t be missed!

The theme for this mock GameJam meetup will be:

Internet Memes

Start thinking about crazy ideas that fit this theme, and if you’re not sure what a meme is, Wikipedia has the answer.

Important: This is NOT the theme for the GameJam, but rather, a theme to think about this week and bring your best ideas of what might make a good GameJam game to the meetup group on Wednesday the 6th. The real theme will not be announced until the day of the Jam, forcing you to think on your feet.

So come on out, prepare for the Jam, and hang out with some cool peeps. Hope to see you there!

The Nasty WP7 geoDefense "Progress Lost" Bug

Not everything goes as planned, but I like to fix bugs fast. Especially bad ones.

The WP7 version of geoDefense has a bad bug in it which causes some people to lose all their scores. I call this losing their "progress". Although it won't erase any Xbox LIVE Achievements earned (after you leave trial mode anyway).

So what was the bug and why has it taken me this long to find it?

This is going to sound like an excuse, and it is: I'm on vacation. I'm in Bangkok with my lovely girlfriend Emma. And up until a couple days ago we were on the island of Ko Lanta. The internet there is really dicey.

Now I should have had the capability to debug this with me, but I didn't. My Windows rig is not a laptop, and I had not boot-camped my Backbook Air. Boo on me. I wanted to do it, but I waited to the last minute and got the dreaded problem where "some files cannot be moved" during the repartition. It was one day before I had to fly off to WWDC (Apple's big developer conference) and, immediately from there to Thailand. So I had to skip it.

So no Windows and not even my WP7 in hand, I had to get on this bug because my total time away from my rig was going to be a whole month!

The best I could do was screenshare remote into my machine at home and boot up VisualStudio that way. Fortunately I had a friend watching my house, so she was able to reboot my machine into the right mode (and keep it that way, as its stormy back in St. Louis and we lost power multiple times through this process).

Screensharing is slow in the best of circumstances. My connecting was far from the best of circumstances. Lets just say it was painful! Really painful! So slow a single action (like clicking on something) could take 3 or more seconds to respond.

Ultimately I was not able to see what the issue was. I had to fall back on the Microsoft Support Group engineers. I hooked them up with my code-base and a fine programmer by the name of Dennis Cheng found it. His proposed solution wasn't WP7-compatible, so I had to take a different route on the solution.

Despite better internet in Bangkok, it was still painful to try and reproduce this bug in the emulator back in St. Louis via screensharing. I had to play it just right to create the circumstances.

How just right?

Well the issue is in the file handeling. Essentially your highscores (and other info) are saved to a file (duh). But the data is in put into a form that is checksummed and other safeguards against tampering. This is the same way it works on the iPhone, and essentially a direct port of that code. And it seems to work, and usually does.

The problem was that when I wrote the file I did it with a filemode of OpenOrCreate. That's the bug. Because when I wrote new data to the file, if the file already existed, I might not end up with what I expected. Essentially it boils down to this... the length of the data I'm writing varies by how much content there is. Generally the file just keeps getting bigger as new highscores are added, and this is never a problem. However if the data being written is smaller than the last time, then the resulting file will still be as long as it was before the save... with the data at the end being garbage.

When I load the data, I get this trailing garbage and the whole block fails the checksum checks and thus it disregards the data as if it had been tampered with.

Worse, because it throws that away, it will continue to be in this "no save" state because the very next game you win will yield yet-smaller amounts of valid data than what you had before. It never will be able to save any further progress that can load properly.

The reason the data can be smaller is because of the way it encodes values. Surface it to say it takes less bytes to store a large score than a small one, or the number of lives lost, etc. So when replaying a level, you can end up creating a win scenario that takes less bytes to represent than the last time, in total. And boom goes the dynamite.

The fix is trivial: Just use file mode of Create and it'll start a fresh new file. Stupid newb mistake. But there it is. Maybe I cut and paste something, an even more newb mistake. Typical, it's always something trivial that causes the biggest issues.

The bug fix is done and submitted to Microsoft. It has to go through their process before it becomes and update, and this does take awhile. The version with the fix will be 1.6.

In the meantime, if you play geoDefense WP7, just don't replay any levels you've already won and the bug won't happen. If it's already happened, uninstall and reinstall the game to clear the state. Once 1.6 update is out and you upgrade, then you can safely go back and replay already won levels to improve your score.

Needless to say, I deserve the lumps on this one. I messed up. It was a really hard bug to reproduce and I thank Microsoft for coming through for all of us here!

Now, I'm off to explore more of Bangkok!

David

But What if I Can’t Draw or Program?…

As of today, we’re officially three weeks away from the St. Louis GameJam! We’re expecting a good turnout so far, but there are still plenty of slots open.

A few of the registrants posted questions wondering if they could still participate in the GameJam if they aren’t a skilled artist or programmer. The answer to that question is a resounding yes! That said, if you plan on coming it’s a good idea to know what you’re getting into.

People from many different backgrounds have participated in the St. Louis GameJam in the past, and in many cases it was their first attempt at making games. There are many easy-to-use free tools available to let non-programmers create, and putting together art, music, and sound effects for a game are often as simple as firing up a google search. While it’s true that some retail and downloadable games began their life as GameJam games, very few look the same as they did after that initial weekend of work. It’s ok if your game looks a little rough around the edges. On the final day of the Jam people will be much more impressed if you have a finished game with placeholder assets than they would be if you had a half-finished game that looks or sounds gorgeous.

The primary skills needed are a passion for creativity and a desire to work efficiently toward a common goal. This may sound obvious, but out of every GameJam I’ve attended I’ve never seen anyone complain about the quality of art, design, or programming going into a game, but I’ve seen many disappointed that their team didn’t arrive when they said they would or wasn’t prioritizing their time well. Don’t let that intimidate you, just know that dedication often means more than talent at events like these, and that’s a good thing!

If you’re on the fence, your takeaway from this post should be to jump on over and hit the big orange “Register NOW” button to your left. It’s going to be an incredibly fun and memorable weekend. If you’ve ever had the inkling that you might want to work on games, this is your chance to jump in and get started in an environment surrounded by supporting professionals who share your passion. And if you’ve already signed up, tell a friend! We’ll see you there!

Gamification … the debate continues.

A popular article over at softwareadvice.com takes another pass at the application of game mechanics to other tasks… aka Gamification. Author Vincent Beerman posts a few great quotes: Like the Industrial Revolution, early attempts at gamifying the enterprise have been slow, clunky, simplistic and sometimes downright counterproductive. Learning a game, [...], incorporates intrinsic human motivators [...]

Cardinal Health’s MPI Radiation Calculator hit App stores

Cardinal Health’s MPI Radiation Calculator hit App stores today on behalf of Coolfire Media – BlackBerry version crafted by Graphite Lab. The app uses the BlackBerry WebWorks framework – utilizing existing technologies to offer features such as pull messaging and data caching all from a HTML/CSS/JS base. MPI Radiation Calculator on the BlackBerry App World [...]

Arrington: Sonar (Which Took $250K To Build) Is Better Than Color Could Hope To Be

Arrington: Sonar (Which Took $250K To Build) Is Better Than Color Could Hope To Be:

This is the kind of stuff that makes mobile app platforms worth it.  I know they didn’t win, but this was certainly my pick from the conference.

Secret!

We’ll tell you why this post is important later!!!

Game Design as an Art, not a Science

Shortly after my game/lecture on Game Design Using In-Game Editors a call went out for lunch and learn presentations at my work. I wanted to expand the audience for my talk so I decided to give the same lecture again, figuring it wouldn’t take much effort. After committing to present, I went back and played the game again only to realize that the topic didn’t translate perfectly to my new audience. The programmers at work might share the same desire to make games, but they’re definitely more the type of people who want to make games as a programming challenge rather than a design one.

I decided to modify my game in an attempt to challenge their preconceptions of what makes a good game. I’m not sure how successful I was, but if nothing else, this new version prompts discussion, as it asserts a lot of somewhat controversial things about what constitutes good game design. Unlike my previous demo, I’ve published the text of the game below. In my previous post I explained how to download Knytt and play the level, so go back to that post if you’d like to play the game.

The updated files for this new talk are:

I’m assuming most of you won’t play the game though, so I’ll go ahead and post the text of the game below for all the lazy folks out there. As you read through these pretend like each one is on a sign post in the world.

  • The theme of today’s talk is…
  • Game Design is an art, not a science. Don’t let technology prevent you from making games.
  • And. Uhh, press “S” to Jump. (That’s not the theme)
  • You don’t have to be a programmer to try your hand at game design.
  • This may seem obvious, but if you’re like me, the technical hurdles sometimes scare you from getting started.
  • Creating is hard work, and if you want to make a game, the amount of effort may not seem worth it.
  • When that happens, we can handle it in a few ways:
  • (For this lecture we’re ignoring the “man the hell up and learn something” option)
  • <- Create using something easy
  • Never create anything ->
  • Good choice! Going the other way has never solved anything.
  • Today I will show you one of the simplest and most versatile tools I know of to make a platformer.
  • Some of what I show will hopefully inspire you. This presentation was made in just a few nights.
  • This is a freeware game called Knytt Stories. As you can see, it has a pretty snazzy level editor!
  • The game isn’t actually about reading signs, I made it like this because it’s more fun than PowerPoint.
  • Go to the next room and grab the high jump!
  • This lets you jump higher so that you can reach taller platforms.
  • You could probably use this in some pretty advanced designs, right?
  • To advance from here you’ll need to climb a wall. Get the wall climb!
  • Shoot! someone must have “forgotten” to put in the wall climb ability!
  • Better go to the level editor and add it.
  • Put Object 4 from Bank 0 on layer 4. Don’t forget to save before quitting! (press down when on the light)
  • So yeah, that was the level editor. You can also add in enemies, people, hazards, and pretty birdies.
  • You may have thought about how cool it would be to make a game like this before.
  • You probably thought it was too hard. From scratch it is! But using this you can design one easily.
  • Moves like a high jump, wall climb, super speed, and umbrella are very inspiring.
  • It was super easy to throw this together and it’s even easier to do something that’s actually fun!
  • I’m not trying to sell you on Knytt, just that you that you don’t need to program to design games.
  • Now that you’re 100% convinced, let’s talk more about game design.
  • Game Design is more about psychology than physics engines.
  • This is why there is a need to inspire non-programmers to experiment with game design.
  • And this is why tools like this one are becoming ever more important.
  • A game with good design teaches the player how to play without realizing that they’re learning.
  • This doesn’t happen in the programming, it happens in the content creation.
  • Consider how game design has changed over time.
  • In the early days, the goal was to take money from the player 25 cents at a time.
  • It was all about preventing the player from progressing.
  • What’s fun about games is learning, so the player would pay another quarter to try a different strategy.
  • Players were good about learning, but games weren’t always very good at teaching.
  • Asking the player to learn grew naturally from the challenge, so designers didn’t have to work as hard to teach.
  • Since arcades began disappearing, this idea has made a 180.
  • Designers now want players to play as long as they want without getting frustrated.
  • Though the goals have changed, what’s fun about games hasn’t: learning to become better.
  • This sort of put designers in rough spot.
  • They want their games to be engaging, but they don’t want the player to fail and quit.
  • Games accomplished this by becoming better at teaching.
  • Challenge and complexity increase at such a rate that the player barely realizes they’re improving.
  • But challenge and complexity have to increase so that the player stays engaged.
  • A good game is a good teacher.
  • It repeats its lesson just enough that the student can learn it, but not so often that they stop listening.
  • If this sounds difficult, that’s because it is. You can’t get there by simply having a cool idea for a game.
  • And you can’t REALLY teach by throwing a bunch of signs up in place of a powerpoint.
  • You need to let the player learn through play.
  • You have to think about what the player is going to do when presented with a certain situation.
  • You have to account for the choices they make with an interesting and believable outcome.
  • Push D to use this umbrella!
  • It’s not something you get better at by programming game logic.
  • And playing games will only get you so far.
  • You have to design levels to improve.
  • You might design so that the player goes right, when in actuality they tend to go left.
  • This has obvious and direct parallels to software usability testing.
  • But that’s a talk for another day and another game.
  • It’s boring to have dead ends.
  • So you’ve got to lead them somewhere interesting.
  • For now I’ll leave you with this:
  • Remember how I said that you don’t need to program to make games?
  • This game, Knytt Stories, (including its level editor) was made using a drag and drop tool.
  • By one Person.
  • There’s no reason you can’t make something even better!
  • Get out there and create!
  • Thanks for playing!

And that’s it for the game! After the lunch and learn we had an interesting conversation about what constitutes teaching and learning within the context of a game. If you’d like to continue the discussion or have any other comments about the text of the presentation please leave them below. If you’d like to give a similar presentation, contact me and I’ll do what I can to help.

As a bonus for reaching this far I’m posting a link to a Kyntt stories level I made a few years ago as part of a forum I frequently visit. The idea behind this level was that several different people would all work on different parts of the same level with no forehand knowledge of what the person before them did. The person in charge of the idea sent out a template with all of the other sections blocked off, leaving you no idea what they did. The result is a varied, uneven level that’s surprisingly fun!

Fallen Game Engine

This entry will likely only be of much interest to other game developers. I’ll try to put up more fun game stuff soon.

A couple of months ago, I decided that I was going to write my next game to target Windows, Mac OS X, and Linux, instead of the Xbox Indie Marketplace. There are alot of reasons for this, and I can go into them in depth if anyone cares, but the gist is that I want more control.

Going forward with that decision, I started looking into the game engines/frameworks available that would match my needs. (If you follow my twitter, you’ve probably seen that I’ve ported the Demina player about a half dozen times. I used it as a gauge to test the frameworks.) There’s alot of really cool stuff out there.

  • Unity3d and the Unreal Development Kit
  • These are both really awesome for 3d work. While I managed to get some 2d code working nicely in Unity, it wasn’t a very elegant solution and I think I would have had severe problems. If I decide to work more on a 3d game, I think one of these will be an easy choice.

  • PlayFirst’s PlayGround SDK
  • PlayGround is a well supported 2d framework. It’s got all sorts of bells and whistles, like Flash movie rendering and Lua scripting support. Unfortunately, it’s also missing pixel shader access, and doesn’t currently port to iOS or Android.

  • LÖVE and Monkey
  • LÖVE is really cool, but I don’t think I’m ready to write an entire game in Lua. Monkey generates code for a ton of platforms, including Xbox Indies. Unfortunately, you have to write in a language (similar to Blitz Basic, I think) specific to Monkey. I feel that these are both very awesome, but I think it’s a better idea for me to stick with a programming language I’m already very familiar with.

  • Monocle
  • Monocle rocks! It’s brand new, and still under heavy development, but already very cool. Alec Holowka is one of the main developers behind it, and he’s using it to build Marian. (Which I am uber-excited about.) I spent a couple of weeks evaluating it, but I’ve decided to go in another direction. I’m still following the development, though. Hopefully I’ll be able to find some ways to contribute.

In the end, I realized that what I really want is XNA. I really love the framework, and it matches perfectly with how I want to write games. Unfortunately it has two problems. It doesn’t exist outside of Windows/XBLIG, and I really dislike requiring the user to install both .Net and XNA before they can install my game on Windows. There are partial ports to Mono, which could help solve the problems, but they don’t seem very well supported. So I decided to create something of my own.

It’s taken me a couple of weeks, but I’ve reached the end of my todo list, and now the Fallen Game Engine is up and running. (It’s really just a framework, not an engine. I chose the name poorly.) It’s not a port of XNA, but I’ve implemented the features that I need in a way that is very similar to the features in XNA. I’m sticking to the rule of “Write Games, Not Engines”, so now that I’ve implemented the specific features I know I’ll need, I’m going to start on game code rather than spend forever implementing features I may never use.

The code is open source, and the reason I’m posting this is to invite other developers who may be interested to take a look. I think it would be of particular interest to XNA developers who are wanting to port over to Mac OS X or Linux. If you’re interested, you’re welcome to go take a look at the source, and I’ll happily help you get setup and working.

Announcing the Summer 2011 STL Game Jam

The first annual STL Power Up was a smashing success. Several local game developers had games on display, from small one-man teams doing indie titles, to professional game developers with international contracts. Approximately 50 people showed up over the course of the night, and the event was covered by The Video Games Show Podcast. Here’s the show if you’d like to listen.

We had two big announcements to make. The first is that we (Dan Eichling, actually) have created a new website to bring together the entire St. Louis gaming community. The site is stlgamedev.us, and it aggregates a list of St. Louis companies and events, bringing together blogs and news from local sites relevant to game development (like this one).

The other big announcement, and even more relevant to this site, was the Summer STL Game Jam!  This is our 2nd annual mid-year event, because we just can’t stand waiting a whole year until the next Global Game Jam.  The team at Simutronics has volunteered the use of their offices in Maryland Heights for a Summer Game Jam, as long as people are willing to RSVP ahead of time so they know how many people to expect. Here are the details:

The Summer STL Game Jam

Location: Simutronics offices in Maryland Heights (near Dorsett & 270)

Date: July 8-10, 2011

Free wi-fi will be available, but you must bring your own wireless-enabled computer or laptop.

For details and an exact address, please pre-register today!

Game Jams are fun and intense events where game developers of all skill levels can gather to create games in a creative burst of activity over the course of one weekend.  At the January 2011 event, over 40 people showed up, and several games were created on a variety of platforms.  No industry experience is required, just passion for game development and a burning desire to create something awesome. Sign up today!