Log In  

Cart #obscurists_cave-3 | 2024-04-20 | Embed ▽ | License: CC4-BY-NC-SA

load #obscurists_cave Loading it this way does not seam to work for some reason? You can just use the png download.


As of writing this, key() does not work in the web player. You can use arrow keys and right mouse button as substitutes for WASD and space. Otherwise, I would recommend playing on your own Picotron if you can

CONTROLS - (requires mouse and keyboard)

  • WASD - left clump of buttons
  • space - left lone button
  • mouse - track ball
  • left mouse button - right lone button


This is a port of a physical game/machine called Obscurist's Cave. Obscurist's Cave was made by Lynn Mathewson over the course of 2 years from 2005-2007 as one of his many side projects. Lynn would keep the device in the basement of his house for the next 9 years. After becoming hospitalized in 2016, Lynn would have the device donated to The Media Archaeology Lab, the local computer museum. Lynn insisted that a cassette of Negative Frequencies(1) be available to listen to as visitors played the game, saying that no other piece of music could better describe his mental state during the creation of Obscurist's Cave. Lynn died a later that year, on June 22nd. The device has required repairs, but is still in working condition as of 2024.

(1) - Negative Frequencies can be found here on bandcamp

Lynn Mathewson

Lynn Mathewson was born 1953 Feb 13 in Bolder Colorado. At the age of 19 he began his studies in computer science at the Colorado School of Mines. He worked as a computer technician and repair man at the University of Colorado Boulder from 1975-2001. In 1993 Lynn bought a house with Suzanne Benson, a professor of forest ecology. In 2001 Suzanne would leave to Candida to follow her studies. Lynn said that his favorite places were the Into The Wind kite shop, and the street he grew up on as a kid.

The Device

The device is made from recycled computer parts, as well as other custom made componentry. It weighs close to 100 pounds because of two car batteries that allow the device to be played continuously, for about a week without recharge. Otherwise the device can last quite a long time without user input. While no user input is being given, the device will stop making certain calculations, putting itself into a stasis. After 30 minutes the device will completely shutdown, and can be awakened by pressing any of its buttons. After the 9 years it had been in the basement of Lynn's house, the device able to stay active for a couple minutes before it had to be recharged. The screens are custom made e-ink, helping with this low power consumption. The device does not have a power switch, and the state of the game is always being backed up. When The Media Archaeology Lab received the device, the player was in a very strange position within the game world. It took a while to figure out how to reset the game to its "starting" positions. The volunteers weren't sure if there was even a supposed starting position.


The interface and puzzles of Obscurist's Cave have been described as obscure, while still being a playable experience. As for what meaning could be drawn from the game, some have said its just a strange puzzle game, while others have sworn by the game's ability to whisk them away, putting them into an unsettling headspace.

DEV'S NOTE - Elijah Bennett

I work as a volunteer at The Media Archaeology Lab, that's how I was introduced to Obscurist's Cave. Found this game to be overly cryptic for how much "secret" it had to reveal. I'll spoiler it for those who care -> It requires that you know...

...how ASCII works, and how negative numbers are represented in integers.
Usually i find its best if the whole "puzzle" is self contained. I did however find it quite an interesting game to deconstruct and re-program to work on Picotron. I learned a lot about how 3d math is done at a low level: collision, fish-eye camera, matrix multiplication for rotations.


The fisheye rendering is done in the following steps.

  • TRANSFORM the points, offset by the camera's position and rotated by the camera's rotation.
  • NORMALIZE this new vector.
  • IGNORE THE Z component of the vector, just use x and y for screen position.
  • RENDER THE CURVES between each point in the tri

Rendering the tri is definitely the hardest part. First, lets figure out what the shape of the tri is.

Here you have the tri's main points, Red, Green, Blue creating a clockwise triangle. We can define this initial curve as such...

curve = {
  v = vec(tri[1].x, tri[1].y, tri[1].z),
  next_i = 2
  v = vec(tri[2].x, tri[2].y, tri[2].z),
  next_i = 3
  v = vec(tri[3].x, tri[3].y, tri[3].z),
  next_i = 1

The between points are what make the fish-eye effect all nice and curvy. These midpoints are made in the following steps.

  • Get the mid-point between a point and its next point.
  • Normalize this mid-point, this is what creates the curve.
  • Check if the distance (is screen space) between our first point and this normalized mid-point is smaller than a certain threshold. If it is, we move on to the next point in our chain. If not, we repeat this process.

Now I only had to deal with wire-frame. I just draw lines between the points. If we wanted to rasterize these convex shapes maybe something like this would work -> Coding Adventure: Rendering Text

thanks for reading :)

All of the stuff in the history section is of course fictional. Just some ARG fun.

P#146982 2024-04-20 14:51 ( Edited 2024-04-20 14:59)

[Please log in to post a comment]