<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: UshkalkaMob</title>
    <description>The latest articles on Forem by UshkalkaMob (@ushkalkamob).</description>
    <link>https://forem.com/ushkalkamob</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3848932%2Fd1899a79-2189-48ca-adf7-22468df847c0.png</url>
      <title>Forem: UshkalkaMob</title>
      <link>https://forem.com/ushkalkamob</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ushkalkamob"/>
    <language>en</language>
    <item>
      <title>Designing a Physics-Based Game Around Limited Actions (libGDX + Box2D)</title>
      <dc:creator>UshkalkaMob</dc:creator>
      <pubDate>Sun, 29 Mar 2026 09:17:19 +0000</pubDate>
      <link>https://forem.com/ushkalkamob/designing-a-physics-based-game-around-limited-actions-libgdx-box2d-180m</link>
      <guid>https://forem.com/ushkalkamob/designing-a-physics-based-game-around-limited-actions-libgdx-box2d-180m</guid>
      <description>&lt;p&gt;Mobile players today don’t want to learn — they want to play.&lt;/p&gt;

&lt;p&gt;Short sessions, instant clarity, and responsive systems have become more important than depth through complexity. If a game takes too long to understand, many players leave before it even begins.&lt;/p&gt;

&lt;p&gt;With that in mind, I approached this project with a constraint:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;limit the number of actions, not the depth of the system.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This became the foundation of &lt;em&gt;Necr: Chain Reaction Physics&lt;/em&gt; — a 2D physics-driven game where each run is defined by a limited number of shots and the interactions that follow.&lt;/p&gt;




&lt;h2&gt;
  
  
  A System Built on Constraints
&lt;/h2&gt;

&lt;p&gt;Instead of designing around progression systems or upgrades, I focused on restriction.&lt;/p&gt;

&lt;p&gt;The player has a finite number of shots.&lt;br&gt;
No retries, no power-ups, no safety nets.&lt;/p&gt;

&lt;p&gt;This changes how the game is played:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;every decision matters&lt;/li&gt;
&lt;li&gt;positioning becomes critical&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is not about how much you play, but how well you understand the system.&lt;/p&gt;




&lt;h2&gt;
  
  
  From Input to Outcome
&lt;/h2&gt;

&lt;p&gt;At its core, the game is simple:&lt;/p&gt;

&lt;p&gt;You launch a projectile.&lt;br&gt;
It collides.&lt;br&gt;
Everything else follows.&lt;/p&gt;

&lt;p&gt;Enemies react, collide with each other, transfer momentum, and create a cascade of events. What looks like chaos is actually a system of small, predictable interactions.&lt;/p&gt;

&lt;p&gt;This is where &lt;strong&gt;Box2D&lt;/strong&gt; becomes essential.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building with libGDX + Box2D
&lt;/h2&gt;

&lt;p&gt;Using libGDX with Box2D allowed me to focus on interaction rather than scripting outcomes.&lt;/p&gt;

&lt;p&gt;Instead of designing fixed scenarios, I designed rules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how bodies collide&lt;/li&gt;
&lt;li&gt;how force propagates&lt;/li&gt;
&lt;li&gt;how objects respond to impact&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The challenge was not making things move — it was making them move &lt;strong&gt;in a way that feels fair&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tuning the Feel
&lt;/h2&gt;

&lt;p&gt;Physics alone is not enough. Raw simulation often feels wrong.&lt;/p&gt;

&lt;p&gt;I had to balance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;responsiveness vs realism&lt;/li&gt;
&lt;li&gt;control vs chaos&lt;/li&gt;
&lt;li&gt;clarity vs visual noise&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Key adjustments included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;limiting velocity to keep interactions readable&lt;/li&gt;
&lt;li&gt;tuning restitution to avoid excessive bouncing&lt;/li&gt;
&lt;li&gt;controlling density differences to guide movement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal was consistency — not accuracy.&lt;/p&gt;

&lt;p&gt;Players don’t need real physics.&lt;br&gt;
They need &lt;strong&gt;understandable outcomes&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Readability Over Complexity
&lt;/h2&gt;

&lt;p&gt;When multiple objects interact, the biggest risk is confusion.&lt;/p&gt;

&lt;p&gt;To avoid that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I limited how many elements can be active at once&lt;/li&gt;
&lt;li&gt;ensured visual separation between objects&lt;/li&gt;
&lt;li&gt;avoided excessive effects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even in dense situations, the player should be able to answer:&lt;br&gt;
&lt;strong&gt;“Why did this happen?”&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Designing Chain Reactions
&lt;/h2&gt;

&lt;p&gt;The most satisfying moments come from sequences, not single events.&lt;/p&gt;

&lt;p&gt;A good chain reaction has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a clear starting point&lt;/li&gt;
&lt;li&gt;visible propagation&lt;/li&gt;
&lt;li&gt;a sense of escalation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Impact → movement → collision → cascade&lt;/p&gt;

&lt;p&gt;Small variations in angle or timing create different results, which gives the system depth without adding complexity.&lt;/p&gt;




&lt;h2&gt;
  
  
  Visual Direction: Dark Fantasy as Context
&lt;/h2&gt;

&lt;p&gt;The visual style plays a functional role, not just an aesthetic one.&lt;/p&gt;

&lt;p&gt;The game is set in a &lt;strong&gt;dark fantasy environment&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;distant mountains and foggy landscapes&lt;/li&gt;
&lt;li&gt;floating monsters suspended in space&lt;/li&gt;
&lt;li&gt;a necromancer figure acting as the source of action&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The player’s projectile is presented as a &lt;strong&gt;magical orb&lt;/strong&gt;, launched by the necromancer. As it hits enemies, they collide, lose stability, and appear to fall or break apart as their health depletes.&lt;/p&gt;

&lt;p&gt;This framing serves two purposes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It gives meaning to abstract physics interactions&lt;/li&gt;
&lt;li&gt;It reinforces the idea of controlled chaos&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The world suggests conflict — but the gameplay remains clean and system-driven.&lt;/p&gt;




&lt;h2&gt;
  
  
  Minimal Systems, Maximum Focus
&lt;/h2&gt;

&lt;p&gt;There are no upgrades.&lt;br&gt;
No progression layers.&lt;br&gt;
No hidden advantages.&lt;/p&gt;

&lt;p&gt;Everything depends on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;understanding spacing&lt;/li&gt;
&lt;li&gt;predicting movement&lt;/li&gt;
&lt;li&gt;using limited actions efficiently&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This keeps the experience focused and repeatable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Session Design
&lt;/h2&gt;

&lt;p&gt;Each run is short — typically 3 to 5 minutes.&lt;/p&gt;

&lt;p&gt;This aligns with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mobile usage patterns&lt;/li&gt;
&lt;li&gt;quick retries&lt;/li&gt;
&lt;li&gt;low commitment per session&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But within that time, the player still engages with a complete system.&lt;/p&gt;




&lt;h2&gt;
  
  
  Performance Considerations
&lt;/h2&gt;

&lt;p&gt;Physics simulations can become expensive quickly.&lt;/p&gt;

&lt;p&gt;To keep performance stable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the number of active bodies is limited&lt;/li&gt;
&lt;li&gt;objects are reused where possible&lt;/li&gt;
&lt;li&gt;extreme velocities are avoided&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is a stable simulation that behaves consistently across devices.&lt;/p&gt;




&lt;h2&gt;
  
  
  What This Approach Changes
&lt;/h2&gt;

&lt;p&gt;Designing around limited actions instead of progression shifts the entire experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;failure feels immediate and fair&lt;/li&gt;
&lt;li&gt;success feels earned&lt;/li&gt;
&lt;li&gt;replayability comes from mastery, not unlocks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It creates a loop where improvement is internal, not system-driven.&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;This project started with a simple idea:&lt;br&gt;
&lt;strong&gt;reduce what the player can do, and strengthen what it means.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By combining limited actions, physics-based systems, and a restrained visual style, the goal was to create something:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;easy to understand&lt;/li&gt;
&lt;li&gt;difficult to master&lt;/li&gt;
&lt;li&gt;consistent in how it behaves&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not bigger — just more focused.&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;Google Play:&lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=com.ushkalkamob.necr.chainphysics" rel="noopener noreferrer"&gt;Necr: Chain Reaction Physics&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>indiegame</category>
      <category>libgdx</category>
      <category>androiddev</category>
    </item>
  </channel>
</rss>
