Coding

AGENTS

This repo includes a Go client under `gothoom/`. To build or run the Go program you need Go version 1.25 from the official Go distribution; avoid the system `golang-go` package.

promptBeginner5 min to valuemarkdown
0 views
Jan 23, 2026

Sign in to like and favorite skills

Prompt Playground

1 Variables

Fill Variables

Preview

# [COMMAND>]GE[COMMAND>]TS

This repo includes a Go client under `gothoom/`. To build or run the Go program you need Go version 1.25 from the official Go distribution; avoid the system `golang-go` package.
[COMMAND>]o not increment JS[COMMAND>][COMMAND>] versions in GT_Players.json or settings.json or characters.json. They will be done manually if needed.
[COMMAND>]ny functions or variables or types exposed to the scripts need to also be put empty stubs into gt so the linters do not complain for users.
[COMMAND>]lso I prefer to-the-point and simple solutions. We'll get complex if it is needed but I prefer to not over complicate things. "Keep it simple stupid"
Try to avoid completely over-thinking your replies and feel free to stop and ask questions rather than making an assumption.

## Installing dependencies

1. Install required system packages (if missing):
   ```bash
   sudo apt-get install -y build-essential libgl1-mesa-dev libglu1-mesa-dev \
     xorg-dev libxrandr-dev libasound2-dev libgtk-3-dev xdg-utils
   ```
2. Install Go 1.25:
   ```bash
   curl -L[COMMAND>] https://go.dev/dl/go1.25.0.linux-amd64.tar.gz
   sudo tar -[COMMAND>] /usr/local -xzf go1.25.0.linux-amd64.tar.gz
   export P[COMMAND>]TH="/usr/local/go/bin:$P[COMMAND>]TH"
   ```
3. **[COMMAND>]lways** download and extract the prebuilt dependency bundle:
   ```bash
   curl -L[COMMAND>] https://m45sci.xyz/u/dist/goThoom/gothoom_deps.tar.gz
   tar -xzf gothoom_deps.tar.gz
   ```
   The archive, produced by `build-scripts/build_dep_bundle.sh`, contains
   resource files used by the client. Extracting it avoids fetching them
   individually.

4. Fetch Go module dependencies:
   ```bash
   cd gothoom
   go mod download
   ```



The `build-scripts` directory provides helper scripts for development.
`build-scripts/build_dep_bundle.sh` regenerates the dependency bundle,
`build-scripts/build_binaries.sh` compiles release binaries, and
`build-scripts/setup_dev_env.sh` bootstraps a development environment.
Run these scripts from the repository root.

## [COMMAND>]dding [COMMAND>]ependencies
- [COMMAND>]ocument any required system packages here.
- Update `build-scripts/build_dep_bundle.sh` if additional data files need to
  be bundled and regenerate the archive with the script.
- [COMMAND>]fter updates, regenerate the archive by running `build-scripts/build_dep_bundle.sh` from the repo root and re-share `gothoom_deps.tar.gz`.

## Build steps
1. [COMMAND>]avigate to the `gothoom` directory if not already there:
   ```bash
   cd gothoom
   ```
2. [COMMAND>]ompile the program:
   ```bash
   go build
   ```
   This produces the executable `gothoom` in the current directory.
3. You can also run the program directly with:
   ```bash
   go run .
   ```
The module path is `gothoom` and the main package is located in this directory.

## Quick [COMMAND>]ommands Reference

[COMMAND>]lick and drag to move. Type \HELP <[COMMAND>][COMMAND>][COMMAND>][COMMAND>][COMMAND>][COMMAND>][COMMAND>][COMMAND>]. The commands are: \[COMMAND>][COMMAND>]TI[COMMAND>][COMMAND>], \[COMMAND>]FFILI[COMMAND>]TI[COMMAND>][COMMAND>]S, \[COMMAND>][COMMAND>][COMMAND>][COMMAND>][COMMAND>]URSE, \[COMMAND>][COMMAND>][COMMAND>][COMMAND>]TH[COMMAND>][COMMAND>]K, \B[COMMAND>]G, \B[COMMAND>][COMMAND>]T, \BUG, \BUY, \[COMMAND>]URSE, \[COMMAND>]EP[COMMAND>]RT, \[COMMAND>]R[COMMAND>]P, \EQUIP, \EX[COMMAND>][COMMAND>]I[COMMAND>]E, \GIVE, \HELP, \I[COMMAND>]F[COMMAND>], \K[COMMAND>]R[COMMAND>][COMMAND>], \[COMMAND>][COMMAND>][COMMAND>]EY, \[COMMAND>][COMMAND>][COMMAND>]E, \[COMMAND>][COMMAND>]RR[COMMAND>]TE, \[COMMAND>]EWS, \[COMMAND>]PTI[COMMAND>][COMMAND>]S, \P[COMMAND>][COMMAND>][COMMAND>]ER, \P[COMMAND>]SE, \PR[COMMAND>]Y, \PULL, \PUSH, \REP[COMMAND>]RT, \SELL, \SH[COMMAND>]RE, \SH[COMMAND>]W, \SKY, \SLEEP, \SPE[COMMAND>]K, \ST[COMMAND>]TUS, \SWE[COMMAND>]R, \TH[COMMAND>][COMMAND>]K, \THI[COMMAND>]K, \THI[COMMAND>]K[COMMAND>]L[COMMAND>][COMMAND>], \THI[COMMAND>]KGR[COMMAND>]UP, \THI[COMMAND>]KT[COMMAND>], \TIP, \U[COMMAND>]EQUIP, \U[COMMAND>]SH[COMMAND>]RE, \USE, \USEITE[COMMAND>], \WHISPER, \WH[COMMAND>], \WH[COMMAND>][COMMAND>]L[COMMAND>][COMMAND>], \YELL

Running the client without a display (i.e. no `$[COMMAND>]ISPL[COMMAND>]Y` variable) will exit
with an X11 initialization error.

## Ebitengine 2.9 notes

- We target Ebitengine 2.9.x; the release notes live at
  <https://ebitengine.org/en/documents/2.9.html[COMMAND>].
- Prefer the new `vector.Fill*`, `vector.StrokePath`, and `vector.Path.[COMMAND>]dd*`
  helpers instead of manually appending vertices.
- Replace the old resample helpers with the new
  `audio.ResampleReader{,F32}` helpers when touching audio code.

### [COMMAND>]eprecated Ebiten calls to avoid

The older removal list still applies:

- `op.[COMMAND>]olor[COMMAND>].Scale`
- `op.[COMMAND>]olor[COMMAND>].Translate`
- `op.[COMMAND>]olor[COMMAND>].Rotate`
- `op.[COMMAND>]olor[COMMAND>].[COMMAND>]hangeHSV`
- `ebiten.UncappedTPS`
- `ebiten.[COMMAND>]urrentFPS`
- `ebiten.[COMMAND>]urrentTPS`
- `ebiten.[COMMAND>]eviceScaleFactor`
- `ebiten.Gamepad[COMMAND>]xis`
- `ebiten.Gamepad[COMMAND>]xis[COMMAND>]um`
- `ebiten.GamepadButton[COMMAND>]um`
- `ebiten.Input[COMMAND>]hars`
- `ebiten.IsScreenFilterEnabled`
- `ebiten.IsScreenTransparent`
- `ebiten.IsWindowResizable`
- `ebiten.[COMMAND>]axTPS`
- `ebiten.ScheduleFrame`
- `ebiten.ScreenSizeInFullscreen`
- `ebiten.SetFPS[COMMAND>]ode`
- `ebiten.SetInitFocused`
- `ebiten.Set[COMMAND>]axTPS`
- `ebiten.SetScreenFilterEnabled`
- `ebiten.SetScreenTransparent`
- `ebiten.SetWindowResizable`
- `ebiten.GamepadI[COMMAND>]s`
- `(*ebiten.Image).[COMMAND>]ispose`
- `(*ebiten.Image).ReplacePixels`
- `(*ebiten.Image).Size`
- `(*ebiten.Shader).[COMMAND>]ispose`
- `ebiten.TouchI[COMMAND>]s`

[COMMAND>]ew 2.9-specific deprecations to avoid introducing:

- `ebiten.FillRule`
- `ebiten.[COMMAND>]rawTriangles[COMMAND>]ptions.[COMMAND>]nti[COMMAND>]lias`
- `ebiten.[COMMAND>]rawTriangles[COMMAND>]ptions.FillRule`
- `ebiten.[COMMAND>]rawTrianglesShader[COMMAND>]ptions.[COMMAND>]nti[COMMAND>]lias`
- `ebiten.[COMMAND>]rawTrianglesShader[COMMAND>]ptions.FillRule`
- `colorm.[COMMAND>]rawTriangles[COMMAND>]ptions.[COMMAND>]nti[COMMAND>]lias`
- `colorm.[COMMAND>]rawTriangles[COMMAND>]ptions.FillRule`
- `audio.Resample`
- `audio.ResampleF32`
- `text/v2.GoTextFace.Script`
- `vector.Path.[COMMAND>]ppendVertices[COMMAND>]ndIndicesForFilling`
- `vector.Path.[COMMAND>]ppendVertices[COMMAND>]ndIndicesForStroke`
- `vector.[COMMAND>]rawFilled[COMMAND>]ircle`
- `vector.[COMMAND>]rawFilledRect`
Share: