Neutron v2 Devblog: New Features, New Visuals

Since my last post introducing the Neutron v2 game engine, I’ve been hard at work refining the architecture, adding new features, and pushing the visual fidelity of the engine. Here’s a look at what’s new, with some fresh screenshots from recent builds:

Engine output 2 Engine output 3

What’s New?

1. Enhanced Rendering Pipeline

  • Improved batching and z-depth sorting for smoother, more layered visuals
  • Added support for custom shaders, enabling per-pixel effects and post-processing
  • More flexible camera and coordinate systems for dynamic scenes

2. Modular GameObject System

  • Expanded the interface-driven design: now you can mix and match rendering, physics, input, and collision behaviors even more easily
  • Example: a Player object can implement ObjectRenderer, Collidable, and KeyboardInput for full control

3. Physics & Collision Upgrades

  • Added swept AABB collision detection for more accurate, high-speed interactions
  • New collision callbacks: onEnter, duringCollision, and onExit for richer gameplay logic

4. Audio & Input Improvements

  • Overlapping sound playback and tag-based audio management
  • More robust input event handling for both keyboard and mouse

Code Example: Modular GameObject

Here’s a simplified example of how you might define a player in Neutron v2:

public class Player extends GameObject implements ObjectRenderer, KeyboardInput, Collidable {
    private int x, y;
    private float vx, vy;
    
    public void play(GameCore gameCore) {
        x = 100;
        y = 100;
    }
    public void update(GameCore gameCore, float delta) {
        // Movement logic
        if (Input.isKeyDown(KeyEvent.VK_LEFT)) x -= 2;
        if (Input.isKeyDown(KeyEvent.VK_RIGHT)) x += 2;
        y += vy;
    }
    public void render(GameCore gameCore, Renderer r) {
        r.fillRect(x, y, 50, 50, Color.BLUE);
    }
    public List<Collider> getColliders() {
        return List.of(new Collider.RectangleCollider(x, y, 50, 50, "player"));
    }
    public void onEnter(GameObject other, String id) {
        // Handle collision
    }
}

I’ve compiled everything into a clone of geomtry dash you can play now. That was the 2nd image.

The engine here: Neutron v2 repo or reach out with questions or ideas.*