My Latest Bad Idea

Being dumped unceremoniously here, so that I may move on to more pressing matters.

The Idea:

  • A 3d "Kart"-style game
  • That runs in a browser
  • Using Google’s free, open source O3D plugin
  • Supported by ads on in-game billboards

Why a "Kart" game:

  • Fun
  • Simple to pick up and play
  • Relatively simple AI — chooses between preset (invisible) rails and attacks opportunistically

Why O3D:

  • Allows fast, hardware-accelerated 3d in modern browsers
  • Free for developers and users
  • Non-proprietary
  • Reputable development team
  • Good feature list, growing

Problems With O3D:

  • Relatively low-level; no "JQuery" for common tasks
  • Would need to develop a toolchain from scratch to convert Animation:Master models and animations

Art Style Ideas:

  • Pen and watercolor look
  • Bright and fun
  • Simple lighting
  • Baked shadows on track
  • Fake shadows on karts and items
  • Dynamic lighting used sparingly for weapon effects
  • Cartoony characters

Track Ideas:

  • Traction issues — ice, mud, etc.
  • Wind issues — gusts, fans, etc.
  • Loop-de-loops — why should Sonic have all the fun?

Kart Ideas:

  • Permanent, unique kart/driver combos
  • Vehicles affected differently by traction and wind as appears logical
  • Left and right "slots" on each kart

“Slots” Explained:

  • Items can be stored to right or left of driver
  • Items have different weights, sometimes other characteristics
  • Item weights affect handling
  • Heavy jewels, for instance, might be worth points at the end, but be a driving liability
  • Tapping trigger switches items between slots
  • Holding trigger uses items
  • Properly-timed switching of unbalanced items can assist in turns


  • Lively 3d cartoon characters
  • Represent very different play styles
  • Some better suited to some tracks than others
  • Unique weapons
  • Unique weaknesses
  • Unique animations

Sample Drivers:

  • The Marboxian:
    • Reuse one of my characters
    • Drives a hovering flying saucer
    • Not affected by traction
    • Heavily affected by wind
    • Unique weapon: blaster
    • Weakness: Phat beats from radio
  • A Bear:
    • It’s a bear
    • Heaviest character
    • Not affected by wind
    • Low traction effect
    • Unique weapon: Swipes from massive paws
    • Weakness: Igor Stravinsky
  • Maxwell the Lil’ Demon:
    • Reuse a character
    • Unique Weapon: Zappy Pitchfork
  • Tommi:
    • Red-headed, pigtailed little tomboy character
  • Raq the Raccoon
    • Reuse a character
  • A Mouse:
    • Reuse a Character

Sample Items:

  • Car radio:
    • Trigger scans for next station
    • Low grade, low quality audio
    • Stations come in unreliably in different parts of the track
    • Most of it’s always country stations
    • Triggers musical weaknesses, distracting nearby drivers (see Marboxian, Bear)
    • Makes a small but satisfying hit if thrown
  • Cinder Block:
    • Affects handling, weighing down side of kart it’s slotted in
    • Makes a satisfyingly hard hit when thrown
  • Jewels:
    • Worth points at the end, as a function of their weight
  • Power ups
  • Thrown weapons:
    • Targetted by steering direction
    • Steering into opponent increases velocity

Game Logic:

  • JavaScript getting fast, but still think memory is cheaper than processing in browser
  • Lightweight AI chooses between invisible rails stored in memory
  • Lightweight "Fun Physics"
  • Two-player head to head on same computer would be fun — how many simultaneous key presses do modern OS’s allow?
  • Fresh ads loaded each time a track loads
  • No network play, at least at launch — cheating opens up a big can of woes

Physics Engine:

  • Basic 2d collision physics
  • Cheats for not bogging down on large pileups
  • Simple 3rd-axis physics — tracks are still essentially 2d

Sending Content Down the Tubes:

  • Google O3D samples VERY slow to load
  • Use simple geometry
  • Instance a lot
  • All art assets have set URLs so browser won’t re-download them if they’re already in cache
  • Light, smart use of texture maps
  • Is it possible to generate procedural textures on client side in JavaScript? Gradients, simple repeats, noise, etc.
  • Bone-based character animation

Why It’s a Bad Idea:

  • Could be turned out in a few months by a team of 4 or 5
  • I’m one person
  • Have studied the nuts&bolts of 3d, but getting O3D running well would likely take me months
  • Animation:Master toolchain, less steep, but generally likewise
  • Decent with JavaScript, but it would be the biggest project I’d ever programed by far
  • Speculated much, but never actually written a physics engine
  • Best at the art and animation side of things; still a lot of assets to create and perfect
  • Advertising would be based on impressions, as there’s no clickthrough
  • Bandwidth costs wholly unpredictable
  • Covering costs, never mind profitability, wholly unpredictable
  • I’m good at art, but I suck at business
  • I need to focus on getting more work NOW
  • Another of my thousands of over-the-rainbow ideas


Leave a Reply

Your email address will not be published. Required fields are marked *