Extensions
==========

FRT provides a few non-intrusive extensions compared to the official
godot platforms.  Note that some of them might be removed in the future
if the official godot starts to provide other means to address the same
issues.

## Command Line

When you invoke godot, arguments starting from the option `--frt` are
intercepted by FRT.  For example:

	godot.frt.opt.pi1 myscene.tscn --frt -h

will not start godot. Instead, a message like the following is printed
to stdout:

	usage: godot.frt.opt.pi1 [godot args] [--frt [options] [param=value...]]

	options:
	  -v                  show version and exit
	  -h                  show this page and exit
	  -p perfmon.csv      save performance monitor data
	  -e resource         extract resource

	params:
	  color_size
	  alpha_size
	  depth_size
	  multisample
	  disable_meta_keys
	  blacklist_video_bcm
	  exit_on_shiftenter

The performance monitor data has been added because I have found that a
non-optimized build of godot/frt is much slower than an optimized build,
so letting the optimized build dump data to be analyzed later is a
better alternative than to try to connect to an editor from a
non-optimized build.

Resource extraction makes it easy to embed small files in single-file
games.  For example, if you export a standard 2.1.3 project as an EXE
using the Linux template, but giving the editor `godot.frt.opt.pi1` as a
custom binary, you end up with a single file, say `mygame` that you can
gzip and distribute.

Users should be able to just run the game, but they could also type:

	mygame --frt -e README.md

to extract a README file.

Only resources in the res://frt/ folder can be extracted this way, and
there are strict limits on the characters that you can use for the name
of the resource (the first character must be alphanumeric - the
following ones can also be '.', '-' and '\_').

## Parameters

You can add some options in the custom section "frt" of the project
settings.  The section is not required and is in any case ignored by the
standard godot platforms.

For example, adding this:

	[frt]

	depth_size = 24
	multisample = true

to `engine.cfg` will allow you to tune the engine.

You can also override or set the values from the command line.  For
example, if you have a third-party game that shows some artifacts that
you suspect might be due to godot/frt using a 16-bit depth buffer by
default, you can try running it like this:

	godot.frt.opt.pi1 --frt depth_size=24

### Disabling the meta keys

If you already provide a way to close the game (for example, using an
in-game menu), you might prefer to disable the handling of meta keys
by FRT.
Be careful that, since FRT grabs the keyboard when running without X11,
the user might not be able to quit the game in any other way.

### Blacklisting the bcm driver

The Godot 3.x rendering engine might have problems with some 3D games running
with the bcm video driver. In some cases, the Linux kernel could crash.
Unless you can test extensively, it is probably safer to blacklist the bcm
driver when releasing 3D games using Godot 3.x.
The game will run normally when running with other drivers, but will exit
suggesting to switch to the vc4 driver when running with the bcm driver.

### Exit the game when pressing Shift+Enter

Provides a universal way to terminate the process that matches the default
key configuration in RetroPie.