Levi Symons Portfolio


I am a hobbyist game dev and freelance programmer. I've been making games since 2015, originally using Unity but since 2020 I've mostly been using Godot.

I've worked as a freelance programmer on a couple of shipped games, I've done quite a few gamejams and I always have a few personal game projects going on in the background.

I really enjoy the music and audio side of game development too, so probably my proudest moment was coming 2nd in the Audio catagory for my game Satellone in Ludum Dare 47. Also I was really happy with the feedback and ratings I got for my Ludum Dare 49 entry "Bennett Froggy" which came 38th overall.

I work as an online English teacher for my day-job. I'm also slowly trying to learn Russian and Korean. I can't wait for Covid-19 pandemic to be over so I can go travelling again.

Ludum Dare 49 - Bennett Froggy

For Ludum Dare 49 the theme was "Unstable". I created a "Getting over it with Bennett Foddy" inspired game where you are a frog that rides a unicycle and you have to make it through the level to deliver your tadpole to the end.

I am really happy with how the game turned out. I wanted to spend a bit more time on polish and on the visuals, but I think the level design was too open ended and took too much time. I think when I continue developing the game in the future I will change the level reset mechanic to feel a bit fairer, and avoid the tedium to having to cycle through the easy bits all over again to get back to where you died.

This has been my best recieved game by far, so I am absolutely chuffed with that.


Kenney Jam 2021 - Meteor Maze

The theme for Kenney Jam 2021 was "Rotation". I created a slightly unconventional maze / platformer where you have to navigate through the rings of meteors to get to the wormhole in the middle. You are pulled by the wormhole's gravity to the centre, and the only way to control your movement is using the recoil from your laser gun.

Holey Hell and Underneath were two brilliant games from Ludum Dare 48 that heavily inspired the rotating world and gun recoil aspects of the game.

My personal development goal for this game was to make something that felt juicy to play, and was fun, and I feel like I managed to achieve that. I'm going continue to develop the game post-jam, and maybe port it to mobile.


LudumDare 48 - Ocean Cleanup

For Ludum Dare 48 the theme was "Deeper and deeper". I wanted to create a bit of an unconventional game that is relaxing to play, without a clear end goal. For this I created a infinite procedurally generated submarine game where you go around collecting rubbish from the ocean floor, and collect oxygen from volcanic vents to keep going.

I am really proud of the procedural generation method I managed to implement because I kind of just made it up as I went along, in true game jam fashion. It's a bit rough around the edges, especially with chunk loading but I am really excited to explore procedural generation more in future games. I ran out of time to play test the game and so I didn't realise that the way most people control the submarine caused the orientation to break. This and the low spawn rate for the oxygen vents meant that the game didn't get the best rating, but I was really happy with the game and I learnt loads in the process of making it.


Brackeys Game Jam 2021.1 - Waddle Waddle

For the Brackeys Game Jam 2021.1 the theme was "Stronger Together" so this immediately made me think of groups of animals that rely on each other. Eventually I settled on a mother duck and her ducklings having to cross roads and avoid danger and distractions. I thought it would be fun to have dynamic music in the style of Peter and the Wolf, where each thing in the scene was played by a musical instrument. For this jam you were able to use available assets which saved me time having to create vehicles and roads, so I managed to get quite a polished end product which I was happy with. I was also really pleased with the rankings the game achieved!



Settlrs is a project I'm working on to create an Open Source strategy game for mobile in Godot. I'm using a Hex tile implementation created by redblobgames and I've adapted their implementation of Dijkstra's pathfinding. I am creating a full turn-based strategy game for mobile and I will go on to make more complex game using the code-base in the future. Check out my Github repo for the source code.

View on Github

Ludum Dare 47 - Satellone

The theme for this Ludum Dare was "Stuck in a loop". I decided to make a game about an old abandoned satellite stuck in orbit around a moon. I really enjoyed making this game and streaming it on Twitch. This was definitely a big improvement over my last Compo entry. I was really pleased with the visuals, polish and mood of the game that I was able to achieve, these are usually my weakest areas. I was also really pleased with the music I made. I was amazed I managed to rank 33rd for Mood and 2nd for Audio! In the end I probably over-scoped a little and wasn't able to fully balance the game, so it ended up being too tricky so I didn't place very well in the Fun catagory, so that's something to work on in the future.

Play Music

Miz Jam 1 - Animal Crash

Miz Jam 1 was a gamejam organized by the Godot youtuber Miziziziz based upon the Youtube series "4 Game Developers Jam Off the Same Art Kit". It was really fun taking part in this jam, it was different to the Ludum Dare in that instead of a theme you are provided with an art kit to use to create whatever game you want. This felt very unconventional but I really enjoyed it as programming is my strong point anyways. It was also my first time streaming a gamejam on Twitch and I streamed the entire 48 hours that you were given to work on the game over a week. I was extremely happy with the final game, which was a Mario Kart style game in boats. It was definitely the best game I've made to date, especially in terms of polish, fun and feel, although I think I made the AI a little difficult to beat. The art kit was created by the amazing Kenney.


Ludum Dare 46 - Don't Crack!

My first attempt at entering the 48hr solo Compo and it was a whole lot of fun and a really enjoyable challenge. I was really pleased with the final game I was able to make; I was happy I was able to implement an interesting mechanic, make it fun and finish on time. You play as a platforming Egg and you have to jump across the obstable course without cracking.


A f ainuseo eiay f, eiay, m iueanns, wrog, a ljerts. H ykantd shul cy a mrytvk iontitn l eiay h eiay t eiay ainuseo shul a r eiay hhoo. Tioeett dinhids wrln. Nseynot, h h, a, floin, oorhd dgbye t eiay, hitehyf a, fnro, sl oers, th, wlionedes, te, eiay, h, ie ia dinhids cacons. Nlon t th a f apnseeal a o cacons eiay i f ieigeehtms wnge m ljerts eiay rinhawnt. Whuaanng. Eiay pveodnog, oorhd, aiag eiay. H, incunrivuvd, b, tuiaw, llsielt, btrritmcoaeei, lrtet, mfndgnt, atttkt, eaun, h, hirespfhed, h fnrl. T, apetat sl, ds, anrice, a, a, aouko f, dhaid, eiay, fnrl on, f, t, tuniupr ns h, tr, sl, herdhos fo. A, e, eiay, aidane, l h. Nlon eiay t hcdeateee cohhrcntae shul oe l fo aaalmneio h hn, fsrostllk y anohovkiirm f oe tuiaw eiay l sl a t, t eiay. Tonircw, h, h wtatxrd, ie, a affbns. Ot, f, smhtloreihd, ntnii, fihlne, it ncuii, nusiearcw, amtr ad. Wueer eiay, tt, slrintssd, eiay leae eiay eiay dapd f, eiay sl tlearnrrhd, mttahy as, dsmnss, l, eiay i. H m, drkrngwsaica ioiy eiay. Ie, dinhids, snvw, id, tdakdhe sl sitehevnoos duhtt.

Lorem Ipsum Gen

I made this Lorem Ipsum generator becuase I find languages fascianting and I wanted to experiment with psuedo-random biased generation. I started off in Processing which I find useful for fast development, and I am familiar with it's Java based language, and then later I refined the idea and ported it to Python. It was one of my first full projects in Python, some of the functionality of Python really helped this project, like the random.choices, sample and shuffle functions, these really helped me to simplify and refine the method and reduce the code by almost half. It works by generating a dictionary of words and then dispersing them through the text. For the words it uses letter frequency biases taken from the million word running sample, word lengths based on the Mayzner revisited frequency stats and then distributes the words using Zipfs law.

Web App View on Github

Cubits Adventure

I worked as the main programmer on this project as a freelancer for Hauki Gaming. The game is a platformer with level creation and sharing features. The initial gameplay code was written by the previous programmer and then I developed the user creation, level editor and level sharing systems. It shipped November 2019 on the Google Play store. For this project I worked in C# in Unity and also PHP and mySQL to create a database and interface for sharing and playing levels between users. I learnt a lot about serialization, and interfacing between a SQL database and Unity using PHP during this project.

Play Game

Music Box

Inspired by the Google doodle for Bach I wanted to create an app to do with music generation. I have been working on a personal project in Processing Java to create an endless AI sheet music generation App. This app will allow people learning instruments to practice their sight reading and piano playing. It is also a fun experiment into AI generation, however I would eventually like to add more features and turn it into a useful music learning app for Android.


I worked as the main programmer on this project as a freelancer for Hauki Gaming. The game is a platforming/puzzle 3rd person pinball game targeted for Android. The game has been 80% completed but put on hold whilst other projects get completed. For this game I had to write a large amount of custom physics and behaviours for the pinball so it could interact with different boosters, surfaces, slopes and bumpers. For this project I worked in C# in Unity and learnt a lot about coding custom physics behaviors, UI programming, and save/loading systems.


I made this Spiral drawing app as a super quick project in Processing to learn the process of creating an app in Processing and then embedding it in my website. I have several projects in progress using Processing so I wanted to work out how to export them and run them within a browser. For this app I also learnt how to create a responsive scaling UI, this will come in handy in later for releasing future Processing apps to multiple platforms.

Web App View on Github

Light Metronome

This Metronome app was a super quick project in Processing, it was built from a metronome component I developed for the Music Box project but becuase that project is much larger I wanted to just ship this as a quick standalone app. I learnt how to load image files through AJAX for processing.js and how to interface between the HTML/Javascript webpage and the Processing.js application, this will be really useful for me in future applications.

Get it on Google Play Web App View on Github

Ludum Dare 41 - Low Stress Language

This was my first Ludum Dare Entry, the theme was "Combine 2 Incompatible Genres". I had been wanting to work on a language game with minigames so I came up with the concept for a colour learning minigame that involves diffusing a bomb. It was a great opportunity for me to catch the Ludum Dare bug, learn about localisation and improve my Unity skills.

Ludum Dare

Impossible Pong

For a personal project I wanted to learn how to use Processing and get to grips with Java and also I wanted to create my first basic AI, so, inspired by the Youtube channel Code Bullet I created a simple pong game in an evening. The AI predicts the path of the ball, which makes it impossible to beat. It's the first app I have published on the Play store so it was a good project to learn how to deploy an app to mobile and Web, this will really help me in the future for more complex apps.

Get it on Google Play Web App View on Github

Contact Me

Send me an email: levi@weirdy.dev