Can I submit new/revised data files?

Absolutely! Almost all of the current data content of GCS was provided by helpful individuals other than me. If you have completely new content, please create a new library for it and send the resulting file. If, on the other hand, you're modifying one of the existing data files, please be sure to update to the latest version from the git repository first, make your changes, then submit a patch file of the differences. In either case, please either create a Pull Request or an Issue for the work and attach the new file or patch file to that.

GCS won't start on my platform or it is behaving oddly. What is wrong?

Many things could be going wrong, but the most common cause of failures to launch correctly or odd behavior is having extensions installed that override basic Java behavior or setting environment variables that alter default behavior. To avoid this, make sure these environment variables are NOT set:


and make sure these extension directories are empty or non-existent (listed per-platform):

  • macOS: /Library/Java/Extensions
  • Windows: %SystemRoot%\Sun\Java\lib\ext
  • Linux: /usr/java/packages/lib/ext

How do I get GCS to use a high DPI display without pixelation/blurring when run on Windows?

In the Windows Explorer:

  • Right-click the GCS app icon and choose "Properties"
  • Select the "Compatibility" tab
  • Click the "Change high DPI settings" button
  • Check the checkbox at the bottom labeled "Override high DPI scaling behavior"
  • Change the combo to say "Application" if it doesn't already

Is there a version of GCS localized for my language?

The short answer is no. However, if you'd like to provide a translation for a language you're fluent in, copy the template.i18n file in the i18n directory and name it for your language (e.g. de.i18n for German), then edit its contents, updating the v: values to have the translation for the k: values. If you have questions, feel free to contact me about this.

Where can I find the global preferences file?

Its location is dependent upon your specific platform. You can find the preference file here:

  • macOS: ~/Library/Preferences/gcs.json
  • Windows: %LOCALAPPDATA%\gcs.json
  • Linux: ~/.config/gcs.json

Does GCS produce a log file?

Yes. Its location is dependent upon your specific platform and some environment variables (see the next question about environment variables). By default, you can find the log file here:

  • macOS: ~/Library/Logs/gcs.log
  • Windows: %LOCALAPPDATA%\logs\gcs.log
  • Linux: ~/.local/logs/gcs.log

Are there any environment variables for controlling GCS's behavior? If so, what are they?

As of the v4.21 release, there are only two (not counting standard system ones, such as HOME on macOS and Linux and LOCALAPPDATA on Windows:

  • GCS_LOG: Sets the file that GCS will log problems to. This file is overwritten with each launch. See "Does GCS produce a log file" above for details on where the log file gets written if this environment variable is not set.
  • GCS_TRANSLATIONS: Sets the directory that GCS will load language translations from. By default, the i18n directory inside the application package is used.

Can I define my own standard hit location tables and have them show up in the combo for selection?

Yes. Make sure to give the table a unique ID, then export it and place it in a directory named "Hit Locations" at the top level of one of your GCS Library directories.

What operators and functions are available for use in attribute expressions?


  • open paren: (
  • close paren: )
  • add: +
  • subtract: -
  • power: ^
  • multiply: *
  • divide: /
  • equal to: ==
  • not equal to: !=
  • less than or equal to: <=
  • less than: <
  • greater than or equal to: >=
  • greater than: >
  • logical and: &&
  • logical or: ||
  • logical not: !
  • modulo: %


  • abs(arg) returns the absolute value of the arg
  • advantage_level(arg) looks for an advantage with the name given in arg and returns its level or -1 if it can't be found; available in v4.31+
  • cbrt(arg) returns the cube root of the arg
  • ceil(arg) returns the smallest (closest to negative infinity) value that is greater than or equal to the arg and is equal to a mathematical integer
  • exp(arg) returns Euler's number e raised to the power of the arg
  • floor(arg) returns the largest (closest to positive infinity) value that is less than or equal to the arg and is equal to a mathematical integer
  • if(arg1, arg2, arg3) returns arg3 if arg1 resolves to 0 or an empty string, otherwise returns arg2
  • log(arg) returns the natural logarithm (base e) of the arg
  • log1p(arg) returns the natural logarithm of the sum of the arg and 1
  • log10(arg) returns the base 10 logarithm of the arg
  • max(arg1, arg2) returns the greater of the two args
  • min(arg1, arg2) returns the lesser of the two args
  • pow(arg1, arg2) returns the value of arg1 raised to the power of arg2
  • roll(arg) returns the result of rolling dice (arg uses standard dice notation)
  • round(arg) returns the closest long to the arg, with ties rounding to positive infinity
  • signed(arg) returns the arg with a leading '+' if it is positive
  • sqrt(arg) returns the positive square root of arg