A class that helps you manage game update and rendering, UI, plus levels management.
You can create multiple UI overlays over the game itself, they update in cooperation with the game but are independent from game logics.
Classes that helps you calculate and represent coordinates in game.
All visible objects in game should be instances of subclasses of GObject, which keeps track all the instances of it, giving a alternative way of managing object references if you forget to keep them explicitly. It also provides basic movements and rotation abilities.
The engine already have some basic sprite classes built-in, for various purposes, you can make use of them without having to inherit from GObject and build everything else from ground.
A lot of 2D games make use of the idea of grid, so the engine has one built-in, you can use it to simplify grid coordinate calculation and even do path finding.
This is for generateing a large number of objects and efficiently managing memory for them, you can inherit from the classes engine provides to get started.
The engine has collision detection built-in, all you need to do is to make sure that you make subclasses that inherits CollidableGObject, and implement interfaces for how you handle collision exactly.
Several such classes are provided to deal with objects that are in assosiation or overlapping each other.
Mouse/keyboard input are being listened by the engine, if you have objects that need to respond to certain input, you can receive them from the engine.
The engine uses Peer.JS to do basic P2P networking, it wraps and simplifies the process of establishing connection and communication, so that you can concentrate on what to send and how to deal with what you receive.