# The Messenger Game Engine

Messenger is a 2D game engine with experimental concepts for Elm based on **[canvas](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API)**.

## Games made with Messenger

- [Reweave](https://github.com/linsyking/Reweave)
- [SilverFOCS Games](https://focs.ji.sjtu.edu.cn/silverfocs/project/2023/p2) (all games in 2023 are powered by Messenger)

## Cool Features

- Engine in a library. Messenger core is built in a library.
- Message (or event) based. Faster development cycle, easier to divide work.
- Functional, but OOP styled. Take advantages of both functional programming and OOP.

## Conceptual Picture

![](docs/imgs/concept.png)

- Red arrow: messages that are sent positively
- Orange arrow: messages that are triggered passively

## Tutorial/Guide

[Full documentation](https://typst.app/project/rytMGqODAPcw9-39Fec_aB) is hosted on Typst.
