Posts Tagged ‘physics’

GMTK 2026 – Zero or Bust – Elastic Drag

Sunday, August 2nd, 2026

This chaotic physics game was built for the annual GMTK Games Jam 2026, where you have to build a full game in just 4 days to fit the theme “Count Down“.

I had the idea to make a game where you had to get chips to various targets such that they count down to exactly zero. Just one more and you BUSTED!

Play Zero or Bust in your browser (and click the fullscreen button in the bottom right of the game for the best experience).

Instructions
Drag and throw: Click and drag items to throw them around.
Experiment: Different items can be dragged on different levels.
Hit the targets: Guide chips to the targets. When they touch, the chip’s value is subtracted from that target.
WIN: Get all countdown targets to zero…
LOSE: Go even one point over on any target, you’re BUSTED!

Controls
Left mouse click & hold: Drag item.
R: Quickly restart the level.
Left/right arrow keys: Skip to the previous/next level.
M: Toggle music.

Trailer

 

Postmortem

Traditionally, I like to enter this jam each year as a sort of long-term barometer of how my fatigue is recovering. Games Jams are meant to be exhausting, and this one was no exception. I spent roughly 52 hours over 4 days, and ended up top 10% for Creativity and top 25% for Enjoyment. I’m really happy with those results.

I also ended up making 16 pretty good levels (all available via the arrow keys), a juicy fail sequence, lots of sounds, and graphics via the excellent Shapes plugin. I was determined to keep the scope limited, and that let me add a fair bit of polish. I submitted my entry about an hour into the final day, then recorded/edited 2 hours of gameplay into a trailer, walkthrough and speedrun videos. I also made an animated GIF for the main logo, showing the title and a short section of gameplay. This should entice people to play it, although I didn’t get all that many ratings compared to previous years.

The only ‘bug’ (as far as I know) is that the text often layers incorrectly. This was because I tried to use Textmesh Pro for infinitely scalable text, but it doesn’t sort nicely with Shapes. I decided it wasn’t that detrimental, and anywhere it interfered with gameplay I sorted it. I could have sorted it all, but I estimated it would take a full day… There were better things to spend my limited time on.

 

Walkthrough

 

Speedrun

 

Screenshots

GMTK 2024 – Build Scale Build Scale

Tuesday, August 20th, 2024

Created in just 4 days for the GMTK Games Jam 2024, this unfinished mess fits the theme Built to Scale in a unique way: You have to build a contraption that can scale to the top of a tricky tower of obstacles. Think “Getting Over It” mixed with “Fantastic Contraptions”.

 

Play Build Scale Build Scale in your browser. Best in fullscreen mode.

Instructions

  • Try to get to the top of The Tower.
  • Load each of the included examples. Some of them can get to the top.
  • Keys are entirely configurable, but WASD is what I tend to assign to the various elements. You can explore and reassign them by clicking parts – an inspector opens above the parts list on the left.
  • Try to modify one of the included examples.
  • Explore all the parts.
  • Try all three environments.
  • Mourn over the loss of the share/browse features.
  • Laugh at the lack of polish/sound/music.
  • You can make some very interesting things with the editor. Sadly there’s no tutorial.

Screenshots

Postmortem

Well that was a bit intense. I was way too ambitious in my initial concept, and while I had intended to do the jam in the original 2 days, in the end I did all four (spending a total of 53.5 hours). I know Mark’s (Brown, the Jam’s organiser) intentions were that nobody had to crunch, but that’s just not what devs will do with extra time!

 

Reverseggle

Tuesday, July 25th, 2023

This backwards version of the classic casual game Peggle was built in 48 hours as my entry for the GMTK 2023 Games Jam. The theme for this year was “Roles Reversed”, and the suggestion was to play from a perspective we don’t usually get to play. So I built a game of Peggle, but rather than controlling the ball launcher, you play as the pegboard.

All 6 levels are unlocked, and each one changes the mechanics from the previous ones a little. It runs in the browser too, so it’s very easy to start playing. No need to download and install anything.

My entry came 805th out of almost 7000, which is in the top 12%. I’m pretty pleased with that!

Play here: Reverseggle (for desktop/laptop browsers).

Bridge Construction Chaos

Monday, July 13th, 2020

You have a magical sky crane, and a construction job to do. But the traffic hasn’t been stopped. You’ll just have to work around them I  guess. Don’t worry if a few innocents end up  in the water in the process. I’m almost sure they can swim.

  • – Controls are all on an XBox controller, and are shown  in game.
  • – Features 6 incredibly detailed challenging  levels.
  • – No winching the cars to the goal. Your mum didn’t raise you to be a cheat!
  • – Built by a team of one, in about a day and a half. For the GMTK Games Jam.

No need to complete levels if you don’t want to. You can skip back and forth as much as you like.

This was my entry to the second largest games jam in the world. Well over 5000 entries from over 18000 participants! It ranked in the top 20% of entries, with a top 10% rating for fun. I’ll take that as a win, especially as this was my first completed jam since my brain surgrey. I tried to enter GMTK in September 2018, but had to sleep for several days after just 3 hours of work on it! I had to sleep for several days after this too, but I got to the end and made it a proper entry in the jam.

Check out the game on deeperbeige.itch.io to view the trailer/walkthrough videos, or download it to play for free if you have an XBox controller.

Bending the Light

Tuesday, August 8th, 2017

bending-the-lightDon your Oculus Rift headset and grab your Touch controllers for this mind-bending puzzle game. Manipulate beautiful beams of energy with all manner of tools to try and charge up the targets. Includes 40 levels, each with its own secrets to discover.

Play on Oculus Home

  • – 40 levels, each with secrets and collectables
  • – Designed for Oculus Touch
  • – Playable with gamepad
  • – Even playable with just a keyboard
  • – Abstract, dreamy, beautiful and atmospheric
  • – Meta-puzzles for those who solve everything else
  • – Low pressure, relaxing gameplay, but not simple!
  • – Can you achieve 100% completion?

Watch the trailer

See the walkthrough

Puzzle Putt

Saturday, October 17th, 2015

Puzzle PuttPlay crazy-golf with Shaun the Sheep! In this game though, you get to bend the course to your advantage by adding new blocks to the course. Can you get a hole in one? With 72 levels across 8 courses, there’s loads to conquer here. And if you’ve beaten the lot, why not make up your own levels with the built in editor? You can even capture and share instant replays of your best shots (or worst failures).

Download Puzzle Putt for iOS

Download Puzzle Putt for Android

Download Puzzle Putt for Kindle

This game was designed and built with Aardman Digital. They gave me loads of freedom to design the game, which is always a lot of fun. I wanted to build something unique, and which gives the player freedom to express themselves. The idea for Puzzle Putt is based roughly around the original Trackmania game, mixed with elements from Minecraft and of course other crazy-golf games that have been around forever.

Puzzle Putt: Three StarsTechnically, this build presents a few challenges. The first is the shot preview line. I really wanted the game to be more about solving the puzzle of how to get to the hole in the fewest shots, rather than being about performing the ideal shots with skill/judgement. To help the player achieve great shots, they need an aim prediction line that gives a lot of accurate detail about where their shot is going to go before committing to it.

The only way to get a super-accurate prediction line is to compute the shot via the physics engine, before it is played. You can’t write approximations and expect them to match the built in physics beyond the most basic of shots. Unfortunately, Unity’s physics engine is tied like clockwork to the FixedUpdate calls, and can’t be computed separately to the passage of real time. In other engines, you can often take a full copy of the physics world, then allow it to run several seconds of updates all within a single frame. Then you can present the results as a preview line instantly.

As the game was developed, it appeared totally insoluble within Unity. You simply don’t have API access to the physics engine at the level required to precompute outcomes. This was a classic case of designing around the problem, rather than solving it directly. Rather than giving the player an instant preview line, the game fires invisible golf balls into the scene continuously and records where they go. The frame by frame progress of each ball is shown as a separate preview line. It gives an interesting mix of perfect prediction, but delayed, so you can’t expect to easily find that perfect ridiculous implausible bounce shot. Add to that the imperfect precision of touch inputs, and it actually gives a lovely balance between prescience and guesswork.

Unity’s physics engine presented another challenge too. Since the levels are made from lots of separate blocks, the simple approach is to build them from lots of separate prefabs, each with their own built in collider to form the ground. The problem is that where two flat colliders meet, there’s a little seam. When a ball rolls across that seam, it sometimes catches on it and flips up into the air. This is a disaster for the gameplay since it gives unexpected bounces on smooth ground, and lets people break the level design by hopping over things they shouldn’t be able to.

The solution was fairly involved, and took a few iterations to get right. First, I built a separate mesh collider for each separate wall of each individual block. When the level is started, it iterates through all the walls and searches for overlapping identical walls. So two square blocks side by side will share a wall between them, and that can be removed. This helps, but doesn’t solve the problem completely.

The algorithm for comparing walls is actually pretty simple. Grab the verts of the wall being considered, convert them to world coords, then compare to the verts of each other wall. If you can match off every vert with one from the other wall, both walls are redundant and can be removed. In this game, you only have to consider walls from the neighbouring blocks (including above and below), since any other blocks will be too far away to have overlapping walls.

The next iteration performed the wall removal as above, then also iterated through all the remaining mesh colliders and stitches them into one big mesh. Well, two big meshes – one for normal grass, and one with different physical properties for mud.

The algorithm for stitching colliders together feels more complex at first, but actually it’s pretty simple again. You generate a new empty mesh with no verts, which will be the output mesh. Then you iterate through all the input meshes (after removing redundant walls) in turn. For each one, consider all of it’s triangles in turn. For each triangle, translate the verts into world coords and see if a vert already exists in the output mesh. If it doesn’t, copy it in. If it does, remember which one it is. Create a triangle in the output mesh that matches the one from the input triangle, and move on to the next. Once you’ve worked through all triangles from all meshes, you’ve got one big mesh with shared verts in all the right places. The physics engine now gives perfect rolling behaviour across the seams, which is a total solution to the problem…

…except it’s slow. 10 seconds or so on a typical level, and 30 on a big one. I did consider simply hiding the mesh creation when the level was first entered, but you have to allow for the player’s edits. That means you have to run it at the point where the player hits “play”, and 10 seconds is totally unacceptable there. I considered computing the fixed part of the mesh at the start of the level, then adding in the user blocks later. Turns out that doesn’t let you remove redundant walls around the edges though, since they’ve already been stitched into the main big mesh.

I was including collider geometry as a GameObject within each block, and physically deleting it from the world. That works, but it turns out that creating and deleting all those GameObjects costs quite a bit of CPU time. The solution was to remove them from the prefabs, and instead load example wall meshes from Resources into memory. There’s a list of which ones each block requires, and it just uses the data from the shared meshes over and over, rather than creating/deleting them. Sounds obvious, but it does complicate the workflow of creating a block quite a bit, and you don’t get automatic translations between the local and global coords system when working through the mesh data.

The final technical issue was the Everyplay plugin. This is a lovely bit of software that lets people record their gameplay, then share it with other players. So if you pull off a spectacular trick shot, you can send it to your friends, show off with other players and so on. The plugin integrates pretty easily, and works fantastic on most Android devices. On some Androids however it doesn’t work, and worse than that, it totally breaks the rendering of the game, displaying a black screen. Everyplay is supposed to cope with this by asking a server if the current device is compatible or not, but it doesn’t seem to know the answer. In the end, we made a simple white-list of devices where it worked, and left it at that. When new devices are launched, we’ll have to update the game to include them, but that’s better than running the risk of ruining people’s games entirely.

Hero Squad 2

Sunday, June 29th, 2014

HeroSquad2Race to the emergencies as fast as you can in this open-world driving game. This is a sequel to the original popular Hero Squad game, with all new missions, new gameplay mechanics and a new continuous score-attack mode.

 

Play Hero Squad 2: Rapid Response in your browser.

Wizards vs Aliens: The Eye of Bashtarr

Sunday, June 29th, 2014

WizardsVsAliensTest your platforming and puzzling skills in this game for the CBBC show Wizards vs Aliens, built by Aardman Digital. Use each character’s strange and unusual powers of magic and science to levitate rocks, hack enemy sentries, control the environment, slow time and more.

Play Wizards vs Aliens in your browser.

I worked on level design, UI and back-end server integration on this project, with the talented Tom Milner as lead developer.

Home Sheep Home 2: Steam

Wednesday, February 26th, 2014

hsh2_steamOnce upon a time I made a cute browser game called Home Sheep Home for Aardman Animations. It was a surprise hit, so we built a sequel, Home Sheep Home 2: A Little Epic. We released this on the web in low-res episodes, and on iOS as an app, and as a glorious super-high-res packed-with-extras Windows desktop version.

But this was the little game that dreamt of being on Steam, the PC’s premier download platform. It’s taken years to get there, but finally it has made it!  And in style too, with tons of Steam achievements and lovely Steam cloud saves too. So what are you waiting for? Go and get it immediately! Especially if you enjoyed Thomas Was Alone which takes much of its gameplay mechanics from this game.

Buy on Steam

White-Out

Wednesday, February 26th, 2014

White-OutTest your skills in this multiplayer paint flicking game made in just 48 hours at Global Game Jam 2014. Play White-Out by yourself for , with a friend, or in a group of four people all on the same device. Suitable for young children and adults alike. If you can flick your finger, you can play this!

No longer available on iPad due to Apple purposely obsoleting software just because it’s old. I can recommend many good Android devices!

Play FREE on you Android tablet

This app was featured on the Mac Rumours website. Thanks guys!

Built with Unity3D

unity-logo