Obelisk-project menu: ☜ Back to Index

Obelisk-project

Obelisks are made from stacks of stones. Obelisks are markers of territories where tribute must be paid to enter.

Obelisk is a work about debt, extraction, and the relationship between our aspirations for the future, our memories of the past and the materiality of the present.

Obelisk is a book, a computer game, and a collection of 3D objects.

Taskboard

Downloads:

Repositories:

Documents:

Diagrams:

obelisk-feelies-moodboard images

obelisk-booklet-moodboard images

obelisk-game-moodboard images

obelisk images


Models:

(Models not loading? make sure to connect securely to this page with 'https')
Box
Floppy
mac
table
ashtray
ashes
capstone
stone

Posts:

situating obelisk

I finally figured out how to situate obelisk and connect it to folks without multiplayer or networked elements or having the game placed in New Art City and it’s so simple and good and I am really happy and excited about it- like the last important puzzle piece just connected, and it won’t add any complexity or stress before the show.

More ➜

version lock

Fixed a problem with the online book reader and everything seems… ok for now. So I am version locking everything until after the senior show. 😅

More ➜

Obelisk version 1.2.3 beta notes

updates since version 1.1

More ➜
whitestone.jpg

'have fun staying poor'

In Race after Technology Ruha Benjamin describes whiteness as “a form of property.” That excellent phrasing made a connection for me to cryptocurrency “whales”, who are sitting on a massive investment that is slowly being shown to be a useless, massively-destructive waste- but in order to maintain the value of their investment they must convince new people to buy into cryptocurrency, driving up the price, but further shutting the door on legitimizing it as an actual currency. Whiteness can also be thought of as a sort of pyramid scheme- If you can convince someone of their natural superiority, or even their position as a “default” human, you continue to maintain the implicit rationalization of their place in an exploitative and violent social hierarchy, and dangle the hope of in-group citizenship as a carrot for any groups that could threaten to dismantle that hierarchy. I’m also thinking of the smirking cruelty of the all-pervasive crypto slogan “have fun staying poor”, and the edge of desperation that it carries- and how it ties in to ideas of class aspirations bound to extraction. I felt moved to include that slogan in the game, along with a reference to the stones as “whitestone”. I hadn’t yet addressed race directly in the game, but ideas from American Artist’s Black Gooey Universe are definitely part of the mix. And my fixation on the early macintosh was part of my own class aspirations as a child.

More ➜

impersonal markets and minmaxing through the floor

In Obelisk, the disaster to blame for the state of the game isn’t so much the invention of money, rather it’s a system of extraction and materialism difficult to challenge, since it’s enshrined in the rules of the game. The obelisks in the game can’t be reasoned with, they remove the slippery complexities of human judgement and relationships in order to assign value to humans and to smooth the path for war and enslavement. The NPC’s are just trying furiously to get some pie in the sky, and the ground is collapsing.

More ➜

Obelisk v1.2b notes

1.2b updates-

  • fixes an issue where after dying and restarting, obelisk territory sizes weren’t reset
  • build optimization

More ➜

Obelisk v1.2b notes

1.2b updates-

  • fixes an issue where after dying and restarting, obelisk territory sizes weren’t reset
  • build optimization

More ➜

this was a vibrant land

This was a vibrant land. The limb of the horizon, viewed from the dark rocks of its shores, was engulfed in the green sea and the teeming business of whales. The sun at noon was high and gold and blessed the air and the clouds and the collaboration of birds that bore it aloft. The forests of this land were rich and verdant. Its soils were fecund and bore great and plentiful fruit. The people of this land were close and storied and they sang great epics of their histories. The wildlife of this area was rich and too numerous to name in a lifetime. It is said that even the animals of this land were heroic and had known deeds and adventures that changed the history of the world and of which humans could only guess at. The stones of this land were full of beautiful gems and useful metals that were treasured but never knew a price. The people of this land understood debt but minted no coin. It’s said these people had no kings or queens, and all of those who lived here were equal and valued. It is said that the days in this land were long and the weather fair. The seas here produced enough fish so that the waters were always thick with them, shimmering like quicksilver. This was a holy land. Its people loved one another. This land was filled with music. This was a peaceful land. This was a land that lived in harmony with death. This land knew no borders or flags but was prosperous and storied. This land knew hunger and strife but persevered through work and kinship.

More ➜

Obelisk 1.0beta notes

There’s some npc behavior now and one “ending” is in (and I need to finish in a week for the Capstone show) so I am calling this version 1.0 beta. ¯\(ツ)/¯ After the show I am going to need to stop working on this and move on, but it would be nice to revisit it some day collaborating with a “real” programmer to make it more deeply systematized. One of the things I wanted early on that just isn’t feasable with my current design and the time I have left was a sort of economy where the obelisks exchanged stones both through workers and then automatically when one territory encroached on another, and then a great obelisk that was some sort of representation of worker’s bodies tokenized in stones. It’s only kind of hinted at here. Also, slightly more intelligent npc behavior, it’s very clunky in my prototype.

More ➜

Obelisk 1.1.9 alpha notes

Big update that will not seem big to anyone but me.

More ➜

hypercard rpg procgen stacks

Lots of lovely finds recently while doing research, in particular some period appropriate hypercard stacks, some of which I was able to reach their creator.

More ➜

advanced block carrying

You ever get an idea for something that should be complicated, that you shouldn’t do, because your codebase is a mess, and you’ll probably need to refactor everything to get it to work? And then you bang out some barely-not-pseudocode and it just works the first time you run it?

More ➜

\"The Deserts of the West\"

While looking for python fantasy map generators, I came across Martin O’ Leary’s Map generator and through it their NaNoGenMo entry The Deserts of the West, a procedurally generated guidebook that is pretty closely related to what I hoped to accomplish with the Obelisk manual, but a thousand times more technically sophisticated. The map generator itself runs in the page I linked as a sort of jupytr notebook style demo, or you can download and generate a full version of the book from Martin’s github. fantasy map

More ➜

Obelisk 1.1.8 alpha notes

Changes since 1.1.5

  • simple messaging service for notifications
  • soldiers and pawns have debt that you inherit if you kill them
  • some preliminary work for flowers
  • very rudimentary ‘send you back to 0,0,0’ function when you get stuck in a locked territory that is supposed to walk you to the nearest unlocked tile, but doesn’t work yet
  • component to give npc’s pathfinding- soldiers now try to walk towards the player when the player is delinquent
  • lots of bug fixes, probably lots of new bugs introduced.

More ➜

runes

runes

More ➜

b-ber

I’m now successfully generating text from Python which is then in turn built into an ePub (with a web reader) by Triple Canopy’s B-Ber static site/book generator. This is pretty exciting to me. As a warm up I generated 100 tables of Potion recipes, preceded by a markov-generated fantasy quote:

More ➜

obelisk version 1.1.5 alpha notes

This update adds

  • new fake macos attract mode
  • stacking bills and billing cycle
  • various bug fixes

More ➜

asemic text

I’m starting to think now about the box, manual and ‘Feelies’ for Obelisk. The full piece should really push the dissonance between what’s in the game and what is hinted at in all the supporting materials. For the game manual, I’d like to have detailed tables of runes, crafting ingredients, spells, etc that I’ll likely generate with python scripts. I’m starting with some python scripts from Allison Parrish that help with creating “Asemic” glyphs. I’m building my versions of the scripts as she does in her example, using a Jupyter notebook. Even though these runes won’t be in the actual unity game, I’d like to create them with some consideration of how they might have fit in an earlier version of the game world. I think they would be cuneiform-like markings in the construction stones, they’d likely have square limits, and the marks would maybe be wedge-shaped like a marking-implement.

More ➜

Obelisk v 1.4 alpha notes

Obelisk Version 1.4 alpha additions:

More ➜

Obelisk, spring, capstone

Picking Obelisk back up, considering it for maybe a capstone (senior) project for school.

More ➜

obelisk v1.1.3 alpha notes

Quick bug fix, I had introduced a bug trying to start world space ui elements for individual obelisks that made all but the first obelisk territory broken.

More ➜

Flowers

Maybe this is overelaborate, but I keep thinking about how adding the ability to place stones back in the ground if they are connected on two sides gives the player a limited ability to restore the ruined world. You could potentially borrow from obelisks, rebuild the ground, decrease their power and just not pay them back. This would likely be balanced out by npc behavior, as they’d be frantically extracting and repaying obelisks, but as that’s a future design problem to address, what’s a nice way to respond to rebuilding the ground? I’m thinking this is the time for me to finally get to make a cellular automata- make a class of flower and grass objects that build off of the handful of grass sprites i’ve made, and allow them to reproduce in areas where there’s large plains of ground stones without obelisks.

More ➜

Obelisk version 1.1.1 notes

What started out as a minor bugfix ended up having some new features, so here’s v 1.1.1, the version I’m turning in for winter quarter. It’s got:

More ➜

obelisk v1 alpha notes

Turning in the first version of Obelisk! This version adds:

More ➜

Obelisk 0.4 alpha notes

new stuff:

More ➜

Obelisk version 0.3 alpha notes

New version includes agreements with obelisks, different obelisk territories, other underlying systems.

More ➜

obelisk 0.2 alpha version notes

updates

  • replaced left/right click with left-click only, distance aware walking or block manipulation
  • you can pull the block out from underneath yourself for a grim solution to getting stuck (will eventually add an ‘are you sure’ modal to this)
  • death
  • tons of tweaks on pathfinding and positioning

More ➜

click event notes

writing this down while I am thinking about it- instead of left click right click, only left click, there’s a cursor that’s a highlight that snaps to grid cells that looks like feet when it’s far away but walkable, looks like nothing when it’s not walkable, and looks like hands when it’s within one grid space away. if it’s one grid space away and you click it gets/puts a block.

More ➜

pathfinding 2

my bff Nick Crockett fixed my pathfinding prob, during play it must not have been updating the navmesh, so placing block tiles wasn’t doing anything. Instead we use pf.SetNavTileBlocked(gridPosition, true); to add a pathfinding block. The problem with not following the path exactly I was able to fix with my pivot offset gameobject.

More ➜

troubleshooting pathfinding

Taking a moment to refine pathfinding.

More ➜

Obelisk alpha .1

This is the first numbered version of Obelisk

More ➜

clicking on obelisks

So obelisk is using a z-as-y tilemap that makes it easy to stack tiles as if they have height. I’m having a time figuring out how you will be able to click on an obelisk, including any of its stacked tiles, and interact with it though, as folks are discussing here and here. Currently I’m cloning instances of a gameobject called obelisk that sits at the origin of each stack and holds things like the obelisk’s name, an id and height. I’m thinking that there should be a way to programmatically make that game object the same dimensions as the stack of tiles and make that the clickable part.

More ➜

obelisk 2-17-21

Obelisks are programmatically drawing their shadows and territories now. I will prob have to refactor a lot of this stuff once I figure out how adding and removing blocks will work as a function. screenshot of obelisk game with patterns drawn on ground tiles

More ➜

obelisk 2-14-21

Over the weekend I got obelisks stacking programmatically. You’re able to sort through all the tiles on a tilemap a couple of ways in unity and I had to try a few. Initially I was getting the bounds of a tilemap using -

 
BoundsInt bounds = groundMap.cellBounds; 

and then getting all of the tiles from that using -

TileBase[] allTiles = groundMap.GetTilesBlock(bounds); 

which gives you an array that you can loop through, except whoops, then you don’t have the grid co-ordinates of the tiles you’re looking at. I’ve switched to this which seems to mostly be working?

void Start()
    {
        int ObeliskID = 1;  // we're going to number each obelisk we find
        Vector3Int coordinate = new Vector3Int(0, 0, 0);
        for (int i = 0; i < groundMap.size.x; i++)
        {
            for (int j = 0; j < groundMap.size.y; j++)
            {
                coordinate.x = i; coordinate.y = j;
                Tile tile = groundMap.GetTile<Tile>(coordinate);
                if (tile != null)
                {
                    Debug.Log("x:" + coordinate.x + " y:" + coordinate.y + " tile:" + tile.name);
                    if (tile.name == "foundation_block")
                    {
                        //Vector3Int foundationCoords = new Vector3Int(coordinate.x, coordinate.y, 0);
                        navMap.SetTile(coordinate, pathStop); // add a pathfinding barrier
                        GrowObelisk(coordinate, 4, ObeliskID);
                        numberOfObelisks += 1;
                        ObeliskID += 1;
                    }
                }
                
            }
        }
    }

More ➜

obelisk 2-7-21

I’m behind on figuring out stacking, but today I did some fun UI and background animation additions. I have a dithered cloud animation that looks great. I’d post video of it but any compression at all mutilates it. obelisk screenshot with clouds

More ➜

obelisk 2-3-21

Pomodoros today involved evaluating how the block-stacking function will work (goal is to implement this before the end of the week). For this I’ll need to be able to check a location to see if a block is there. We may be able to just check the grid location to see if the tile there is null (I kind of remember doing stuff like this in Thicket, but it might be better to come up with a way to store data about tiles like this. To get a block:

  • at the location of the click:
  • check the grid location tilemap ‘Stacks’ (the tiles above ground) to see if there are blocks: – set the highest block that isn’t an obelisk cap’s tile to null – if there’s an obelisk cap, decrease its z position by one – increment the players inventory blocks by one
  • if there’s no blocks on ‘Stacks’ check the ‘Ground’ tilemap for blocks: – set the block tile on the ground location to null – increment the players inventory blocks by one

I may regret it but I also imported the Simple Tile Pathfinding 2D package I used in Thicket too, I’m not sure if I’ll need this yet, but I think adding pathfinding and block tiles will make moving around a lot nicer (pathfinding around obstacles, no banging head against colliders, npc pathfinding).

More ➜

obelisk 2-2-21

pomodoros today involved tilemaps and tilemap colliders. Now the player is bounded by the ground tilemap (still a little weird) and can’t walk through tiles on the ‘stacks’ tilemap.

More ➜

obelisk day 1

This is the first (official) day of work on Obelisk. I had a previous project running where I experimented with point rendering and turning off anti aliasing, but it was a universal pipeline project and this time I am just working with a 2d only project. I’m going to switch the repo over to this new instance. Remember that even in a 2d unity project you need to set your camera to orthographic!

More ➜