Blender Game Engine (BGE): Its History, Why Blender Removed It, and UPBGE in 2026

The Blender Game Engine let you build and play games inside Blender from 2000 until it was removed in 2018. Here's its history, its games, and how UPBGE keeps it alive in 2026.

Flat illustration of a low-poly cube, sphere and ramp on a 3D modelling grid beside connected logic nodes, representing the Blender Game Engine and UPBGE

The Blender Game Engine (BGE) was the real-time game engine built into Blender, the free 3D creation suite. From Blender 2.00 in 2000 until Blender 2.79, you could model a scene, attach game logic to it, and press P to play it in the same program. The engine was written in C++, scripted with visual logic bricks and Python, and used the Bullet physics library. Blender removed it in 2018, and Blender 2.80 shipped without it in 2019. The engine lives on in UPBGE, a community fork of Blender that keeps it alive and up to date in 2026.

This profile covers where the BGE came from, how it worked, the games made with it, why Blender removed it, and what UPBGE offers today, with a tested UPBGE Python example. Facts were checked against Blender’s and UPBGE’s source history, the Blender manual and the Apricot project pages in November 2026.

What Was the Blender Game Engine?

The Blender Game Engine was the game engine built into Blender from version 2.00 (2000) to 2.79, written in C++ and released under the GPL. Games were made inside Blender with logic bricks and Python and played in Blender or the standalone blenderplayer. Blender removed it in April 2018, before Blender 2.80. It continues today as UPBGE, a Blender fork whose latest release is UPBGE 0.50 (January 2026).

Blender Game Engine at a glance

What it wasThe game engine built into Blender (internal name Ketsji)
IntroducedBlender 2.00, August 2000 (NaN)
Last official Blender with it2.79 (2.79b, March 2018)
RemovedApril 16, 2018, before Blender 2.80 (July 2019)
Written inC++
Game logicLogic bricks (sensors, controllers, actuators) and Python
PhysicsBullet (added 2005 by Erwin Coumans)
RuntimeInside Blender or the standalone blenderplayer
LicenceGNU GPL
Known gamesYo Frankie! (2008), Sintel The Game
SuccessorUPBGE 0.50 (January 2026), a Blender 5.0-based fork

From NaN to Open Source

Blender began as an in-house tool at the Dutch animation studio NeoGeo. In 1998, Ton Roosendaal founded Not a Number (NaN) to develop and sell it. With venture funding in 2000, NaN released Blender 2.00 in August 2000, which, in the words of the Blender manual, “added the integration of a game engine to the 3D application” (the Blender manual’s history page). Internally, the engine was called Ketsji.

NaN didn’t survive, and Blender became free, open-source software under the GPL in 2002. The game engine then went missing for a while: the manual lists Blender 2.33 (April 2004) with the note “Game Engine returns”. Much of the engine work was done by Erwin Coumans, whose commits in Blender’s history date back to 2002. On July 16, 2005, he added his new Bullet physics library to the game engine, and Bullet went on to become a widely used open-source physics engine in its own right.

How the Blender Game Engine Worked

The BGE was never a separate program. It ran on Blender’s own scene data:

  • Logic bricks. Each object could have sensors (a key press, a collision, a timer), controllers (logic such as AND or a Python script) and actuators (move, play a sound, change scene). Wiring them together in the Logic Editor made simple games possible without any code.
  • Python. For anything more complex, Python controllers used the bge module to read input, move objects and manage scenes.
  • Physics through Bullet, with rigid bodies, vehicles, character controllers and constraints, plus navigation meshes from the Recast library for AI movement.
  • The blenderplayer, a standalone runtime that played .blend files outside the editor, so games could be shipped without Blender’s interface.
  • Extras that accumulated over the years, such as video textures (movies playing in-game) and dome (fisheye) rendering, both highlighted in Blender 2.49 (2009).

The engine’s code lived in Blender’s source/gameengine folder: about 500 files at Blender 2.79b, in folders such as Ketsji, GameLogic, SceneGraph, Physics and Rasterizer.

How BGE logic bricks fit together Sensors notice events, controllers decide, actuators act. Python plugs in as a controller. SENSORS Keyboard Space bar pressed Collision Touched an enemy Always Every logic tick CONTROLLERS And All inputs true Python Runs a script ACTUATORS Motion Jump upward Sound Play a hit sound Scene Restart the level Underneath: Bullet physics · Recast navigation · runs in Blender (press P) or the blenderplayer Example wiring for a simple platformer. Bricks are wired per object in the Logic Editor; only the Python brick needs code. Source: brick types as listed in UPBGE 0.50’s Logic Editor; Blender 2.79 source tree
Logic bricks in the Blender Game Engine: sensors feed controllers, and controllers trigger actuators. A Python controller can replace any amount of wiring.

Games Made with the Blender Game Engine

GameYearNotes
Yo Frankie!2008The Blender Institute’s open game (Project Apricot), starring the squirrel from the open movie Big Buck Bunny. The team planned to use Crystal Space but switched to the BGE halfway through (Project Apricot). Version 1.1 (July 2009) targets Blender 2.49a.
Sintel The Game2013A community-made adventure based on the open movie Sintel, released under the MIT licence and played with Blender 2.68’s blenderplayer

Beyond these, the BGE was used mostly for hobby games, prototypes, architectural walkthroughs, teaching and interactive art, often shared on Blender community forums.

Why Blender Removed the Game Engine

On April 16, 2018, Blender developer Dalai Felinto committed “Removing Blender Game Engine from Blender 2.8”. The commit deleted the source/gameengine folder, the blenderplayer, the Logic Editor and the libraries only the engine used: 876 files and more than 193,000 lines of code (the removal commit, preserved in UPBGE’s copy of Blender’s history). It was part of the larger Blender 2.8 overhaul, which also replaced the old Blender Internal renderer with EEVEE and Cycles.

Blender 2.80 was released in July 2019 without a game engine. Blender 2.79 (with its 2.79b update of March 2018) remains the last official Blender with the BGE.

UPBGE: The Game Engine Lives On

UPBGE started in December 2015 as a fork focused on improving the BGE. When Blender removed the engine, UPBGE became its home. Today UPBGE is a complete fork of Blender: the full modelling, animation and rendering suite, with the game engine built back in.

UPBGEReleasedBased on
0.2.5May 2020Blender 2.79
0.30December 2021Blender 3.0
0.36May 2023Blender 3.6
0.44May 2025Blender 4.4
0.50January 2026Blender 5.0

UPBGE 0.50 added experimental GPU skinning for animated characters and much faster object spawning. It also reworked 2D filters to run on both OpenGL and Vulkan, and added new logic nodes (GameFromScratch on UPBGE 0.50). Development continues on top of new Blender releases, with weekly builds through October 2026 (UPBGE on GitHub).

Modern UPBGE keeps logic bricks and Python, and adds Python components: reusable classes you attach to an object, with settings shown in Blender’s properties. Another fork, Range Engine, continues an older, 2.79-era version of the BGE.

Hello, UPBGE: A Python Component

This component spins the object it’s attached to. Save it as spinner.py next to your .blend file, select an object, open Properties › Game Components, and register it as spinner.Spinner:

import math
from collections import OrderedDict

import bge


class Spinner(bge.types.KX_PythonComponent):
    """Spins the object it's attached to around its Z axis."""

    # Shown as editable fields in the object's Components panel.
    args = OrderedDict([
        ("Degrees per second", 90.0),
    ])

    def start(self, args):
        self.radians_per_second = math.radians(args["Degrees per second"])

    def update(self):
        # update() runs once per logic tick (60 per second by default).
        step = self.radians_per_second / bge.logic.getLogicTicRate()
        self.object.applyRotation((0.0, 0.0, step), True)

start() runs once when the game begins, and update() runs every logic tick, 60 times a second by default. The args dictionary becomes editable fields in the Properties panel, as the screenshot shows.

UPBGE 0.50 editor with a cube selected and the Game Components panel showing a Spinner Python component with Degrees per second set to 90
The Spinner component attached to a cube in UPBGE 0.50, with its “Degrees per second” setting in the Game Components panel.

Tested: we downloaded the official UPBGE 0.50 Linux build and attached this component to the default cube, along with a small test harness. We then ran the scene in UPBGE’s standalone player on Ubuntu 24.04, using software OpenGL. After 60 logic ticks, one second at the default 60 ticks per second, the cube had rotated exactly 90.0 degrees. On a machine with no sound card, set UPBGE’s audio device to “None” in Preferences first, or the player crashes at startup.

Blender Game Engine Alternatives

  • UPBGE: the direct continuation of the BGE, if you want to keep working inside Blender with logic bricks and Python.
  • Armory 3D: another engine that runs inside Blender, scripted in Haxe or with logic nodes. See our Armory 3D profile.
  • Godot: a free, open-source engine with its own editor that imports Blender files. See our Godot engine profile.
  • Panda3D: an open-source engine scripted in Python, with a Blender exporter. See our Panda3D engine profile.

For more open-source engines, see our directory of open-source C++ game engines.

Key Takeaways

  • The Blender Game Engine was built into Blender from 2.00 (2000) to 2.79, written in C++ and released under the GPL.
  • Games were made with logic bricks and Python, with Bullet physics, and could be shipped with the standalone blenderplayer.
  • Its best-known games were the open projects Yo Frankie! (2008) and Sintel The Game.
  • Blender removed it in April 2018, and Blender 2.80 (2019) shipped without a game engine.
  • UPBGE continues it as a full Blender fork: UPBGE 0.50 (January 2026) is based on Blender 5.0.
  • A UPBGE Python component takes about 20 lines, as the tested example shows.

Conclusion

The Blender Game Engine made “model it and play it” possible in one free program long before that was common, and it introduced many artists to game logic. Blender itself moved on in 2018, but the engine didn’t disappear: UPBGE has carried it forward through every major Blender release since, all the way to Blender 5.0.

For more engines across every genre, browse our game development hub.

Scroll to Top