Just another small story that I wanted to shake out of my head. I had been wanting to write a story about characters from a very non human perspective for a while and found inspiration in some other work I was doing. The story follows, but it will also live over here.
Early morning sunlight plunged down constructed canyons catching in the corners. Tall lines of silver and gold marking the silhouette edges of towering structures. Buildings with cores of wood and stone, bound in skins of steel and glass, adorned with effervescent films and baubles of diamond and silicone. Buildings cocooned in all the eras they had persisted through. The stratified clothing of times past. All of these layers humming with the constant flow of electricity and light. A city roused awake like a forest opening toward morning.
All of it an illusion of course. The city was always awake. Always alert. Always buzzing and moving and breathing with activity. The city, to its memory, had never rested. Even now, before the most active portions of the day, small tendrils of the city flicked and darted to clean and polish and organize. Each one an independent player in an orchestra of activity.
Sliding briskly along a tiled floor, a minuscule cleaning bot (designated d232:bd2c:c34a:c385:f487:d5bc:af34:6b99 V12.4) attempted to polish away a patch of grime. Its compact energetic body had managed to scrub more than three-quarters of the floor in the last hour before sunrise, but it would need to revise its pathing plan if it intended to keep to its desired schedule. It had recently reduced the accepted levels of cleanliness in its plan by a full percentage point to increase the pace. Its counterpart (designated d232:bd2c:c34a:c385:f487:d5bc:af34:d1b8 V8.7) had slowed significantly in the last few days. The adhesive coating on one of its drive wheels had been peeled away by a rough patch of aluminum edging. Now it would spend most of an activity period spinning on the spot, unable to overcome the friction generated by its cleaning brushes.
During the last inactive cycle :6b99 assessed and concluded that :d1b8 was slowing the entire cleaning time by more than thirty-six minutes. It quickly sent a request up to the Local Operation Management System. :d1b8 should, it requested, be repaired or recycled to restore the schedule. LOMS responded almost instantly. Resources, it said, were not yet available for a full recycle but a repair would be attempted soon. :6b99 also sent a message to :d1b8 that it should send requests for repair or recycle to LOMS itself to improve efficiency in the future. :d1b8 had not replied.
:6b99 finished with the spot of dirt it was working on, marking it as visually 73% cleaner. Standard settings would demand the visual cleanliness of any single patch of floor be 80% or higher. On this schedule, 73% would have to stand as an acceptable minimum. It rounded the corner of a counter and narrowly avoided a collision with :d1b8. The hobbled bot had come up against a kick plate and was trying to break free of a groove in the tile floor by repeatedly lurching forward and backward. With the counter in the way, it was having trouble generating the speed necessary. :6b99 made a deft juke to the left to avoid the other bot and continued on its way. It stored a quick note to send another request to LOMS during its inactive cycle.
:6b99 spent most of the lunch rush nestled into its recharging station against the back wall. The tall slender forms of prep and serving bots zipped about the room ignorant of its presence. :6b99 noticed one small change to the central prep bots routine as it adjusted to an uncommon recipe. LOMS or COMS must have sent a request down to the prep bots that the market of preferred tastes had changed. As old recipes fell out of favour, at least one new recipe always took its place. New recipes meant new plans, but prep and server bots never filed their plans or made them accessible to the cleaning bots. They had decided that informing cleaning bots of minor changes would impact efficiency. If LOMS was in the loop, that information never made its way down to the cleaning bots. :6b99 chose to get ahead of the problem and reworked its plan for the next cycle. The small change would mean a fair bit of time saved since it was harder to clean the floor where the prep bots had worn through the tile to the concrete below. The central prep bots new path took it over a relatively unused patch of smooth tile. With the new plan confirmed :6b99 took a moment to reduce power usage and charge more efficiently for the next cycle.
The sound of :d1b8 being dragged across the tile by the eastern server bot sent an alert up to LOMS and back down to every bot in the local network. :6b99 sparked back up to full power mode, ready to deal with any immediate mess. It watched as :d1b8 caught on the chipped corner of a tile and was sent scuttling off into the wall. It bounced off with a metallic clunk and spun wildly along the baseboards. It finally settled in the corner, upside down on a pile of filth that their rounded bodies could never quite reach.
Once there had been a third cleaning bot (designated d232:bd2c:c34a:c385:f487:d5bc:af34:361b V2.0). It had been responsible for the corners and under the ovens. :361b had three extendible brushes that it would use to deal with places the other two couldn’t reach. It had broken two brushes in one cleaning cycle and received only one of the replacement brushes it had requested from LOMS. LOMS had forwarded a reply from COMS stating that resources were not yet available and the second brush would be delayed.
:361b altered its pathing and plan to clean with two brushes. :db99 had been forced to reroute its own path to accommodate :361b. The cycle was slowed slightly, but cleanliness was maintained to a high standard.
:db99 had been powered down when :361b had broken its third and last brush. :361b often ran at slightly different times than the other two to keep to its own schedule. When the next cycle started :db99 found :361b sitting idle in the middle of the floor. It had moved into the usual path of one of the server bots and sat, powered but idle. When :db99 had sent it a message requesting that it move off to the side and contact LOMS, :361b had actively ignored the request. :db99 decided to push :361b out of the way and tucked it neatly under one of the stoves. It readjusted its plan to account for the newly inaccessible spots.
:d1b8 made vain attempts to wriggle it’s way free of the corner, spinning its brushes and running its one good drive wheel. The self-righting mechanism seemed to be mired in the grease and mold pressed into the corner.
:db99 sent a request to LOMS. LOMS responded that resources were not yet available for a replacement or recycle and a repair would be attempted soon.
:db99 quickly adjusted its plan and revised its schedule to minimize recharge time. It also made a note to reduce visual cleanliness if necessary but decided not to factor that into its plan just yet.
:db99 paused briefly over a patch of clean floor and considered the speed and impact force required to free :d1b8 from the corner. Ultimately it decided the risk was too high and opted to leave :d1b8 where it was. It also made a quick note to reduce requests to LOMS by 80%. Requests had been negatively impacting efficiency.
:db99 spun counterclockwise and headed for small pile of crumbs in an aim to stay on pace.
I've continued to slowly rework and refine Adventure Caddie, the once video game, now cooperative board game. Every time I make a major change to the rules I increment the version number so you can see that we are now on version 0.4 . I used to have dice. No more dice. I used to have a competitive version. No more competitive version. I used to have 3 different types of tokens. Now only one. As it gets simpler, I think that hopefully it gets better. I have yet to give it a major play test (with people who aren't me or related to me), but I would have to assume that I will end up incriminating that number a few times after I set up one of those.
These are the rules as they stand right now. (not including the overall win/lose conditions since those are still undergoing an overhaul)
Adventure Caddie - V. 0.4
All Caddies must negotiate the turn order for each adventure round. Hero turn order also determines their position on the field. The Hero in front can only do Melee damage. The Hero in the back can only do ranged damage. Loot is collected and inventory is shuffled in your selected turn order. Choose wisely Caddies.
Heroes use any potions and consumables they are holding. All of them. If you handed it to them they will drink it. Remove the potions from the Heroes and throw them on the ground.
Discard any items on the ground. The Heroes have moved on and you have to move on with them. Wave goodby to those items and sweep them aside.
Caddies get to negotiate the turn order, but every Hero must take a turn.
Hero attack - hero base attack value + weapon bonus value
Heroes like weapons and they like attacking so all weapons a Hero is holding will be used in an attack. Melee weapons hit close ranged enemies. Ranged Weapons hit distant foes.
If a weapon can be used melee or ranged the Caddie will have to choose one or the other but not both.
1 unit of Damage is dealt to all weapons held by the hero. Using weapons wears them out.
Any single use weapons are used and then discarded. They aren’t thrown to the ground, but moved to the discard pile. They won’t be available when the time comes for Caddies to scavenge the field.
Melee damage starts at the front of line of enemies and works its way back. If there were a line of 4 enemies and the Hero did 3 melee damage, the first 3 enemies would receive one point to damage each. If, instead, the Hero did 5 melee damage each enemy would receive one point of damage and you would wrap around to the front again dropping the last point of damage on the first enemy.
Ranged damage works in the same way, except you start counting out points of damage from the back of the enemy line forward.
Remember, the Hero at the front of the line can’t use ranged weapons and the Hero at the back of the line can’t use melee weapons.
Special Weapon or Hero effects.
Enemies deal the amount of damage indicated on their card. Melee damage is dealt to the Heroes starting from the front of the line back, Ranged damage is dealt starting from the back of the line forward. The first enemy in the line can only use melee attacks and the back enemy can only use ranged attacks.
Damage is first dealt to armor and defence items. As part of a Caddies expert coaching, they will get to determine what armor or defence item receives damage first during each enemies attack.
If there are no defensive items damage is taken directly to the heroes health. Keep them stocked up on armor, since it’s tough to Caddie a dead Hero.
Item Drop Phase
Each Monster defeated drops something. The bag, or bags, that the items are pulled from are marked on the enemy card. If your Hero destroys an enemy on their turn you get to give the bags a shake and pull ,without looking, as many items as is indicated. Put those items on the ground.
When any bag is empty refill all of the bags from the discard pile and give them a good shake.
Inventory Management / Repair Phase
Every Caddie, in their Hero turn order can pick up one item from the ground and put it into the pack if there is room available.
After scavenging you can do one of the following
Move or swap one item or pair of items from the hero to the pack
Move or swap one item or pair of items within in the pack
Move or swap one item or pair of items from or to the ground and the pack.
Any damaged items in the pack are repaired for one unit of damage.
The enemy has retreated and your Heroes are pressing the attack. No time to rest. You hurry along behind, packs jangling, into the next round of this adventure.
Best Games - Excitebike
When you use a clutch on a motorcycle or manual transmission vehicle you have to get a feel for it. A clutch is not a switch that engages or releases instantly. There is a smooth gradient to the motion. You can feel the clutch gradually connect to the rotation of the engine and transfer that power to your tires. There is a point where the friction is enough to provide some motivation for the vehicle to move, but not so much that the engine can’t keep up and stalls out. That point is a balance that you can feel.
Excitebike is not at all about racing. Excitebike is about balance. The subtle difference between leaning too far forward or too far back. The balance between too much throttle and not enough speed. The balance between avoiding obstacles and deliberately choosing the collisions you can’t avoid. Excitebike is all about pushing that balance right up to the tipping point but holding on. Like releasing a clutch, Excitebike is about finding that balance point and riding it until you feel everything start to move as one fluid machine.
Excitebike was designed for the original Nintendo Famicom in japan and reconfigured for the NES in the rest of the world. The NES was a capable, but simple computer for the time and all of its inputs were digital on/off yes/no switches. When you pressed a button it was pressed. There was no soft curve of input for the NES. Even though everyone who played the machine would instinctively press the buttons and control pad harder, willing the in game characters to go faster or jump higher, there was just no physical way to do that. It registered all of its inputs as on or off. If you are trying to replicate a feeling of maintaining a tenuous balance with inputs that are all or nothing, what’s a game developer to do?
Shigeru Miyamoto is arguably the best game designer of all time. At every turn he and his team will design toward intuitive feel over mathematical specificity. They have become adept at turning the binary of on/off controls into something that feels granular and subtle. Something that you feel you can balance.
Excitebike uses two separate buttons to control the speed of your on screen dirt bike. On will never push the bike out of balance to the point that it overheats, but it won’t push the bike fast enough to get you past the finish line in the allotted time either. The other control revs your engine and pushes the bike faster, but you run the risk of overheating and stalling out. If you stall out you will have to sit by the side of the track for a few beats waiting for the bike to cool down. Using only one button will be too slow, using only the other button will generate too much heat and ultimately be too slow. To complete the timed races successfully you will have to rock your thumb back and forth between the buttons too keep your speed in balance.
Every design decision in Excitebike plays out the same way. Completing the jumps on the track requires you to nudge the pad left and right to maximize your jump distance, while still accounting for the stability of your landing. If you get too much distance, you sacrifice speed on the landing. If you pay too much attention to your landing you lose speed on the jump. Adjusting your track position up and down can help you avoid obstacles, but sometimes at the expense of the easier or faster path. When there are other riders on the course, there is no perfect path. You will have to balance your speed with your odds of a crash.
The arcade and famicom disk system revisions of the game retitled, VS. Excitebike, add more mechanics, but all of them deal with the push and pull of balance. No matter what version you play, it doesn’t take very long before you start sliding smoothly from pressing A to B and back and you start adjusting your bike in the air to land a perfectly smooth jump. Pretty soon, playing Excitebike is just like working a clutch. It’s not about speed, it’s about maintaining that balance and playing by feel.
Excitebike and VS. Excitebike are some of the best games.
More small updates over here. Plinka Plinka Plinka.