Helghast is a next-gen game engine for the web.
It is currently a giant playground and highly experimental
At this stage of the project these are mostly goals.
- Data-Oriented Design
- Mutable functional style programming
- Entity-component-system
- Sub systems parallelised across workers
- Written with Typescript and compiled to WebAssembly
- Scripting in Javascript or Typescript
- Service boundaries for portability
- Application. Binds all pieces together and contains the update loop.
- World. A representation of the game.
- Entities. Unique collections of Components.
- Components. Purely data. Have no logic.
-
InputtableComponent- Provides entities with access to user input. -
NodeComponent- A representation of this entity within the world heirarchy. -
RigidBodyComponent- A physical representation of this entity for physics purposes. -
ScriptComponent- An extendable component for writing game logic. -
CollisionComponent- Contains info about an entities collision bounds - ...
-
- Systems. Act on components. Have logic.
-
InputSystem- Consumes user input and provides to entities withInputtableComponent. -
ScriptSystem- Manages user scripts of entities withScriptComponent -
PhysicsSystem- Manages physics updates of entities withRigidBodyComponent&CollisionComponent. - ...
-
- Services. Provide application boundary access.
-
LoggerService- Allows logging of information. -
BenchmarkService- Allows benchmarking of application. -
InputService- Provides interface to user input. -
AudioService- Provides low latency audio playback. -
DisplayService- Provides a way to render graphics to screen. -
FileService- Provides a way to load various files. - ...
-
MIT