Grotto menu: ☜ Back to Index
Grotto

Grotto

Enter Grotto Test Server ⇨

About Grotto

Grotto is an experimental, multiplayer, persistent, web-based game framework, developed by Wiley Wiggins and Paul Stiverson.

Thanks to

Ariel Uzal, Andy Reitano, Prof. Chandler McWilliams, Prof. Jenna Caravello, Prof. Allison Parrish, Prof. Danny Snelson, Prof. Eddo Stern, Prof Erkki Huhtamo, Dr. Robbie Fordyce, Diana Thayer, Chris Cuellar, Tristan Espinoza

Repositories:

Documents:

Diagrams:

grotto


Videos:

Piranesi's Carceri
The Ossuary
installation video
Grotto
Grotto
Dušičky

Posts:

You know something I don't know

You know something I don’t know

More ➜

Jarret Drake - Graveyards of Exclusion: Archives, Prisons, and the Bounds of Belonging

Jarret Drake delivers the keynote address at the 44th annual Scholar and Feminist Conference, “The Politics and Ethics of the Archive.” Drawing connections between his work as an archivist to his work in prisions, Drake’s keynote, “Graveyards of Exclusion: Archives, Prisons, and the Bounds of Belong […]

More ➜

console

a tilesketch of some kind of slab with flames

More ➜

studio notes 10-16-2023

While it’s not as attractive or ‘in-world’ as a mazelike tilemap representation would be, I’ve made an auto minimap for grotto using D3. D3 is a library to procedurally draw SVG in a browser, and it’s commonly used for interactive data visualizations. I used it here because it has the ability to create force directed node maps. This means nodes are repelled from one another in a game-physics like simulation, so rather than needing to figure out how to place them on the screen, they simply spread out to positions where they no longer overlap. Here’s what it looks like in a room with a lot of sibling nodes: node map showing a spiderweb cluster of colorful squares connected by lines node map with tooltip

More ➜

studio notes 9-24-23

input and output of wave function collapse

More ➜

studio notes 7-10-23

isBurning I added fire and death to the little rot.js roguelike game I am tinkering with. This is separate from Grotto but uses the same visual language. It’s a difficult proposition to try to integrate this with Grotto, as this is turn based and Grotto is a multiplayer database driven thing with no understanding of items or characters positions in a room. This feels like a new game so far and not an extension of grotto, although there could be some interactions between the two using Grotto’s API. What should it be? It could either be a totally new dungeon game or I could try doing some sort of zero player ant-hill arcology thing to go with Archon as I had originally imagined. Hmm.

More ➜

Studio Notes 7-5-23

Two work notes- I was able to use the Grotto API to make a bot player, hosted on Glitch, that has simple logic that has the player check the cleanliness level of the room it’s in once and hour, if it’s dirty it uses a scrub brush item, if it’s clean, it moves through an adjacent unlocked door. 2d game map with shadows I also had some moderate success using my tileset to build a small dungeon map using the roguelike javascript library rot.js. using a rat’s nest of conditional logic, it does sort-of-cellular-automata-style matching rules to draw walls and shadows around a floor map, in the style of Grotto rooms.

More ➜

studio notes 7-1-23

I have graduated and I am back in Austin. All of my stuff is still in a u-haul box on a long drive here from Los Angeles.

More ➜

cnidario/ca-pixi

Implementación de autómata celular sencillo en Javascript. La renderización es llevada a través de PixiJS. Se ha propuesto su utilización en generación procedural de cuevas en 2 dimensiones. […]

More ➜

cellauto.js

In the above example, a cell that has 2 living cells surrounding it will survive. If 3 living cells surround surround the cell, it can come back from the dead. This function is called every step of the simulation and is passed an array of neighbors to this cell. […]

More ➜

studio notes 6-1-23

Critique Reflection

More ➜

studio notes 5-20-23

Things I’d like to do if I get more time

More ➜

studio notes 5-19-23

Last night was the opening of the UCLA DMA Thesis show, which held the Grotto-connected installation I’ve been working on this quarter.

More ➜

studio notes 5-17-23

Grotto is now at v1.01. The last push included a text-entry interaction that can be used for writing notes with a letter item and for updating a character greeting. Letter item and Potion item both are now functional, although Potions aren’t particularly useful yet.

More ➜

studio_notes_5-3-23

updates, just 15 days until the show-

More ➜

studio notes 5-1-23

behind on grotto main game schedule, but making progress on installation stuff. doorknob controller guts

More ➜

Kinbank

Kinbank is a database of kinship terminologies ranging from grandparents to grandchildren, parent’s siblings and their children. You will find terminologies for 1229 languages, ranging from Aché to Zulu. […] Link

More ➜

studio notes 4-17-23

book sample The scripts that generate book content from Grotto are done, the output requires a little bit of tweaking after they run, the pdf output looks good and I’ll try printing soon. This is going to be an expensive print job, as the book is over 1000 pages, 500ish 2-sided. I intend to print signatures and stitch it coptic, including whatever thesis writing is done.

More ➜

studio notes 4-10-23

Having all sorts of long-term ideas go out the window. Up until now I’ve been using a solenoid lock to stop a ratchet wheel in one direction and another ratchet wheel and arm to keep the assembly only turning in one direction. I had a limit switch that would flip on a turn.

More ➜

studio notes 4-7-23

Flailing. A few issues made me abandon my idea for a doorknob controller plinth in which the doorknob portion revolves to select a “door”, reorienting the player- first the reintroduction of a projection screen into the space, which would make variable player orientation weird, and 3 or four mistakes in laying out an mdf laser cut that made the complicated revolving encoder/slipring assembly off center or needing hand drilled holes over and over, resulting in a lot of wasted time. The alternative (keeping the doorknob controller) is an additional spinner knob control on the top of the plinth. I don’t love it. The idea here is there’s a projection of a circular array of the doors in the room, with the color of the room and doors, a spinner revolves them, the doorknob tests them to go through.

More ➜

Feelies as metaphor and method

In the early days of computer gaming, developers and publishers used various creative physical copy protection systems to prevent unauthorized copying and distribution of their games. These methods usually required the user to possess a specific physical item (“Feelie”) that came with the game in order to play it. Some notable examples include:

More ➜

Studio-notes 3-11-23

Big leap forward today- passing through a door in grotto gives it a color marking of its connecting room, letting you know what path you’ve taken. The maze is still disorienting, there are no cardinal directions in the map view, but you leave a breadcrumb trail as you traverse it.

More ➜

studio notes 2-27-23

Some small updates to Grotto- keys are no longer single-use, but rather have a chance to break on use, like shields and brushes. Shield bashing- you can attempt to shield bash locked doors now, but this has affected regular character shield bashing and will need to be revisited. Added incense animation.

More ➜

studio notes 2-16-23

Some changes to Grotto from Saturday that I’m just now documenting here- Added the body parts UI area and changed the item interaction pattern- body part items can be equipped, all items in either section have a ‘x’ button that will drop them in the current room.

More ➜

Grotto 0.10.0 - Grottopaint

First big push to the staging server in 2023- 0.10.0 includes the first iteration of a graphics window for room maps and animations, using a combo of pixi.js, svelte-pixi, Tiled.app, and a new tiled-compatible version of what was previously called scratchbeam, that I am now calling grotto-paint.

More ➜

grids, time

Thinking some half-baked thoughts today about the grid that I’m painting on in Archon, Descartes, dualistic thought as a root of thinking of humans and nature as separate, mapping and counter-mapping, the peculiarities of the perspective of Dwarf Fortress (top down orthographic, moving down in altitude through slices of the earth but still bounded by fog of war based on what the dwarves have discovered.) How Archon let me fudge the perspective and grid in a way I couldn’t have if it was a functioning game (sometimes I show the tops of structures instead of a single layer slice, in one frame I completely explode the grid into a mess). Thinking about single player games that sit in wait for the player to be a catalyst to move npc’s into motion, something that dungeons seem to do– wait for the adventurer. How that feeds into the idea of that separation, with humans on top as primary actors. With a brain on top acting on a body. How I placed myself in the dungeon not as the adventurer, but as one of the monsters sitting in wait, playing a different game of care for a shrine. How much is Dwarf Fortress actively simulating in the deep areas still shrouded by fog of war? Thinking about the wide time simulation that happens at world gen and between fortresses, and the step by step time that happens during play.

More ➜

Grotto Tasks

Going to try to get back to logging Grotto work. Right now I am working on stuff every Saturday up until the DMA thesis show next spring. Recently we gave npc’s a flag to ‘illuminate’ if they’re carrying a candle drop, I added some icon bullets for doors to show state, and on saturday we added locked doors to stairwells and added keys. Over the last few weeks we’ve done a lot of tweaking to the auto poetry for room descriptions and I cleaned and cultivated a few new text corpuses to generate room descriptions at different depths of the dungeon. These still need to be tweaked, and I’d like to get a better handle on how the markovify functions have moved around since my original ones in order to keep making little adjustments.

More ➜

end of summer

It’s been a busy summer. Over the last couple of months I’ve written two articles, animated a music video, printed a little art book, built a big wooden projector enclosure and done a lot of work on grotto with my friend Paul (oh, and I made a barely playable twine game based on a dream I had about a horror text adventure version of Dig Dug). Right now I’m taking some of the visual work that’s going towards a future graphical version of grotto and working it into something for a fall group show at UCLA. Hopefully the two articles I wrote get published as one of them supports this work for the fall show.

More ➜

senses

In addition to communication within a player class, I’ve also been thinking about playing with the current darkness mechanic to allow for different perception for different classes.

More ➜

the dungeon, the frontier, the arcology

My thesis project is about historical and future imaginaries, played out in a game substrate (a web-based game environment I call Grotto.)

More ➜

language communities

I’ve been looking for a while for mechanical ways to represent “imagined communities” (Anderson), and especially linguistic communities. Grotto is starting from very abstract and sometimes arbitrary formal bits- random character classes (robot, animal etc) with meaninglessly arbitrary skills that don’t have an immediately obvious mechanical use.

More ➜

minimap

I really enjoy the way stuff looks when I draw it with the tile painting program we made, but to actually include it seems like it would be so complicated. Using something pre-made like d3 seems much easier, but visually boring.

More ➜

mapping

Grotto has some somewhat unique challenges to its success as an actual game because it uses an atomic maze structure where exits are blind guesses about what is inside adjoining rooms. This mode is inherited from interactive fiction, Hunt the Wumpus, MUDS, etc– games that either had puzzles within the rooms themselves, or relied on constructing a mental model of the maze based on guesses (each one potentially fatal, in the case of Wumpus). I’ve had critiques about whether the game is intelligible and whether there is any player enticement to play. I’ve kind of sidestepped these critiques by saying that the real game mechanics haven’t been implemented yet, and that they would be the sugar that activates the content I am spreading through the maze in room and item descriptions. This suggests that I have some kind of plan for game mechanics though, and all my game design ideas gravitate towards roguelike mechanics, which may not be a good fit here. A roguelike structure where a visual map is slowly completed by exploring would probably require a substantial amount of retooling.

More ➜

Grotto 0.8.0

[Unreleased]

More ➜

class item ideas

  • robot item: (servo? actuator? battery?) action? (work? compute?)

More ➜

items, eyes, maps

Today was a first planning meeting to resume development on Grotto, and start the big project– the one I’m now calling Phantom Homeland (I got a good laugh out of calling it Dusičky for a little while, but come on).

More ➜
/grotto/wumpus.png

wumpus

More ➜
/grotto/glyphs2.png

glyphs2

More ➜
/grotto/glyphs.png

glyphs

Last night I was thinking about how to evolve the gui for grotto. Specifically- taking the older text view and fusing some elements from the joystick-gui view into it. I’d like to add a div with a top down map view of the room you are in with glyphs signifying items and doors. I added some new tiles to my drawing tool and started playing with the most minimal way to represent objects. when I stopped trying hard to represent things and abstracted all the way down to two-tile glyphs, I immediately unlocked a memory- another atari game (eyeroll emoji). The creatures from imagic’s Cosmic Arc

More ➜

post crit roadmap session

Post mud room show spitball session

More ➜

UCLA Show notes

Last night was the first public viewing of Mud Room. As of this morning I’ve fixed a number of bugs I identified in the first show. There’s a remaining problem where the kneeling pad errors out when the pad is set to keyboard press/release but works with keyboard write, which is a little problematic since people kneeling for over 10 seconds trigger multiple kneels. I’ll likely need to fix this after the show is over.

More ➜

1-22-22

A lot of development work and not a lot of reflection or documentation. I’ll take a moment here.

More ➜

Grotto 1-8-22

Grotto: Pair programming session on the Grotto codebase today.

More ➜

grotto api

Good day of work with @thismatters today, we installed the django-rest-framework which enabled api pages for rooms. This will enable abstracting the grotto data out into new UI’s. I had hoped to get the new html/css/vanilla js UI I started working on in time for Monday’s review, but it seems unlikely.

More ➜

Grotto 0.3alpha notes

Another pair session with @thismatters today, working on items and room attributes for Grotto/Mud Room.

More ➜

grotto and mudroom items

Grotto itemBuilder branch commit 519f103750178349cbf9d2e646e61744088f138c

More ➜

Grotto 0.1 alpha

An instance of Grotto is now up at grotto.wileywiggins.com

More ➜

grotto 2-9-21 exits

I got some assistance today with automatically connecting rooms by symmetrical exits from my friend Paul. Now, as you generate rooms they randomly link to up to three previous rooms, so that you get a repeating node pattern that balances out into shapes like the Hunt the Wumpus “squashed dodecahedron” I linked in an earlier post. I added a sidebar of exit links to rooms & made the bullets lil emoji doors because why not.

More ➜

grotto 2-8-21

libsass is installed and working. I started making some cursory room styles with a couple of fun background-image outliers for weird room color names. Login/registration page is next.

More ➜

grotto 2-6-21

Room detail pages are loading, room generator is working and creating rooms! Before I start writing any css, I want to figure out how to install sass. Django’s default system of lots of app-level static folders confuses the hell out of me when it comes to managing css, I’d like a single compiled stylesheet and sass partials can live at app-level if they have to.

More ➜

grotto-2-3-21

some grotto pomodoros- I got rooms listing at /mapBuilder/index.html and the button triggers the old room generator script, but the script still needs to be adapted to add rooms to the database not make flat html documents. right now markovify can’t find its corpus text document even though the path looks right to me.

More ➜

flowchart

Worlds crappiest page flowchart for grotto v 0.0000001

More ➜

jan 28 grotto

Had time for some Grotto pomodoros today. I am most of the way through the django tutorials but I still don’t really know what I am doing. The parts that are the main mystery to me atm are views and models.Today I am looking at views.py. I conceptually understand what a view is in MVC but I don’t really know anything about the python functions that views.py is using to construct those views. Today I’m starting here in my reading.

More ➜

grotto 1-14-21 pomodoros

I did 2-ish pomodoros for Grotto today, focusing on the Django tutorial project. I got here.

More ➜

zero players

I reposted Paolo’s Games Without Players piece yesterday because every time I think about how best to situate Thicket, I feel like it would be as a zero player mode simulation, constantly reseeding itself. I don’t think of Thicket as being a particularly healthy space to inhabit, it’s purposely about themes that bother me- predation, hierarchy, violence, manipulation.

More ➜

space

I’m back in Austin but I’m “bubbled” with my partner and her mom and sister. My Mother lives in Austin but I haven’t gone to go see her. We quarantined two weeks when we got here, and then my partner’s Mom had an exposure scare so we waited longer. My mother has gotten increasingly despondent, even though we had got her an iPhone and managed to show her how to facetime with us on it.

More ➜

Django

It occurred to me that since I’m already writing some python for this and I need a CRUD app with users and a database, maybe i should use Django for this.

More ➜

room descriptions

Today I repurposed one of my python random text generators to use as a grotto page generator. Pulling from a corpus made of these dungeon descriptions, this spits out 20 html pages, with hashid filenames and titles from a master color list I’ve compiled (part of which I scraped from Joyce’s Ulysses with another python script). Then I try to detect major color words in those names and assign a background-color to the page body (this is one of those times it would be great to know how to use more advanced machine learning 😒). For not a ton of work, this is creating some pretty cool results! The room descriptions are mushed up rpg-inspired poetry which I like, since this game wouldn’t have any room interactions really, just moving from room to room, looking for/avoiding other people.

More ➜

grotto links

This is the very first grotto post.

More ➜