Skip to the content

Emanuele Feronato

Italian geek and PROgrammer
Check my
101 games challenge!
I write about game development, HTML5, Phaser, JavaScript, TypeScript, Box2D, Flash and more fun stuff since 2006

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.

Talking about Javascript.

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.

Talking about Javascript.

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.

Talking about Game development, HTML5, Javascript, Phaser and TypeScript.

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.

Talking about Javascript.

Understanding how to use Mulberry32 to achieve deterministic randomness in JavaScript

Randomness is rarely truly random in games. This article explains how Mulberry32 turns a single seed into a fully reproducible sequence of values, with a minimal JavaScript demo and real-world videogame applications.

Talking about Javascript.

Text-to-Speech on your PC: running Chatterbox Turbo locally on Windows – clean setup + known pitfalls

Running modern text-to-speech models locally on Windows is anything but trivial. This step-by-step guide walks through a clean Chatterbox Turbo setup, from Python and virtual environments to PyTorch pitfalls, showing how to get reliable audio output without guesswork.

Talking about HTML5.

JavaScript Input Buffering: a simple project to show delayed keyboard events

In this post I’ll show you a simple but powerful JavaScript experiment that visualizes keyboard input in real time and with a one-second delay. It’s a small project built with pure HTML, CSS, and JavaScript, designed to teach essential concepts like keydown/keyup listeners, precise input timing, and requestAnimationFrame loops; the same fundamentals used in games, replays, and input debugging tools.

Talking about Javascript.

JavaScript + CSS 3D Wheel of Fortune

Build a fully 3D Wheel of Fortune using nothing but HTML, CSS and JavaScript, with pure geometry and a few clever transforms. Watch it spin in real 3D and see how a handful of divs can create a smooth, random wheel animation.

Talking about Wheel of Fortune game, Css, Html and Javascript.

Pure TypeScript class to handle math draw games: build your HTML5 math game in a matter of minutes – Phaser example included

Build your own HTML5 draw and sum game in just minutes: the DrawSum class is a standalone, dependency-free TypeScript class that manages the board, scoring, chain logic, and even calculates sprite animations. Phaser example included.

Talking about Draw and Sum game, Game development, HTML5, Javascript, Phaser and TypeScript.

Build a HTML5 “Helix Jump” prototype with Three.js and TypeScript – Step 4: scoring, animated CSS background and platforms fading away

In the fourth step of the Helix Jump HTML5 prototype with Three.js and TypeScript, I added a clean CSS-based score display, a subtle animated background using only CSS, and made destroyed platforms fade out and fly away with GSAP. These visual touches make the game feel more alive, and as always, you get the full line-by-line commented source code for free.

Talking about Helix Jump game, 3D, Game development, HTML5, Javascript and TypeScript.

Click when Red – learn JavaScript and CSS by building a reflex game in a single HTML page

Learn how to build a complete reflex game using only HTML, CSS, and vanilla JavaScript — all in a single file. No frameworks, no dependencies, just pure code to teach you the real fundamentals of web development. Perfect for beginners who want to understand how a web page works, how to react to user input, and how to write game logic from scratch.

Talking about Click when Red game, Game development and Javascript.

Build a HTML5 “Helix Jump” prototype with Three.js and TypeScript – Step 3: adding spikes and using GSAP for camera tweening

In this third step of my Helix Jump prototype with Three.js and TypeScript, I’m adding deadly spikes and animating the camera using GSAP for smoother transitions. As always, I’m sharing the full source code, commented line by line, completely free.

Talking about Helix Jump game, 3D, Game development, HTML5, Javascript and TypeScript.
Page 1 / 159FirstNextLast

101
Games Challenge
I will build 101 games as a solo developer

During these years, I published 227 explained game prototypes, along with source code: 1+2=3, 100 rounds, 10000000, 2 Cars, 2048, A Blocky Christmas, A Jumping Block, A Life of Logic, Angry Birds, Angry Birds Space, Artillery, Astro-PANIC!, Avoider, Back to Square One, Ball Game, Ball vs Ball, Ball: Revamped, Balloon Invasion, BallPusher, Ballz, Bar Balance, Bejeweled, Biggification, Block it, Blockage, Bloons, Boids, Bombuzal, Boom Dots, Bouncing Ball, Bouncing Ball 2, Bouncy Light, BoxHead, Breakout, Bricks, Bubble Chaos, Bubbles 2, Card Game, Castle Ramble, Chronotron, Circle Chain, Circle Path, Circle Race, Circular endless runner, Cirplosion, Click when Red, CLOCKS - The Game, Color Hit, Color Jump, ColorFill, Columns, Concentration, Crossy Road, Crush the Castle, Cube Jump, CubesOut, Dash N Blast, Dashy Panda, Deflection, Diamond Digger Saga, Don't touch the spikes, Dots, Down The Mountain, Drag and Match, Draw and Sum, Draw Game, Drop Wizard, DROP'd, Dudeski, Dungeon Raid, Educational Game, Elasticity, Endless Runner, Erase Box, Eskiv, Farm Heroes Saga, Filler, Flappy Bird, Fling, Flipping Legend, Floaty Light, Fuse Ballz, GearTaker, Gem Sweeper, Globe, Goat Rider, Gold Miner, Golf Dash, Grindstone, GuessNext, Helicopter, Helix Jump, Hero Emblems, Hero Slide, Hexagonal Tiles, HookPod, Hop Hop Hop Underwater, Horizontal Endless Runner, Hundreds, Hungry Hero, Hurry it's Christmas, InkTd, Input Delay, Iromeku, Jet Set Willy, Jigsaw Game, Knife Hit, Knightfall, Legends of Runeterra, Lep's World, Line Rider, Lumines, Magick, MagOrMin, Mass Attack, Math Game, Maze, Meeblings, Memdot, Metro Siberia Underground, Mike Dangers, Mikey Hooks, Mini Archer, Nano War, Nodes, o:anquan, One Button Game, One Tap RPG, Ononmin, Pacco, Perfect Square!, Perfectionism, Phyballs, Pixel Purge, PixelField, Planet Revenge, Plants Vs Zombies, Platform, Platform game, Platformer, Plus+Plus, Pocket Snap, Poker, Pool, Pop the Lock, Pop to Save, Poux, Pudi, Pumpkin Story, Puppet Bird, Pushori, Pyramids of Ra, qomp, Quick Switch, Racing, Radical, Rebuild Chile, Renju, Rise Above, Risky Road, Roguelike, Roly Poly, Run Around, Rush Hour, SameGame, SamePhysics, Security, Serious Scramblers, Shrink it, Sling, Slingy, Snowflakes, Sokoban, Space Checkers, Space is Key, Spellfall, Spinny Gun, Splitter, Spring Ninja, Sproing, Stabilize!, Stack, Stairs, Stick Hero, String Avoider, Stringy, Sudoku, Super Mario Bros, Surfingers, Survival Horror, Talesworth Adventure, Teeter Up, Tetris, The Impossible Line, The Moops - Combos of Joy, The Next Arrow, Threes, Tic Tac Toe, Timberman, Tiny Wings, Tipsy Tower, Toony, Totem Destroyer, Tower Defense, Trailblazer, Trick Shot, Tunnelball, Turn, Turnellio, TwinSpin, Vampire Survivors, vvvvvv, Warp Shift, Watermelon Game, Way of an Idea, Whack a Creep, Wheel of Fortune, Where's my Water, Wish Upon a Star, Word Game, Wordle, Worms, Yanga, Yeah Bunny, Zhed, zNumbers, Zuma

© 2026 Emanuele Feronato
Manage Consent
To provide the best experiences, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.
Functional Always active
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferences
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistics
The technical storage or access that is used exclusively for statistical purposes. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
Manage options Manage services Manage {vendor_count} vendors Read more about these purposes
View preferences
{title} {title} {title}