Initial world
The initial world is used to kick start new games with a populated word. That is, in the initial world you can place objects and offers organized in scenes. When a new game instance is started from your game, a clone world will be created from the initial one, and it will be used as the world of the new game instance. This will be the case for every new game instance that will be created from your game.
Although objects and offers are added to the initial world with the same process, there is an important difference between what adding an object and adding an offer conceptually means.
When you add an object, you actually instantiate an object type that you have defined in your game. When you add a second object, another instance is created, and so on.
On the contrary, when you add an offer, you actually add a proxy of the offer object that you created in your game. If you add the same offer again, then a new offer proxy will be created, and so on. All offer proxies are synchronized. Updates to one of them, are actually updating the single offer object and are reflected in other offer proxies. This approach is followed in order to be able to place the same offer object in various locations (consider for example an offer of chain stores that gives an offer and wants the player to be able to pick that offer when they are close to any one of their stores) and to enforce quantity restrictions (only 100 offer cards will be given regardless where they are picked).
Example of Game Initial World populated with objects |