A little overview of what I've been trying to do for the last month and why:
Our old system while working reasonably well had more holes in it than Swiss cheese. For once, most of it was not "real", clients were not directed through businesses, it was not ready for expansion (partly because it was originally written for a much simpler/smaller concept) and all upgrades were linear (as in not having any relevant effects on the business, just modifying couple of values and adding a text). That is just to name a few issues...
If you recall, I tried coding in a better system but gave up after a few days due to insane complexity of building a capable business management code. I left the code sitting by idly in the game hoping one day to resume it, that never happened because Doc dug up SimPy Python module that did the very management thing I was trying to code, it took me about 3 or 4 weeks to figure it out to use effectively but I think that I am getting there, at least for the first version of a new module.
History aside, this is how it works:
1) Buildings.
Currently buildings hold a number of general attributes and space to add upgrades (outside and inside). Most of those upgrades require time to build/expand.
Building manages flow of clients:
- Clients walks in and wants to use one of the businesses. If business is running at full capacity (no rooms at brothel/chairs in bar and etc.), client can either leave, wait or go use a different business. This can be managed more favorably if there is a manager in the building.
- Building also holds financial data, runs the simulation environment and etc.
2) Upgrades (or businesses).
They can be habitable/workable or both:
- habitable means that a person can live there.
- workable means some form of a business.
Business have 2 forms and will have one more:
Form 1: Personal Service which means a personal service to a customer or a number of customers. Simplest example is WhoreJob.
Form 2: Public Service which means serving some pool of customers in no particular order. Example is StripClub.
Form 3: Task Service where there is usually no customers and workers simply have to complete some task (Building/Crafting and etc.)
3) Jobs:
Presently jobs are simply a holders for simple data and a number of methods (functions). They are used to check if a character is willing to do the particular job and log in/form next day reports.
All clients are now properly created, I have some ideas for dummy clients to improve upon performance but that will code post beta. Clients go into rooms, clubs, bars, wait in the lobby and etc. All of that is simulated client by client. For time discrete units are used, presently a base of 100 units. Such a setup will allow truly meaningful, noticeable upgrades to business (yes (sub)upgrades for upgrades) and meaningful control over workflow with managers/MC.
I will expand of this post if questions arise or something needs to be made clearer.
I'll also try to create new issues with checklist to better track progress on jobs and manage it.