The hardLizard0 engine is a tile based game engine written in golang using hajimehoshi/ebiten as a backend and an Entity-Components-Systems (ECS) framework.
This is a hardLizard Studios project.
To run, execute go run *.go in the source directory.
-
Entities
- Player - Being user controllable mob
- Mob - Being damageable and damaging NPC.
- NPC - Being movable, interactable sprite.
- Cursor - For use in menus.
- Obj (No AI) - Boxes, Chests, Question Blocks, etc.
- Items - Usable items that are held in inventory and selected for use.
- Map - World Map, Dungeon, etc Maps.
- Health
- Death
-
Components
- Player Singleton - The player singleton will contain one off information for the player entity.
- PVA
- Position
- Velocity
- Acceleration
- Z Position - Game world height, used to determine render order and collision information
- Hitbox - Circular Hitboxes.
- Health - Player/Mob/NPC health. Allows negative.
- Collision Flag - Ture if collidable object.
- Physics Flag - True if object is movable.
- Projectile Flag - Moves using AI, damages on collision, despawns on collision.
- Inventory - Flags and counters for items. Limit to player or allow NPCs to have inventory depending on game type.
- Currency - Player only, for now. Possibly all entities depending on game type.
- VRAM
- Tileset
- Sprite Sheet
-
Systems
- Player Input
- Movement
- Action
- Pause Menu
- Update Position
- Update Velocity
- Update Acceleration
- Update Z Position
- Circle Collision Detection
- Detection
- Push
- Knockback
- Tile Floor Collision
- Tile Wall Collision
- Damage
- Heal
- Death
- Render Loop
- Render Map (On Grid Single Entity)
- Render Sprites (Off Grid Entities)
- Update Inventory
- AI
- A*
- Dijkstra Map
- Animation
- Tiles
- Sprites
- Items
- Camera
- Follow Player
- Scroll on Screen Boundary
- Scroll to New Room
- Player Input
-
Utility
- JSON Map Loader
- JSON Sprite Loader
- Randomizer
- Timer