All projects

2D Pixel Art Platformer

Everbound

A fantasy platformer in pixel art, built with Godot: run and jump through a cave, collect coins, avoid enemies and traps, and find crystal shards. A playable prototype that runs directly in the browser, with keyboard or touch.

Status
Prototype
Stack
Godot 4.5 · GDScript · 2D Game Development · Pixel Art
Gameplay scene from Everbound: the player character collects coins on a platform above a field of spikes, with the hearts and coin counter in the top right

At a glance

  • Godot 4.5engine, programmed in GDScript
  • Webplayable in the browser, with nothing to install
  • Keyboard & touchcontrols on a computer and on a phone
  • ≈ 43 MBdownload on the first visit

Overview

Everbound is a 2D platformer with a fantasy theme. The player character runs and jumps through a cave, collects coins, avoids enemies and traps, and finds crystal shards. The project combines programming, level design, pixel art and game mechanics. It is a playable prototype, not a finished game. The browser version is published and can be played with a keyboard or by touch.

Features

Movement & combat

  • Running and jumping with custom movement physics and gravity
  • A melee attack with its own hitbox
  • Three hearts, knockback when hit, and respawning at the starting point

Enemies & hazards

  • Bats as enemies
  • Spikes and arrows as traps

Collectibles

  • Coins with a counter in the display
  • Chests that release crystal shards

Levels & progress

  • Moving platforms and jump pads
  • A camera that follows the player, and parallax backgrounds
  • Level transitions with fades
  • A completion screen that combines coins, time and deaths into a score

Menus & controls

  • A main menu and settings with a volume slider
  • Keyboard or touch buttons that appear on touch devices and disappear when a key is pressed

Screenshots

Problem

A platformer looks simple but consists of many systems that have to fit together: movement, collisions, health, enemies, collectibles, camera, menus and sound. The aim of the project was to build these systems and connect them into something playable.

Solution

The player character has its own movement physics with gravity and jumping, a melee attack and three hearts. A hit knocks it back, and with no hearts left it restarts from the starting point. The levels contain coins, tracked by a counter, and chests that release crystal shards. Bats, spikes and arrows make the way harder, while moving platforms and jump pads add variety. At the end of a level, a completion screen combines coins, time and deaths into a score.

Technical implementation

The game is built with Godot 4.5 and GDScript. Every game element is its own scene with its own script, for example the player, a coin, a chest, a bat or a platform. Levels assemble these scenes and use a TileMap for the terrain. Elements talk to each other through signals and groups: a hazard reports a touch, and the player reacts to it. The player is a CharacterBody2D with animations for running, jumping, attacking, being hit and dying. Scene transitions and music fade in and out with tweens. For the browser, the project is exported as a web build; this release was prepared with assistance from Claude Code.

Challenges

The browser version needed adjustments of its own. A "Quit" button makes no sense in a browser tab and froze the game there, so it is hidden in the web build. One signal was connected twice, once in the editor and once in a script, which caused error messages whenever a level loaded. And the touch buttons had to be visible on a phone without getting in the way of keyboard play: they now appear on touch devices and on the first touch of the screen, and disappear as soon as a key is pressed.

Limitations

Everbound is a prototype. In the browser version, the beginning of the first level has been tested; further areas exist in the project but have not been fully checked, and a third level is only an empty scene so far. The game does not save progress. The first visit downloads about 43 MB. Testing was done in a Chromium browser; real phones and other browsers have not been tested yet.

Lessons learned

The project shows that a game consists of many small systems that only become fun together, and that giving each element its own scene keeps those systems manageable. It also shows that publishing in the browser is a step of its own: what works on the desktop has to be checked again there.