Currently, an unfinished attempt at the Github 2012 Game Off, but an awesomely fun time updating somebody's existing platform game engine to the latest Dart specification.
Dart JavaScript
Pull request Compare This branch is 93 commits ahead, 15 commits behind github:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
packages
resources
.gitignore
HISTORY.md
PlatformGame.css
PlatformGame.dart
PlatformGame.dart.js
PlatformGame.html
README.md
dart.js
details.html
index.html

README.md

Scrunch!

This is a game about scrunching things. Specifically, scrunching corkraches (which are a lot like cockroaches, but specifically designed to annoy both etymologists and entomologists) and scrunching hair.

Stacey, our heroine, is a teen girl. You know how teens can get when they don't get their way, right? Stacey has had her favorite scrunchie stolen by the neighborhood hound, Bows... SPARKY. Sparky the vile dog. The only thing standing between Stacey and her beloved scrunchie is a bunch of physics-defying platforms and an army of corkraches. Corkraches that must be scrunched. How will she scrunch them, though?

Lucky for her, all of this scrunchy teen drama (appearing this Spring on the CW) has caused Stacey's mighty teen girl rage to swell to bursting ... she has developed the psychokinetic ability to push and pull objects. Wooden crates are good examples of corkrach-whumping devices, as are other corkraches.

Controls

Stacey moves around via the A, W and D keys. A moves her to the left, D moves her to the right, and W enters a door. She can move left and right in the air, too. Don't question it. There's precedence for this sort of thing with psychokinetic teens. How does she get into the air, though? There's no jump button!

Instead, she JUMPS WITH HER MIND.

Super Angsty Girl Rage Powers

This functionality is a work in progress.

The arrow keys are used for pushing and pulling things. You pull this off by entering a key gesture with the arrows. That is, you press one key, hold it, and press another ... somewhat like mouse or screen gestures. As with a guitar, these combinations sustain until you release them, so you can't make another gesture until you let go of both parts of the last gesture that you made.

The first key pressed in a gesture (the one that is held) indicates the FROM direction, and the second key in the gesture indicates the TO direction. When Stacey unleaches her psychokinetic blast, the targeted object will move from the FROM direction toward the TO direction. If there is an object in the FROM direction closer to Stacey than there is in the TO direction, that object will be targeted and pulled toward her. If there is an object closer to Stacey in the TO direction, that object will be targeted and pushed away from her.

Effect Key Chords
Launch Stacey straight up UP then DOWN
Land Stacey very fast DOWN then UP
Push something on Stacey's right LEFT then RIGHT
Push something on Stacey's left RIGHT then LEFT
Pull something from Stacey's right RIGHT then LEFT
Pull something from Stacey's left LEFT then RIGHT
Launch a grabbed object DIRECTION then DIRECTION

What's the good of grabbing an object? Stacey can then hurl said object in any direction that she likes by chording like a push, because that's exactly what she is doing. The object will scrunch any scrunchables that it contacts, itself scrunching when it comes up against the unscrunchable. I freakin' love the word "unscrunchable."

Open Source Projects Used

This is an update and modification to Dart-platform-game by Danny Hendrix. The actual repo for the update effort is located here.

Specific to this game, the key handling and movement physics were pretty much completely replaced, as are a good deal of the sprites. Total changes can be calculated between the following repos:

  • git://github.com/ess/Dart-platform-game.git
  • git://github.com/ess/game-off-2012.git

In Case I Don't Finish

Since I found out about the Game Off so incredibly late (two days before the original deadline), there is some chance that I won't actually finish before the deadline. Even if that happens, this was a pretty good experience. I didn't know anything about Dart before I started, and Danny's original codebase didn't work with the current Dart SDK. So, I have another repo dedicated solely to updating the code to work with Dart.now. I generated a pull request for Danny yesterday, and it appears that he merged it while I was grabbing an unplanned nap, so that's pretty rockin'. You go, open source.

Original README

Following is the text of Danny's original README. It's pretty cool that he took the time to put together an example 2D platformer, and you should definitely check him out (his links are at the top of the live game).

Open-source platform webgame

Author Danny Hendrix

This game gives an example of a setup for a HTML5 game. The game is written in Dart (http://www.dartlang.org/). 

Demo is available on http://www.dannyhendrix.com/dart/platformgame .

To improve performance, the level is buildup from tiles. Objects move from tile to tile, only the tiles that have changed are repainted each frame. 
Objects are pre-rendered on separate canvases.

More information on performance improvements used in this game:
http://www.html5rocks.com/en/tutorials/canvas/performance/ 

Feedback is always welcome :).