Sunday, March 27, 2016

Escape from the Yellow Room 2 Walkthrough

I originally wrote this walkthrough for posting on Nordinho.net but I'll put a copy here as well, because Yukihiro Hozumi makes some beautiful and very hard games.
Escape from the Yellow Room 2 Walkthrough

First room
In the opening scene, there’s a blue doorknob. Above the word “Yellow” is a window to a blue room with the word “blue”. There are two screws in the O. To the right, take a landscape picture from the wall
by clicking the top left.
On the back is a clue
one might interpret as “up up down down.”
To the right again, a light switch and a yellow doorknob. To the right again, a “red” window looking onto a red room, and a red doorknob. Go to the light switch and zoom in on it. Before you click it, though, zoom in on
the 2
and take a tack.
Turn off the light and look round the room again. By the red window you now have a lamp and a table with a vase. If you turn off the tall lamp, you can turn it on again by going to the main light and turning it on then off. The table has a locked drawer. Click the top of the table and find a pattern of 4 dots that can be changed to lines. By the blue window you have a desk with a lamp, 3 shapes, and a book. The drawer in this desk is unlocked; take an eraser-like object. It has a pattern on the back
that could be interpreted as “right left right left”.
You now have the clues to go back to the table by the red window and open the drawer.
Combine the two clues from the picture and the brush.
Set the first dot to 3 o’clock, second to 9 o’clock, third to 3:30, fourth to 6:45.
Take a jar. It's not empty. At the desk by the blue window, use the jar
on the book for a grid clue.
Put the pin in the picture and hang it up over the 2. Turn off all the lights. As you do so, the
ball on the floor lamp chain will come off.
When all lights are off
you’ll see a pattern on the wall. BRR RRB BBR
Combine the grid with the book hint to get a color order.
RRBBRB
Turn on the light and use this clue on the red and blue objects in the room -
the doorknobs.
Click them in that order.
You’ll get… a doorknob. With a convenient screwdriver in it.
Use the SD on
“Yellow” and get an odd silver object. It’s got an indent with a tiny hole in it. Combine it with
the thumbtack, then combine this with
the ball.
It looks an awful lot like
a key.
Use this on the yellow doorknob and enter

The second room.
The door closes behind you... Whew, there’s a light switch. By the light switch is
a smudge on the wall.
On another wall is a shelf/bowl thingy with a yellow handle. On another wall is a clock without hands. The door you entered by has vanished. Use the eraser on
the smudge to reveal a hand.
Click where
the finger is pointing… there’s a circle, which you also click to reveal
another hand.
Click where
*that* finger is pointing --
a tiny hole. You have one object that you can use here. Use
the screwdriver/doorknob
and enter

The third room.
Did I say this game has some serious atmosphere? Straight ahead is a table with a book and a vase, which you can take. It’s also very, very dark and there doesn’t seem to be any other lights except the dim one over the table. Go back to room 2 and
turn off the light there. Some bloody fool electrician has wired Room 3 to light up when room 2 is off.
Go back to now-lit Room 3. That’s much better. Now you can take another object from the desk.
The lightbulb.
It combines, eventually, with the yellow handle, and becomes
a flashlight.
On another wall is another set of dots which behave like the dots on the table in the first room. Also, while here, click around
the cone and take a knife.
Next, 3 niches shaped like a triangle, a square, and a sphere. Next wall, more or less nothing... Look for a place to use that handy knife. You’ll find it
in the book is a mirror
Explore the desk a little more and you’ll find a place to use it,
toward the back of the desk.
Get a
green cube.
Go back to room 2 and use your
flashlight to explore. You will find a clue for the dots.
3, 6, 9:30, 3
Use that on the
dots
and get a blue triangle.
If you're trying to refer as little to this document as possible, you might feel a little stuck at this point, but there is one more thing you can do.
Close the door. Yipe!
And your knife is gone! However, you can do something else with
your flashlight.
Take it apart, then use the bulb
in the eye.
Fill your jar. Head on back to room 2 and
pour the water into the shelf/bowl
to get your last piece. Put all 3 items into the niches and everything will fade away. Except for
4 dots on the wall.
Walk on out and keep walking out. You’ll come to a white room with a nightstand with a drawer. Take the key. Use the key on the door. You’ll come to an end screen with 4 dots. But
you're not really done.
Recreate the pattern and you’ll finally be able to go to bed.

Sunday, August 30, 2015

Website rebirth, fooling around with Dart

I think I originally built it around 1998 as a way of learning HTML. It was never as awful as Cameron's World but was originally a longish page of text with links to other longish pages, somewhat focused on a wicked good Irish actor. ("Parchment" wallpaper, but mercifully, no animated gifs.) Within a few years a purchase of Macromedia Dreamweaver gave it a menu made of slices (does anyone remember those?) and a frame for content.

It stayed that way for well over a decade, getting the occasional content update, eventually dropping the Irish actor stuff and just focusing on falconry. For a while I was updating it pretty frequently with my falconry activities, but that got tedious and I doubted anyone was reading it anyway. I kept it around as an archive to the alt.sport.falconry FAQ (does anyone remember Usenet?) and an article about all these little maxims my sponsor taught me.

Around May I decided I finally had enough knowledge to redo the site with JQuery and CSS. I also had motivation: a chat room frequented by escape game fans was going through a lot of drama due to an out-of-control moderator/admin, and the owner had threatened to shut it down. I had been part of the chat room for about a year and liked the vibe -- very nice people, kind and supportive to each other in trying times. If the chatroom were shut down, it would need to continue elsewhere.

So I rebuilt the website (all simple and clean looking now) and tested out a couple different chat services. None of them really had the right mix of end-user fun, storing chat history, and security. (The crazy moderator was known for sockpuppetry and allegedly had hacking skills -- although from my perspective, I take "hacking skills" with a grain of salt when the description comes from end-users. Having been IT, I know all too well how end-users like to have one simple password for everywhere they go.) After several weeks experimenting with a few of the old chat users I'd managed to rope in (I'm grateful they stuck with me, registering and re-registering as we test-drove more chatboxes), I finally settled on a nice package called Blab!Chat. Granted, it's written in PHP, so aspects of security are suspect, but I could fiddle and tweak with it myself. It's now running happily with the core group of people from the old chat, which the owner shut down about a month after his threat and ran the crazy moderator off his site.

At about the same time I learned that Sonic, a well-respected Bay Area ISP, had finally begun to offer service in my area. I leaped on the opportunity to ditch my ATT service, with its utter lack of anything useful beyond basic Internet and landline, for slightly more bandwidth, real website hosting (as opposed to ATT's "storage" which hashed the names of uploaded files, making it impossible to build a website), server side scripting, and IP phone for $30 less.

So, suddenly and finally, I've hit the 21st century ;)

A couple days ago the bf suggested a new project -- write a Minesweeper game -- using Dart or Elm. I explored Elm but the functional programming paradigm is a little too foreign for moment. Dart is a mix of Java and Javascript with some nice DOM-element functions -- recognizable and comfortable -- indeed, using true Dart functions in a Dart program seems entirely optional. I bashed this out in about four days, needing only general structural questions to the bf. Right now we're doing code review with the goal of making it more Dart-like.

Friday, May 8, 2015

Google Maps kml files are now zipped kmz files

Apparently I'm bad at keeping up to date when APIs are changed. I looked at TacoTacoTruck recently and it failed to load any map data. It seems that instead of giving a plaintext kml file as it used to, Google Maps returns the file in zip format (kmz), even if you ask for a kml file.

So it needs to be unzipped. Here's some code:

class Fetch(webapp2.RequestHandler):
    def get(self):
        # urlToUse is just a little hardcoded map of a filename as key and the url as the value
        url = urlToUse[self.request.path]
        if url is None:
            print("unexpected path: %s" % self.request.path)
            return
        cachedData = memcache.get(self.request.path)
        if cachedData is not None:
            self.response.write(cachedData)
            return
        startDownloadTime = time.time()
        result = urlfetch.fetch(url)
        if result.status_code == 200:
            elapsed = time.time() - startDownloadTime
            print("downloaded %s in %s seconds" % (url, elapsed))
            bytes = io.BytesIO(result.content)
            zip = zipfile.ZipFile(bytes)
            # retrieve the file name of the first (and only) file in the zipfile
            firstName = zip.namelist()[0]
            print("unzipping %s" % firstName)
            # unzip it into contents
            contents = zip.read(firstName)
            memcache.set(key=self.request.path, value=contents, time=cacheTime)
            self.response.write(contents)
        else:
            print("can't fetch kml file for %s. Status=%s" % (self.request.path, result.status_code))
            self.response.write('')

Friday, May 1, 2015

Donors, thank you!

In the past two months I've received several in-app purchase donations for my Napkin paint program. Thank you, kind people!

Small but useful updates to MapTag

Due to the increasing number of user-generated panorama shots being uploaded to Google, it's been harder to find a game where you can actually navigate. I was playing today and got 4 user panoramas in a row! So I added a check to look for "Google" in the copyright info. This should nearly eliminate getting a user-generated pano.

Another minor annoyance came after you got the score window. You could click it and it would close, but the map where you made your guess didn't close along with it. Now it does.

Finally, I've added a new themed game called "New to the City." It places you in a random location but within a specific city. There's currently 24 cities to choose from, so go get lost!

Happy wandering!

Tuesday, July 8, 2014

Taco trucks

About a month ago I was browsing Reddit's SF Bay Area sub, and noticed a link to maps of taco trucks in the East Bay. Taco trucks take me back to my early days in Silly and my first job (in Mountain View), and a cow-orker who introduced me to the joys of a lengua taco dripping onto a paper plate. The redditor who made the map seemed interested in a web version, so I built TacoTacoTruck. However, he has yet to follow up on whether he liked it, hated it, or just didn't have time to deal. So although the map itself is not my own work, the web version is mine and could be fed any user-made Google map.

Thursday, July 3, 2014

Finally published Napkin Ideas on Play.

Well, finally.

This was actually done months ago, but I thought it would be really nice to have an ability to edit the background. So I started creating a wizard to do that, and for whatever reason, I just could not get it working the way I wanted, and got kind of depressed about that. So I dropped that bit out of the code and decided to publish as it was before.

Well, almost as it was before, with one notable exception: I took out the advertising. It's annoying to look at, and probably not going to generate any significant amount of revenue. In its place, I have put in what I'm calling a beg bar: give me a donation, the little yellow bar goes away.