GDevelop / W3C Games Community

👋

Clément

Florian

@FlorianRival

@ClementPasteau

GDevelop in a few words

  • "No-code" game creation platform
  • Open-source engine
  • Based on web technologies
    • Game engine based on PixiJS
    • Interface built with React
    • Core logic written in C++, compiled to WebAssembly

GDevelop in a few images

React based interface

  • The whole app is built on React (with Material-UI as a component library). 
  • Scalable and works well for an app like GDevelop! 

Typing

  • We have a mix of TypeScript (game engine) and Flow type (editor).
  • Saved our lives more than once!
  • Considering migrating everything to TypeScript in the future - as long as we can run type checking separately from the transpilation.

WebAssembly usage

  • The core logic (how to represent a game, tools to generate code from a game, etc...) is written in C++
  • Using Emscripten, we compile it to a WebAssembly library and use it directly.

Our usage of PixiJS

  • Started with PixiJS as a dual canvas/WebGL renderer (which was useful at the time) and very performant
  • Great to see support of WebGL2 (and looking at how WebGPU will rise 👀)
  • Mostly smooth experience (except for some hiccups on iOS) 

Pain points,

challenges, or things hard to deal with

Storing data locally... and keeping it

  • There are a few solutions to store data locally: Web Storage API (localStorage), IndexedDB.
  • But it's always too easy for the user (or the browser) to just nuke everything without warnings.
  • File System Access API seems a good solution... too bad it's not (yet?) usable everywhere (Firefox, Safari)

Consistent performance

  • Easy to fall out of the “happy path” of JS engine and get deoptimized.
  • Some warnings are surfaced in debuggers... but overall we need to be cautious.
    • Spector.js, Safari WebGL command inspector: we need more of these tools!
  • Impact of garbage collection can vary across devices - no way to easily measure/trigger a GC.
  • A "super strict"/"never slow" JavaScript mode would be awesome.

iOS and web technologies

  • At each new iOS version, something will break.
  • We had some large performance regressions. Fixed by the folks at PixiJS (kudos!)
  • Heard too many horrors stories to try too many new things (IndexedDB, PWA support) - iOS forces us to stay old school in our approach.

Monetisation on the web and on mobile devices

  • Is ads the only working solution for now? 
  • Started to look at web monetization
    • Not sure if this getting any traction? Promises are a bit unclear to us.

Best solution seems still to package as a native app (Cordova) and publish/sell on app stores.

Web games discovery

  • Hard to get noticed (though that's true on app stores too)
    • Some indie stores (Itch.io) can help.
  • But also hard to do "remarketing" as limited push capabilities/no app installed by the user.
  • Some companies are promoting HTML5 games (Poki, Google with Gamesnack)

Best solution seems still to package as a native app (Cordova) and publish/sell on app stores.

This being said...

being based on web technologies allows us to be:

fast, agile, working (almost) everywhere

Thank you! 

deck

By Florian Rival