Headshot of Jacob Jones.

Jungle Jim Devlogs

I am passionate about documenting what I have learned and writing about my experiences creating games!

The Base Movement of Jim

March 6th, 2026

Design devlog about the my philosophies and decisions behind the base movement mechanics of Super Jungle Jim.

Thumbnail image for devlog

Creating End of Level Cinematic

January 6th, 2025

In-depth documentation about my process, thoughts, and lessons learned as I created this cinematic. In particular, my developmental planning process shines through here.

Thumbnail image for devlog

The Gameplay Loop of Jungle Jim

November 14th, 2024

Writing about the gameplay loop I've created for the game. I discuss theory for creating a strong core game loop and connect them to examples in Jungle Jim.

Thumbnail image for devlog

First Time Leading a Project

November 12th, 2024

Personal narrative of my experiences leading and managing a team for the first time. I discuss issues I encountered, as well as how I resolved them.

Teaching the Player Without Intrusion - Creating The Tutorial

September 11th, 2024

In-depth documentation about my process creating the tutorial area of the game. I aimed to create an unobtrusive experience that gave players a space to learn at their own discretion.

The Players' Lens - Designing the Camera System

October 13rd, 2024

In-depth documentation about the camera system created for the game. I discuss the numerous features, as well as the design decision behind their implementation.

Headshot of Jacob Jones.

Misc. Devlogs

I am passionate about documenting what I have learned and writing about my experiences creating games! I like to take a retrospective style- accumulating my experiences and writing about them in longer-form devlog posts.

Caislean Paranormal: Player Resources and Enemies

November 11th, 2024

Thumbnail image for devlog

Pizza Panic Post-Mortem: What a Second Iterative Loop Would Entail

May 2nd, 2024

Thumbnail image for devlog

Caislean Paranormal Post-Mortem: My First Failures

May 4th, 2024

Frustum of Truth: Iterations of the Formal Loop

December 6th, 2023

Thumbnail image for devlog

Frustum of Truth: A Look into the Tech

December 6th, 2023

Thumbnail image for devlog

Frustum of Truth: Themes and Messages

December 6th, 2023

Thumbnail image for devlog

Character, Camera, and Controls

May 22nd, 2026

put overview here about it all

Non-Magnetic Physics


Magnetic Forces

The core premise of the game was that the player controls a dipole magnet, rotating it around a central pivot to manipulate their velocity and traverse the level. Because a significant portion of the movement is entirely driven by magnetic interaction, perfecting the system became an important part of the character controls.My first implementation was intentionally simple. It applied force along the direction between two magnets’ normal vectors, with the magnitude attenuated by distance. This was enough to validate the core concept, but the system lacked both simulation depth and gameplay intent.

Basic First Implementation

Once the first implementation proved viable, I looked into how magnetic forces behave in the real world. I looked into the Lorentz Force Formula, which describes how electric charges interact with magnetic fields. In reality, magnetic fields emerge from enormous numbers of moving electric charges, but fully simulating that behavior would have been unnecessarily expensive and overly complex for the needs of the game. Instead, I simplified each magnet into a single representative charge while preserving the physical relationships most relevant to gameplay.The most important takeaway from this research was the relationship between force and velocity. In real electromagnetic systems, faster-moving charges experience stronger interactions due to a faster rate of transfer. This concept translated naturally into the game, since players are constantly entering magnetic fields at different speeds and angles. Basically, more relative velocity produces more force.Using these principles as a reference, I rewrote the magnetic force calculations to more closely resemble real electromagnetic behavior. It was certainly more realistic...but that was a bit of a problem. At this point, the formula was not altered in any way to accomodate gameplay. We wanted the game to have a sense of finesse where players could master the controls over time. The reality is that physics is hard to predict and not always fun to control. Players struggled to control their left and right velocities and their movements would feel sluggish when trying to change directions. Other features were added to assist with player control, but I still wanted to adjust the formula to better accomodate gameplay.The final implementation focused on preserving the physical inspiration of the system while shaping it around player readability and responsiveness. I added padding and clamping to create consistency. This was especially important for the distance attenuation. A mathematically accurate inverse-square force created dramatic acceleration near magnet surfaces, which made platforming feel difficult to get a read on during fast gameplay sections. To improve horizontal control, I also incorporated a 2D cross product between the player magnet’s velocity and the target magnet’s normal vector. This allowed the force magnitude to scale based on how perpendicular the player’s movement was relative to the magnetic surface, giving players more deliberate control over lateral movement while inside a magnetic field. Not pictured, I also do an occlusion check between the two magnet surfaces. This occlusion check is between 0 and 1 and is multiplied with the final result.By the end of development, the system had evolved from a simple force simulation into a movement system that was better designed for predictability, responsiveness, and player mastery. Although the final implementation still draws heavily from real-world principles, it has been tweaked to provide a better gameplay experience.

Headshot of Jacob Jones.
Headshot of Jacob Jones.

Final Magnetic Force Implementation


Collision Querying

Throughout gameplay, the player is constantly changing between states that affect their controls. On neutral surfaces the player should be able to push themselves off of surfaces by rotating; however, on magnetic surfaces this behavior is not desired. The project has numerous collision queries to provide information for state changes and provide limitations that simplify the controls.In order to detect neutral surfaces, I first use a capsule collider to query for any overlapping surfaces flagged as neutral. Then, I do a raycast between the closest point along the neutral surface and the closest point along the player's collision. This is done to prevent conflicts when moving over the area where neutral surfaces transition into magnetic ones. Whichever end of the player is closest to either surface dictates which state the player is in.

Headshot of Jacob Jones.

The player is a dipole, meaning both ends of the player has a different magnetic charge than the other. Early implementations ran into problems where players laying sideways or attempting to rotate in a magnetic field would see unpredicatable velocities. The reason for this, was that both magnets had a radius of effect that was unrestricted by direction. To create more predicatable movement and allow more intentional control, dead zones were put into place for each magnet's radius of effect. A dot product is checked before calculating any magnetic forces, and if it fails a certain threshold it is disregarded and skipped. Additionally, the dot product is used in affecting the force strength. This allows players to use the edges of their range of influence to get smaller boosts, as well as smoothing over the transition between net zero forces and repel magnetic forces.

Headshot of Jacob Jones.

The neutral player state actually requires additional queries. One of the most difficult issues to solve with the movement was a logistical one. The player moves by rotating, as that is what pushes them against the ground. However, this comes with some problems.If players rotated extremely fast into the ground or walls, the physics system would output extremely large velocities. Slowing down the torque prevents this but also makes the player unable to move much at all. It also prevents the player from being able to react with quick rotations within magnetic fields. The solution involves dynamically changing the player's torque based on results from queries.My solution is simple, but has proved to be fairly effective. Raycasts are performed on the lateral vectors of a magnets direction. If both of these raycasts detect a surface, the players torque is slowed down. When only one or none of these raycasts return a hit, the torque interpolates back to its regular speed.

Headshot of Jacob Jones.

Movement Options


Camera

Headshot of Jacob Jones.

Jacob Jones

Game Designer

You can message me through my email using the form below. Or if you rather, you can directly email me at my address.