To change a configuration file you will need to know the YAML language that is widely used by the game. Like in CDL, there are some rules to follow.
If you already know YAML or CDL you can jump the next section:
YAML
CDL (Cabinet description language) is written in YAML.
The special file description.yaml
describes the parts of the cabinet.
description.yaml
YAML is composed by keys
and values
:
key: value
The keys can only contain non-capital letters and no special characters.
Dependency are indicated using tabs.
Values can be anything:
- integers
- floats (dot decimal delimited): 3.1416
- strings
- booleans:
true
orfalse
. - a document (a group of key/values)
- a list of values (each element of a list starts with a
-
)
A yaml
detailed tutorial: YAML Tutorial: Everything You Need to Get Started in Minutes
Configuration files
You can find the files in the path /sdcard/Android/data/com.curif.AgeOfJoy/configuration
in your Quest 2. If you don’t have the folder, is because you didn’t run the 0.3.0 version (or superior) yet; the first time it runs creates the folder and the default configuration.yaml
. Once you have it you are ready to change it.
If you change the file when the game is running, then the game will react a seconds later. You don’t need to restart the game.
You can change files on the Quest disk by copying or editing the file directly.
Files types
You can have two o more types of files in the configuration
folder:
- Global configuration: named
configuration.yaml
affects all the game. - Room configuration: named
<room name>.yaml
. Example:room001.yaml
orroomintro.yaml
. Each room in the game has its own code, you can find the code in the Configuration control cabinet installed in each room; just add the.yaml
extension to the name.
Room configuration files
At start, only the configuration.yaml
file exists, it is global and all the rooms respond to the configuration of that file. But, if you create a room configuration file, then the room will respond to the configuration of that file. You don’t need to repeat all the keys
in all files, just change what you need in the room configuration file. For example, you can disable NPCs in the global configuration, but enable them in the room004.yaml
. What you write in a room file affects only to that room and only the parameters that you write there, the others parameters responds to the global configuration file.
Both type of files share the same yaml structure.
configuration.yaml elements
npc
Non playing characters configuration.
status
can be:
enabled
: they walk and play as usual.static
: they walk to a position in the room and stay there forever.disabled
: to disable the NPC. They will left you alone in the room.
audio
background
It’s the background sound, you can change the volume or mute it.
volume-percent
: 0-100, 100 is loudmute
: true/false. You can mute the background audio using this key.
in-game-background
It’s the background sound when you play a game. The keys and values are the same. Maybe you want to mute the background sound when you are playing, or decrement to a 20% (like the example)
System skin
The system-skin
key configures the look & feel of the configuration controller screen used in the Visual configuration.
At the moment these are the options:
zx
: Sinclair look and feelcpc
: Amstradc64
: Commodore 64
Locomotion
Refers to the player’s movement in the virtual space (walk, rotate, etc.)
teleport-enabled
:true
orfalse
. Activate/deactivate the In Room Teleportationspeed
: is the translation velocity. The velocity used to walk.turn-speed
: is the velocity that the player used when rotate.snap-turn-active
:true
orfalse
. Activate/deactivate snap turn.snap-turn-amount
: number of degrees to rotate.
Player
To configure some aspects about the player:
height
: a decimal point number that represents the player’s eye sight height. Values can vary from 1.35 to 1.85 max. 1.6 is an average height. The default (zero) is your real height.
Heights
Use Calculated
(height
zero) to use your real height in the game.
The values are not exact but indicative.
Option | Height (aprox) |
---|---|
Pac-man (short) | 1.35m |
Sonic | 1.4m |
Pikachu | 1.45m |
Mario | 1.5m |
Luigi | 1.55m |
Final Fantasy (avg) | 1.6m |
Megaman | 1.65m |
Street Fighter | 1.7m |
Donkey Kong | 1.75m |
Mega Boss | 1.8m |
NBA Jam (tall) | 1.85m |
Example
Cabinet
Global cabinet configuration
insert-coin-on-startup
: Set to true
to not start the game when you insert the first coin. Useful in games that you want to enjoy the start of the game (presentation activities).
screen-glow-intensity
: set a value from 0
(no glow) to 5
to control the intensity of the CRT screen light. This setting allows the screen’s glow to realistically affect the surrounding cabinet parts.
AGEBasic
AGEBasic a special version of the BASIC programming language. To learn how to program in AGEBasic read the AGEBasic programing document.
You can change the configuration of any the room using an AGEBasic program. The program will run after the room loads. If you want to run the same AGEBasic program globally for all the rooms, the best way is to set it in the configuration.yaml
file. But if you want to run a different one for any room you can set it in the <room name>.yaml
(room configuration file). You can set both, and if a room have a configuration file with an agebasic
entry on it, the configuration cabinet will use the last one and discard the global one. This is the normal behavior for all configuration files (see the Merging section below)
The programs runs in the Configuration control cabinet, and you can see the results in the screen.
As always you can set the debug
entry and the configuration cabinet will save the errors (if any) in a file . Also you can set the Debug Mode with the AGEBasic funcion DebugMode(1)
in your AGEBasic program.
Example
room001.yaml
This configroom1.bas
will run after the room001 is loaded, because is configure in the room001.yaml
file.
The configroom1.bas
must exists in the /sdcard/Android/data/com.curif.AgeOfJoy/AGEBasic
path. If not, you will receive an error like:
If the program has some syntax error on it, you should check it again in the screen of the configuration cabinet:
Or if the program runs without any problem:
Merging Example
In this example, you disabled all NPCs except those in room001.
configuration.yaml
:
room001.yaml