I made a post not to long ago seeking advice on how to organize a codebase and someone explained an adapted version of the MVC/MVCS architecture which I’ve been trying to use for my game.
From what I understand model represents the data and business logic, view displays the data to the player and sends commands (gui interactions?) to the controller, controller handles user input and interacts with the model and updates the view and it handles the networking, and lastly service is just business logic. Overall it seems to do a good job at separation of concerns/responsibilities.
The problem I have though is it doesn’t make sense how to actually implement things for example a shop system I might have a ShopModel, ShopView, ShopClientController, ShopServerController, and ShopService but where do I handle talk to NpcA and open ShopA or NpcB and open ShopB and each shop sells different things? Another example from my game is creating 20-30 varied tools it could be as simple as increasing speed while equipped or a spellbook with 4 different abilities.