Combine or rewrite text 1 and text 2 as one for Technical Design Document
Text 1:
Systems:
-NPCs systems:
-- Navigation System:
--- A* Pathfinding Project
-- Sensor System:
--- A system that allows AI agents to sense their environment and detect other agents, objects
-- Inventory System:
--- A system that allows AI agents to pick up items, use items, equip items, store items, drop items
-- Communication System:
--- A system that allows AI agents to exchange information and coordinate with each other
--- Personality System:
---- A subsystem that allows AI agents to have a unique name and unique memory of specific events
-- Faction System:
--- A system that allows AI agents to belong to a specific faction that has unique relationships with other factions
-- Quest System:
--- A system that allows AI agents to take quests, complete quests, fail quests, create quests
-- Trading System:
--- A system that allows AI agents to buy and sell items
-- Combat System:
--- A system that allows AI agents to fight each other with melee or range weapon
-- Health System:
--- A system that allows AI agents to have a health, lose health, restore health
-- Stamina System:
--- A system that allows AI agents to have a stamina, lose stamina, restore stamina


- Camera System
- Audio System
- UI System
- Logging System
- Save Load System

Text 2:
Folder Structure:
- Core
- UI
- Inventory
- Factions
- Items
- Projectiles
- Characters
- Combat
- Quests
- Logging
- SaveLoad
- Items
- Weapons
- Armors
- Consumables

Files and Classes:

Core:
- GameMaster.cs: Main class controlling overall game state and progression.
- GameTime.cs: Class responsible for managing in-game time and date system.

UI:
- UIManager.cs: Responsible for updating and controlling general UI elements.
- InventoryUI.cs: Controls inventory related UI elements.
- QuestLogUI.cs: Controls quest log related UI elements.

Inventory:
- ItemDatabase.cs: Holds all the ScriptableObjects for items in the game world.
- InventorySystem.cs: Handles the inventory system for NPCs and player character.
- Item.cs: Base class for all type of items.
- EquipmentSlot.cs: Enum representing different equipment slots (Head, Body, Hand)

Projectiles:
- Projectile.cs: Base class for all projectiles.

Factions:
- Faction.cs: Base class representing a faction, its relationships, and reputation system.
- FactionDatabase.cs: Holds all the factions and related information in the game world.
- FactionRelation.cs: Represents relationships between factions and their standings.


Characters:
- Character.cs: Base class for all in-game characters, including NPCs and the player.
- Stats.cs: Contains the character’s stats, health, stamina, and other attributes.
- InteractionSystem.cs: Allows characters to interact with their environment and other NPCs.
- TradeSystem.cs: Enables characters to trade items with each other.
- NPCController.cs: Allows NPCs to roam, interact, and generate quests independently.

Combat:
- CombatSystem.cs: Handles all combat related functionality for characters.
- CombatState.cs: Enum representing different combat states (Idle, Attacking, Blocking, etc.)

Quests:
- Quest.cs: Represents a quest with objectives, rewards, and related information.
- QuestGenerator.cs: Creates procedural quests for NPCs.
- QuestObjective.cs: Represents a single objective within a quest.
- QuestCompletion.cs: Responsible for completing the quest and awarding rewards.

Logging:
- GameLogger.cs: Handles logging of game-related events for debugging and analytics purposes.

SaveLoad:
- SaveLoadSystem.cs: Responsible for saving and loading game data to and from files.