- To reduce search space of "is there a new favourite/better alternative" shop to get <something>
- Cims may not be aware of the "new pizza place" that just opened (and only consider places they know exist)
- some other event needs to trigger their awareness of it, like:
- from walking/driving by the place
- proximity to Cims who know about it (family, coworkers, people at the park..)
- flyer in the mail/advertisement/billboards?
- *Caveat: if a Cim has a resource that needs filling and they have no list of known places to go, the game would need to provide them with some option(s) (analagous to a phonebook or a Google search, maybe)
It seems reasonable that Cims would never visit the corner store deep in a suburb all the way across town. The shop would probably never score high enough in fitness algorithms anyway so why not eliminate it from the search space altogether? There are surely shops and corner stores in any city that you have no idea exist and could never go to. I feel a system like this would result in an emergence of highly localized behaviour. Cims, at first, might only know about the grocery stores and gas stations on their main commute route, but as they meet other Cims they would exchange knowledge and update their preferences organically, a sort of exploration. A person doesn't, every month, rank the list of all grocery stores in town, they just go to the best one they know of (ranked by distance, price, quality, etc.)
(@timestamp roughly ~1:00:00, re: robust behaviour) Is it reasonable for Cims to have global knowledge of all shop prices? Say, following the example of a grocery store dropping their prices to 0, if only the people in the immediate neighbourhood of the shop can know about the price change before the shop runs out of stock/goes out of business, this could create a positive global effect that reduces hoarding. A Cim might have "old" information about the shop from a coworker, go check it out but find that the prices have changed or the shop has closed and would themselves not keep gossiping about the shop.
That is to say, when a Cim shares information about a shop, by the time the second Cim visits the shop, if they choose to, will be updated by them either a) hearing new information from another Cim or b) visiting themselves. Interesting emergent behaviour could come from this in a sort of "oversell and underdeliver" kind of way. This same information-transfer mechanic could be used by advertising. A Cim sees an advertisement, draws some conclusion from it (i.e. this school looks like it has an education rating of 8!), goes to visit it, but in reality it finds it to only be a 6.
- have a central authority* delegate computational tasks
- probably just a single server, but could potentially be a group of servers that may represent different cities or regions that need less overall consensus
- clients can connect, recieve "realtime" city data, render the city, but also receive or ask for tasks from the server to help with the load
- players can disconnect during a job and all that is lost are the active jobs (which can be re-assigned)
- actions that have global consequences (like placing a road) would have to be syncronized with the server and committed
- example two roads are built at the same time on empty ground and cross each other before either client sees the other road. The server decides that both can co-exist but that an intersection must be built and it sends that update to the clients.
- many games operate in this sort of "server breaks ties" space
- the client UI would have to cope with displaying things in a satisfying way to the player while also receiving adjustments from the server if necessary.
- far more twitchy time-sensistive games (like shooters and realtime strategy) rely on this client state vs server state issue very gracefully and smoothly
- players who are connected for extended periods of time can build trust and be assigned more jobs in parallel
- stronger computers get harder/more jobs
- the challenge would then turn into accepting finished jobs on potentially old data and not send the entire city out of sync or have to throw out the data
- are the most computationally intense workloads in CB time dependant or are some okay to be a little out of date by the time all clients see the com pleted job? For example, it might not be appropriate for a car to wait at an intersection for its instruction on which way to go, but instead have the larger task of planning the next day's route be delegated out and used later
- the system would be dependant on deadlines for completion (common pub/sub pattern)
- jobs are preferentially delegated to clients who demonstrate the hardware (e.g. system benchmark) capability to complete them on time
- this way, clients with slow machines can take on the less urgent tasks (or even tasks with no deadline)
- Idea: contributing to the simulation has in-game rewards, for example
- land parcels for you to control
- more "votes" in policy making
- a pool of "kilometers" of road you are allowed to lay (sort of cute)
- be granted more access to potentially destructive things (e.g. deleting roads)
- Bonus: heavily disincentivizes trolling (you need to heat up your room to ruin things)
- Perhaps the fact that some jobs will likely be out of date the moment they are accepted by the server, will reflect the optimal solution to a past problem, not the current one is a good thing. Cims would use old information to inform their actions and might not represent the current "best" maximum for t=now().
- Specific example w.r.t going out to eat
- Does the cim have motivation to cook (due to tiredness/lack of skill?)
Disclaimers: These are just rough ideas that I jotted down while listening to the recording, I do not claim they are bullet proof and fully thought through. I do not know very much about the existing internals of CB and these notes may be infeasible to implement in the current state of the game engine. They are only written to spark thought and posit "what if" questions.