Introduction ++++++++++++ Welcome! This is the documentation for Flare Engine. This tool provides an array of tools for creating 2d platformers much quicker, all without touching a line of code! It comes equipped with a streamlined user interface that makes the editor easy to work with. This will quickly get you going on creating your games! If you are reading the autogenerated pdf version, please feel free to read the online version for a more readable experience: **twobitmachines.github.io/FlareEngineDocs** If you have any questions or feedback, please contact us at TwoBitMachinesDev@gmail.com The Basics, Getting Started =========================== At its core, like most custom implementations, the system uses raycasts. These raycasts will emit from the characters and detect the world, bypassing the physics engine. This will allow the user to have greater control over the game world. To get this foundation setup properly, each scene **must** contain a **World Manager** game object. Once this component is in the scene, it will automatically install the following Layers and Tags (if they don't already exist) to ensure smooth operation of the system: **Layers** * **World** - Ground, slopes, walls, ceilings. Use this layer on any game object that is a solid surface. * **Platform** - Use this layer on any game object that is a Moving Platform. * **Player** - Use this layer on the player game object. * **Enemy** - Use this layer on any enemy game object. **Tags** * **Friction** - Use this tag on any ground game object that is using the Friction component. * **Block** - Use this tag on any block if using the Push Block for the player ability Pick And Throw. * **Edge2DUpOnly** - Use this tag on any game object with an EdgeCollider2D that only allows jumping up through it. * **Edge2DDownOnly** - Use this tag on any game object with an EdgeCollider2D that only allows jumping down through it. * **NoClimb** - If the player can climb walls or ceilings, use this tag on any game object that is *not* meant to be climbable. * **UIControl** - Place this on any UI that needs to ignore IsPointerOvergame object. This is useful for UI buttons that need to fire weapons. And that's basically it. That's all you need to get started. From here you can add a player, choose its abilities, design AI enemies, setup common systems such as Inventory or Dialogue, and implement world interactables to spice up your game. Demo ==== As of now, the engine comes with two demos showcasing the many possibilities of the tools. One should use the demos as a starting point for learning. Go into the Hierarchy and check how the game objects are set up and how they connect with other systems via Unity Events. And please feel free to create whatever prefabs you deem necessary from the demos. The first demo has pixel perfect disabled, so you might notice some glitchy artifacts from time to time. Good luck!