Sunday, March 29, 2009

Yet Again

Yes, it's another An Untitled Story update. I'm putting these together while taking breaks from homework (it's that time of the year). This time it's up to v1.14 and I've done some difficulty re-balancing and added one new feature.

  • Added random ghosts. After encountering the ghosts in the story, they will occasionally chase you in your travels. The frequency of them appearing will increase with difficulty and gold orbs collected.

  • Added a very slight delay after bouncing on something where you can't double jump (should make jump timing more forgiving).

  • Made the secret passage in DeepTower more obvious.

  • Made the first room of MountSide much easier on all difficulties.

  • Made the second and third rooms of MountSide easier on Simple and Regular.

  • Made the fourth room of MountSide easier on Simple.

  • Removed one crusher enemy from a room in FireCage on Regular, two on Simple.

  • Replaced blue energies with red in a room in CloudRun on Regular and Simple.


The random ghost appearances was something that came to me the other day for no apparent reason. I like the idea of a random event that can suddenly change the player's short-term goals completely. In this case, there is a very small chance that a ghost or two will appear and force you to flee from the room. The frequency is pretty low, and it can only occur in about half the game's rooms, but it should add a bit more variety to exploring the game world.

Note that the ghosts can only appear once you've encountered them in the story (which can be quite late in the game for some players), and they'll never chase you on Simple mode. The formula for the odds of the ghosts appearing in a room is:

P(ghosts) = 0.015 + (diff * 0.005) + (gold * 0.005)

So if you're playing on Regular (diff = 1) and you have 5 gold orbs (gold = 5), the chance of a ghost ambushing you in a room is 0.045, or 4.5%.

The other major change is the addition of a delay after bouncing on something (an enemy, energy cluster, etc) where you can't double jump. When observing people playing (particularly those not good at platformers), I noticed that they'd always tap jump just as they bounced on something, expecting to get a higher bounce because of it. The correct method for maximum air is to hold the jump button as you bounce - so the "noobs" got mixed results. If they happened to press the button the moment before the bounce they'd get full lift, but more commonly they'd tap it the moment after the collision. In this case, they would bounce off the enemy and then immediately use their double jump, resulting in a tiny hop rather than a huge bounce. This was definitely the single biggest source of frustration for my less-skilled play-testers. The delay allows pressing and holding the button just after a bounce to give full vertical momentum.

Labels: ,

Wednesday, March 25, 2009

Baby Steps

I just whipped up a quick bugfix update for An Untitled Story (v1.13), to quickly iron out a few issues people were having.

  • Fixed Grotto Eye boss getting stuck in platform.

  • Fixed Bird being white after bouncing on Grotto Eye on Insanity.

  • Fixed wrong boss music being played for FarFall boss on Insanity.

  • Fixed red energy being stuck in a wall in a room in FarFall on Simple.

  • Fixed fatal error when shooting during end cutscene.

  • Fixed crystal ball not giving hints for the 5 new hearts.

  • Fixed purple orbs in BlackCastle being shootable early.


You can find An Untitled Story where it always is, on my games page.

If you have any bug reports or suggestions for future versions, feel free to leave me a comment.

Labels: ,

Wednesday, March 18, 2009

Birthday Randomness

It's my birthday! I am now officially allowed to gamble in Vegas, though I've been of age here in Alberta for three years already. Gotta say... 21 feels suspiciously similar to 20.

Anyways, I've just got a bunch of random things to talk about...

Really Old Games


Some people thought I'd taken these games off my site after the redesign. They may be embarrassingly bad, but I wouldn't be able to stomach just throwing them out like that. Here's download links for all of my pre-The Encryption games. Note that before clicking any of the below links, it is recommended you remove any expectations you may have - I made all these games before my 16th birthday.



Insanity


MorEvilREIKEN, a member at the MMGF forum, actually beat Insanity mode in An Untitled Story with 100% completion. For the uninitiated, Insanity mode is the exact same as Masterful mode, except everything kills you in one hit. To demonstrate just how much of an accomplishment this is, he even posted a video of his crazy skillz on Facebook (with a funny choice of music).

Honestly, I added Insanity mode as a sort of unreachable holy grail in the game - a challenge so hard no one could possibly beat it. Well, I guess I'll just have to try harder next time.

TIGSource Cockpit Compo


TIGSource is holding another of their famous game dev competitions. I've meant to prepare an entry for each and every TIGS compo, and this one is no different! I'm working on a really simple little time-waster (in Game Maker), which I will hopefully finish by the end of the weekend.

Regardless of whether this weekend proves productive for me, the deadline is March 29th. Hopefully I can get my act together by then at the very least.

Labels: , ,

Tuesday, March 17, 2009

Flash Platformer Engine

It's my birthday in 23 hours! Too bad I've got a mountain of homework to deal with this week. Ah well, that's what weekends are for.

Anywho, I've made an awesome step forward on the game development front: I've worked out a (very) basic platformer engine in Flash! It really doesn't look like anything special right now, but I've programmed the back-end to be very extensible and it will be completely reusable for me for any platformers I want to make in Flash. It feels great to have the foundation built, so now I can construct the worlds I really want to create on top of it.



I've embedded the basic engine above, for the curious (you'll need Flash 9+ to play it). Use the arrow keys to move and the 'S' key to jump or double jump. Keep in mind that the feel of the game (jump height, run speed, gravity, etc) is by no means final for any of my projects, I'm just messing around with it for now. Hopefully the next time you see this engine, it'll be in an actual finished Flash game!

Labels:

Thursday, March 12, 2009

TIGJam Canada

The Independent Gaming Source (or, more specifically, the TIG forums) holds an annual, official "TIGJam". Basically this is a weekend where any independent developers who can manage it huddle into a room with a bunch of PCs, work on games and get to know each other.

Unfortunately for me, the official 'Jam is held in Arizona.

So some of us at the forum (including my pal Chevy) who live in the western Canadian provinces thought it'd be awesome to hold our own version of the TIGJam. The idea seemed to be well-received, although admittedly not by nearly as many people as attending the official TIGJam last year.

It seemed like we had enough interest to actually attempt a jam of our own, but it wasn't really going anywhere. So I decided to jump in and try to get the ball rolling. To that end, I've set up a page on the (misleadingly-titled) Doodle, which helps schedule meetings between many people (and for which I'm incidentally developing competing software for in one of my courses this semester).

So here it is: If you want to attend a TIGJam in Edmonton, Alberta, Canada (most likely somewhere on the UofA campus) sometime in May, follow this Doodle link and tell me when you're available. Once we have some dates where enough people can make it (I'd say the minimum would be a total of 12 awesome dudes and/or classy ladies) we'll set a firm date and time and I'll start booking rooms and making the appropriate arrangements.

If we don't get enough people signed up, well, at least we tried.

Labels:

Tuesday, March 10, 2009

Monkeys and Bananas

I've received some emails asking what my next project is/will be, so I thought I'd explain the situation.

I just finished up An Untitled Story v1.1x, which was a really small, fast project.  I'd like to do more of those (small, fast projects).  Since school is interrupting my game development so often lately, I'm finding it harder to commit to large games and I've decided to keep things simple.  That's not to say I don't have plans for big projects.  I just don't have to ability to follow through with those plans right now.

Here's a couple things I'm planning to put together sometime soon:
  • A Hold Off Black update (fix the font and some other bugs), and then releasing Hold Off Black to major portals such as Kongregate.
  • A quick Flash version of Jumper.  The game will likely be very sparse in features - similar to the original Jumper game.  In fact, it may just be a remake of the original Jumper with new level designs, visuals and physics.
  • Finish redesigning my site (the frontpage is done, but the games page is still stuck in the past).

As well, I have a slightly larger (but still pretty small in a sense), super-secret project I'm going to slowly work on.  Some hints as to what it is?  Well, the engine I develop for the Jumper Flash game will be partially reused with this new game.  I also hinted at some of my plans for this new project in my previous post.

Labels:

Sunday, March 8, 2009

CMPUT 410

This semester, I'm in a web development class.  Operating and developing my own site over the years has definitely prepared me a bit for this course.  For instance, when we covered HTML, JavaScript, PHP and mySQL I already knew them.  

But I'm still having a bit of trouble.  The trouble isn't that I don't understand the material.  No, my problem is something I struggle with a lot in university but for some reason don't imagine many of my classmates dealing with.  This problem also gets in the way occasionally in my psych classes (my minor is psych), believe it or not.

I know what you're thinking (aside from "come on, what's this problem you're having!?  The suspense is killing me! AAAARGH!"), why are we learning about HTML in a 400-level course?  That is due entirely to weird structure in the CS program.  Believe it or not, there's no earlier courses which cover HTML, CSS, or JavaScript.  Some projects in earlier courses required us to use them, but we never had to know them.

Academic strangeness aside, the problem I'm having is this: I'm over-anxious to apply the material to game design.  As soon as I learn a new concept/technique/language/whatever, my brain is drifting off imagining a way to apply it to games and experiment with it.  A course on web development is especially nasty for this, because it's just so damn applicable to my hobby.  As we're learning HTML and CSS, I'm thinking of redesigning my site.  As we're going over PHP and mySQL, I'm dreaming up all sorts of community-centered browser games.  

I could make the game in Flash, and users could exchange their content with the server in XML files!  I could do monthly updates, adding new functionality!  What's that?  The assignment's due tomorrow?  Well I'd love to work on it, but I'm really caught up in this other thing...  I'll just make sure to do well on the midterm.

What's that, the midterm's tomorrow?  Ah, crap.

Labels:

An Untitled Update


To coincide with the public release of this blog - and just because I felt inspired to do so - I've created a massive update for my year-and-a-half-old platformer An Untitled Story.

Before I get started rambling on about what I added/removed/fixed/broke, you can download the new version at the usual place.

And a PSA of sorts:
I can't test the entire game when I make changes, so beware of bugs (yes, possibly even game-melting fatal errors). I did my best to stamp them all out, but I know there has to be a few hiding somewhere. I'm only one man. Get in touch with me if you find a bug, and hopefully I can iron out any of 'em, if they exist, in a minor update next week or so.

Also, if you're transferring in your old savefiles, please, back them up. It's officially backwards compatible and I tested the crap out of this feature in particular, but some savefiles are too important to risk and AUS deletes savefiles that appear to be tampered with (I probably should've taken that functionality out, now that I think about it).

Anyway, here's the changelist:


New Content:
  • Added a third toughness upgrade.
  • Added rectangle foreground effect to every room in Blancland.
  • Added new rooms and areas (14 new rooms total).
  • Added 5 new hearts.
  • Added a book to Library.

Difficulty Rebalancing:
  • Made it so you can hurt the Grotto eye boss without divebombing on Regular and Simple.
  • Added one bubble to the last room of DeepDive before BlancLand on Regular, and two on Simple.
  • Made the next purple ball in the BlackCastle jumping puzzles partially visible.

Misc. Changes:
  • Changed the Heist Mode font.
  • Toughness upgrades on ability pause screen are now numbered.
  • Changed the pink bird font.
  • Halved time you need to hold up or down for quick-scroll on pause menus for abilities/hearts and slowed down scroll speed.
  • Added quick-scroll to teleport select screen.
  • Changed Crystal Ball/Floretta font.
  • Made the RainbowDive sign text box a bit more attractive.
  • Changed boss music on Insanity mode.
  • Made the player always bright red on Insanity mode.
  • Added markers to some rooms in The Curtain and CloudRun, so you can see when the moving platforms turn around.
  • Moved BlackCastle and FinalClimb over two squares, to the edge of the map.
  • Added version number display to main menu.

Bug Fixes/Optimizations:
  • Fixed countless memeory leaks related to the particle system.
  • Fixed transparency bug with the transition to the pink bird conversation cutscene.
  • Fixed area name field being too small for some area names.
  • Fixed slight visual mismatch between two DeepDive foreground images.
  • Fixed being able to get stuck by beating FireCage before getting the teleport ability.
  • Fixed small fish in DeepDive getting stuck in frozen enemies and freaking out (now they're destroyed if they get stuck).
  • Moved player color update code out of step event to reduce CPU use.
  • Refactored teleport destination data storage to reduce memory use.


As you can see, there's quite a few changes and additions. The most tedious of all was patching up the holes in the particle system, but it had to be done sometime. The most fun was creating the new areas. I added 14 new screens in total, 13 of which are within 2 new areas.

Adding new screens to an already-complete "Metroid-vania" game was a unique challenge. Going into this task, I had several goals I wanted to achieve:
  • Provide a fresh challenge for AUS vets, as a reason to revisit and rethink the game.
  • Create visually unique new rooms with interesting (implied or stated) backstory, so the player wants to find and explore the new screens.
  • Add more optional, secret content to the game.
  • Fit the new areas well into the overall flow of the game, from the perspective of a first-time player.
I've also made some small changes to polish the look and feel of the game (changing fonts, enabling more comfortable navigation of some menus, etc) and to rebalance the difficulty in several places.

The Grotto eye boss in particular was changed. I've had tons of players email me asking how the hell to damage the boss. I'll admit it is a bit player-unfriendly. For the uneducated: to hurt him you have to wait until he jumps out of the water, then divebomb onto his eye. Some (apparently many) players will try simply jumping onto the eye, to no avail, and conclude they must have to hurt him some other way not involving the eye at all (perhaps a complex system of levers and pulleys?). This could be because most players will have just earned the divebomb ability when they reach this boss, and it may not be properly inserted into their attack vocabulary just yet.

Regardless, the Grotto eye is the gatekeeper to FireCage, DeepDive and their respective (incredibly important) upgrades, so this had to be cleared up. I decided to make the divebomb unnecessary on the Simple and Regular difficulty levels.

The rest of the changes are things that should've been in the original game, but I missed for one reason or another. It was fun composing a new boss track for Insanity mode, to give those hardcore players some kind of incentive to struggle through it.

Update: Some very dedicated players have already pointed out the bugs in v1.10.  Some were pretty game-breaking, so I decided to quickly whip up v1.11 with them fixed.  That's uploaded now, thanks guys!

Bug Fixes:
  • Fixed crash after beating final boss if you shoot at the right moment.

  • Fixed being able to leave the final boss after starting the fight.

  • Fixed the crystal ball not giving you hints if you have 90 or more hearts.

  • Fixed BlackCastle Heist stage being unlocked at 90 hearts, rather than all hearts.

  • Fixed ending screen showing wrong totals for hearts and abilities.

  • Fixed crash on playing a Heist mode stage containing red energy.

Labels: ,

Thursday, March 5, 2009

New Blog!

Good morning, internet.  I just set up this blog as a replacement for my old news feed.  Hopefully it'll let me be a little more expressive and discuss more than just news.  I'm thinking I'll mostly use it to keep people updated on what I'm working on and how it's going.

Oh, and don't worry about the design mismatch with the rest of my site.  Think of this as a preview of what the rest of my site will look like when I get around to it.

Labels: