stevejohnson

LD19

Lizard Wizard

Morp, a young apprentice to the aging Lizard Wizard Edrick, was woken in his sleep by his master. MORP: Nnng? Wh? EDRICK: Come, Morp. It is time for your trials. MORP: Trials? What trials? EDRICK: You are nearly ready to becom a Lizard Wizard. Now you must go on the Apprentice’s Surprise Quest. MORP: Why is it a surprise? EDRICK: Because I just love surprises! EDRICK: For other people. EDRICK: You will go into the Perlin Caves in search of enlightenment in three forms: EDRICK: Mastery of the Feet EDRICK: Mastery of the Tail EDRICK: and Mastery of the Tongue. EDRICK: You will find an artifact for each form of enlightenment. Bring them back. EDRICK: Did you get all that? MORP: I think so. To the caves!

And so it begins.

#gallery-1 { margin: auto; } #gallery-1 .gallery-item { float: left; margin-top: 10px; text-align: center; width: 33%; } #gallery-1 img { border: 2px solid #cfcfcf; } #gallery-1 .gallery-caption { margin-left: 0; } /* see gallery_shortcode() in wp-includes/media.php */ Title screen Title screen Action shot Action shot

Lizard Wizard: Why It Is What It Is

My LD19 game ended up being about a lizard who runs around in caves swallowing flies which represent pieces of Wikipedia articles. WHAT THE HECK

My first blog post contains a vague concept of what I originally wanted this game to be about: seeking skill and knowledge in a cave system, as a lizard. You were going to be able to whip people with your tail. It was going to be awesome.

But I started thinking about the theme more, and I couldn’t make my mechanics fit. So I mentioned the idea of finding pieces of Wikipedia articles on the Mumble (group voice chat) and a couple of people responded positively. I had already implemented the lizard movement and cave generator, so I rearranged my plotwise justifications and started figuring out how to scrape Wikipedia for random article titles and text.

A word to the wise: scraping data from a user-edited site with its own special markup is pretty damn annoying. Lizard Wizard does an…okay job, but it took far too much time to do.

LD26

The day is saved?

I came up witha reasonable idea. It’s already multiplayer. I’m not using canvas at all, just minimally (heh) styled <div> tags.

Screenshot time!

2g

 

You can knock out new rooms in the world by bumping against a wall ten times. Other users’ bumps count.

Features???

Look carefully.

2j

Basic feature set is done!

You can play it here: http://steveasleep.com/we_dreamers

Basic mechanics are:

  • Press Space to get some color.
  • Press r, g, and b (or 1, 2, and 3) to release color to get the hue you want.
  • Bump into walls to make new rooms with your circle’s current color.
  • If you make enough rooms, you get the ability to write notes on your rooms.
  • If you write enough notes, you get the ability to put down single letters on any room.
  • The world is shared among all users and updated for everyone in real time.

All I want to do now is add strange audio effects, maybe some zen koans to find, and polish up the UI.

Final screenshot of the day, what you get when you zoom out with your browser:

2k

Help text

Here’s what’s up.

This is an abstract multiplayer art piece. Things you can do:

  1. Move with the arrow keys or WASD.
  2. Harvest color with space.
  3. Dig out new rooms by bumping into walls. You need color to do this. The new room will be the color of your dot, which is affected by the color in your bucket.
  4. Leave notes on rooms (if you are level 2).
  5. Put down big block letters (if you are level 3).

Watch the sidebar for how to level up.

Enjoy yourself…and be at peace.

How It Do What It Do

We Dreamers is a [potentially] massively multiplayer online…thingy. It’s under 1,100 lines of Coffeescript and runs entirely on static files and Firebase. And for the purposes of LD26, it’s done!

Secret weapons:

  • Bacon.js: Functional Reactive Programming in JS/Coffeescript)
  • Firebase: A magic event-driven data structure in the sky that live updates across all clients in real time
  • Good old-fashioned HTML and CSS know-how (all graphics are pure HTML and CSS, not a <canvas> element to be seen)

Other stuff:

I’ll write up further thoughts when I’m less burned out. It’s been a successful but draining couple of days.

Entry page

Play the game

Field notes. Captain’s log. Scrawling on a wall. Tales of woe.

My  LD26 entry, We Dreamers, is a collaborative minimalist art piece. Aside from a small start, all of the content was created by players. I thought it would be fun to extract all of the notes and collect a few here to give you a taste of what people have been doing in the abstract space that is the “game world.”

5b

I should mention that each one of these notes was left in a specific context. They were surrounded in 2D space by colored rooms and other notes. I callously dumped out all the text without the position information. To compensate, I’ll try to respect the wishes of the original authors, and not give away too much.

People Who Mark Territory

hey look in the next room!! 😀

IGNORE THIS PATH, MISCREANT.

LEAVE THIS PLACE, IT WAS NOT MEANT FOR ONE AS FRAGILE AS YOU

this Is my humble abode welcome

don’t go into the next room

PLEASE ENTER MAZE FROM OTHER END

~ Society for Protection of Mazes and Puzzles

People Who Think Deep Thoughts

Solitude. I sit here in a populated room, but I am alone in my thoughts, as they are in theirs. I am now more comforted by the text on my monitor than the activity around me. I itch the back of my neck.

“My legs hurt, my color is fading… but I’ll follow you to the end of all colors if I must!”

What are those 3 ancient sculptures ? Surely an ancient civilization wrote those long before us. I’m sure it’s some kind of message for some supreme being watching us from another dimension.

My note, an abstract scribble of ink on a worthless slip of paper, taken from the wall and discarded, is now an inextricable part of someone’s mind.

And here it was. A brand new color illuminated the adventurers, and they realized that the world was bigger than they thought. They wanted to bring the new color back with them. But instead, they left it there. Someone, one day, will come here with his own color and dig into this new world even further, and illuminate the world.

People Who Tell Stories

HEED YOU NOT OUR WARNINGS?

Traveler’s note, page 496: I lost my pickaxe in the tunnel below. I must go deeper. I wonder what horrors and wonders await me down there; I may never come back alive.
Chonodrax

Once Upon a time, there was a foolish man.

(You’ll have to play the game to read the rest of that one! It’s a proper short story.)

People With Different Ideas Altogether

My name is Inigo Montoya, you killed my father… Prepare to die!

Easy West-African-ish stew (from friends who were in the Peace Corps): heat up peanut butter, water, tomato paste, and chili powder to make a sauce. Serve on roasted sweet potatoes or winter squash.

—,===,”<   crocodile

Never go full Zen.

Oh God oh God this whole game’s a trick don’t get to level 4 DON’T DO IT

To everyone who’s left an interesting note,

Thank you! I am delighted, as I’m sure other players are, by the random bits of humor and thoughtfulness scattered around We Dreamers.

LD27

LD 38

clubsandwich, a BearLibTerminal framework for Python 3

(Cross-posted from Reddit)

In preparation for Ludum Dare 38, I spent this weekend writing a bunch of utilities for BearLibTerminal that will make your life MUCH easier! (If you’re a Python 3 developer, that is.) It’s a Cocos2D-iOS UIKit mashup, for ASCII.

Check it out here

API docs (in progress)

screenshot1

screenshot2

Features:

  • Event loop
  • Scene manager
  • Geometry data structures
  • Convenience functions
  • UIKit-like interface framework
  • Script runner to help you iterate quickly

I’m still working on nice documentation, but the Readme should give you a general idea and start a discussion. I love writing docs, so I can safely promise that there will be some good ones very soon.

Motivation

LD38 is next weekend, and I’m thinking about doing a roguelike. BearLibTerminal has gotten a lot better for OS X lately, so I started playing around and decided to stick with it.

The first thing I did was write an asynchronous event loop and scene manager, Cocos2D-style, to make it easy to transition between game screens. It was simple, and you could probably do it yourself in fifteen minutes, but at least I’ve saved you some typing.

CataclysmDDA has given me high standards for roguelike UIs. I knew I’d never be able to make both a nice game and a nice UI in 48 hours. But I’m a champ at iOS development, and decided to try implementing the important parts of UIKit from scratch, in Python, for ASCII. And it worked! It will take a while for me to explain the concepts, but I’m confident people will be able to wrap their heads around them.

While writing all this, I added some geometry data structures and utility functions for BearLibTerminal. Stuff like a transform stack for drawing, convenient state access for Python, and a little script to help you iterate quickly by continuously relaunching your program.

If you post a mockup UI, I will write a demo in clubsandwich! I tried to make the UI framework as general as possible, but really only played with a couple of layouts. If you want me to prove the utility a bit, you could help me out by posting an ASCII or MS Paint mockup of what you want your UI to look like, and I’ll see if I can build it quickly in clubsandwich.

In for a roguelike

I’ll be coding like a fiend this weekend on a roguelike! I’m going to use it as a practice run for another roguelike idea I have in mind, and as an excuse to work on my roguelike library, Club Sandwich.

Tools: