To Top



A collection of project work



Trying to Create Some Awesome Stuff

The best thing about programming has always been about creating something from nothing. Starting with an empty screen and coding, and - for games - having something colourful and playable appear on screen when you press Run.

Technical Projects

Enterprise development, Game projects, competitions, puzzles and even the old 4k code challenges. Custom electronics projects, arcades and grid computing. Engine internals, geometry problems and code cracking. Data analysis, Genetic Algorithms and performance optimisations.

Game Jams

18 Game Jam events attended to date (hosted a few in a couple of locations). Partial to the focused and restrictive nature - whatever those limits may be (including time)

Sharing Knowledge

Uploading the source code of games created during jam events, working together in teams, and contributing to various open source projects.

Game Jams

48 hrs / 72 hrs. One theme. At least once a year

Over a decade in screenspace

The focus that a 48 hr or 72 hr jam event gives you really concentrates on the basics ("can you win yet?") increasing the chances that by the end of the jam you have something playable. Whether the restrictions are art style, platform, target user interface or simply time itself, it helps keep that essential focus to just get the job done.

Hunt The Wumpus: Remakes

1973 -> 2013, 2020

In homage to Gregory Yob's classic Hunt The Wumpus (1973) the first remake was done at the 2013 Edinburgh Global Game Jam, added multiplayer and positional audio, and was presented at Bafta Scotland Awards in the same year.

Keeping the turn-based approach of the original, the game jam version allowed all players to submit their movements at the same time, meaning LAN parties of this version proceeded smoothly - uninterrupted - and few realised it was still turn-based at heart.

The 2020 remake was much more graphically heavy but still takes place on a dodecohedron and supports up to two local players.

Hunt The Wumpus 2013 Global Edition

The 48-hr game jam version was created on Linux by Pete, Kevin and Martyn in Jan 2013 on the "Heartbeat" theme and allowed for many players to join. Winner of the Edinburgh Scottish Jam #sgj13

HTW: Global Edition
Jan 2013

Feb 2013 Glasgow Play Party Event

One impromptu LAN later and some text-based, turn-based, headphone-centric multiplayer Wumpus hunting begins to take place!

HTW GE: Glasgow Play Party
Feb 2013

Showcased at Bafta Play, May 2013

Invited along to the Bafta: Play event in May 2013 to showcase our Edinburgh jam winning entry, bringing a suitcase of laptops and networking kit along to the booth.

Bafta Games Scotland
May 2013

2-player Arcade Edition

1973 was text-based.
2013 jam version added sound and multiplayer but remaining text-based.
Created during initial 2020 lockdown, there exists now a local 2-player graphics-heavy version.

2-player Arcade Edition
April 2020

Making Of

Behind the Scenes

Hunt The Wumpus

The Story behind the 2013 'Global' Edition

Learning the hard way why sleep is a very good thing and breaking a bunch of expected norms from that year in how game development should be done.

Also: how to scare people without even using pixels.

Pod Rush: The Making Of

Enterprise Development Techniques in hilarious spoof creates results

Read about how one of the most successful game jams (up to 2020) was made surprisingly possible by poking fun at corporate 'agile' techniques

Under 48-hr pressure "there's no time" for corporate approaches - or is there?


Through the Decades


Gaming at 6, coding at 7

1986 - Atari 2600: Shown the ropes by my cousins with classics like Battlezone, Asteroids, Return of the Jedi, Keystone Capers, Barnstorming, Super Breakout, Pitfall and the Combat games pack.

1987 - Spectrum 48k: picked up at a second-hand shop with power connector problems. First game programmed on this in BASIC, and it used the joystick! Game was 'running-around-the-forest-collecting-treasure-avoiding-water'.

1990 - 8086 (XT) with a turbo button. A 32MB hard drive on a heavy, metal ISA card. The Secret of Monkey Island on a monochrome EGA monitor, that made hunting for those 'yellow' flowers in the forest a serious challenge! Used PathMinder and GEM shells. GEM was good for its built in DTP (Desk-top-publishing) and art packages.

1991 - Colour EGA monitor! No longer have to use cross-hatching to represent shades of grey.

1992 - Wolfenstein 3D made an appearance. It ran on almost no resources at all by today's standards and the sounds were forced out the in built PC speaker (and sounded terrible)

1993 - QBasic (MS-DOS). Examining the code behind nibbles and gorilla to tweak the existing games and make very simple new ones.

1993 - Doom: 486 encounters of the best kind: Walked into a computer store to see a demonstration model 486DX2 66 MHz (the only one in the shop) running a copy of Doom. Demo of E3M1 was running, plasma rifle was firing and I was standing in the store with my jaw open. Picked up a box with the shareware 3.5" floppy disks inside.

1994 - Sure I found a way to justify a 486DX2 66 MHz. Probably something about education. Probably nothing about Doom. Or Doom level editing. DEU and linedefs and sectors and many, many late nights.

1995 - Hanover Street Edinburgh's 'Cybercafe' receives most of my money every Saturday, as we network custom Doom II levels much to the chagrin of others trying to check their email on a network swamped with doom packets.

1996 - Quake makes an appearance. Worldcraft by Ben Morris used for level editing.

1997 - Created a version of Chess (with graphics and some form of computer player) in QBasic on 3.5" floppy.

1998 - C++ and ANSI-C algorithms at University.

1999 - Assembly language (ASM) and SQL in second year of University. And then partied because it really was 1999!


Java and OpenGL programming

2000 - Sun Microsystems: Introduction into Java, and JSP (Java Server Pages), Solaris (UNIX) and Sybase. People working on the manufacturing floor get in trouble for swamping the network with Doom packets.

2001 - 2.5D Java Maze (software renderer). Because when you have a full time job AND a University course to complete, a software renderer project is what you need.

2002 - Created a Lexical interpreter and neural network, to learn about building up word associations and training data. Front-end was a strange mix of JSP, Javascript and Flash.

2003 - GL4Java (thanks Sven Gothel), OpenGL bindings for Java as early M.A.C.E. version developed. First proper foray into OpenGL. Picked up Milkshape3D and Terragen.

2004 - Swish flash creation and flash-to-java, java-to-flash interactions. Swishzone closed October 2016.

2005 - OpenGL programming on M.A.C.E. - Frustum culling and terrain with trees and display lists.

2006 - Even more OpenGL programming M.A.C.E. - Modules for A.I. flocking behaviours, particle effects and networking

2007 - JOGL, developed by Sun Microsystems Game Technology Group - more OpenGL bindings for Java, used for Eternity II puzzle solving. Also heavy use of MySQL for offline generations of pre-cached tilesets.

2008 - Sun Microsystems-sponsored grid computing, and distributed computing as part of the Eternity II puzzle solving attempt.

2009 - Genetic algorithms, and shaders, used as part of the Eternity II puzzle solving attempt.


Let the Game Jams begin!

2010 - Shaders, networking and performance improvements for puzzle solving work.

2010 - Oracle Corp: More Java Servlets, new Oracle DB versions, ext-js, OEM and more.

2011 Jan - First jam event! Zombies in mah house, Global Game Jam. Using lwjgl - own multiplayer network code, animations and game logic. Hi-scores! Fun!

2012 Jan - Tower Defence attempt turns into Smash-TV style game with snakes.

2013 Jan - Hunt The Wumpus: Global Edition, Global Game Jam. See Making Of. Java client, nodeJS + coffeescript server for many global players.

2014 Jan - Jail Break, Hosted Global Game Jam. In-jam learning of Android game development with libGDX. Nothing like the deep-end! Fun on the Android tablet.

2015 Jan - Village Pillaging, Hosted Global Game Jam. In-jam learning of libGDX, used for the first time. Queue to play our game in the Glasgow Play Party, invited to RPG event.

2016 Jan - Pentagram, Hosted Global Game Jam. Better engine built for libGDX framework, with controller support. Amazes Rockstar North employees that this is in Java ("but.. it's smooth!")

2017 Jan - Project (Y,X), Hosted Global Game Jam. Tower defence from a heavily refactored 'Mace Dungeons' project for the tilemap and AI work. Named due to confusion about 2D arrays being [x][y] or [y][x]. (rows then columns = [y][x])

2018 Jan - Transmission, Hosted Global Game Jam. Tried to bite of more than we could chew and had to use some 'pure imagination'.

2019 Jan - Mansion Hunt, Global Game Jam. Networked multiplayer from the ground up. People thought we were mad, but it worked.


Game Jam Veterans

2020 Jan - Pod Rush, Global Game Jam. libGDX with normal maps and per-pixel lighting. Having fun and success with enterprise development concepts in a game jam setting. See Making Of

2021 Jan - The Journey, Global Game Jam. Remote Global Game Jam for the first time ever with mixed results.

2021 Oct - Dungeon Crumble, Ludum Dare 49. First solo LD entry that turned out rather well.

2022 Jan - Bounty Ball, Global Game Jam. The Pod Rush team reconvene for more space-based epic implementation.

2022 Apr - Omega Squad, Ludum Dare 50. Second solo LD entry. Also under the effects of the global dreaded lergie.

2022 Aug - Arcade Club: meet, talk and 'Dead Simple' Doom II deathmatch with the legendary John Romero. Good chats with @br as well - fabulous evening!

2022 Oct - Baltic, Ludum Dare 51. First 72hr Game Jam. Antartica. libGDX. Custom pixel-perfect collision physics and our first side-scrolling platformer.

2023 Jan - Minetanite, Ludum Dare 52. Second 72hr Game Jam. Planetary miner. libGDX. 4-strong team and some very curious collision performance puzzles.

2023 Feb - Mutant Mandrake: I am root, Global Game Jam 2023. Lab-escape platformer with 'rooting' mechanic. Winner of SGDA Community Choice Award.

2023 Apr - Discrete Dungeoneers: Ludum Dare 53. Stealth dungeon escape-a-thon with line of sight AI, lighting, fog of war, and simultaneous turn based phase processing - too complex for the time allowed.

2023 Oct - Additional programming to assist on @glaikunt's game "Emplacement"

2023 Dec - Terrain renderer ported into libGDX from early 2000s. LOD mesh, edge collapse - very fun stuff.

2024 Jan - Broah's Boiz: Global Game Jam 2024. A very silly, chaotic game highlighting logistical challenges in an old tale.


Keep In Touch