You are on page 1of 3

Minotaur Hotel - documentation

I started working on the backend for Minotaur Hotel as a much less experienced
programmer on an engine I was completely
unfamiliar with, and knowing that telling players "wipe your saves" between builds
means a lot of people might not want to
bother with the latest releases, a lot of the bad practices and decisions kept
carrying over and being built on top of
for about a year and a half.
With 0.5 introducing a lot of new mechanics and having to do some heavy lifting to
adapt the old code, I decided, screw it,
I want to do the whole thing over. I'm writing this for people who are curious
about how the game works, or in case
someone has to take over for me (which I hope doesn't happen)

1) SCRIPTS
a) script.rpy initializes both the persistent variables and the global
variables for every playthrough such as the
inventory, guest list, reward list, etc.
b) the subsequient script_build[X].rpy scripts contain the scripts with the
story content for every major update.
c) ruthless_ending.rpy contains the content for the ruthless route that
splits off build 0.3's ending if the player
was cruel to Asterion.
d) script_hinterlands.rpy contains the hinterlands portions (excluding
hinterlands 1, which is in build0.4's file).

2) PRESETS
presets.rpy contains settings such as the guest initial stats, rewards and
their requirements, item descriptions,
how far along a guest route the player can go in the current build of the
game, etc.

3) BACKEND - MODEL
These files contain a domain model.
a) backend_model_stats: the stat block used by guests and rewards, includes
functions such as obtaining a sum
of all stat values or getting a list of the top stats or adding two
stat blocks.
b) backend_model_guest: includes the Guest and GuestList classes that handle
guests and team management, such
as increasing a guest's stats, moving a guest to a specific team or
obtaining all guests with a given
team status. The Guest class includes the progress along that guest's
route.
c) backend_model_inventory: the Inventory class contains the items the player
has, the accumulated stats for
both teams and obtained raw materials.
d) backend_model_reward: includes the Reward and RewardList class, resposible
for the RD and Exploration rewards,
whether a given team meets the stat requirements, listing which rewards
have been obtained, determining
which reward(s) the player will get, etc.
e) backend_model_relationships: includes the Relationship and
RelationshipList classes, which handle the guest
relationships and their routes, as well as which ones the player has
access to in a given moment.
f) backend_model_wardrobe: the Wardrobe class contains all of the outfits
Asterion has access to in the wardrobe
screen. Includes methods for adding new articles of clothing or listing
possible clothing choices.
g) backend_model_daily_event: the DailyEvent and DailyEventList classes.
Starting with 0.5 the game will have an
in-game day loop where some events can be scheduled and happen
independently from story events. These
classes handle the scheduling and triggering of these events and the
scenes shown when they do.

4) BACKEND - ACCESS
These files handle access to the model classes.
a) backend_access_loader: functions that load the game variables with values
from the presets.
b) backend_access_team: functions that coordinate the inventory, guestList
and rewardList for team management.
c) backend_access_ui: functions that obtain data necessary for the user
interface.
d) backend_other_functions: other functions used by the game such as
obtaining the rank at the end of a build or
sorting lists or obtaining random numbers or printing text on the
textbox.

5) NON-LINEAR STORY SCENES:


A lot of the story scenes in Minotaur Hotel are non linear and determined by
the game's systems.
a) reward_scenes.rpy: this file contains the logic for the daily team
sessions (such as showing the teams,
determining the rewards, jumping to the appropriate label, getting
survey reward and triggering danger
events if the player's exploration team has Danger as its highest
stat), as well as the scenes that trigger
upon obtaining R&D and exploration rewards. Some of these are longer
than others.
b) guest_scenes.rpy = these are the scenes for the guest's routes shown when
the player chooses to
spend time with them, or their sidequests.
c) couple_scenes.rpy = the scenes that play for the guest couples, shown when
the player pairs two guests together
and gives them time off to date.
d) daily_events.rpy: scenes triggered by the DailyEvents class. These are
events that can be set to happen at
any point in the game when certain conditions are met, such as
completing a character's route or a set
number of days after obtaining an exploration reward.

6) CHARACTERS:
The following files define the characters:
a) characters_definitions.rpy = the definition for the character objects
renpy uses, and custom textboxes.
b) characters_images.rpy = the images and layered images of characters to be
displayed by Renpy. Includes other
layered images dependent on variables such as the lounge or other NPCs
with no object attached.
c) characters_objects.rpy = sprites for the main characters in MinoH are made
from sub sprites and the classes
in this file, one for each character, defines which sprites to display
and how to modify the character's
outfit, poses, etc.
d) CHARACTER_SPRITES.txt = lists all the possible sprites for the characters.
7) EXTRA SCREENS:
Additional screens needed for gameplay purposes or to replace RenPy's default
UI.
a) extra_screens_menu_screens.rpy = the screens seen in the pause menu such
as the pause, teams, guest, items,
help, history, etc. as well as a couple screens necessary to display
that info.
b) extra_screens_files.rpy = the files screen seen in the pause/main menu.
It's big enough to take up its own file.
c) extra_screens_day_manager.rpy = the day manager screen and the functions
necessary to get it to work.
Also includes the team management, couple picker, guest picker, and
wardrobe screens, which
used to be separate from the day manager but had to be thrown into it
because calling a screen
from inside another is something I can't figure out.
d) extra_screens_contracts.rpy = the screen shown in game for reading
contracts and choosing articles to dispute.
d) custom_screens.rpy = all other custom screens such as the ledger, chapter
transition, poem reader, skip button,
guest picker, background picker, rankning bar, etc.

8) OTHER STUFF:
a) credits.rpy: the credits that play at the end of the Ruthless Route.

You might also like