LAME Online

May 22nd, 2007

I’ve started working on a new web game I’d like to introduce.

The name is short for Legend of the Ancient Mystical Entities.  It’s an homage to indy RPGs, especially in the late ’90s, which often had names full of words like “dungeon”, “sword”, and ”fantasy”1.  I’ve had the name in mind for a long time and I’ve started and abandoned a couple games already (including the original LAME Online, which I’ll write about some time).

LAMEO is a browser-based RPG focusing on dungeoneering and trading.  Dungeoneering is similar to older console RPGs.  Dungeons are randomly generated and manually tweaked, and released on a regular schedule.  Battles are random encounters and one-on-one.

Battles are synchronous and turn-based, similar to paper-rock-scissors.  Both you and the enemy have a set of actions which can counter one-another.  If you throw rock and the enemy throws paper, you won’t do any damage but you’ll take double.  Enemies have deterministic AI.  Once you find their pattern, you can win without taking any damage.  But the AI will be complex (but not necessarily smart) so it takes more than a handful of encounters to do this.

After you complete a dungeon you’ll gain experience based on what you did in battles.  If you only cast fire, you’ll only improve in that skill.  You’ll also collect gold and equipment in dungeons.  If you die, you’ll lose everything you found or earned within the dungeon, but there’s no additional penalty.

Outside of dungeons is a single conglomerate area where you can buy and sell equipment and spar with other characters.  All trading is done between players; there are no stores.  To sell items you simply put yourself in “sell mode” and select the items you wish to sell and their prices.  To buy, you can search by item name, filter be type or cost, or just browse the other characters’ stores.

Sparring I haven’t quite thought out yet.  It will be similar to battling in dungeons, except you’ll fight other characters.  There will be a wagering system so you can risk your hard earned money and equipment.

I’m still pretty early in the design phase, and I’ve just started development.  I have some page mockups and a few skeletons of code.

On the technical side, I’m using PHP with a little Ajax.  One of the failings on the original LAMEO was trying to do too much on the client side.  Here I’ll be using javascript only for presentation.

This will be my first real product.  I’ve worked on dozens of projects before.  Some of them have yielded results but most haven’t.  But a product is different.  My goal isn’t to learn and gain experience, or just have fun; my goal is to create a finished game that people will play.  This means I have a lot more to do than just design and code.  I’ll need to market, provide support, ensure the code is secure, and do all the other stuff that, in my mind, separates software development from programming.

  1. Yes, commercial games also follow a similar naming pattern []

Drag and drop

May 19th, 2007

Just because javascript drag-and-drop libraries are so abundant, that doesn’t mean there’s no benefit to writing your own.  Small tools like that can be written in a few hours and written well in a couple days.  And doing so will help you learn techniques you might not have tried before and give you experience.  Plus, in the end you’ll have exactly what you want.  No bloat from libraries that try to do everything.  No bugs or “features” that you can’t fix or don’t understand.

Here is my new, simple, drag-and-drop.  What separates it from others, I think, is that mine uses Towers of Hanoi as an example of customizing the drag/drop rules.

Raycaster update

May 11th, 2007

I’ve updated my javascript raycaster with some great new features:  sprites, mouse control, a skymap, and Wii support.  Check it out here.

An image format primer for video game websites

May 9th, 2007

JPG is lossy.  That means it looses information.  Inaccurate.  Low quality.  Crap.  All those screenshots of fancy next-gen titles are useless if the images are blurry, ugly, and artifacty.

PNG is lossless.  That means it retains all information.  Accurate.  High quality.  Perfect.

Stop using JPG and start using PNG.  At the very least give me a choice.  Sure, it uses a little more bandwidth, but if you cared about that you’d compress your HTML, CSS, and javascript, and cut back on the flash (GameSpy’s homepage cost me 951KB; GameSpot’s was 1.51MB).

Javascript guru

May 5th, 2007

Douglas Crockford’s Javascript should be required reading for anyone doing javascript programming.  He has a series of articles and videos about various aspect of the javascript language.  Most importantly, he dispenses a lot of the misconceptions that give javascript a bad name.

Most of the people writing in JavaScript are not programmers. They lack the training and discipline to write good programs. JavaScript has so much expressive power that they are able to do useful things in it, anyway. This has given JavaScript a reputation of being strictly for the amateurs, that it is not suitable for professional programming. This is simply not the case.

Even though it’s mostly stuff anyone experienced in javascript probably already knows, it’s good to have it all explained so clearly in one place.  Plus, there’s always the chance that you’ll learn something new you missed in your other learnings.  For me, it was using || for defaults and && for guarding.