cakefoot/doc/Cakefoot_Arcade_Operators_Manual.md

14 KiB

Cakefoot Arcade Operator's Manual

If Cakefoot is not installed yet, see Installing Cakefoot as an Arcade Cabinet.

Once the game is installed and running in arcade-only mode, an operator's menu will be available. This menu can be used to set the amount of credits required to play, and to connect to a WiFi network for automatic updates.

Advanced operations can be performed by connecting a USB keyboard, exiting the game, and opening the system terminal.

Operator's menu

Press the operator's button on the inside of the Cakefoot arcade cabinet while Cakefoot is at the title screen. A menu with options specific to the arcade version should appear. In case the operator's button is not working or not installed, attach a USB keyboard to the computer and press the F7 key.

Controls

Use up and down on the joystick to move between menu options. Press any button to start editing an option's value.

If the value is text or a number, the character input widget will appear. Use up and down to go through the list of characters. Select a character and press any button to add it to the option value.

The special characters backspace (⇦) and confirm (⇰) can also be input. Scroll to the end of the list to find those characters. Input a backspace character to delete a character. Input a confirm character to finish editing.

Credits

The Credits required per play option is used to set the number of credits required to start the game. For example, if 4 credits must be inserted before the game should start, set the value to 4.0.

The Credit increase per event option is used to set how much the credit amount should increase per trigger of the credit key. For example, if using tokens, and every token should be worth 2 credits instead of 1, set the value to 2.0.

The Credit display name option sets the name shown on the title screen to display how many credits the player has. For example, if using tokens instead of credits, the name could be set to TOKEN.

WiFi

The Wi-fi network option is used to enter the name of a WiFi network to connect to. Uppercase, lowercase, space, and special characters are supported.

The Wi-fi password option is used to enter the password for the WiFi network. Uppercase, lowercase, space, and special characters are supported.

After changing the WiFi parameters, press APPLY & SAVE to apply the WiFi settings. There is currently no indicator of whether the WiFi is successfully connected, so make sure the parameters are input correctly. A future update is planned to display an icon when network connection is successful.

Apply and save

Settings are not applied until the APPLY & SAVE button is pressed. To reset the changes, press the EXIT button twice to exit the menu without applying.

Advanced system configuration

Some advanced operations are only possible to do from the system terminal. For example, clearing high scores and changing the screen resolution. These operations may be added to the game's interface in the future, but for now it is necessary to close Cakefoot and log into the system terminal.

The standard Cakefoot installation uses headless Linux, meaning there is no windowing system, only the system terminal. To quit to the terminal while Cakefoot is running, attach a USB keyboard to the computer and press SHIFT+CTRL+Q. The shift key prevents Cakefoot from trying to automatically relaunch after being closed, which is the default behavior. Once the game is closed, a login prompt will appear. If the password has not been changed, enter user cakefoot and password forkitup. See below for how to change the password after logging in. If it is not possible to get to the terminal using the key combination, see Crash loop.

All edits must be made using the keyboard and terminal. For the operations in this section, the instructions contain exactly what to input into the terminal. However, it may still be useful to read The Linux command line for beginners if necessary.

Reverting an update

If the system isn't working, it's possible a bad or broken update was installed. In that case, it may be possible to restore to a previously installed version.

Delete the WiFi connection so no further updates will be downloaded. Later, when a new, working update is available, WiFi can be restored. Enter the following, replacing the name with the actual name of the WiFi network currently in use.

> sudo nmcli connection delete "Spicy Meatball"

Once logged into the system, change to the Cakefoot install directory.

> cd ~/cakefoot

List the directory with details to see how the installation is currently set up to run.

> ls -l
total 23424
lrwxrwxrwx 1 cakefoot cakefoot       33 Feb 27 12:34 Cakefoot-linux -> Cakefoot-linux_arcade-1.5.0
drwxrwxr-x 7 cakefoot cakefoot     4096 Feb 27 12:34 Cakefoot-linux_arcade-1.4.2
drwxrwxr-x 7 cakefoot cakefoot     4096 Feb 27 01:58 Cakefoot-linux_arcade-1.4.3
drwxrwxr-x 7 cakefoot cakefoot     4096 Feb 27 02:53 Cakefoot-linux_arcade-1.5.0

Cakefoot-linux is a link to the folder corresponding to the version that will be launched at start up. In this case, it is linked to Cakefoot-linux_arcade-1.5.0. Assume 1.5.0 is a bad update, and use ln to link instead to 1.4.3, the previous version.

> ln -nsf Cakefoot-linux_arcade-1.4.3 Cakefoot-linux
> ls -l
total 23424
lrwxrwxrwx 1 cakefoot cakefoot       33 Feb 27 12:34 Cakefoot-linux -> Cakefoot-linux_arcade-1.4.3
drwxrwxr-x 7 cakefoot cakefoot     4096 Feb 27 12:34 Cakefoot-linux_arcade-1.4.2
drwxrwxr-x 7 cakefoot cakefoot     4096 Feb 27 01:58 Cakefoot-linux_arcade-1.4.3
drwxrwxr-x 7 cakefoot cakefoot     4096 Feb 27 02:53 Cakefoot-linux_arcade-1.5.0

Cakefoot-linux is now linked to Cakefoot-linux_arcade-1.4.3. This means the 1.4.3 version is active. Restart Cakefoot, and the system should be working again.

> systemctl --user restart cakefoot

When a new update is available, or it is confirmed that the issue was not the update, automatic updates can be resumed by reapplying the WiFi settings in the operator's menu.

Switching between HDMI and AUX audio

The file ~/.asoundrc is used to configure the sound card and sound device. The device index in this file can be either 0 to indicate AUX or 3 to indicate HDMI. Use the command below to set the sound device to HDMI. To use AUX instead, use 0 in place of 3.

> echo -e 'defaults.pcm.!card 0\ndefaults.ctl.!card 0\ndefaults.pcm.!device 3\ndefaults.ctl.!device 3' > ~/.asoundrc

Changing the resolution

The resolution can be set in the configuration file, using the parameter at display > dimensions. To override this parameter, add a custom configuration file to the config/ folder. Configuration files are read in alphabetical order, so make sure the file name does not come before the config files already in the folder.

> ls -v ~/cakefoot/Cakefoot-linux/config
config.json  config_arcade.json  config_arcade_cabinet.json
> echo '{"display": {"dimensions": [1280, 720]}}' > ~/cakefoot/Cakefoot-linux/config/resolution.json
> ls -v ~/cakefoot/Cakefoot-linux/config
config.json  config_arcade.json  config_arcade_cabinet.json  resolution.json

Clearing scores

Scores are stored in a JSON file in the storage/ folder. Move that file out of the directory into the home folder to save it as a backup. The game will automatically create a new arcade scores file the next time a score is submitted.

> mv ~/cakefoot/Cakefoot-linux/storage/cakefoot_arcade_scores.json ~/scores_backup.json

Change password

To change the password for the cakefoot user, use the Linux passwd command. Enter passwd into the terminal and follow the prompts.

> passwd

Other configuration

For advanced users, there are more parameters that can be edited in the configuration file. Use less to read the configuration or browse the file at config.json. Then use the same technique as in Changing the resolution to override a particular value.

> less ~/cakefoot/Cakefoot-linux/config/config.json

Help

Crash loop

If the game crashes, only to be reloaded and then crash again repeatedly, the automatic reload service needs to be turned off. If Cakefoot loads to the title screen before it crashes, it's possible to quit the game and stop the service at the same time by pressing SHIFT+CTRL+Q on the title screen. When the game is quit with that key combination, it should not reload automatically.

If the game does not reach the title screen before crashing, it won't be possible to use the key combination to quit. In that case, the only option is to input commands directly into the terminal during the time between relaunches. Between relaunches, the login prompt should appear on screen before the next launch happens. While the login prompt is on screen, enter the username and password (the defaults are cakefoot and forkitup).

Once logged in, enter the following command into the terminal to stop the reload service.

> systemctl --user stop cakefoot

After that, the game should not relaunch automatically anymore. Most likely, the next step would be Reverting an update.

Cakefoot does not load

Most likely, the best thing to do would be to follow the instructions in Reverting an update. There is also the option of looking at the logs to see if there is any helpful error message.

> journalctl --user -u cakefoot

Updates do not download or install

Since there is no feature showing WiFi connectivity built into the game yet, the terminal must be used to test if there is a network connection available. NetworkManager is installed for managing WiFi connections. Try checking the network status to see if internet is working.

> nmcli general status
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN     METERED
connected  full          enabled  enabled  missing  enabled  no (guessed)

The state should be connected, and connectivity should be full. If not, try looking up the available connections to see if the WiFi network has been added successfully.

> nmcli connection show --active
NAME            UUID                                  TYPE      DEVICE
Spicy Meatball  745ae677-0b49-4bba-9111-eab25d7f94f7  wifi      wlp0s20f3

This indicates "Spicy Meatball" is successfully connected. If the network isn't listed, try listing all connections.

> nmcli connection show
NAME            UUID                                  TYPE      DEVICE
lo              9f35a928-850c-4c63-b82e-012ff7823f55  loopback  lo
Spicy Meatball  745ae677-0b49-4bba-9111-eab25d7f94f7  wifi      --

This indicates "Spicy Meatball" has been added to NetworkManager but is not connected. In that case, try deleting the connection before reconnecting it. If the network isn't listed, skip this step.

> nmcli connection delete "Spicy Meatball"

Add the network.

> nmcli device wifi connect "Spicy Meatball" password "B00M->H0t$4uc3"
Device 'wlp0s20f3' successfully activated with '3172be6c-6469-435b-8d23-05d9e8552b6f'.

The output should indicate the WiFi device was successfully activated. Restart Cakefoot and automatic updates should resume.

> systemctl --user start cakefoot

For further information, see RedHat's NetworkManager manual.

There is no sound

See Switching between HDMI and AUX audio for instructions on how to switch to a different sound device. If sound is still not working, there is a terminal GUI available for making sound adjustments. Try running alsamixer to see if there is a sound setting that needs to be adjusted. If the adjustments are successful, save the settings afterward.

> alsamixer
> sudo alsactl store

High scores disappeared

This could be the result of file corruption during a save operation or an error during a software update. If there is an existing file at ~/cakefoot/Cakefoot-linux/storage/cakefoot_arcade_scores.json that isn't being read into the game, it may contain corrupted data. First, backup the file in the home directory in case it can be restored later.

> ls ~/cakefoot/Cakefoot-linux/storage/
cakefoot_arcade_scores.json  cakefoot_preferences.json  cakefoot_progress.json  cakefoot_stats.json
> mv ~/cakefoot/Cakefoot-linux/storage/cakefoot_arcade_scores.json ~/corrupt_scores_backup.json

Then, to see if there is a file that can be restored from a previous update, check for previous versions in the ~/cakefoot/ folder.

> ls ~/cakefoot/
Cakefoot-linux  Cakefoot-linux_arcade-1.4.2  Cakefoot-linux_arcade-1.4.3
> ls ~/cakefoot/Cakefoot-linux_arcade-1.4.2/storage/
cakefoot_arcade_scores.json  cakefoot_preferences.json  cakefoot_progress.json  cakefoot_stats.json

In this example, the 1.4.2 version has a scores file. Try copying that into the current version folder to see if any scores are displayed.

> cp ~/cakefoot/Cakefoot-linux_arcade-1.4.2/storage/cakefoot_arcade_scores.json ~/cakefoot/Cakefoot-linux/storage/

Try running the game to see if any scores were restored. If not, keep trying older versions if there are any left.

Debugging

For advanced users, debug files can be generated with potentially helpful output for fixing errors. Use the technique described in Changing the resolution to enable debug files in the configuration. The values to set to true are log > file enabled and log > debug to file. After the game is run, log files should appear in the log/ folder.

> echo '{"log": {"file enabled": true, "debug to file": true}}' > ~/cakefoot/Cakefoot-linux/config/log.json
> systemctl --user start cakefoot
> ls ~/cakefoot/Cakefoot-linux/log/
cakefoot_debug.log  cakefoot_info.log
> less ~/cakefoot/Cakefoot-linux/log/cakefoot_debug.log