Deprecated: Return type of Requests_Cookie_Jar::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/thaisweiller/thaisweiller.com/fun/wp-includes/Requests/Cookie/Jar.php on line 63

Deprecated: Return type of Requests_Cookie_Jar::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/thaisweiller/thaisweiller.com/fun/wp-includes/Requests/Cookie/Jar.php on line 73

Deprecated: Return type of Requests_Cookie_Jar::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/thaisweiller/thaisweiller.com/fun/wp-includes/Requests/Cookie/Jar.php on line 89

Deprecated: Return type of Requests_Cookie_Jar::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/thaisweiller/thaisweiller.com/fun/wp-includes/Requests/Cookie/Jar.php on line 102

Deprecated: Return type of Requests_Cookie_Jar::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/thaisweiller/thaisweiller.com/fun/wp-includes/Requests/Cookie/Jar.php on line 111

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/thaisweiller/thaisweiller.com/fun/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 40

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/thaisweiller/thaisweiller.com/fun/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 51

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/thaisweiller/thaisweiller.com/fun/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 68

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/thaisweiller/thaisweiller.com/fun/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 82

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/thaisweiller/thaisweiller.com/fun/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 91
Rooms and game atmosphere – Thais Weiller

Rooms and game atmosphere

So, we have already talked about the basic rules on Sky Castle: the economic progression based on levels, the cooldown time influence and also about other limiters, as food and space. Now we can finally discuss a bit more about the essential thing on the game: its rooms. But before we talk about the rooms themselves, let´s just remember what is SkyCastle´s narrative background.

Player takes role of the surrogate king/queen of almost broke castle. Actually, that´s no ordinary castle, its built on the top of a flying island. So, the main theme around the game is a fantastic medieval setting, which is visible not only on room´s design, but also on characters clothing and on the choice of words used and rooms characteristics, as we will see. However, we didn´t want to take this setting too serious, and instead we mixed references from both medieval periods and modern times. For instance, if you take a close look to the Ballrom or the Mask Shop designs, you will get what I mean.

Fun fun fun

It´s very important to determinate the game atmosphere and that all the creative is in the same page about it. As I have stated, SkyCastle had a fantastic medieval setting but didn´t took historic context too serious [for Thor sake, it was a flying castle!] and that says a lot about the game atmosphere. We also wanted to keep a lighthearted space, so one of the narrative/art priorities was to also have humorous bits.  This atmosphere must be reinforced on every element possible in the game, as on its looks, characters, interface and even game mechanics. We will talk more about how atmosphere influenced other design parts later, so let´s get back to the rooms.

I started with a list of 10~15 rooms the previous designer had imagined, however they had no data except by their name. From this list [which was converted to a spreadsheet right away] , I could add more variables [as price, cooldown time and rent, which we already discussed] and started brweing more and more rooms. It´s important to state that I didn´t get to the present numer of rooms all at once; it was a natural and slow development that took the period of weeks and, as I don´t have the previous records of the spreed sheet, here it is on its final state, with almost 70 rooms.

Below, there is a preview of the rooms info, fresh from the game itself [if the spreadsheet doesn´t show, please refresh the page or click here].

 %CODE03%

Type column represent with of the four kinds of room that was, being red food, green hotel/residence, purple commerce and blue were functional rooms that changed/improved gameplay our produced items. ID was the name that the room was saved on our game, its system name, while Room column represented its visible name to the player. Lvl column stated in which level the rooms would be available for player to buy it [though it was already visible some levels beforehand]. Both goldprice and manaprice stated rooms´ price, however some rooms costed gold while others were available only through mana, depending on which column had a value.  Descrip. was the visible description of the room player would have when clicking for more information before buying it and time stated the cooldown time before collecting next rent [please not that not all rooms produced rent]. All columns below Requires cell (reqRoom, reqItem, quest, place) are requirements for building that room, being reqItem and place consumable while reqRoom and quest were not. NeedFood is the food allocation that rooms would use as active (in the case the room was sold, its allocated food was free again, as we discussed on our previous post). XP was the experience resulted in buying the room, goldgain was the rent it generated, manaChance was its possibility of generating mana every time it produced rent. We will talk more about research and allow columns later, givenFood was the food that the rooms could make available [only food rooms] .  All other columns were reference data, so not very useful for our research here.

Almost everything we previously study culminated in this spreadsheet. For instance, the economical progression is visible on rooms price, while the result of this progression processed by cooldown times is the main determinant factor of rooms rent. There is a small smoothing based on room´s size, for instance a bigger room must me more lucrative than a smaller room in the same level while not being much more expensive, since it occupies more space slots and player had a limited amount of those. Even though player could get more space, those were bought, and not very cheap, so even not paying much more for a bigger room itself, its implied costs were bigger.