Friday, August 24, 2007

Putting Fun Into a Press Kit

In preperation for the future, and as an unfortunate necessity, we got together on Wednesday to go over business stuff and set up some things for a press kit. Part of the press kit was a group photo, so we tried to have as much fun as possible having a photo shoot. Here are some of the results:

(From left: Greg W, Ted M, Mike B, Josh L)

We found a sweet beat-up VW Minibus that had been sitting in that spot for the last 10 years. Of course we wanted to get our picture taken with it. While we were taking pictures, a man who worked at the car shop nearby offered to sell it to us. It needed more love than we were willing to give it, though.

The day before, Mike was showing us the iconic James Bond poses that each Bond actor had adopted. It was really entertaining. Randomly, someone mentioned we should strike a Bond pose, so because we're dorks, we gave it a shot. This is probably our favorite photo of the whole group.

We figured the abandoned factory would be a great setting for our photos. So this photo is meant to show it off. My favorite part is the fact that every vehicle in the background is at least 10-15 years old. It makes me think of Eastern Europe.

Not an official press photo per se, but appropriate enough anyway. Currently, only Mike lives in Ames, and since that's where we met, we crashed at his place. It was unseasonably cool that night, so Ted and I wrapped up in our blankets. We looked pretty silly, and that inspired a group photo with all of us snuggled up on the couch.

There's still debate about these two. We all admit they're kind of rock-band-pretentious, but the debate is over whether that can be a good thing or not. :P

Our lawyer told us that apparently, it's a good idea for legal reasons to have official titles for your LLC. Something about the government and documents, blah blah blah...

Well at Intuition Games, we see ourselves as equals, with no person having authority over anyone else. It's just that different people have different roles they take on. We applied that mentality to choosing official titles by drawing names out of Ted's trumpet case to decide who would get which title. And we forced Ted to play his trumpet between each draw. :)

Ted is well-known for his creative genius when it comes to seating posture. If there was ever a competition for most interesting position while working at a computer, Ted would win hands down. Here's a good example:

Despite some draining business discussions, the whole thing was quite fun. Maybe someday the press photos will actually be put to use. Nah... :P

Tuesday, August 21, 2007

Kongregate Now the Best Opportunity for Bootstrapping a Game Company

Gamasutra recently interviewed Jim Greer about the news of Kongregate getting $5 million in funding. Kongregate plans to spend most of that on Funding the Flash Renaissance, as Gamasutra put it. The games Kongregate will be funding will be "premium games" - those that are a step above most of the current games on the Kongregate website. Staying true to the heart of Kongregate, part of the game will still be free, but part will also be purchasable through microtransactions. This could include paying for levels as stated, purchasing items for characters, or any number of different things.

This just adds more to the cake that is independent game development right now. In fact, based on the numbers Kongregate has released, we think they are now offering the best deal for bootstrapping a game company.

When we decided we wanted to start Intuition, we looked at all of the options out there for bootstrapping a game company with no games in its portfolio. One of the easiest ways to look at game development is to break it down into platforms, which I see as a "horizontal slice":

TV Console
Pros: High sales, high exposure/glory
Cons: High barrier to entry, sparse up-front funding, lose IP with funding?, royalties only likely in download space, harder development

Handheld Console
Pros: High sales(DS especially), medium exposure/glory, low-medium cost
Cons: Medium barrier to entry, sparse up-front funding, lose IP with funding?, no download space yet

Pros: Low barrier to entry, low cost, cult indie glory, some up-front funding, easier development
Cons: Lower sales

If platforms are horizontal, then distribution channel is vertical:

Pros: High sales, high exposure/glory, well-established
Cons: High barrier to entry, sparse up-front funding, (probably) lose IP with funding, royalties extremely unlikely

Pros: Low-medium barrier to entry, low-medium cost, some up-front funding, royalties likely
Cons: Variable sales, no handhelds yet

Web Browser

Pros: Low barrier to entry, low cost, some up-front funding, easier development, royalties probable
Cons: Variable sales, not well-established, only Wii for consoles

When you put these two together, you form a Game Development Bootstrapping Opportunity Matrix.

Based on these, we thought that the cell at PC and Web Browser was the best option for bootstrapping, because it's relatively easy to develop for, the cost is low, and the barrier to entry is low. The only downside is that it's risky; who knows what the sales will be, and it's not a well-established way to make a living. Aside from the couple grand you can get by being sponsored, there's not much living in it at all...until we stumbled upon two options a few months ago that looked promising: Adult Swim and Kongregate.

As we've mentioned before, Adult Swim has been commissioning games for their website. Someday I'd love to devote a post to why I think that is, but for now let's just say they are. Here's their deal:

Funding roughly $15k - 120k
No royalties
Single player game (for now)
Adult Swim owns IP

At the time we found out, all we knew was that Kongregate was sponsoring games. Now, everyone can be sure that funding is available. Check out these recently-announced stats:

Funding roughly $20-100k
70% royalties
Game must support a community
Period of exclusivity (1 year?)
Developer owns IP

So if you agree with the matrix above, getting funding from Kongregate for a premium game is a no-brainer. We've decided to give that avenue a shot; we'll give an update soon on how that's going; suffice to say for now, it's going well. However, Adult Swim is still a good option for getting started. You're getting paid to make a game, after all!

Wednesday, August 15, 2007

Text Message Game Development.

I was downtown at a cafe on game jam night, and since I don't have a laptop I had to improvise which turned out to be a very unique game developing experience. I haven't done any research on this topic or anything but I think I may have pioneered a new method which I am calling the Argentinian Bluepawed Dingo Craigslist Dungeon Esperanto Friendship Galaxian Handoff method (the ABCDEFGH method for short). Here's how this Next Gen method works:

Step 1. Draw some stuff.

Step 2. Text message the coordinates to Josh's phone.

Step 3. ...and the programmers do the rest.

It's advanced and you know it!

In all seriousness though, it was pretty fun and kind of felt like I was creating punch cards for computers in 1972 and sending the data with Morse Code.......Ooooo, we should try that next time.

Clouds R Pretty

Bit o'the old update fer you fine folken. I been workin' on PP:AFAA and, by extension, Melba Toast pretty good the past couple days, and boy oh boy is she startin to come 'round. I s'pose it's been a long while since muh last post, so I reckon I start at the beginnin.

Separating your timestep from your framerate!
I found a good post on gaffers blog about physics and fixing the timestep to ensure stable and consistant physics. Previously I had thought that using a delta time variable would ensure correct integration of physical movement in my physics simulation, but not only is that not enough but I was using the most horrible integration algorithm possible as well as allowing for wild fluctuations in the delta time variable. Gaffer has a two parter, here's the second part, on physics simulation.

The first part is all about using RK4 integration to figure out f=ma, I didn't take the time to really understand the algorithm because apparently I'm a bloody idiot and think Euler is fine enough for PP:AFAA. Also integration scares me. The second part details a simple method to ensure the delta time variable used in your physics simulation is the same regardless of the actual framerate. Put simply, you wait until a minimum amount of time has passed, for me its 10ms, until ticking the simulation. If more than 10ms passes during one frame, then tick the physics simulation as many times as you have to in order to "catch up". Its bloody simple and increased the consistency of the prof's movements considerably. And no need for scary integration. I'm still using Euler mostly because its faster than RK4, and when I have more time I'll implement both and see if the increased accuracy is really worth the performance hit.

Vector Art All Around!
Yeah, there was some discussion about using raster or vector art for the assets in Flash, I was thinking that bitmaps would be faster than vector arts and after doing some simple tests trying to display about 3000 PP:AFAA boats in vector or bitmap of multiple sizes and small bitmaps did prove to render faster than vector stuff. It was a difference of about 10 fps, and in return we got boats and a professor which look like dogshit when rotated. In short I've decided to go vector for everything which is gonna work out great for scaling, rotating all all that fun stuff. I was even thinking today about dynamic zooming and got all excited. Not sure how that'll fit in with the tile management system, but damn it would be cool.

Sweet Console Command Stuff
Spent a bit of time today with my console, trying to figure out how to do console variables for in game tweaking. The end result? Now I not only have the "fps" command, but you can set the prof's accleration variable with the command "porpAccl=X". Also I fit in a command history thing so you can cycle through all the commands you did throughout the current game.

I was trying to find a good way to register console variables and the best I could come up with was to create a new child class of Console, PorpConsole specifically for PP:AFAA which has a reference to the prof object and then I hardcoded the parsing for the "porpAccl" command and the variable it changes on the prof. This isn't so cool, what I originally wanted was to give the base Console object a dynamic list of handles and function calls which could be registered at run time, this way each object which needed a console variable or some other kind of console functionality could just register it remotely and this could be turned on or off from each object individually. The way I have it now, all the commands and their functions are controlled set right in the parse function of the PorpConsole class, its all centralized and crappy.

Also Splashing
He splashes when he gets in the water. Neat.
And I drew some clouds. they are pretty.

-mike out

Tuesday, August 14, 2007

Iowa Indie Game Jam 2007

This weekend was the first Iowa Indie Game Jam, and it was a great success. Its beginnings were humble and spontaneous. Andres came down to Des Moines to see the coolness that is going on here - this weekend it was The Grey Market. While visiting, he proposed having a game development jam session. I thought it was a great idea. So, since he didn't have his laptop and my apartment was about 85 degrees, we decided to head up to Ames to his parents' place.

Our original goal was to make an asteroids clone that created background graphics after you destroyed asteroids with a continuous laser that could reflect off of other asteroids. And it was going to be done in ActionScript 3.0. Well, we soon found out how different AS 3.0 is from 2.0, so we sent out an S.O.S. to Mike B. to save our butts.

(from top-left clockwise: Josh L "torncanvas", Mike B "fucrate", Andres R "monkeyscience")

To our surprise, Mike H. showed up on his way out of town to visit some friends. He ended up staying the whole time.

(from left: Mike H, Mike B "fucrate")

Thankfully he had a camera to document the event. Soon after, Mike B. arrived and proposed creating a 50-lines-or-less Flash game, inspired by a recent competition on the Kongregate forums. After some discussion, we decided to make a dungeon crawler with this restriction. That proved to be quite the challenge...

Everyone got pretty sucked in, which was great, and eventually we worked into the wee hours of Saturday night. The aftermath:

We had breakfast together the next morning and came back to work on more of the game. Pretty soon Greg showed up to join in the fun, too.

(Greg W "aeiowu")

Not long after, I had to leave, but the IIGJ continued as everyone worked in true indie fashion on an old school favorite: the dungeon crawler.

There's already talk of the next Iowa Indie Game Jam. Rock on, independent game development.

Tuesday, August 7, 2007

Flash Lesson: Always Hack It In First

I'm going through Foundation Actionscript for Flash 8 in an effort to re-learn how to code. In chapter 9, there's some talk of tweening, so I thought I'd try to apply my knowledge to our logo to make a simple animation.

In doing this, I learned an important lesson: always hack it in first. The first thing I did, in an effort to be fancy and add the utmost scalability, was try to create a timed delay that called a tweening function that could be applied to each ball. I was convinced that I would have to manually set the delay so the balls could fall in sequence. I needed to dynamically name a variable based on the input of the function. I couldn't figure out how to do that and wracked my brain for almost an hour. And then I realized that I could simply set the tween to be longer for each ball. So much simpler and you couldn't tell the difference.

Here's the code for it:

//OMG Tweens. They're so, like, cool and stuff!
import mx.transitions.Tween;
import mx.transitions.easing.*;

//activating the tweens so the balls bounce
//the onMotionFinished event handler needs to go here or it wont work - for scope reasons?
function bounceBalls()
//bounce the balls in sequence, coming from off-stage at the top
var ball1Tween:Tween = new Tween(ball1_mc, "_y", Bounce.easeOut, -100, 112.0, 1.2, true);
var ball2Tween:Tween = new Tween(ball2_mc, "_y", Bounce.easeOut, -100, 112.0, 1.4, true);
var ball3Tween:Tween = new Tween(ball3_mc, "_y", Bounce.easeOut, -100, 112.0, 1.6, true);
var ball4Tween:Tween = new Tween(ball4_mc, "_y", Bounce.easeOut, -100, 112.0, 1.8, true);

//after the last tween finishes, reset the animation
ball4Tween.onMotionFinished = function()
//set a delay, reset the animation, and store the return in a variable
var initDelay:Number = setTimeout(init, 3000);

//the animation for the logo
function animation():Void
//fade out help text quickly so you don't get distracted by it
var helpTextTween:Tween = new Tween(helpText_mc, "_alpha", Strong.easeIn, 100, 0, 0.5, true);

//fade in the logo text - slowly at first, then speed up
var textTween:Tween = new Tween(text_mc, "_alpha", Strong.easeIn, 0, 100, 1.5, true);

//after the text fades in, bounce the balls
textTween.onMotionFinished = bounceBalls;

//set things up
function init():Void
//we are ninjas in the TREES
ball1_mc._y = -100;
ball2_mc._y = -100;
ball3_mc._y = -100;
ball4_mc._y = -100;
text_mc._alpha = 0;

//fade in help text so you know what to do
var helpTextTween:Tween = new Tween(helpText_mc, "_alpha", Strong.easeIn, 0, 100, 0.5, true);

//you're supposed to store the return of the delay function in a variable
//that is this variable
var initDelay:Number = 0;


//play the animation once you click down on the mouse
this.onMouseDown = animation;

Monday, August 6, 2007

The Struggles of Entrepreneurship

Glenn Kelman, CEO of Redfin, recently made a guest post on Guy Kawasaki's blog entitled On The Other Hand: The Flip Side of Entrepreneurship, which presents "a top-ten list of the ways a startup can feel deeply screwed up without really being that screwed up at all." As I kept reading, I kept thinking "Yes, this is exactly how I feel." It was such a relief. The main points are as follows:

1. True believers go nuts at the slightest provocation.
2. Big projects attract good people.
3. Start-ups are freak-catchers.
4. Good code takes time.
5. Everybody has to re-build.
6. Fearless leaders are often terrified.
7. It'll always be hard work.
8. It isn't going to get better--it already is.
9. Truth is our only currency.
10. Competition starts at $100 million.

Here at Intuition, we're just beginning to struggle with the reality of starting up a company. Glenn's post really hit me, because I agree that starting up a company is pretty dang hard. He has a fresh perspective on what seems to be a newer start-up philosophy spreading around, particularly related to Web 2.0 start-ups: "Hard has gone out of fashion. Like college students bragging about how they barely studied, start-ups today take care to project a sense of ease."

Sense of ease? Not here. We've been working our butts off trying to get going, on top of working full-time to pay the bills. Only lately have we eased off a bit as people move, take a needed vacation, finish up contract work, or otherwise mentally prepare for the huge task that lies ahead of us.

The thing that hit me the most was this statement:

"If you don't believe you have any reliable competitive advantage, you're the kind of insecure person who will work your competition into the ground, so keep working."

YES. I'm so incredibly relieved to hear this from Glenn Kelman. In my own entrepreneurial activities, I've often struggled to find a striking example of what the business people call "competitive advantage." Isn't there always someone who's better than you at something? How about just a "We're going to do the absolute best we can, and we'll never be satisfied." Maybe his point is that never being satisfied is the competitive advantage. I hope that's the case, because that and our passion is about all we have!

Wednesday, August 1, 2007

UNIQLOCK - Viral Marketing At Its Best

This is a fantastic example of viral marketing for a polo shirt company. It's a clock with spliced clips of well-choreographed dancing and incredibly catchy lounge/bebop music all timed to match the ticking.

I'd love to come up with such a good example myself. Hmm...