Free game engines and the games they make

Many of the games on FredyGames do not come from an old CD or a dusty floppy disk. They were made in recent years with free game engines, the tools hobbyists, students and small studios use to build games without starting from nothing. This guide is for people who play, not for people who program. It explains what an engine is, how a game made with one ends up in a web page, why the first load can take a while, and what "open source" means for the game you are about to click on, with a game or two for each engine we host.

What a game engine is

Every game needs the same machinery: draw pictures, play sounds, read the keyboard and gamepad, keep time, detect when two things touch. A game engine is a ready-made version of it. The author writes the part that makes the game theirs (levels, rules, art, jokes) and the engine does the rest.

Some engines have an editor where you build scenes with the mouse; others are libraries called from code; some specialise, like visual novel engines, which are all about text, pictures and choices.

A free or open-source engine is one whose own code is published under a licence that lets anyone use it, study it, change it and share it, including for games that are sold.

From the author's computer to your browser

Browsers speak JavaScript natively. Engines are mostly written in other languages: C, C++, Rust, Go, Zig, Python. To run them in a web page, someone has to translate them, and that is the job of WebAssembly.

WebAssembly (often shortened to wasm) is a compact format for programs that every major browser can run, at a speed much closer to a desktop application than ordinary web scripts. The engine and the game are compiled into a wasm file, which goes on a web page together with a little JavaScript that connects it to your screen, speakers and keyboard. Nothing is installed, and when you close the tab it is gone.

Engines written in Python do it differently. Browsers do not run Python, so the page first downloads a copy of Python itself, compiled to WebAssembly, and the game's Python files run on top of it. That is how the pygame and Pyxel games below work.

Why the first load takes a while

Before the first frame, your browser has to download the engine (for some engines, a whole language runtime too) and the game's data, then prepare all of it. The sizes quoted on our game pages show the range: Cube Collection is about 5 MB, Dodge the Creeps about 9 MB, Pinch Points about 18 MB, SolarWolf about 23 MB (mostly the Python runtime and the pygame library), AAAAXY about 36 MB and Godot Open RPG about 55 MB.

If the screen sits on a loading bar, it is working. Nothing is downloaded until you press Play, so browsing the site costs you no data, and once the files are in your browser's cache the next visit is quicker. Most of these games expect a keyboard, and each game page says so.

What "open source" means for the game you play

Two licences are in play every time: the engine's and the game's. They are separate. A game can be released under one licence on top of an engine under another, and both have to allow us to host it, including on a site that shows advertising.

With permissive licences such as MIT, ISC, Apache-2.0 or zlib, the main condition is to keep the copyright notice and licence text. With copyleft licences such as the GPL, LGPL or AGPL, whoever distributes the program must also make its source code available. When a game or engine needs that, we publish the exact source of the build you are playing next to it, and the game page links to it. You do not need to read it to play, but it means the game is not a black box: anyone can see what it does or build their own copy.

We explain how we decide what to host in how FredyGames checks every game's licence, and every licence, notice and source archive is listed on the Licenses page. The rest of this guide is about the engines themselves.

The engines on FredyGames

Godot

Godot is a free engine with a full editor, used for both 2D and 3D games. It is under the MIT licence, and its games are usually written in its own scripting language, GDScript.

  • Dodge the Creeps is the smallest complete Godot game you could ask for. It is the finished project from "Your first 2D game", the tutorial in Godot's documentation. You steer a little character around one room and stay away from creeps that cross the screen in straight lines; the score is how many seconds you survive. It is a game for two minutes, or for an hour if you are chasing your own record.
  • Godot Open RPG is a short, turn-based role-playing demo by GDQuest. You walk around a pixel-art forest and town, talk to everyone, and fight monsters in menu-driven battles where you choose all your actions first and the round then plays out. It is a short work in progress, about as long as a coffee, and a 55 MB download.

Also made with Godot is Librerama, an arcade of 24 micro-games that last a few seconds each.

LÖVE

LÖVE is a framework for 2D games written in the Lua language, released under the zlib licence. It has no editor: authors write code and put their files in a folder, which LÖVE then runs. On FredyGames we run LÖVE games with a copy of LÖVE compiled for the browser.

  • Neon Phase is an exploration platformer made in about nine days for a game jam. You play a factory employee, a goat, who has lost their keys and has to find them before the shift ends, talking to a cast of odd neighbours and with a chatty little upgrade chip called Chip riding along. It takes a bit over half an hour, and the code (ISC) and the art and music (CC BY-SA 4.0) are all free.

pygame

pygame is a library for making games in Python. The version we use is pygame-ce, a community edition under the LGPL 2.1. To run the games in a browser we use pygbag, a tool that packages Python, pygame and the game's files together for WebAssembly. Loading Python first makes these games start more slowly.

  • SolarWolf is a fast arcade game of collecting and dodging. Your ship never stops: you pick a direction and it keeps going, and you fly over every power cube on the screen while the guardians at the edges shoot at you. It has sixty levels, and clearing a level before the red timer runs out skips the next one. It was made by Pete Shinners and first appeared in 2004.

Many more pygame games are on the PC platform page.

Pyxel

Pyxel is a game engine for Python, under the MIT licence, built for retro-style games with chunky pixels and simple sound. Like the pygame games, Pyxel games run through a copy of Python for WebAssembly.

  • GO FROG is a little game about a frog swimming up a rainy river. You have two controls, left and right, and each tap hops the frog forward and a bit to that side while the current drags it back. Rocks come down the river, and the score is how far you get. It is made for short tries and works with a mouse click or a finger as well as the keyboard.

Ren'Py

Ren'Py is an engine for visual novels, stories told with text, pictures, music and choices, and it is released under the MIT licence with some parts under the LGPL. You read, click to continue, and now and then choose what to say or do.

  • The Question is the demo that ships with Ren'Py itself: a university student who has to find the courage to ask his childhood friend something. It has two choices, two endings and takes about five minutes. If you are new to the genre, begin here.
  • Learn to Code RPG is a much longer game by freeCodeCamp.org. You play Lydia, who teaches herself programming and aims for a job as a developer. Each day you decide whether to study, work a shift, see friends or practise with quiz questions, and according to the authors the story has six different endings. Save before big choices.

Bevy

Bevy is a game engine for the Rust language. Its games are written as Rust programs, in code rather than in a visual editor. Bevy games can be compiled to WebAssembly, so they run in a web page.

  • Pinch Points is a puzzle game on a beach: crabs walk forward in straight lines, and you place arrows in the sand to steer them into your sandcastle before the tide comes back. There are a hundred campaign levels and a versus mode for two to six players.
  • Cube Collection is a quiet puzzle game where you slide every green cube at once and colours eat each other like rock, paper and scissors. It has 17 levels and no sound.

Ebitengine

Ebitengine is a 2D game engine for the Go language. Its games are compiled to WebAssembly directly.

  • AAAAXY is a platformer in impossible spaces: rooms loop, overlap and fold into each other, and you find your way by remembering landmarks, not by drawing a map. A first playthrough takes roughly four to six hours.
  • Linefire is a twin-stick shooter drawn in glowing vector lines, with rock your shots can dig through. Its author says it is still in pre-alpha, so expect rough edges.

raylib

raylib is a small library for making games in C, under the zlib licence, with bindings for many other languages.

  • Apple Master Revived is a catching game written in Zig with raylib. You slide a basket under falling apples: ripe ones give points and health, wormy ones must be left to fall, and your health bar drains by itself all the time.
  • Super Mango is a pixel-art platformer written in plain C with raylib, with spiders, saws and swinging axes across three stages. Its author also uses the project to teach C.

Flutter

Flutter is a toolkit for building apps in the Dart language, for phones, desktops and the web. Game developers use it with Flame, a game library for Flutter, and the result can be compiled for the web too.

  • Ricochlime is a ricochet puzzle. You aim a volley of bullets at a creeping field of tree-stump monsters and use the walls to hit several at once. It is under the AGPL, so its complete source is published with the build.
  • Xeonjia is an ice-sliding puzzle RPG with 166 maps: once you start sliding you cannot stop until something gets in your way, so each map is a small riddle about where to push off from.

The old games run on free software too

The classics on the site run on the same idea. Our DOS games run in js-dos, which is DOSBox compiled for the browser, and the point-and-click adventures run in ScummVM, which replaces the engine of the original game with a modern, free one. Beneath a Steel Sky is the best example: the game's data is the original, and ScummVM runs it. These emulators are licensed under the GPL, so their source code is hosted too. Our guides to classic DOS games and playing retro games in your browser cover them.

Tips for playing

Click inside the game once: many need that to receive the keyboard, and browsers only allow sound after you have interacted with the page. Check the controls on the game page, because these games do not share a key layout. And remember that saves stay in your browser, on this computer, until you clear the site's data.

Where to start

For something that opens fast and rewards a few minutes, play Dodge the Creeps or GO FROG. For a puzzle with a lot of cleverness in a small package, try Pinch Points. If you have an hour and like platformers, AAAAXY is the one to sink an evening into, and Neon Phase is a friendly half hour. For a story, read The Question in five minutes and, if it hooks you, move on to Learn to Code RPG. And for a fast arcade game with sixty levels, SolarWolf.

Games in this guide

More guides

All guides →