(2018-2020)

GMTK Game Jams

Me and some friends used to take part in the GMTK Game Jam. This was before I even considered myself an artist. I still kind of like these.

The first two are very much 1CM games, whereas the latter was more narrative. This pretty much tracks with where I was going in my work. The latter also got way too popular.

2018 - Backseat Driver

You’re a driving instructor whose student will only perform actions that you type out. The trick was that you could only input commands while looking at them, perilously missing out on seeing what was right ahead of you. Looking back, this is honestly kind of clever. Good job, us.

2019 - THERE CAN BE ONLY ONE

You have a few seconds to shoot someone with a laser. Then the cycle loops. Every round you have to shoot all previous versions of yourself, while dodging your previous shots. Again, kind of clever!

2020 - How to Make a Cup of Tea

This is one of the oldest works on this site. I’ve spent six years since (at time of writing) making works in a variety of mediums with many magnitudes greater care than this 48 hour jam game. Granted, most of them aren’t short free itch.io horror games, but fuck me if this hasn’t been played hundreds of thousands of times. I’ve got to accept that this may just be the most widely viewed work of my entire career to come.

Anyway, you make tea in a loop and some weird stuff happens. It’s fine.

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

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