jemc / glass

A framework for making ECS-based WebGL games in TypeScript, with a particular emphasis on retro game styles.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Glass

Glass is a framework for making ECS-based WebGL games in TypeScript, with a particular emphasis on retro game styles.


Glass is a work in progress, and not yet intended for general use.


Glass is broken up into the following sub-libraries:

  • @glass/core - General-purpose, core framework
  • @glass/agate - General-purpose state management utilities
  • @glass/onyx - General-purpose audio & chiptune utilities
  • @glass/opal - General-purpose 2D graphical utilities
  • @glass/coral - General-purpose 2D physics utilities
  • @glass/zircon - Menu/selection/icon interaction modes
  • @glass/topaz - Tile-based top-down interaction modes
  • @glass/lapis - Tile-based isometric interaction modes
  • @glass/pyrope - Tile-based side-scroller interaction modes
  • @glass/manik - Bullet-hell-style interaction modes

Not all of these sub-libraries are actually built yet - they are only listed to reserve the names as they are planned. Other sub-libraries will have names based on other gemstones.

Assumptions

The design of Glass assumes the following assumptions (consistent with many retro-style games, and consistent with the preferences of speedrunners) that the game being built is:

  • "frame-perfect", with all timing-dependent mechanisms being primarily based on the number of frames that have passed, rather than wall clock time.

  • "deterministic", with all game-relevant random values being generated from pseudo-random number generator that uses seeds based on other non-random values in the game state.

About

A framework for making ECS-based WebGL games in TypeScript, with a particular emphasis on retro game styles.

License:GNU General Public License v3.0


Languages

Language:TypeScript 99.2%Language:GLSL 0.6%Language:Shell 0.1%Language:HTML 0.1%