Quick Start
Your First Program
Create a file called player.morph:
entity Player {
has hp: 100
has name: "Hero"
event init {
emit log("Player created!")
emit damage(25) # Trigger damage event from init
}
event damage(amount) {
hp - amount -> hp
emit log("HP remaining:", hp)
check hp <= 0: emit die
}
event die {
emit log("Game Over")
}
}
Running Morphyn Programs
Run your program:
Output:How Events Work
Events in Morphyn are reactive, not automatic. They only run when:
1. Triggered from init or tick:
entity Game {
event init {
emit player.damage(50) # Triggers player's damage event
}
event tick(dt) {
emit enemy.update(dt) # Triggers enemy's update event
}
}
Important
Custom events like damage, heal, attack will not run unless explicitly triggered. Only init and tick run automatically.
Runtime Features
Hot Reload
The runtime automatically watches for file changes and reloads entity logic without restarting.
Example:
1. Run morphyn player.morph
2. Edit the file: change emit damage(25) to emit damage(75)
3. Save
4. Logic updates instantly without restarting
Tick System
Entities with a tick event receive frame updates:
entity Timer {
has elapsed: 0
event tick(dt) {
# dt = milliseconds since last frame
elapsed + dt -> elapsed
emit log("Time:", elapsed)
}
}
Init Event
Runs once when entity is created: