# The How And Why ## Third Party Libraries This engine uses a few third party libraries which solve a great deal of problems: - [30log](https://github.com/Yonaba/30log) for class definition - [STI](https://github.com/karai17/Simple-Tiled-Implementation) for the tiled maps - [Hardon Collider](http://vrld.github.io/HardonCollider/) for the collision handling - [anim8](https://github.com/kikito/anim8) for animations Thanks to all the creators of these! ## Characters Each object defined in the 'character' layer of the map must have a character definition in the 'characters' folder. The file is named like the name of the object. For example an object named matty has a file 'characters/matty.lua'. In this file all the other properties are defined. And to clarify: a player is just a character with relevant keys attached to it. ## Controllers Defines the movement of a character. Each character has its own instance. It must implement at least the following functions: - sendKey(key) - send a keypress to the controller which then decides if it takes action - stopAnimation() - stops a running character animation and the following properties: - charinfo - an instance of a character file - animation - the active animation Apart from those the controller works how it sees fit.