What engine is this web game?

Paste the address of a web game and Foundplay reads its page for signs of 10 engines, including Three.js, Unity, Godot and Phaser. It tells you which one it found, or that it isn't sure.

How it works

Foundplay fetches the page you give it once, the way it checks new listings: public addresses only, with a size limit and a time limit. For an itch.io page it reads the game's own frame instead. It also reads up to three of the page's scripts from the same site. It doesn't run the game or any of its code.

Then it looks for signs that belong to one engine only: a script file with the engine's name, a line of code only that engine's builds carry, or a generator tag. A passing mention of an engine in the page's text counts for nothing.

The signs Foundplay looks for, by engine
EngineSigns
Three.js
  • Loads a three.js, three.module.js, three.core.js or three.webgpu.js file, or the three package from a CDN
  • Sets window.__THREE__, which Three.js does when it loads
Babylon.js
  • Loads a babylon.js file, or anything from cdn.babylonjs.com
  • Carries the start-up line "Babylon.js v" and a version number
PlayCanvas
  • Loads a playcanvas.js file, anything from code.playcanvas.com, or a page on playcanv.as
  • Says "Powered by PlayCanvas", or starts with new pc.Application( or new pc.AppBase(
Unity
  • Loads UnityLoader.js, or a .loader.js file from a Build folder
  • Starts the game with createUnityInstance( or UnityLoader.instantiate(
Godot
  • Starts the game from a GODOT_CONFIG setting, as Godot's web export does
Phaser
  • Loads a phaser.js, phaser.min.js or phaser-arcade-physics.js file, or the phaser package from a CDN
  • Prints a "Phaser v3" banner in the console, or creates the game with new Phaser.Game(
PixiJS
  • Loads a pixi.js, pixi.min.js or pixi-legacy.js file, or the pixi.js package from a CDN
  • Creates its canvas with new PIXI.Application(, or carries PixiJS's version banner
GDevelop
  • Loads files from a pixi-renderers folder, a gdjs-evtsext__ extension, or runtimegame.js
  • Starts with new gdjs.RuntimeGame(, or reads gdjs.projectData
Construct
  • Loads c2runtime.js, c3runtime.js or c3main.js
  • Starts the game with cr_createRuntime(
  • Has a generator tag that says Scirra Construct
Defold
  • Loads dmloader.js
  • Starts the game with EngineLoader.load(

Some engines' builds also carry another engine's files (GDevelop with PixiJS and Phaser with PixiJS). When both show up, Foundplay names the outer one. When it shows two engines with no such link, it says it isn't sure.

WebGPU is a yes only when the page's own code calls navigator.gpu.requestAdapter(). On Babylon.js, PlayCanvas, Unity, PixiJS, Construct and GDevelop, the engine's code can make that call whether or not the game uses WebGPU, so a call there doesn't count.

Foundplay doesn't keep a list of the addresses checked or of who checked them. It counts checks and results by day, and limits how many checks one network can run.

What it can't see

  • Games that hide their engine. Engine files with other names, or loaded later by code Foundplay doesn't read, show no sign.
  • Scripts beyond the first three from the game's own site, and any script from another site: those count only by their address.
  • Pages behind a sign-in, a paywall or a check that turns away automated readers.
  • Games shown in a frame from another site. Only itch.io's game frame is followed.
  • Engines that aren't in the table. A game on one of those, or on its own code, comes back as Not sure.

Made a browser game? List it free or see games by engine.