Author: Emanuele Feronato
-
Build a HTML5 game like Geometry Dash using Phaser 4 and TypeScript, with a simple custom physics engine
The cube in Geometry Dash always lands perfectly square. It's not rigid-body physics: the spin is purely cosmetic. The hitbox never rotates, and the game snaps the angle to 90 degrees on landing. I rebuilt it as an HTML5 game in Phaser 4 + TypeScript, with my own physics engine.
-
20 years of blogging: a two-decade journey through web gaming history
Today, my blog turns 20! From the golden age of Adobe Flash in 2006 to WebGPU and 3D browsers in 2026, it’s been a wild ride. No self-praise today, just a huge THANK YOU to the dev community and a quick trip down web gaming memory lane
-
HTML5 game Spears N’ Coins with Phaser 4.1 and TypeScript: a tiny endless runner like Dashy Panda
Spears N' Coins is a HTML5 fast-paced endless runner powered by Phaser 4 and TypeScript featuring procedural generation and pixel art parallax scrolling starting from the Create Phaser Game app. Full source code available.
-
Getting Started with Phaser 4: Vite + TypeScript Setup, using the official Create Game App
Phaser 4 has arrived, bringing a fresh foundation for modern web game development. Learn to set up a brand new project using the official Create Game App, powered by Vite and TypeScript, and walk through the essential structure to get your first game up and running quickly.
-
Phaser 4 HTML5 SameGame powered by samegame-engine, a headless TypeScript class
Complete HTML5 SameGame clone built with Phaser 4, powered by a fully headless TypeScript game engine. It features a clean separation between logic and rendering, reusable core mechanics, and an efficient implementation based on object pooling and delta-driven animations.
-
Build a highly customizable mobile friendly HTML5 level selection screen controllable by tap, swipe and mouse wheel, written in TypeScript and powered by Phaser
A clean, fully paginated level selection system built in Phaser 4 with TypeScript, featuring horizontal drag, direction-aware snap, mouse wheel navigation and event-driven thumbnails. The UI components are fully decoupled from scene logic and designed with clear state separation. Complete source code available for download, ready to use and extend.
-
Simulating rotating gravity and perimeter based movement like in “Be Brave, Barb” game with Phaser, without any physics engine
HTML5 platformer engine inspired by Be Brave, Barb, built without physics. Hero walks along a dynamically generated perimeter, switches between four gravity directions, and reattaches to surfaces using continuous collision detection. Everything is driven by pure geometry, vector math, and segment intersection.
-
From Dense Grids to Clean Perimeters: Extracting Shapes with Greedy Geometry – Tiled and JavaScript example
A dense grid hides simple shapes. This example uses a greedy algorithm to extract the true external perimeter from binary grid data, removing all internal edges and collapsing hundreds of cells into a clean geometric outline. Everything that follows, such as rendering, collision and movement, becomes simpler once the grid turns into a shape.
-
Reducing Tiled Maps to Optimized Collision Rectangles with Greedy Merging
A Tiled collision layer is just a dense grid of cells. By applying greedy rectangle merging, that grid can be reduced to a small set of non-overlapping rectangles that describe the exact same area, but are far cheaper to use at runtime. Full JavaScript example available with source code.
-
Greedy Rectangle Merging: Turning Binary Grids into Simple Geometry – JavaScript example
Greedy rectangle merging is a practical way to simplify dense binary grids into a small set of axis-aligned rectangles. By making local decisions and never backtracking, the same area can be represented with far fewer geometric primitives, revealing how different expansion orders lead to different results. JavaScript source code available.
-
HTML5 prototype of a planet gravity platform using Phaser 4 and Arcade physics, written in TypeScript
A gravity-rotating movement system built with Phaser 4 and TypeScript, where a character walks around floating terrain by dynamically reassigning gravity instead of falling off edges. Movement and jumping are defined in surface space rather than world space, allowing seamless transitions around corners while keeping Arcade Physics fully in control.
-
Understanding QuadTrees: organizing space to reduce unnecessary work
QuadTrees organize space instead of objects, allowing spatial queries to skip large, irrelevant areas with a single check. This makes proximity searches and collision detection far more efficient in games and interactive applications. In this article, we explore how QuadTrees work and visualize them with a practical DOM-based example.