Wednesday, May 27, 2009

Protonaut Progress

Greg posted a few things around town and got my name onto Offworld. Awesome. Here's a link to the article.

And here's a preview of the latest game art:

Since my last update I haven't done a whole ton of work. I had an entire week of insomnia and subsequently got hooked on the old game Mass Effect. I ended up beating it - I have to say my complaints about it are exactly the same as my complaints about Knights of the Old Republic. If you play a non-aggressive character, you get put into forced fighting situations that suddenly become very difficult.

At least they don't make you fight the final boss alone.

Anyway, I've done some updates to (working titles) Protonaut / Chemistry; here are my thoughts on the latest:
  • Spacebar now triggers the "pause time" effect. I took a while to get it looking just right - time slows down and speeds up before the pausing takes effect. It's actually quite complex - I have to store force vectors and turn objects into "static scenery" on the fly, which causes some hard locks in certain situations. I think I squashed all those bugs, and I think this resultant effect looks wicked cool.

    Imagine a cool "fwwoooosh" sound effect as the time is adjusting, and maybe a matching animation to explain the jerkiness of the character while it happens. It'll get there eventually.
  • The "platforming" controls seem a lot more advanced;
  • I'm actually adjusting the friction of the player object on the fly - when you are in the air, your friction is zero, so you slide down walls quickly. When you are holding down movement keys, your friction is halved. When at a standstill, your friction ramps up to 95%. This gives your character a bit of a natural deceleration feel, but is tuned a bit extreme to keep it responsive for us humans playing it.
  • Your motion is now capped to a specific top speed. You can always move faster than that speed through natural causes (falling, being pushed by flying objects, etc.) but you can't get over a certain speed on your own momentum.
  • You now have some air control - 25% of your regular force. Seemed like a nice number.
  • Jumping could still use some work - jumping height/force isn't static and it can be frustrating not knowing how high you will go. You can also end up jumping very very fast upwards if you get a slope that's just right...
  • Friction makes running up shallow slopes difficult. I'll have to toy with the values a bit more to make that work better.
Right now Greg is focusing on getting some interface art up and running, so the Level Editor is actually useable instead of a secret set of keys only I know about. I am proud to say, though, that the level editor is fully operational and I haven't touched my level XML in ages.


That's the level editor as it is now. It's functional enough - it has copying and resizing abilities and full creation tools. It makes it a breeze to make things now (I still shudder when I think of hardcoding all these objects in). I can't wait to see what Greg turns it into.

And I'm really starting to like the name Protonaut...

Tuesday, May 19, 2009

Mid-Mortem: Space Squid

Mid-Mortem time!

I don't like using the term post-mortem with things are still going on, but I thought I'd talk about April's game-of-the-month, Space Squid.

As this is my first foray into the business that is Flash game development, I wanted to get a nice scientific baseline sample for what kind of interest self-generates around a game.

I wanted to use a few tools and just let it stew for a while and see what happens.

So here's exactly what I did:
  • Throughout April: Blogged about the game, right here. I also posted the occasional link to IRC chatrooms and IMs to get some feedback from trusted sources. The occasional twitter and facebook status update.
  • April 18th: Posted the game to FlashGameLicense.com, clearly marked as "under construction and unfinished" in several places. I decided to post it early - just in case a publisher saw it and said "Hey, turn it into a SpacePenis and you have a deal!" - and I'd still have time to make some development changes before my May 1st deadline.
  • May 1st: Finalized the game and marked it "Complete" on FGL; filled in a game submission form at AddictingGames.com, and emailed all my favorite 10 indie-related blogs announcing the release in a very low-key way (and even offered an open invitation for an interview about rapid prototyping, indie development, and all that other nice stuff). I also made a forum post at The Independant Gaming Source (TIG).
  • May 2nd: Attempted to upload the game to GameJacket, Whirled, and Kongregate, but failed - GJ does not support games written in Flex at this time, and Whirled/Kongregate had some sort of malfunction once uploaded. Probably something like direct stage references; surely fixable if I put more time into it.
  • May 3rd: Submitted game to JayIsGames as a review request. They did such a great service for Fantastic Contraption I wanted them to have first stab at it.
That is all. I did not approach any publishers, I did not email-blast everyone in my extended family, I didn't lift a single finger to promote my game other than the above half-hearted effort. I wasn't trying to fail - I was just trying to see what kind of self-support the game would get just existing on it's own.

Here are the results of the above work, as of today (May 19th):
  • Three friends twittered about SpaceSquid.

Let's take a look at what went wrong, shall we?

The first and biggest problem I saw was a complex issue: A misunderstanding I had about how FlashGameLicense worked, a misunderstanding from their users about how it could be worked, and probably a poor design choice in the development of the FGL site. You see, as soon as you post a game as "visible" to the FGL-browsing publishers, it goes right to the top of their list as "fresh" and "new." It does not take into consideration the "incomplete" flag you set on the game, nor does it bump you to the top of the list once you do finish the product.

So what happened was I received 8 pageviews from publishers when the game was only half-done and the graphics largely placeholder. Here's a comparison: Final Build vs. The Build They Saw. It kinda makes me shiver that my biggest opportunities may have been seeing that fateful build. 

I built a lot of data-mining ability into the game, with Google Analytics tracking level-loads and the game itself logging activity. Of those 8 pageviews from publishers - which seems to me to be an embarrasingly small number to start with - only one ever clicked "Play Now" and they closed the window after about 20 seconds. The other 7 never made it past the menu - and considering the state it was in at the time, that is probably excusable.

It has now been 19 days since the game was marked as finalized on FGL. The game has since been viewed twice by publishers, and "Play Now" was never clicked. Of the 10 total views, only one was from a username I recognized - AddictingGames.

On top of that, JayIsGames decided not to review the game (or the review request was lost in the trash - though I did speak to Jay directly about the game and he seemed excited to get to it). My AddictingGames.com submission form likewise did not produce any further communciation. The few people who did played the game enjoyed it, but not at length, and didn't seem to particularly pass it on.

Suffice to say, the game cannot support itself. This is completely counterpoint to the success that Fantastic Contraption enjoyed, and I can't altogether say that I am surprised. Lessons learned:
  • FlashGameLicense does not have many Publishers that use their service;
  • FlashGameLicense punishes you for posting your game before release;
  • The game must suck more than I thought it did, and I thought pretty lowly of it to start with.
Well, even a piece of crap can sell if it has enough marketing behind it. And the power of
 marketing is now within reach to humble folk like myself, thanks to the power of the internets. I guess I'll have to give it a try and see if I can't turn 3 twitter posts into a financial success.

Yes, that wlil be me sitting there casually high-fiving someone over my bluescreened laptop with a briefcase so stuffed full of money it's falling out of the sides. Because that's how I roll.

Anyway, don't want to make a big to-do about it all - I have a new game in the works and I'm making a much bigger effort towards it than I did with SpaceSquid. Maybe that will be my golden goose.

Er, wait, a golden-egg laying goose. A golden goose wouldn't work at all, it can't even float proper! Stupid goose.

The Platformer

OK, here's something I really hate. Coding how a player moves.

It turns out there's a lot of intricate guesswork going on behind the scenes of most platformers. For instance, did you know that many platformers change the amount of friction exerted on the player body depending on the current action?

Or that bodies accelerate nonlinearly?

There's a million factors involved and they're all fairly easy to code - but there's no easy math behind it; no science. I'm just going to have to continuously pull numbers out of a hat until I find something that feels right. It's quite frustrating - why can't it be as easy as just running and jumping?

My latest upload (public build #2) disabled movement while you're in the air. This is how I want the game to be, and this is exactly how to make it un-fun, which I guess means my opinion isn't worth anything in this case.

I haven't pulled any of the levers or pushed any buttons yet when it comes to acceleration or friction. The game obviously has a sluggish feel to it here but it take shape over time; patience!

The buid does, however, feature some of Greg's artwork actually applied to the assets in-game. I have to say it turned my game from looking hideous to awesome in a single build. I wouldn't take it as anything near final though - just yesterday we took the game in an entirely new direction (artistically) and the next build I post here will likely be altogether different.

(I think I'll post with more images from now on, because - let's face it - a blog post without pictures is like a whore without makeup)

Sunday, May 17, 2009

I've Got Chemistry

So I have two games I'm simultaneously making right now.
  • A pseudo-educational platformer where you learn about chemical constructs;
  • And a building-destroying platformer where you pause time.
They're both running on the same engine and is nearly a simple reskin between the two. I'm pretty excited to release both of them together and see what performs better. (but we all know what my initial plans turn out to be)

Hey, speaking of re-skinning - I'm collaborating with Greg Wohlwend on this project. He's giving a lot of input and doing the artistic work. You can see my sample level here (first released build of the not-yet-named chemical game) and you can see Greg's version here. Haha Greg, Mine is playable. :P

I've been doing a lot of behind the scenes work on the engine - I've got a level editor up (that is neigh unusable for anyone but me because of the plethora of hidden function keys) and a basic shell of gameplay. It's coming together quite nicely.

The playable level when you click the link above is the chemical formula for Caffeine. I spent all night working on it. :)

Wednesday, May 13, 2009

The Game Commences

I spent nearly the entire day today but I finally did it.

XML saves. XML loads. It all stores in a mySQL database. Check out this 150KB level:


The level editor is functional, but only in the most basest of senses. You can make things; I recommend turning off gravity while you do so. Be sure to read the instruction screens.

Once I get things working a bit more robustly (resizing and rotating objects, object selection, etc.) I'll do up a proper sample level and we'll have a feel for what gameplay should be.

The only undocumented feature in this build is holding down shift will increase your explosive ability. Caps at about 20 seconds worth. :)

Monday, May 11, 2009

FrameWork Ends (For now)

Argh, I'm getting quite frustrated trying to get XML recording going properly. I'm going to have to end up making a completely new custom XML class that uses only in-game previously-defined objects.

That is to say, I can't build a generic version that fits a framework concept at all. 

With that said, I'm done work on my framework for a while! The last build I made was Number 5. I made the arena double-wide and turned on view focus by default; returned the pile of stoves; fixed up the zoom a bit more; and finally... Added a detonator. Just for kicks, press SHIFT to send out a shockwave. :)

I guess that means it's time to start focusing on my next game... Tentative titles: "Sachel Charge," "Time Bomb," and "Save the Day." No idea yet. Hm. What say a month for this one? Maybe 2 weeks? We'll see :)

Four small things

Some things I fixed today:
  • Zooming now moves a bit more slowly and allows you to zoom all the way out
  • Fixed the "Jitter bug" that can happen on level load (also seen in Fantastic Contraption levels where the possible level size is maxed)
  • Semi-fixed the camera following the player object. It "leads" the player a tiny bit seeking the nearest wall - which wasn't my intention, but it seems to work out well for playability's sake. It will probably have to be fixed and smoothed at some point.
  • Added linear and rotational damping - very slight - to simulate atmosphere. I know it's a horrible atmospheric implementation but I'm not sure how else to do it.
I'm going to tackle level design this afternoon, I think. I'm going to start with a basic level editor - one that lets you draw rectangles, and save them to a DB. Should be interesting.