Before I get to the game feature list, there are 2 things I want to be able to doing with when working with Love2D (or any other game engine I decide to trying other than Unity):
- I want everything to be able to be done with just the scripting language (in this case Lua), If I have to dive into C++ code and deal with pointers, memory management, etc., then this is probably not the engine for me.
- I want to be able to use the Entity Component System pattern as I find that interesting and want to see how well it works in practice
- Large "infinite" procedurally generated open world: I want to be able to have an "infinite" open world for the player to explore (and literally infinite would be impossible but I would like to be able to basically chunk up the world into like 128x128, 256x256, etc and then just load / unload chunks as the player move around or something similar to that)
- Render / Simulate Large Chunk Of World At A Time: I want to be able to display and simulate a large chunk of the world at any given time, ideally I would want to shoot for what CDDA does with i think is 132 x 132 (17424 tiles) which could be 100s / 1000s of enemies and other entities that would need to be simulated.
- Z-Levels: I want to be able to have multiple z-levels in the world so that user can move up and down in the world (like multi-floored building, sewers, etc).
- Turn Based System: The game will have a turn based system that is based on "action points" (ie. the player movement cost 3 action points and then all the other entities in the game that can do stuff will simulate 3 action points worth of stuff).
- Crafting System: Crafting is going to be a big part game with the player being able to craft 100s (maybe 1000+) of different of items.
- Building System: Building is another piece of the game the is important to me as I want the player to be able to build there own places to live, crafting "station", etc.)
- Reading / Writing Data Files: Almost all of the game is going to be loading through data files (enemies, items, crafting recipes, tile meta data, etc.) so I want it to be easy to read / write data files (ideally I would like to be able to use YAML however JSON would work if needed).
- AStar Path Finding: I am going to need to have AStar path finding for at least to be able to allow enemies to be able to track down the player and other NPCs (though there are other ideas that I might be able to use this for).
- NPC System: The game will feature a robust NPC system that will allow the player to trade, interact (build up reputation with factions, specific NPCs, etc.), fight, NPCs can interact with other NPCs / enemies, etc.
- Inventory System: The game will feature a fairly standard inventory system that would be in any standard survival style game
- Quest System
- Development and deployment on Mac / Windows
I don't feel that I am going to miss Unity when it comes to building out the game itself as I am mostly in a code editor for that and not Unity's IDE since most things are generated from data files however UI is a different story. The UI I have for the game does not need to be super complex but on the UI side of things, these are the things I would like to be able to do:
- Be able to list items of data (for stuff like inventory items, skills, stats, etc.)
- Be able to have text areas that are variable in size in order to fit the content
- Be able to have content areas that are scrollable
- Be able to have icons / image with the UI easily
Any insight people can provide me about the suitability of Love2D with a game of this kinda using just the scripting language and the ECS pattern would be great (also if you think ECS would not be suitable for this kind of game even outside of the context of Love2D, I would be interested in hearing why).