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

Drivers:

  • 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

There.

Insurance Companies Are Not Qualified to Make Medical Diagnoses

Canada’s CBC News reports on a Quebec woman with severe depression, Nathalie Blanchard, being denied sick-leave benefits after her insurer, Manulife, found pictures of her on Facebook smiling and engaging in social activities.

I’ve been going to Depression/Bipolar Support Alliance (DBSA) meetings for over a year now, in Los Angeles and Maine. (Think of a support group, then subtract the woo, jargon, god and other b.s.) I have my own experiences with depression, and I know people who’ve had it far worse.

According to the article, Blanchard is diagnosed with major depression. A running joke in DBSA groups is that you can tell the new people with depression from those with bipolar because they crack the most jokes. Without the high and low cycles of bipolar, one tends to grasp at any moment of levity that can be attained or generated. There’s a common misconception that depression is a flat, constant low mood. This is rare. Typically one varies between extreme lows and more functional periods, with stops everywhere in between. One also gets very good at faking it for short periods of time.

Meds aren’t a magic bullet either, more a set of blunt tools whose effects on any given person will be highly variable. Beginning treatment often means a period of medication roulette, where the prescriber and patient work to balance efficacy, side-effects and (in the U.S. at least) costs. In the long term, lifestyle adjustments, especially increased social involvement, are essential.

The bottom line is, if Blanchard wants to return to the working world, she’s been doing exactly what she should be.

Manulife Insurance, on the other hand, took a very small risk, which makes perfect market sense. The chances of Blanchard fighting back the way she has were slim, and the financial savings for the company miniscule but real. Faced with the loss of their emergency income, many people with major depression would have retreated further into their shells. Some might have attempted suicide.

Building the Shack, Part 9

Decided to sawtooth the rafters and use overlaid planks for roofing.

Recut the tops of the rafters with a jigsaw.

Put in a temporary floor to work on. Left a gap for the door frame. Had to cover the gap when the chipmunks started getting under the floor.

Tried to pound the ridge into place with a rubber mallet. Found that I’d placed one of the rafters wrong, and had to unscrew and move it. Height of the westernmost rafter about half an inch too short. Not going to worry about it.

Hard to tell from the picture, but the first snow of the season came, and I don’t have the roof on. Will need to hurry it up.

Building the Shack, Part 10

Scrounged some old planks for the roof. Condition was poorer than I expected. Cut boards to size. Filled gouges, nail holes and cracks with wood filler.

Duct-taped vinyl gloves to my sleeves and painted roof planks with Coppercoat wood preservative. Smell didn’t dissipate for weeks.

Hammered all but the topmost planks into place on a stepladder. Height difference of the westernmost rafter causing problems. Should be able to solve it later with trim.

Cross-braced the rafters to make sure the roof would support my weight. Strapped an extension ladder to the frame of the shack to get access to the roof — wanted the frame to be holding my weight, not the ground at the base of the ladder.

Nailed final sections of roofing in.

Offered to haul off some aluminum rain gutters my friends had been meaning to take to the dump. Hacksawed and hammered a roof peak out of one. Pounded nail holes in the workshop. Covered nail holes on the underside with Gorilla Tape as an additional water stop. Nailed roof peak into place.

More on the Gay Marriage Ban Referendum

You go up to Appleton; you get your hair cut. You see a “No on 1” sign down on the verge. You park, you put it back up next to the “Yes on 1” sign. The grass was just mowed. You figure maybe they both got knocked over by the mower and the Yes people are just more vigilant about getting their signs back up.

You drive back to 131. You see another “No on 1” sign down at the intersection. You park, you fix it. You figure, hey, we had some rain and wind, maybe they both went down and the Yes people are just more vigilant about getting their signs back up.

You learn better as you pass the sign at the intersection of route 17, which has been spray painted. Not just marked, either: Someone had a stencil. Looks like they bugged out halfway through though; it’s just a big yellow overspray mess unless you look closely.

On the common — in your hometown — you find a “No on 1” sign down. The stakes have been pulled out of the ground. One’s been stolen. You come back with a hammer. You put the sign back up next to the “Yes on 1” sign. You’d be happy to do this for the Yes signs as well, but none of them have been vandalized.

You go down to the town office, and register to vote. This is your town too.

A Question for the “Yes on 1” Campaign

What’s to prevent individual teachers from discussing homosexual issues now?

I get it. You don’t like gay people. You don’t know any gay people. It’s not that big a deal, in real life.

The fact remains that if I like a girl I have the right to marry her, without any “seperate but equal” rejiggering. How could I, as a decent person, deny that right to someone else?

(Question 1 is a Maine ballot initiative to outlaw gay marriage.)

Building the Shack, Part 8

Walls went up today.

Clamped a strip of wood to a floor joist. Lifted the west wall into place, levelled it, and clamped it to the strip. Screwed the wall into the floor frame.

Lifted the north wall into place. Secured it to the west wall and floor. Removed strip and clamps from the west wall.

Repeat for the south wall.

Managed not to fall down the banking hauling the east wall into place. Attached it to the other walls and floor.

Roof next, if I can find the materials.

Building the Shack, Part 7

Scrounged some bricks and began trying to level the ground. Laid stakes at a desired level.

Big rock on the spot I selected. Started digging it out. Planned to get under it and tip it flat, then fill around it again.

Rock turned out to be bigger than expected. Afternoon was disappearing.

Found the “bottom” about 3 feet down.

Tried to tilt it with a plank. Wouldn’t budge. Kept digging out around it and retrying. Realized I’d only uncovered the narrow end of a long, flat boulder. Gave up and filled the hole back in.

Decided to bring the floor frame itself in and see how low it could sit on top of the boulder’s edge.

Repacked the dirt as much as possible.

Worked out the lowest point the floor could sit. Levelled the floor frame using the ledge as a fulcrum.

Set four sets of four bricks crossways to act as feet for a plank on the banking (east) side.

Levelled and packed the dirt, and laid a line of bricks under the west side.

Drove additional stakes to keep the east plank and bricks in place. Cut a second plank to fit north and south sides. Dug and set them in place.

Secured the floor to the planks with 3″ screws, toenailed in alternating directions. Partially filled the inside with dirt.