Sunday, December 20, 2009

Holiday Cheer

Holy crap lots to talk about!

Site Redesign


As you can see, the site has undergone a redesign. I'm pretty happy with the new color scheme. If you have any suggestions on how I can improve it, feel free to drop them in the comments.

New Jumper


New Jumper! The title isn't final yet. The fourth game in the Jumper series will be played in your browser with the Flash Player.


Development is progressing smoothly. I'm currently writing myself an editor (also in Flash) for the game, but going a bit beyond the call of duty and making it more of a general-purpose editor. I'd like to make something I can reuse between projects. If what I come up with is polished enough, I might even release it for others to use for their projects.

FlashPunk


New Jumper is being programmed using Chevy Ray's FlashPunk engine. I'm helping him bug-test and offering suggestions as I work. The engine seems to be nearing completion, so hopefully that will see a public release soon and everyone can try it out! Trust me, it's really awesome!

Praise!


It's the time of year for top 10 lists and "best-of" lists and other miscellaneous lists! I've been fortunate this year: MoneySeize and RunMan have both made it onto a list each, with the latter even making it onto two.

Edmund McMillan: MoneySeize 5th best Flash game of 2009

Gamasutra: RunMan 5th best indie game of 2009

Play This Thing!: RunMan 4th best indie of the year

In Retrospect


I'm really blown away by the amount of exposure I've been getting this year! The friendliness of the indie community never ceases to amaze me.

I never expected people to flat-out volunteer their help (and contacts) with marketing and selling one of my games, but while working on MoneySeize I had Edmund McMillan approach me and offer to help me sell a Flash game. I really cannot thank him enough for this, and I've heard tell of him coaching a few other indies through the process as well. Really man, you're the best and I hope Super Meat Boy makes you filthy rich.

Later, I participated in Ludum Dare 15 and that was just a blast. I ended up winning second place with Broken Cave Robot, which was very cool.

And then finally: RunMan! Tom and I had been working on this beast for a loooooong time. I'm actually kind of shocked that we finished it at all. But the enthusiasm and support we've gotten from the indie community has been amazing and I'm super happy to see so many people enjoying it. For the curious, our download counter is sitting just below 35,000. We've also entered it in next year's IGF, so wish us luck!

Well, that's it! Merry Christmas everyone!

Labels: , , , , , , , , , , , , , ,

Thursday, July 9, 2009

Some Press for MoneySeize

Bytejacker
"If you like platformers and you hate yourself, you are going to enjoy MoneySeize."
http://www.bytejacker.com/episodes/044

Jay Is Games
"...in MoneySeize, the level design just gets downright evil (in a good way)."
http://jayisgames.com/archives/2009/07/moneyseize.php

Destructoid
"I'm tempted to call Matt Thorson the king of indie platfomers..."
http://www.destructoid.com/indie-nation-moneyseize-138694.phtml

TIGSource
"Matt’s done a great job of lowering the frustration level and making the levels fun to replay over and over again..."
http://tigsource.com/articles/2009/07/04/moneyseize

The game should be getting badges on Kongregate tomorrow. Also, you can follow me on Twitter now if you feel compelled to do so.

Update: Found a review on Destructoid, added it above.

Labels: ,

Friday, July 3, 2009

1010 Coins

Less than 24 hours after the release of the game, Matt Makes Games Forum-member Zecks has found all 1010 coins in MoneySeize with a total of 1877 deaths.

Labels: ,

Thursday, July 2, 2009

MoneySeize Released! (+Soundtrack)


Sir Reginald MoneySeize II, Esq. must collect coins to fund construction of the tallest tower in the world! Jump through stages ranging from simple to ridiculously difficult in your quest to find all 1010 coins. Features 50 stages: 40 regular and 10 secret.

MoneySeize has been released! You can play it on my site or at Kongregate. I appreciate any positive ratings at Kongregate, because a high rating increases traffic and makes me eligible for cash prizes.

I've also uploaded the full soundtrack, including editable files. You can download that here.

Tracklist:
1. Menu Theme 1
2. Menu Theme 2
3. Good Intentions
4. Static
5. Sine Language
6. Enter MoneySeize
7. Ladder to Heaven
8. Selling Out
9. The End and the Means

Update: Downloadable version released! Click here to download.

Labels: ,

Friday, June 26, 2009

Embedding XML in AS3

I thought I'd write a bit of a technical post for a change, explaining how to embed XML files in a SWF from FlashDevelop. Coincidentally, I used XML to store the layout of MoneySeize's stages, so the example will specifically be geared toward XML representing platformer stages.

Now then, here's an example of an XML stage file from MoneySeize. It's actually just a snippet of a stage file, not a full one:

< STAGE>
< OBJECTS>
< BLOCK X="2" Y="23" WIDTH="36" HEIGHT="4" />
< SPAWN X="6" Y="22" />
< BLOCK X="12" Y="21" WIDTH="4" HEIGHT="2" />
< TUTORIAL X="18" Y="16" TEXT="..." />
< TUTORIAL X="28" Y="22" TEXT="..." />
< BLOCK X="36" Y="2" WIDTH="2" HEIGHT="16" />
< JUMPTHRU X="32" Y="9" WIDTH="4" />
< BLOCK X="27" Y="9" WIDTH="5" HEIGHT="2" />
< COIN X="28" Y="7" />
< COIN X="30" Y="7" />
< COIN X="32" Y="7" />
< COIN X="34" Y="7" />
< BLOCK X="17" Y="8" WIDTH="5" HEIGHT="2" />
< BLOCK X="2" Y="9" WIDTH="10" HEIGHT="2" />
< CHEST X="19" Y="7" COINS="5" />
< DOOR X="5" Y="8" />
< BLOCK X="37" Y="20" WIDTH="2" HEIGHT="3" />
< BLOCK X="1" Y="5" WIDTH="3" HEIGHT="4" />
< BIRD_GOLD X="2" Y="4" COINS="3" TIME="5" />
</ OBJECTS>
</ STAGE>

The XML is pretty self-explanatory. As you can see, the stage contains an objects tag, which contains a list of every game object on the stage. Objects include blocks, coins, "tutorials", "jumpthrus" (one-way blocks), etc. Each object tag includes its x and y positions (divided by 16, because the game is grid-based) and any other applicable attributes (for example the CHEST tag contains a COINS attribute to indicate the amount of coins in the chest).

Of course, designing levels by typing raw XML into a text file isn't very intuitive, so it's nice to have an editor.

So now that we have the XML, our goal is to embed it in our SWF. Then, at some point as the game is running, we will load and parse it to build the level it represents. Here's the code I used to embed the XML:

public class Levels 
{
[Embed(source='../../../assets/levels/Level1.xml',
mimeType="application/octet-stream")]
public static const Level1:Class;
}

The "application/octet-stream" MIME type allows us to embed any asset as a byte stream. The last step is to load the XML into memory and parse it:

var file:ByteArray = new Levels.Level1;
var str:String = file.readUTFBytes( file.length );
var xml:XML = new XML( str );

Here we load the level as a ByteArray, then convert it to a string. This string is the raw XML of the file in string format, which we can use to create an XML object. Now we use the interface of the XML object to parse the level data:

var o:XML;
for each (o in xml.OBJECTS[0].BLOCK)
{
addChild( new Block( o.@X, o.@Y, o.@WIDTH, o.@HEIGHT ) );
}

For MoneySeize, it is known that each level file only has one OBJECTS tag, so we can simply access xml.OBJECTS[0] to find all the game objects. xml.OBJECT[0].BLOCK is another XML object: it contains every BLOCK tag within the OBJECTS tag. We simply traverse every tag in the object, adding a block object to the level for every BLOCK tag.

Note that the @ symbol is used to access the attributes within a tag.

Labels: ,

Tuesday, June 16, 2009

MoneySeize

MoneySeize is a game about selling out.


Why have I been so silent lately? Well, I've been polishing up this platformer, preparing for release.

Hopefully I'll be completely done with development within the next couple days. I was supposed to be done on Saturday but under-estimated the amount of work there was left.


After it's done, I'll begin looking for a sponsor. Once that process is complete, you guys will be able to play from any Flash-enabled browser.

I'll likely make a trailer for the game as well once development is wrapped up, to show off some more of the content and give you guys an idea of how it plays.


As usual, I'll upload the soundtrack (including editable files) for you guys once it's released, and may also do a post detailing the whole development process and my mistakes/victories.

Labels: