RELATED
CHRISTMAS LIGHT SMASHFEST 2001RECENTLY ARCHIVED
SUMMER.02ABOUT
Scott Schiller: Programming (Notepad) / Imaging (Photoshop) Feedback and comments are always appreciated. Thanks for checking this site out! :) |
|
NOTES
I intend to write some sort of technical notes for this thing, just in case anyone actually is interested in reading over the code (I doubt it'll make much sense by itself, I can tell you that much!) .. to be added soon, time providing.
Primary objects list:
brickTypeData[];
array of brick classes/properties
capsuleTypeData[type] = [typeName,selectFrequency,points];
Capsule classes/properties - eg. capsuleTypeData['laser'] = ['laser',10,100];
levelData[name] = [[]];
Multi-dimensional level data array (brick map)
Data represented by row/column, each item representing a brick - eg. levelData[name] = [ [0,1,2,3,4,5,6,7,8,9,A,0], [0,1,2,3..etc] ];
userData[name] = [[]];
User-generated level data (same structure as levelData)
levelNames = [];
User-generated level names, stored in a remote .js file
balls = [];
lasers = [];
capsules = [];
Object collections (for reference from game and main animation loop)
Shadow();
Brick shadow object - is created with each brick object instance
Brick();
Brick object - referenced by BrickMap object, "building block" of game levels
BrickMap();
Stores 2D array (map) of brick object references (ie. one map item maps to one brick object)
Fixed size of 13W x 20H - levels supported up to 13 wide, 20 high
PaddleShadow();
One-time object For "shadow" power-up - trails behind Paddle object.
Paddle();
Refers to user paddle image element, contains methods for positioning and type etc.
Ball();
Contains object reference, position and velocity (X/Y) components, status, and type (normal/"super" ball)
Capsule();
Power-up object (falls from random bricks) - has type and status properties, and animation methods
PlayerScore();
For keeping track of and displaying player's score (points)
LifeObject();
Displays and tracks "life" icons
Player();
Player object - for setting type, applying power-ups, die, respawn etc.
LaserFire();
"Fire" object (ie. one instance per shot)
StatusWindow();
BSOD/warning/status messages object - can pause game if error is critical, or user interaction is needed
OptionSet();
Game options (currently just SFX) - has display and control functions
LEGrid();
Level Editor Grid object - shows grid area for brick placement
LEGridItem();
Level Editor Brick item - can be "blank" or set to a certain type
LEMap();
Level Editor Map - basically BrickMap() adjusted for level editor
LETypeCursor();
Trailing "cursor" object, follows mouse showing currently-selected brick type
LevelEditor();
Main container object for level editor
LevelEditorToolbox();
Editor toolbox within Level Editor
LevelBrowser();
Level Browser object - contains a DIV with a list of user-submitted levels
Menu();
Basic "menu" object - lists "arcade game | level browser | level editor" at top
CREDITS - people whom I owe thanks
Andrew Beley: Beta-testing and general criticism.
My friends and co-workers at CRITICAL MASS: For their tolerance and humor (eg. "You did what all last night?")
Notepad: The code editor to swear by.
Coffee: For supporting early mornings and late nights.
Winamp: See "coffee".
Turntables: Two good reasons to take a break from the computer! (And possibly another contributor to carpal tunnel syndrome. Who's to say!)
INSPIRATION - related people and sources of note
Scott Porter - Javascript-games.orgKoizumi Tota / Nakano Sin - Smokymonkeys TRIGLAV
Peter Nederlof - Peterned IV
Scott Andrew LePera - Scott Andrew
Aaron Boodman - Youngpup.net
DHTML ARKANOID
This is a project I started in September 2002, after seeing some Javascript implementations of Arkanoid on the Web. The ones I found (javascript-games.org/arcade/blox) weren't too close to the original Arkanoid, though. After doing some more searching around I started thinking I could probably pull off a reasonable imitation of Arkanoid in Javascript, one that would be similar enough to the original to give people who played it that warm, fuzzy nostalgic feeling.
Okay, well, a nostalgic feeling anyways ;)
OBJECTIVES
- Attempt to accurately recreate "Arkanoid: Revenge Of DOH" in DHTML, making use of prototyping (Object-Oriented style) Javascript.
- Maintain efficiency wherever possible (Javascript isn't exactly known for its amazing speed)
- Integrate audio (via Flash)
RESULTS
Well, here's what happened in short:- Features - included stuff that works
- Basic Arkanoid "look-and-feel" (arguable outside of bricks/paddle)
- Inclusion of most of the original hardware-generated sound effects (all square waves)
- Arcade level structure (minus the two "boss" levels so far, sorry)
- Level Editor/Browser (create your own levels/play ones other users made)
- Basic JS debugging messages/notification - basically a nice BSOD, minus the BS :)
- Exclusions - stuff I decided to leave out
- Little organism things that come out of the pipes at the top of some levels - would likely make game significantly slower
- "Super" random power-ups (eg. 36 regenerating Super balls, Super laser, etc.)
- Annoyances - stuff that was just pissing me off!
- Intermittent event handling-related bugs (ie. loss of paddle control)
- Win9X's handling of recursive-based animation - ie. setTimeout("animate()",20) - sketchy at best!
- "Object expected, line 1" script errors
- Collision detection on diagonals / when to bounce on both axes
- setTimeout() calls having to refer to objects from the outside
- Flash ActiveX control causing a browser crash if given too many simultaneous JS calls (ie. sound events), the number of which seems to change based on the CSS positioning of Flash in the document (!?!)
- No girlfriend to talk to after a late evening of writing code
^-- Assumed to be irresolvable/unattainable (ha ha) ;]
Thanks for visiting. Feedback, criticism etc. is always appreciated!
- Scott Schiller | [ mail ] [ portfolio site ]
This page should be XHTML 1.0-compliant.