go-gma

module
v5.21.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 11, 2024 License: BSD-3-Clause

README

Coverage Status GitHub

go-gma

Golang port of the GMA core API libraries.

This is a work in progress. Only a small portion of the GMA API core library has been ported to this point.

GMA?

This is part of a larger project called GMA (Game Master's Assistant) which is a suite of tools to facilitate the play of table-top fantasy role-playing games. It provides a GM toolset for planning encounters, tracking character state, and running encounters in a comprehensive way. This includes a multi-user interactive tactical battle map where players can move their tokens around the map, initiative is managed automatically, etc.

While we intend to open source GMA later in 2023 2024, it's not quite ready for general use (mostly because it needs to be generalized more to be playable on multiple game systems and less tied to the author's game group). The manual describing the full GMA product may be downloaded here (PDF, 61Mb).

In the mean time, we're porting one part of the GMA suite (the interactive map server) to Go for increased stability and performance, which we will release as open source ahead of the rest of GMA, since it's independent of the generalization issues that are gating the release of GMA.

To support this, the go-gma repository holds parts of the core GMA API needed by the map server.

Documentation

API docs may be viewed at pkg.go.dev.

Building

Running make in the top-level directory will build all the program binaries under the cmd directory.

By default, this will build the server without instrumentation to collect runtime performance metrics. If you wish to compile the server with telemetry instrumentation enabled, run make telemetry.

Versioning

We started out with a desire to keep the version numbers for this project in sync with the main GMA project, so version x.y.z of go-gma would always be compatible with version x.y.z of gma. (This is why go-gma started at at v4. It moved to v5 when the JSON formats were introduced as a breaking change.) This is no longer the case, so the version numbers of each don't necessarily match, since each project has encountered breaking changes at different times.

Game System Neutral

The GMA software and the go-gma client in this repository are intended to be game-system-neutral. They are not written for, nor necessarily intended for use with, the Dungeons & Dragons game from Wizards of the Coast, nor do they rely upon OGL-licensed intellectual property from Wizards of the Coast. Where any game system was in mind for these tools, it was the Pathfinder role-playing game system from Paizo, Inc.

GMA uses trademarks and/or copyrights owned by Paizo Inc., used under Paizo's Community Use Policy (paizo.com/communityuse). We are expressly prohibited from charging you to use or access this content. GMA is not published, endorsed, or specifically approved by Paizo. For more information about Paizo Inc. and Paizo products, visit paizo.com.

Directories

Path Synopsis
Package auth calculates the challenge/response for a login attempt, and checks user input to determine if it was a valid response to the challenge.
Package auth calculates the challenge/response for a login attempt, and checks user input to determine if it was a valid response to the challenge.
cmd
coredb
Coredb is used for maintenance of the core (SRD) database, including loading local items to the database and saving core data to files.
Coredb is used for maintenance of the core (SRD) database, including loading local items to the database and saving core data to files.
image-audit
Image-audit is run on a system which hosts both a GMA server and the web server which offers the map image tiles to mapper clients (or at least has filesystem access to those files).
Image-audit is run on a system which hosts both a GMA server and the web server which offers the map image tiles to mapper clients (or at least has filesystem access to those files).
map-console
Map-console provides a way to interact directly with the GMA game server.
Map-console provides a way to interact directly with the GMA game server.
map-update
Map-update reads each file named on the command line and rewrites the file in the current map file format.
Map-update reads each file named on the command line and rewrites the file in the current map file format.
preset-update
Preset-update reads each file named on the command line and rewrites the file in the current die-roll preset file format.
Preset-update reads each file named on the command line and rewrites the file in the current die-roll preset file format.
roll
Roll provides a command-line utility that rolls dice using the GMA dice library.
Roll provides a command-line utility that rolls dice using the GMA dice library.
server
Server coordinates the actions of connected mappers, the GM console, and other clients.
Server coordinates the actions of connected mappers, the GM console, and other clients.
session-stats
Session-stats collects statistics about the sessions of a campaign, which are stored conveniently in a user-editable JSON file, and reformats them into HTML suitable for posting to a campaign website.
Session-stats collects statistics about the sessions of a campaign, which are stored conveniently in a user-editable JSON file, and reformats them into HTML suitable for posting to a campaign website.
upload-presets
Upload-presets connects to a GMA server and uploads the die-roll presets from one or more files, so they are stored in the server for use during game play.
Upload-presets connects to a GMA server and uploads the die-roll presets from one or more files, so they are stored in the server for use during game play.
Package dice provides a general facility for generating random numbers in fantasy role-playing games.
Package dice provides a general facility for generating random numbers in fantasy role-playing games.
Package gma is the main port of the GMA Core API into the Go language.
Package gma is the main port of the GMA Core API into the Go language.
Package mapper implements a standard client interface for the mapper service.
Package mapper implements a standard client interface for the mapper service.
Package namegen implements random name generation.
Package namegen implements random name generation.
Package tcllist converts between Tcl list strings and Go slices.
Package tcllist converts between Tcl list strings and Go slices.
Package text provides text processing facilities used by GMA.
Package text provides text processing facilities used by GMA.
Package util provides miscellaneous utility functions that don't deserve their own package.
Package util provides miscellaneous utility functions that don't deserve their own package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL