Choosing your web game engine
One of the first decisions you have to make when making a game is the tech. For web, there are tons of options to choose from. HTML5 technology is much stronger for web games and many of the following engines are purpose built for web compared to Unity whose web export needs work. There are frameworks which are for more experienced developers but can provide amazing results both visually and technically. We have games from all different engines on Poki, so we want to share some info to help you choose which engine fits you best for web!
There’s a lot of different things to factor in when choosing an engine, but we wanted to keep the focus on web specifically. The following are some of the most important things to keep in mind when choosing an engine for web!
(Mobile) web tech fit
Some engines are optimised for web, others support it in some way or another. File size is important; for a good web game the initial download should not exceed 5MB and 8MB in total. Knowing that, we compared the compressed size of an empty project. Second comes the support for touch on mobile. Without that you automatically miss out on a large proportion of players given the popularity of mobile gaming.
What you need in an engine
This means the capabilities you need for the type of games you create. Basically, can you do what you want to do with this engine? The main differentiators we took are 2D/3D and multiplayer support. We haven’t included all capabilities so use these first to create your shortlist and then you can follow up with more in-depth info!
Developer (team) fit
If you work in a team, you’re probably working together on the same project. The game engine you choose needs to support working together on the same project file. Having more people in a team also is a multiplier for costs which is why we included licensing fees.
The web game engines discussed in this article
Cocos Creator enables the creation of cross-platform 2D and 3D games. The engine provides a visual editor for designing game scenes, a powerful scripting language (JavaScript or TypeScript), and a comprehensive set of tools for animation, physics, and UI development. Cocos Creator is known for its ease of use and efficiency in developing both casual and more complex games.
Have a look at some of the games to see what Cocos Creator is capable of:
- Merge Arena by Easycats
- Kawaii Fruits 3D by Okashi Games
- TinyTownRacing by Vkrishna
(Mobile) web tech fit
File size of empty project
The file size of an empty Cocos project is 709kb.
Support for mobile web
With small export file sizes, support for touch controls and options to responsively scale your games, Cocos Creator is a good fit for games on the (mobile) web.
What you need
2D capabilities
Cocos Creator supports both 2D and 3D games. For 2D games, it features built-in components for UI, animations, tilemaps, particle system and more. Box2D is used for 2D physics.
3D capabilities
For 3D games, Cocos Creator has options for glTF 2.0 and FBX support, material system, PBR rendering, image based lighting, light maps, different render pipelines (Forward, Deferred, Custom), post processing, Animation Graph, particle effects, terrain, localization and more. Cocos can use Bullet Physics and PhysX physics.
Multiplayer
Third party options are available to integrate multiplayer back-end services like Colyseus, Websockets, Nakama or PlayFab into your game.
Developer (team) fit
Working together
Cocos Creator has an extendable editor with in-engine animation, terrain and particle editors. The Cocos store has a lot of tutorials, extensions and other helpful options available to help you on your way with the engine. On top of this, its possible to integrate Git or other version tracking programs into your Cocos project to work together with your team.
Licensing
Cocos Creator is free to use. No license fee or royalty payments are required to release games made with this engine.
Construct 3 is a game engine focused on 2D games and fast prototyping. It has an event sheet based visual scripting language, and lets you use Javascript and Typescript if you prefer. It has many built in tools, like an animation editor, flowcharts, timelines, data and code editors. The engine has a modular addon system that makes iterating on the game really fast, and keeps export size small. With very extensive documentation, tutorials and courses in many languages, almost 400 examples and a very active community, Construct is one of the most accessible engines out there.
Have a look at some of the games to see what Construct 3 is capable of:
- Blumgi Slime by Blumgi
- OvO Dimensions by Dedra Games x Venturous
- Idle Ants by Madbox
(Mobile) web tech fit
File size of empty project
File size of an empty Construct project is 730KB in size unzipped, and 342KB zipped.
Support for mobile web
Construct 3 works very well on mobile. It has full support for mobile features, viewport scaling, and automatically handles safe area insets like notches. C3 also comes with a remote preview option to preview the game on any device and stream the screen to the editor. All C3 games are PWAs which means they can all be installed as apps on mobile devices. C3 also supports exporting with Cordova for IOS and Android native apps and can even package the game for you on their servers. C3 addons can implement cordova plugins to extend mobile native capabilities.
What you need
2D capabilities
Construct is built for 2D. It has Sprites, 9 patches, tiled textures, tilemaps, particle system, mesh distortion, BBCode text, SVG, Spritefonts, HTML based UI and 2D lights. 3rd party developers have also added support for Spine and Spriter 2D animations, clipping masks, and UI systems. C3 has its own collision engine, but also implements Box2D for physics simulations and has a built in pathfinding system. Construct’s effect system lets you easily combine prebuilt shaders on any object or layer, or even do post processing on the entire scene.
3D capabilities
Construct can do basic 3D. It has a 3D camera, and support for basic 3D shapes and 3D mesh distortion meant to add some perspective to 2D scenes. 3rd party developers have added gLTF support and are working on 3D physics using Rapier, 3D lighting, and 3D Particles with Effekseer. Shaders also work with 3D elements.
Multiplayer
Construct 3 comes with a WebRTC Peer to Peer Multiplayer system with a dedicated signaling server for matchmaking. There is also 3rd party support for Colyseus, Firebase, Photon and PlayFab
Developer (team) fit
Working together
Construct 3 is designed to work well with Git. All project files are saved to JSON which makes it easy to merge changes. Construct 3 also supports external code editors with live reload of script files on preview, and can generate typescript definitions for its scripting runtime for all included addons.
Licensing
Construct is a paid service. The engine is licensed under a subscription model, and pricing changes based on the scale of the team. Games exported with Construct do not owe any royalties to the Construct team.
Defold is a web focused game engine with 2D and 3D capabilities. It features an extensive editor, complete with a Lua code editor, GUI editor and animation tools. Defold’s documentation is very detailed and contains tons of useful example projects and tutorials. Mixed with the passionate community, this is a great choice for any dev!
Have a look at some of the games to see what Defold is capable of:
- Car Parking Jam by Refold
- Monkey Mart by TinyDobbins
- Pixel Realms by Yury Grigoryev
(Mobile) web tech fit
File size of empty project
An empty Defold project is 1.03MB in size. With further optimization, this could be made even smaller.
Support for mobile web
Games made with Defold are very well suited to run on mobile devices. It has built-in options for touch controls, responsive scaling for portrait and landscape orientations and a small initial file size. This will ensure your game can run well on older devices and in any layout.
What you need
2D capabilities
Defold is 2D focused with tilemaps, sprites, text options, particle effects, GUI scenes and even Spine and Rive 2D skeleton animations. It uses an orthographic camera to render scenes and uses Box2D for physics.
3D capabilities
Defold can accept models in .gLTF format, including animations. Meshes are created during runtime, further ensuring a low initial file size. It also features a 3D particle system, options to create your own custom materials and shaders (written in GLSL) and Bullet Physics.
Multiplayer
With built-in integrations for popular back-end services like Nakama, PlayFab, Colyseus and Web Sockets, Defold is well-equipped for multiplayer games. Extensions for even more services are available through the Defold Asset Portal.
Developer (team) fit
Working together
Defold comes out of the box with a Git version control system, making it easy to integrate your GitHub repositories and work together. All project files also use a merge-friendly text format. Defold has integrations for IDE’s such as Atom, VS Code, Spine and Tiled as well. On top of this, Defold is also artist friendly, allowing designers to bring their ideas for characters, screens and user interfaces to life in-editor.
Licensing
Defold is completely open source. Licenses are given out for free and allow you to fully commercialise your games without having to worry about licensing fees or royalties.
GameMaker is an engine that works with GML (GameMaker Language) as its scripting language. Its extensive editor contains a lot of tools and features that help developers realise their 2D game concepts.
Have a look at some of the games to see what GameMaker is capable of:
- Retro Bowl by New Star Games
- Iron Snout by SnoutUp Games
- Driftwave by Jamie Rowan x RowanFuture
(Mobile) web tech fit
File size of empty project
An empty project made with GameMaker will have a compressed export size of 450-550kb
Support for mobile web
With support for touch controls, responsive scaling and a small initial file size, games made with GameMaker are perfect to be played on mobile and desktop devices of any kind with any type of internet speed.
What you need
2D capabilities
If you’re working on a 2D project, GameMaker is a great engine to consider. Being primarily focused on 2D development, this engine offers all tools you need. It also has extensive animation capabilities such as spine imports, SWF imports, animation curves and timeline animations. It also uses its own custom physics system based on Box2D.
3D capabilities
GameMaker is less suited for making 3D games. Some basic features are available, such as shaders, matrices and vertex buffers. These can help create interesting visual styles for your game, but require a lot of know-how to make a fully fledged 3D game with.
Multiplayer
GameMaker has native options available to set up multiplayer. Besides this, there are community-made extensions available that can help you integrate the back-end service of your choice into your project.
Developer (team) fit
Working together
The GameMaker IDE contains shortcuts and quick actions for Git, allowing you to quickly and easily safe and share your progress with your team. The visual part of the editor makes it possible to do the coding and graphical work in the same place.
Licensing
Getting started with GameMaker is free. However, to be able to commercialise your games and export to all possible platforms, you will need to get a Professional license, which is a one-time purchase, or buy a subscription to the Enterprise version.
Godot is a 2D and 3D capable game engine, often compared to Unity given the similarities. With the release of its latest version, Godot 4.0, this engine has seen a lot of interest and new users. It’s community is growing fast and the quality of games made with this engine is getting better with each release!
Have a look at some of the games to see what Godot is capable of:
- Super Liquid Soccer by Punyrobot
- Chicky Farm by PT New Game Plus
- Rooftop Snipers by NewEichGames
(Mobile) web tech fit
File size of empty project
The compressed size of an empty Godot project is 10MB.
Support for mobile web
With support for responsive scaling to Portrait and Landscape orientations and touch controls, Godot is a good fit for mobile web games. The comparatively large initial file size can lead to longer loading times on older devices or weaker internet connections. With the release of Godot 4.3, the use of SharedBufferArray in web exports becomes optional. This technique was incompatible with a lot of existing websites. For exclusive export to the web, we recommend using the latest version of Godot 3.5. This version of the engine also has a OpenGL option aimed at mobile platforms. Builds made in this version run faster on mobile, but it sacrifices some functionalities that its desktop counterpart has.
What you need
2D capabilities
Godot has a fully specialised 2D pipeline including advanced 2D lighting, tilemap, text and sprite options. The editor also includes particle systems that can be handled on the CPU, and a GPU based implementation for hardware that support it. A particularly helpful feature in Godot is its extensive Animation Player. With this feature, any part of the engine can be animated. This allows you to make very detailed effects or create intricate functionalities.
3D capabilities
Godot has a modern 3D renderer built in. Especially Godot 4.0 features many modern rendering techniques such as SDFGI, PBR materials, HDR support, various screen space and post processing effects. Godot also has a built-in physics engine that can handle both 2D and 3D physics.
Multiplayer
Godot does not have native integrations with back-end services. It does have a specific node for making connections to the web, which can be used to make calls to the back-end of your choice. This will require some setup. Besides this, Godot has an extensive Asset Library where other developers have uploaded scripts and plug-ins that can help you connect to your back-end. For each of the most popular back-end services (Nakama, Colyseus, Websockets, Playfab), there is a plug-in available.
Developer (team) fit
Working together
The main editor features separate workspaces for 2D and 3D projects and a very intuitive scene editor. This makes it possible for both the graphical and coding part of your team to work together in the same place. Godot's method of storing project data also makes it very friendly towards version control tools such as Git, which makes it easy to work together on a project.
Licensing
Godot is an open source project, which means that licenses are free. Commercialising games made with Godot is also allowed without extra costs.
LayaAir is a game development engine tailored for web-based projects, facilitating the creation of 2D and 3D games and multimedia content. Its efficient rendering engine optimizes performance for web environments, enabling smooth gameplay experiences across different devices.
Have a look at some of the games to see what LayaAir is capable of:
- Parkour Race by Madbox
(Mobile) web tech fit
File size of empty project
An empty LayaAir project that's exported for the web has a file size of 2.1MB.
Support for mobile web
With this relatively small export file sizes, native support for touch controls and screen adaptation options, LayaAir is well suited to make games that display and run well on the mobile web.
What you need
2D capabilities
LayaAir has 2D systems for text and sprite rendering, tilemaps, UI components, animations, drawing and physics. Box2D is used for 2D physics.
3D capabilities
The LayaAir 3D editor comes with a scene editor, camera system, mesh renderer, particle and trailing system, texture support and animation systems. Bullet, Cannon.js and PhysX are used for 3D physics. .
Multiplayer
Networking options are built in to LayaAir, making it possible to make HTTP and Websocket requests. This makes it possible to connect your project to the back-end of your choosing
Developer (team) fit
Working together
LayaAir has an extensive and visual editor, making it possible for both programmers and artists to work in the same spaces. For further information and tutorials, you can visit the LayaAir site. Examples of the engines functionalities are available in the browser as well. Finally, its possible to integrate Git or other version tracking programs into your project to work together with your team.
Licensing
LayaAir is distributed under the MIT License. You can create and distribute games with this engine without having to pay royalties or fees.
Focused entirely on the web, Phaser is an HTML Games Framework that uses JavaScript or TypeScript as its scripting language. Games made with Phaser are highly performant and easily scalable to any screen size.
Have a look at some of the games to see what Phaser is capable of:
- Stick Merge by TinyDobbins
- Murder by Studio Seufz
- Raft Wars by Martijn Kunst
(Mobile) web tech fit
File size of empty project
A completely empty project made with Phaser is 290KB in size.
Support for mobile web
Phaser is a good pick for mobile web games. It has native support for responsive scaling and touch controls. It’s file size is relatively small and it has mobile specific rendering pipelines. The combination of all these features will make sure your project is easily distributed on mobile web and can run well on older and newer devices alike, regardless of internet speed.
What you need
2D capabilities
Packed in with Phaser are a lot of features to support developers making a 2D game. For example, Phaser has scene graphs, mesh and text rendering, multitouch support, extensive accessibility features (such as screen reader compatibility) and more. On the animation front, Phaser can use sprite-based animations, tween motions and Spine 3 and 4.
3D capabilities
Natively, 3D is not supported by Phaser. There are third party plug-ins available that can help you set up a 3D game in Phaser however.
Multiplayer
Phaser is able to connect with back-ends from popular services such as Colyseus, Firebase, [Socket.io](http://Socket.io) and Nakama.
Developer (team) fit
Working together
Since Phaser is a framework, it has no custom editor. This means you can work with the IDE of your choice, but there is no integrated setup for version control or a dedicated graphical environment.
Licensing
Phaser is distributed under the MIT license, meaning usage of the engine and commercialisation of works made with Phaser is completely free.
PixiJS is a lightweight 2D rendering engine for the web that excels in fast and efficient graphics rendering. It utilizes WebGL and WebGPU for hardware acceleration but automatically falls back to HTML5 canvas rendering when WebGL is not available. Known for its simplicity and performance, PixiJS is a popular choice among developers for building smooth and responsive web-based graphics and games.
Have a look at some of the games to see what PixiJS is capable of:
- Subway Surfers by SYBO
- Stickman Hook by Madbox
- Anycolor by Aniway
(Mobile) web tech fit
File size of empty project
A compressed built project made with PixiJS is 130KB in size.
Support for mobile web
The small file size of PixiJS games and native touch control support makes this engine a good fit for web (mobile) game development. Responsive scaling is available as well, but the layout of the game you have to handle yourself.
What you need
2D capabilities
PixiJS is known for being able to create games with fast performance, making it a very good fit for 2D games. On top of this, the engine features scene graphs, graphics, mesh and text rendering, accessibility features, compressed texture support and filtering options. PixiJS does not come out of the box with any physics or animation options. These can be added via third parties or made yourself.
3D capabilities
3D options for PixiJS are available through a third party plug-in called Pixi3D.
Multiplayer
Examples for making multiplayer games with PixiJS are available, specifically for Colyseus, but the options are a bit less diverse than with other engines.
Developer (team) fit
Working together
Versioning control is not built into PixiJS, but code made with this engine is able to be tracked and saved in Github. Online, there are a lot of tutorials, examples and other types of documentation available to get you and your team started with this framework. Third party editors are available for PixiJS if you want to work in a more visual environment.
Licensing
Games made with PixiJS fall under the MIT license, meaning no licensing fees or royalties have to be payed in order to create games with this engine.
PlayCanvas is a dynamic game engine designed for the web, capable of rendering 2D and 3D projects alike. With a robust editor, extensive documentation and collaborative features, PlayCanvas provides a comprehensive solution for game development on the web.
Have a look at some of the games to see what PlayCanvas is capable of:
- Venge.io by OnRush Studios
- Crazy Cars by No Pressure Studios
- Sword Masters by emolingo games
(Mobile) web tech fit
File size of empty project
An empty PlayCanvas project is 300kb in size.
Support for mobile web
Games made with PlayCanvas are very well suited to run on mobile devices. It has built-in options responsive scaling for Portrait and Landscape orientations and a small initial file size.
What you need
2D capabilities
PlayCanvas has a set of 2D development natively available. Tilemaps, sprites, text options, particle effects and GUI scenes are provided out of the box.
3D capabilities
Supporting models in .gLTF format with animations, the engine dynamically creates meshes during runtime, ensuring a compact initial file size. PlayCanvas also has a 3D particle system, customizable materials, and GLSL shaders available for use.
Multiplayer
Playcanvas supports integration with multiple different back-end systems. Tutorials and examples for making connections are further detailed in the documentation.
Developer (team) fit
Working together
PlayCanvas has a collaborative development with Git version control integration. This simplifies the GitHub repository management. Project files use a merge-friendly text format, which makes collaboration easier.
Licensing
While the engine itself is open source, users can access additional features and services with subscription-based plans. Free licenses are available, allowing developers to commercialise their games without worrying about licensing fees or royalties.
Based on the Haxe scripting language, Stencyl is a editor and engine supporting mostly 2D games. Its visual coding setup and graphical Scene Designer makes working with Stencyl more a process of clicking your game together, rather than typing scripts.
Have a look at some of the games to see what Stencyl is capable of:
- Level Devil by Unept
- Jumping Shell by Robert Alvarez
- Poor Bunny by Adventure Islands
(Mobile) web tech fit
File size of empty project
An empty, compressed Stencyl project is 500KB in size.
Support for mobile web
A small initial file size combined with touch control support and the built-in option to scale your game to landscape makes Stencyl a good choice for mobile (web) games. Currently limited functionality for portrait orientation but being improved on!
What you need
2D capabilities
Stencyl supports 2D games in sidescrolling and isometric layouts. Natively, Stencyl supports Box2D for physics, but if needed this system can be swapped out for a more simple system. It also supports tweens and classic frame-based animations.
3D capabilities
Stencyl has no 3D capabilities
Multiplayer
Stencyl does not support online multiplayer
Developer (team) fit
Working together
Stencyl games can be made entirely without code in the Stencyl editor. Instead, a graphical editor is used to click different types of behavior together. This more visual approach to programming can make it easier for team members to get into the development. The built-in Scene Designer is also quite close to Photoshop, sharing a similar layout and selection of tools. Team members that are already familiar with visual editing software should be able to find their way in the Stencyl editor quite easily. Integration with a versioning control system is possible, but not natively supported in Stencyl.
Licensing
Publishing games to the web is free with Stencyl. If you want to publish to other platforms as well, you can purchase a yearly subscription, for which there are two tiers.
Three.js is a JavaScript library and API used to render 3D graphics in the browser using WebGL. Since it is not an engine or full-scale editor, like other entries on this page, working with Three.js can take a bit more work. However, the minimalistic nature of the library keeps the file size of your games low and allows for the creation of a lot of custom features.
Have a look at some of the games to see what Three.js is capable of:
- Narrow.One by Pelican Party Studios
- Up Together by Ironfoxgames
- ZooDrop by Stephen Builds
(Mobile) web tech fit
File size of empty project
The file size of a compressed Three.js project is 151KB. This can be brought down to 122kb by using Brotli compression.
Support for mobile web
Three.js does not natively support touch controls and has no built in responsive scaling to portrait or landscape layouts. These need to be programmed in. This does require extra work compared to an out-of-the-box solution, but does allow for more customisation to your projects specific needs. The very small file size of games made with Three.js does make them very suitable for older (mobile) devices and devices with a poor internet connection.
What you need
2D capabilities
Being a 3D specific rendering library, the options for 2D are limited with Three.js. It is possible to make your project look 2D by using specific camera settings, but this is not recommended.
3D capabilities
Three.js has options for all of the basic 3D needs, such as mesh rendering, shaders, camera and lights setup and more. There are no native physics built in to Three.js, but there are examples available online that can help you create what you need yourself.
Multiplayer
There are no native implementations of multiplayer services or frameworks in Three.js. However, there are examples and documentation available that can help you write your own implementations to work with the back-end of your choice.
Developer (team) fit
Working together
Three.js has a basic online editor available. However, this editor is quite limited and features no integration of version control or other collaboration features. The code used in a Three.js project is easy to track and share through Github or other versioning systems, but you will have to set this up manually.
Licensing
Three.js is distributed under the MIT License, which means that you’re allowed to make and distribute games with this library free of charge and without the need for royalties or fees.
Unity is a 2D and 3D capable engine that can export to almost any platform and is of the most-used engines for game development. Its large community and Asset Library make this engine easy to learn and useful for any size project. Due to its large initial file size, Unity games are overall less well-suited for the web.
Have a look at some of the games to see what Unity is capable of:
- Hills Of Steel by Superplus Games
- Apple Knight by Limitless
- Repuls.io by Docksi
(Mobile) web tech fit
File size of empty project
The file size is 15MB when built with Unity.
Support for mobile web
Unity has built-in support for touch controls and layouts for Landscape and Portrait modes. These are both very helpful when making games for the mobile web. A downside for mobile web is the large file size of Unity projects. On lower-end devices or devices with a slower internet connections, these games can take quite a while to load. Optimising your loading structures and compressing down all assets and sound files really helps with this, but it does take extra effort.
What you need
2D capabilities
Unity features suitable tools for 2D game development. Built into the engine is support for 2D sprites, bone animations, lights and shaders. It also has apt support for 2D physics and animations.
3D capabilities
3D development is what Unity is more known for. Its 3D features are considered to be very good, having the capability of rendering photo-realistic scenes. A particle system, 3D animations and 3D physics also come packed with the Unity editor.
Multiplayer
Unity has a lot of multiplayer features available through their Asset Store. For almost all often-used back-end services, there are plug-ins available to make connection to your game easier.
Developer (team) fit
Working together
The Unity editor is easily customisable or extendable to fit your project. The editor has a scene layout module, that makes it easy for the graphical part of your team to work together in the same editor. If you are new to Unity, there are a lot of tutorials and examples available online for this engine that can help you get started.
Licensing
Unity has two tiers of licenses. The first tier is free and applies for developers who earn under 100.000 euros from their products. If you earn more than that, you are in the Paid tier. The costs within the Paid can vary based on your needs and the size of your company. Check out the Unity site for more information.