(2024)

our boat,
the Thread

Videogame installation. The players steer a motorboat into the underworld with a physical tiller. The game tells a branching narrative of queer grief and empire within a necropolitical mythology. Made in collaboration with Alex Brettell.

The protagonist’s lover, the childhood friend who would become empress, is dead. The underworld shaped in her own image is crumbling with her. You play as the Fates, steering the protagonist in her old motorboat to do what must be done.

Depending on the path taken, the game concludes in one of three wildly divergent endings. Together, they tell a story of cultural death, rebirth, and betrayal. Not all is as it seems.

The game was produced in collaboration with Alex Brettell. He produced the wooden tiller controller and the incredible soundscape.

The game has been installed at Limits & Demonstrations, Shuffle, and most recently the 2024 Degree Show at LJMU.

our boat, the Thread was written about by Gabrielle de la Puente for The White Pube. From the article:

“The boat chugged over lakes, through a half-sunken church, into dark sewers and glowing caves. At one point, the player had to keep the boat straight across a tense waterfall bridge that stretched across blank space with no boundaries. We arrived into a starry globe where a translucent ghost standing next to a bonfire was waiting on the shores to meet us. I got completely pulled into the whole thing. I couldn’t really believe that this was in a BA degree show.”

Read the article here. (It’s very beautiful.)

An adaptation of the game played with a mouse is available on itch.io:

A spoken recording of the ‘Flowers’ path of the game was created for Ashley Holmes’s … and other possibilities, a collection of audio works broadcast by Montez Press Radio.

Listen:

[df77a7f] content-title made block in hero-less | [b017486] sidebar group by year + improved style | [576cc91] added credit to bradwill hungtop | [4f2babe] added 20:20 to cv | [f9bd6ae] added cv | [e5f9736] don't display link previews on mobile | [7b7c91e] site title gradient rework, content title align, working on fonts | [db38c99] renamed js files to camelCase | [980e98c] indenting hugo templates | [944462f] list margin fix + padding adjust and added home | [1655611] revert "removed bundle from repo"This reverts commit e54b31bbadc89291555080c4a72eb70e9163f054. | [08d125a] added gill street grass corner | [9b278f8] added gmtk game jam draft | [f0c8498] consistent italics | [351c79e] formatted options nicely | [dd6f84e] storytelling | [e52eada] script to write commit log as json | [bb0661d] replaced tags taxonomy with params | [315ab00] page titles in progress, site title improvements | [a2da721] images, sass renames, etc | [7db4d3a] updated default archetype | [7b6b46e] maybe safari fix who knows anymore | [e600360] better grain noise | [548db78] added git log json to deploy.yml | [82a3b05] image resizing and conversion to jpg | [ebd00f7] kiss space | [b9ba5cf] creates 'data' dir if doesn't exist | [9de7c75] 'selected projects' tag | [33699e8] rotated mobile improvements | [2d0a45c] added the landlord's game | [1f36360] twine shortcode takes raw uri | [0fec04a] replaced link-preview-image with one line of code | [1b994cf] mobile font size decrease | [3c33fd9] drop cap experiment | [0e63f24] more sidebar adjustments | [c76931f] init | [63d0592] cv education + formatting | [9e0b5bf] added red images on hover | [8e4d8c3] attempt at safari fix | [1069228] limits and demonstrations placeholder | [8a82b20] Create deploy.yml | [d381aca] better title for singles | [21bd25e] added wren church | [080ff88] internal-link uses a link-preview-data-attribute | [eda69ad] commit data read as ticker text | [73a3d0b] blah | [c86b5a7] figure shortcode uses inside tag for caption | [d0b39d6] scrolling red effect occurs on load | [b5c24a1] horizontal/vertical image margin fix | [e74cba3] the fisherman | [88fb9ec] finished meatspace ephemera for now, fixed shortcodes, added archetypes | [02d26aa] featuring kiss garden | [34f1782] removed sidebar featured project year italics | [0d67b02] columns plus 404 | [7221f6a] single without hero image | [d78c296] sidebar menu button fix | [b11be8b] 'game developer' -> 'game maker' + 'witness' -> 'see' | [4e722a1] sidebar only shows projects in project list | [9dc473d] added release to projects archetype | [70bd6ee] sidebar stays where it should be between loads | [d33cfc3] our boat spelling errors and phrasing fix | [f9499c5] overview text column is container | [c47f70b] added richmond castle | [57ab706] github action yaml and compiled | [413dc1c] figure not hard italic | [6047403] set scrollbar colour | [64b309c] not-working attribute version | [29b1e99] source mapping | [8d34175] turning red scroll effect | [1c785ab] added sophisticate adult party | [e54b31b] removed bundle from repo | [4ba8c51] our boat has montez press, using columns | [45a7672] improved margins | [35feebc] faster sidebar transition | [67348cd] customer support chatbot title format adjusted | [85d62f0] reimplemented mobile sidebar button on all pages | [6a6bdbc] added cave | [4116bdc] elaborated on white pube mention in cv | [36c1777] itchio shortcode | [735bd7e] mobile: content title improvements, site title goes left in horizontal, content background padding fixed | [6071a32] links adjust, better headings, margin adjust | [f98c1fa] ticker text class instead of id + scrolling time is a variable | [6dec12e] workflow renames and cleanup | [d9cce9b] fixed indent | [6359ace] added mega flatgame workshop | [b368cfa] External links and more stuff | [d15a884] figure margin fix | [7cad296] display audio as block | [4ebe0e7] ticker, responsive | [944481e] fixed sidebar not showing bottom | [28d3626] twine shortcode | [4943033] adjusted mobile hero image height | [bc36318] ticker speed dependent on width and randomises animation start | [69bf483] content columns adjustment | [2d0daba] sidebar padding changes + supports new base section pages | [14b957e] moved ticker down in body | [b0c6dd2] content padding adjusts | [8eb6b5c] minor style fix | [2f31675] catastrophic interference | [f2bd573] removed bad cave photos | [0b599ba] added data heist | [b3302db] hero images, new svg noise gradient | [87161f7] using new twine shortcode | [8da44fb] sidebar padding adjust | [ce3592c] emptying the link preview src on mouseleave | [ab4d2b7] line height increases + figure margin regression fix | [ed9e039] added default 'about' | [b2480f5] updated cv with 2025 stuff | [e1d4d9f] added me to cv | [f5a5807] site title can't get too small | [907e957] homepage spelling and rewrite | [681a5d0] scroll effect with hugo filters | [ebc2f40] added occupy to cv | [9063eb2] updated 'selected projects' styling in sidebar | [b25bf24] added we searched its remains for the heart | [2d8c901] mobile content background top padding fix | [0c72f4e] changed to data-link-preview-src | [729cb73] removed redundant project.sass | [4228f8f] mentioned publications on front page | [df45bbb] max fetch depth in deploy | [49dfd97] title improvements | [b345e80] figures, img shortcode uses inheritance, rearranged assets, more meatspace ephemera | [ee661ae] display iframes as block | [0b835db] ignoring jsconfig all together | [a9528be] fonts and colours | [57db78f] overview shortcodes | [a0c5bb5] our boat the thread | [8f30c14] midway through overview rework | [362a80d] EVIL hack to solve svg nonsense | [450c1c6] switch var to let | [4afad51] using sass test | [f97589a] fixed customer support chatbot release | [6e1d492] added granny ludki to cv | [5be3ff0] prettied js | [82f5a15] font changes, rename pages to projects | [d9c85bb] more padding fixes | [64c36d6] attempted fix on mobile svg rendering | [1f78bcb] brought the hero scrolling effect out to a separate file loaded async | [87a7c2f] padding adjustments | [7adcb84] header margin top increase + refactor | [05d9f92] meatspace using columns | [fae7013] switched to four space indent | [ca6e8b1] added the return home | [44e5589] fix z-sorting by rearranging document structure | [5bd2e0b] limits and demonstrations space descriptions | [304074d] renamed index.js to _index.js | [4bcf4da] removed redundant parens | [81b0b4a] revert to regular baseurl | [7b2a088] title noise | [af283da] added 'source code' to sidebar + switched to menu | [d582476] prettied jsconfig | [876a554] minor adjustment to overview images | [4c33e2b] indent fix | [dedfc90] favicon + baseof adjustments | [73446f7] using new jquery 'on' api | [3d7ada0] weird videos | [65b36a5] minor re-order | [9c6bb68] audio shortcode | [e0c6818] tidied up deploy.yml | [0b6540f] bundling my js | [ae272c4] added bradwill hungtop | [b1aeeff] js for images on hover | [9446ad1] sorting by date | [0288f9c] font size adjust | [e662127] sidebar refactor | [3302f01] stripped commit ticker newlines | [d191202] added in that great fire | [616d965] new image of me | [aabd9c5] added link to art monthly | [bba0205] ticker adjustment | [d21b271] beginning of framework for home page | [1a07597] baseof indents | [43978db] beach | [79354b7] customer support chatbot | [b7d8753] updated to use new figure shortcode | [5a228a1] meatspace ephemera using itchio shortcode | [443741a] added art monthly to cv | [65d4a1f] stop publishing page resources | [273a2ec] correct testing url before switching back | [3a1e325] internal links shortcode | [c5e4f8e] naming fix | [ecde3c1] our boat | [57fa570] added 20:20 print exchange mention | [8a84d24] added bonfire | [aac126c] limits and demonstrations minimal | [4c1654c] site title adjust | [2be5593] added kiss garden | [437e2f5] adjust drop cap to fit new line height | [8eade8c] twine experiments | [5bee191] responsive sidebar, broke up sass, using jquery | [3060cc6] columns, rename class to parent-image, itchio uses container | [2f399c5] kiss space promoted to selected | [ad0e851] removed content image partial | [0b9a33e] added magic circle | [594e501] contact details | [69d0cf3] added voidspace live 2025 to cv | [621fe1f] home page | [6f3e014] ignoring lock file | [5a152df] made image fitting size a site param | [158ade2] ignoring node_modules | [5e6d190] first letter fix on chrome browers | [17993b5] added intl dogging beach | [195dcd5] stripped out jquery | [e271600] added rendering | [8242ee2] fix by not returning printf because hugo is a diva |

[df77a7f] content-title made block in hero-less | [b017486] sidebar group by year + improved style | [576cc91] added credit to bradwill hungtop | [4f2babe] added 20:20 to cv | [f9bd6ae] added cv | [e5f9736] don't display link previews on mobile | [7b7c91e] site title gradient rework, content title align, working on fonts | [db38c99] renamed js files to camelCase | [980e98c] indenting hugo templates | [944462f] list margin fix + padding adjust and added home | [1655611] revert "removed bundle from repo"This reverts commit e54b31bbadc89291555080c4a72eb70e9163f054. | [08d125a] added gill street grass corner | [9b278f8] added gmtk game jam draft | [f0c8498] consistent italics | [351c79e] formatted options nicely | [dd6f84e] storytelling | [e52eada] script to write commit log as json | [bb0661d] replaced tags taxonomy with params | [315ab00] page titles in progress, site title improvements | [a2da721] images, sass renames, etc | [7db4d3a] updated default archetype | [7b6b46e] maybe safari fix who knows anymore | [e600360] better grain noise | [548db78] added git log json to deploy.yml | [82a3b05] image resizing and conversion to jpg | [ebd00f7] kiss space | [b9ba5cf] creates 'data' dir if doesn't exist | [9de7c75] 'selected projects' tag | [33699e8] rotated mobile improvements | [2d0a45c] added the landlord's game | [1f36360] twine shortcode takes raw uri | [0fec04a] replaced link-preview-image with one line of code | [1b994cf] mobile font size decrease | [3c33fd9] drop cap experiment | [0e63f24] more sidebar adjustments | [c76931f] init | [63d0592] cv education + formatting | [9e0b5bf] added red images on hover | [8e4d8c3] attempt at safari fix | [1069228] limits and demonstrations placeholder | [8a82b20] Create deploy.yml | [d381aca] better title for singles | [21bd25e] added wren church | [080ff88] internal-link uses a link-preview-data-attribute | [eda69ad] commit data read as ticker text | [73a3d0b] blah | [c86b5a7] figure shortcode uses inside tag for caption | [d0b39d6] scrolling red effect occurs on load | [b5c24a1] horizontal/vertical image margin fix | [e74cba3] the fisherman | [88fb9ec] finished meatspace ephemera for now, fixed shortcodes, added archetypes | [02d26aa] featuring kiss garden | [34f1782] removed sidebar featured project year italics | [0d67b02] columns plus 404 | [7221f6a] single without hero image | [d78c296] sidebar menu button fix | [b11be8b] 'game developer' -> 'game maker' + 'witness' -> 'see' | [4e722a1] sidebar only shows projects in project list | [9dc473d] added release to projects archetype | [70bd6ee] sidebar stays where it should be between loads | [d33cfc3] our boat spelling errors and phrasing fix | [f9499c5] overview text column is container | [c47f70b] added richmond castle | [57ab706] github action yaml and compiled | [413dc1c] figure not hard italic | [6047403] set scrollbar colour | [64b309c] not-working attribute version | [29b1e99] source mapping | [8d34175] turning red scroll effect | [1c785ab] added sophisticate adult party | [e54b31b] removed bundle from repo | [4ba8c51] our boat has montez press, using columns | [45a7672] improved margins | [35feebc] faster sidebar transition | [67348cd] customer support chatbot title format adjusted | [85d62f0] reimplemented mobile sidebar button on all pages | [6a6bdbc] added cave | [4116bdc] elaborated on white pube mention in cv | [36c1777] itchio shortcode | [735bd7e] mobile: content title improvements, site title goes left in horizontal, content background padding fixed | [6071a32] links adjust, better headings, margin adjust | [f98c1fa] ticker text class instead of id + scrolling time is a variable | [6dec12e] workflow renames and cleanup | [d9cce9b] fixed indent | [6359ace] added mega flatgame workshop | [b368cfa] External links and more stuff | [d15a884] figure margin fix | [7cad296] display audio as block | [4ebe0e7] ticker, responsive | [944481e] fixed sidebar not showing bottom | [28d3626] twine shortcode | [4943033] adjusted mobile hero image height | [bc36318] ticker speed dependent on width and randomises animation start | [69bf483] content columns adjustment | [2d0daba] sidebar padding changes + supports new base section pages | [14b957e] moved ticker down in body | [b0c6dd2] content padding adjusts | [8eb6b5c] minor style fix | [2f31675] catastrophic interference | [f2bd573] removed bad cave photos | [0b599ba] added data heist | [b3302db] hero images, new svg noise gradient | [87161f7] using new twine shortcode | [8da44fb] sidebar padding adjust | [ce3592c] emptying the link preview src on mouseleave | [ab4d2b7] line height increases + figure margin regression fix | [ed9e039] added default 'about' | [b2480f5] updated cv with 2025 stuff | [e1d4d9f] added me to cv | [f5a5807] site title can't get too small | [907e957] homepage spelling and rewrite | [681a5d0] scroll effect with hugo filters | [ebc2f40] added occupy to cv | [9063eb2] updated 'selected projects' styling in sidebar | [b25bf24] added we searched its remains for the heart | [2d8c901] mobile content background top padding fix | [0c72f4e] changed to data-link-preview-src | [729cb73] removed redundant project.sass | [4228f8f] mentioned publications on front page | [df45bbb] max fetch depth in deploy | [49dfd97] title improvements | [b345e80] figures, img shortcode uses inheritance, rearranged assets, more meatspace ephemera | [ee661ae] display iframes as block | [0b835db] ignoring jsconfig all together | [a9528be] fonts and colours | [57db78f] overview shortcodes | [a0c5bb5] our boat the thread | [8f30c14] midway through overview rework | [362a80d] EVIL hack to solve svg nonsense | [450c1c6] switch var to let | [4afad51] using sass test | [f97589a] fixed customer support chatbot release | [6e1d492] added granny ludki to cv | [5be3ff0] prettied js | [82f5a15] font changes, rename pages to projects | [d9c85bb] more padding fixes | [64c36d6] attempted fix on mobile svg rendering | [1f78bcb] brought the hero scrolling effect out to a separate file loaded async | [87a7c2f] padding adjustments | [7adcb84] header margin top increase + refactor | [05d9f92] meatspace using columns | [fae7013] switched to four space indent | [ca6e8b1] added the return home | [44e5589] fix z-sorting by rearranging document structure | [5bd2e0b] limits and demonstrations space descriptions | [304074d] renamed index.js to _index.js | [4bcf4da] removed redundant parens | [81b0b4a] revert to regular baseurl | [7b2a088] title noise | [af283da] added 'source code' to sidebar + switched to menu | [d582476] prettied jsconfig | [876a554] minor adjustment to overview images | [4c33e2b] indent fix | [dedfc90] favicon + baseof adjustments | [73446f7] using new jquery 'on' api | [3d7ada0] weird videos | [65b36a5] minor re-order | [9c6bb68] audio shortcode | [e0c6818] tidied up deploy.yml | [0b6540f] bundling my js | [ae272c4] added bradwill hungtop | [b1aeeff] js for images on hover | [9446ad1] sorting by date | [0288f9c] font size adjust | [e662127] sidebar refactor | [3302f01] stripped commit ticker newlines | [d191202] added in that great fire | [616d965] new image of me | [aabd9c5] added link to art monthly | [bba0205] ticker adjustment | [d21b271] beginning of framework for home page | [1a07597] baseof indents | [43978db] beach | [79354b7] customer support chatbot | [b7d8753] updated to use new figure shortcode | [5a228a1] meatspace ephemera using itchio shortcode | [443741a] added art monthly to cv | [65d4a1f] stop publishing page resources | [273a2ec] correct testing url before switching back | [3a1e325] internal links shortcode | [c5e4f8e] naming fix | [ecde3c1] our boat | [57fa570] added 20:20 print exchange mention | [8a84d24] added bonfire | [aac126c] limits and demonstrations minimal | [4c1654c] site title adjust | [2be5593] added kiss garden | [437e2f5] adjust drop cap to fit new line height | [8eade8c] twine experiments | [5bee191] responsive sidebar, broke up sass, using jquery | [3060cc6] columns, rename class to parent-image, itchio uses container | [2f399c5] kiss space promoted to selected | [ad0e851] removed content image partial | [0b9a33e] added magic circle | [594e501] contact details | [69d0cf3] added voidspace live 2025 to cv | [621fe1f] home page | [6f3e014] ignoring lock file | [5a152df] made image fitting size a site param | [158ade2] ignoring node_modules | [5e6d190] first letter fix on chrome browers | [17993b5] added intl dogging beach | [195dcd5] stripped out jquery | [e271600] added rendering | [8242ee2] fix by not returning printf because hugo is a diva |