Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://gitlab.com/wargames_tex/wargame_tex
Style for defining wargames in LaTeX, including generating VASSAL modules
https://gitlab.com/wargames_tex/wargame_tex
VASSAL hex'n'counter latex print'n'play wargame
Last synced: 2 months ago
JSON representation
Style for defining wargames in LaTeX, including generating VASSAL modules
- Host: gitlab.com
- URL: https://gitlab.com/wargames_tex/wargame_tex
- Owner: wargames_tex
- License: cc-by-sa-4.0
- Created: 2018-06-08T19:31:37.378Z (over 6 years ago)
- Default Branch: master
- Last Synced: 2024-07-30T21:01:21.128Z (5 months ago)
- Topics: VASSAL, hex'n'counter, latex, print'n'play, wargame
- Stars: 9
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# A package to make Hex'n'Counter wargames in LaTeX
This package can help make classic [Hex'n'Counter wargames][1] using
LaTeX. The package provide tools for generating- Hex maps and boards
- Counters (called _chits_ since TeX have already taken _counters_)
for units, markers, and so on
- Counter sheets
- Order of Battle charts
- Illustrations in the rules using the defined maps and countersThe result will often be a PDF (or set of PDFs) that contain
everything one will need for a game (rules, charts, boards, counter
sheets).- The package uses [NATO App6](#nato-app6 'Section below') symbology for
units.
- The package uses [TikZ][2] for most things.
- The package support exporting the game to a [VASSAL](#vassal-support
'Section below') module## Sources
The sources of the package are kept at [GitLab][3]
## Downloads available at GitLab
- [Zip file of package and support files][wargame_tex.zip]
- [Browse content of package][browse]
- [Documentation][wargame.pdf]
- [Tutorial][tutorial.pdf] (and associated VASSAL [module][Game.vmod])
- [Table of symbols][symbols.pdf]
- [Compatibility][compat.pdf]## Installation
The instructions below are geared towards Un*x-like systems, for
example GNU/Linux and MacOSX. For more information on setting the
prerequisites and this package on various platforms, please see [this
page](https://wargames_tex.gitlab.io/wargame_www/build.html).### From ZIP file
To install, get the ([zip file][wargame_tex.zip]) and unzip into your
TeX tree, for examplemkdir -p ~/texmf
(cd ~/texmf && unzip ../wargame_tex.zip)
### From git cloneIf you clone from GitLab
git clone https://gitlab.com/wargames_tex/wargame_tex.git
to get the sources, then you can do,cd wargame
make install
to install in `~/texmf`. If you prefer another destination, say
`/usr/local/share/texmf`, domake install DESTDIR=/usr/local/share/texmf
## Download from CTAN
The package is available from [CTAN][4] in the directory
`/macros/latex/contrib/wargame`. The package is part of the CTAN
distribution [TeXLive][5].### From TDS zip archive
You can get the *TDS* [zip
file](https://mirrors.ctan.org/install/macros/latex/contrib/wargame.tds.zip)
and unpack that into your desired destination, e.g., `~/texmf`unzip wargame.tds.zip -d ~/texmf
orsudo unzip wargame.tds.zip -d /usr/local/share/texmf
### From sourcesIf you get the source (`wargame.ins`, all `.dtx`,`.py`, and
`Makefile`) files, then domake install
to install into `~/texmf`. If you prefer to install somewhere else,
say `/usr/local/share/texmf`, then domake install DESTDIR=/usr/local/share/texmf
If you do not have `make` (or `gmake` on MacOSX), or because you are
on some system which does not have that tool (e.g., Windows), then do
(the equivalent of)latex wargame.ins
pdflatex wargame.beach
pdflatex wargame.city
pdflatex wargame.light_woods
pdflatex wargame.mountains
pdflatex wargame.rough
pdflatex wargame.swamp
pdflatex wargame.town
pdflatex wargame.village
pdflatex wargame.woods(You need to use `pdflatex`, `xelatex`, or `lualatex` - plain `latex`
with DVI output will not work)Then copy the relevant files to your TeX tree (e.g., `~/texmf/`)
asmkdir ~/texmf/tex/latex/wargame
cp tikzlibrary*.tex ~/texmf/tex/latex/wargame/
cp wargame.sty ~/texmf/tex/latex/wargame/
cp wgexport.cls ~/texmf/tex/latex/wargame/
cp wargame.*.pdf ~/texmf/tex/latex/wargame/
cp wgexport.py ~/texmf/tex/latex/wargame/
cp wgsvg2tikz.py ~/texmf/tex/latex/wargame/
To generate the documentation, after having done the above, dopdflatex wargame.dtx
makeindex -s gind -o wargame.ind wargame.idx
pdflatex wargame.dtx
pdflatex wargame.dtx
pdflatex symbols.tex
pdflatex compat.tex
pdflatex compat.tex
(You need to use `pdflatex`, `xelatex`, or `lualatex` - plain `latex`
with DVI output will not work)You can install these into your TeX tree with (e.g., `~/texmf/`)
mkdir -p ~/texmf/doc/latex/wargame/
cp wargame.pdf ~/texmf/doc/latex/wargame/
cp symbols.pdf ~/texmf/doc/latex/wargame/
cp compat.pdf ~/texmf/doc/latex/wargame/
If you want to generate the tutorial document, docd tutorial
make
orcd tutorial
pdflatex game
pdflatex game
If you also want to make the tutorial VASSAL module, do (also in
`tutorial`), dopdflatex export.tex
../wgexport.py export.pdf export.json -o Game.vmod \
-d "Example module from LaTeX PnP game" \
-t "LaTeX wargame tutorial" -v 0.1 \
-p patch.py
Note, you need `pdfinfo` and `pdftocairo` from Poppler, and Python
with the module `PIL` for this. On Debian-based systems, dosudo apt install poppler-utils python3-pil
## Tutorial
See the [tutorial](tutorial/README.md 'Link works on GitLab only')
page for more
([here](https://ctan.org/tex-archive/macros/latex/contrib/wargame/doc/tutorial/)
if you browse from CTAN).Another simple example to get you started is the game
[Tannenberg4][advancedguard_tex] also available from GitLab.## Examples
Below are some print'n'play board wargames made with this package.
See also [LaTeX Wargames][wargames_www] for more. These are not
original games but rather revamps of existing games. All credits goes
to the original authors of these games.- American Civil War
- [Smithsonian Gettysberg][sgb_tex] (Avalon Hill)
- WWI
- [Tannenberg4][advancedguard_tex]
- WWII
- Eastern Front
- [Battle for Moscow][bfm_tex] (classic introductory game)
- Western Front
- [D-Day][dday_tex] (Avalon Hill classic)
- [Smithsonian D-Day][sdday_tex] (Avalon Hill)
- [Smithsonian Battle of the Bulge][sbotb_tex] (Avalon Hill)
- [The Drive on Metz][dom_tex] (from _The Complete Wargames Handbook_)
- Pacific theatre
- [First Blood][firstblood_tex] (Avalon Hill International
Kriegspiel Association classic)
- Africa
- [Afrika Korps][afrikakorps_tex] (Avalon Hill classic)
- Modern/Speculative
- [Strike Force One][sfo_tex]
- [Kriegspiel][kriegspiel_tex] (Avalon Hill classic)
- [Port Stanley][portstanley_tex] (from the _Wargamer_ magazine)
- Abstract
- [Battle][battle_tex]## VASSAL support
The packages has the script [`wgexport.py`](utils/wgexport.py) to
generate a draft [VASSAL][6] module from the defined charts, boards,
counters, OOBs, and so on. More about this is given in the
documentation.The script will generate a first draft of a module, which then can be
edited in the VASSAL editor for the final thing.Alternatively, one can provide a Python script to do more on the
generated module, such as defining starting positions, fixing grid
layouts, and so on. Using such a patch script, one can get an
(almost) final module. This means, that even if one makes changes to
the original content, it is easy to remake the module without much
need for the VASSAL editor.An example of this is given in the [Battle for Moscow][bfm_tex]
project, and of course in the [tutorial](tutorial/ 'Link works on
GitLab only')The sources of this script is kept in a different project
[`pywargame`][pywargame] also on GitLab. The script is generated in
that package. The `pywargame` package allows one to manipulate VASSAL
modules from Python, or to read (and convert) [CyberBoard][cyberboard]
([GitHub][cyberboard_git]) scenarios.## NATO App6
The package supports
- All air, equipment, installation, land, sea surface, sub surface,
and space command symbols, including amplifiers and modifiers
- All friendly, hostile, neutral, and unknown faction frame.
Undecided faction frames can be made by specifying `dashed` line
styles.
- Some, but very few, other kinds of symbology.Here are some references for more information on the NATO App6
symbology standard.- The [Wikipedia page][7] on NATO Joint Military Symbology
- The [NATO page][8]. If this does not work for you, then try to go
to the [standards page][9] and put in and write in `SYMBOLOGY` in
the _Document Title Contains Words_ field and press _Start_.
- Other LaTeX package for making NATO symbology [XMilSymb][10]## Copyright and license
(c) 2022 Christian Holm Christensen
This work is licensed under the Creative Commons
Attribution-ShareAlike 4.0 International License (CC-BY-SA-4.0). To
view a copy of this license, visit [CC][11] or send a letter to
Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.### Some comments on copyright
_Caveat_: I am not a lawyer.
Note that this license applies to the `wargame` package as such. What
you generate using the package is _not_ required to be licensed
according to the _ShareAlike_ clause of CC-BY-SA-4.0. That is, you
can license your materials _any way you want_.However, copyright rights on games is not as prohibitive as you
may think (see [this thread on BGG][12]). What you _can_ copyright is
original, artistic expression. That is, the copyrighted work must not
be a copy of something else (originality) and must be some form of
expression. One _cannot_ copyright ideas, only their expression in so
far as it is _artistic_ (i.e., not a trivial expression that anyone
knowledgeable within the field can do with rudimentary effort).This means you _can not_ copyright your game mechanics, for example,
only how you described them. You _can not_ copyright a title (but you
may be able to claim trademark on it). You _can_ copyright the
wording of the rules, the graphics that you use, and so on.This also means, that you are essentially free to make your own
version of previously published game, _as long as_- you do not copy existing text,
- you do not copy existing graphics, and
- you respect any kind of trademark claimsHowever, it is advisable to contact the copyright holders of the
previously published game to avoid [SNAFU][13]. If in doubt, seek
professional help.[1]: https://en.wikipedia.org/wiki/Wargame
[2]: https://github.com/pgf-tikz/pgf
[3]: https://gitlab.com/wargames_tex/wargame_tex
[4]: https://ctan.org/tex-archive/macros/latex/contrib/wargame
[5]: https://tug.org/texlive/index.html
[6]: https://vassalengine.org
[7]: https://en.wikipedia.org/wiki/NATO_Joint_Military_Symbology
[8]: https://nso.nato.int/nso/nsdd/main/standards/ap-details/1912/EN
[9]: https://nso.nato.int/nso/nsdd/main/standards
[10]: https://github.com/ralphieraccoon/MilSymb
[11]: http://creativecommons.org/licenses/by-sa/4.0/
[12]: https://boardgamegeek.com/thread/493249/
[13]: https://en.wikipedia.org/wiki/SNAFU
[wargame_tex.zip]: https://gitlab.com/wargames_tex/wargame_tex/-/jobs/artifacts/master/download?job=dist
[browse]: https://gitlab.com/wargames_tex/wargame_tex/-/jobs/artifacts/master/browse?job=dist
[wargame.pdf]: https://gitlab.com/wargames_tex/wargame_tex/-/jobs/artifacts/master/file/doc/latex/wargame/wargame.pdf?job=dist
[tutorial.pdf]: https://gitlab.com/wargames_tex/wargame_tex/-/jobs/artifacts/master/file/doc/latex/wargame/tutorial.pdf?job=dist
[Game.vmod]: https://gitlab.com/wargames_tex/wargame_tex/-/jobs/artifacts/master/file/doc/latex/wargame/Game.vmod?job=dist
[symbols.pdf]: https://gitlab.com/wargames_tex/wargame_tex/-/jobs/artifacts/master/file/doc/latex/wargame/symbols.pdf?job=dist
[compat.pdf]: https://gitlab.com/wargames_tex/wargame_tex/-/jobs/artifacts/master/file/doc/latex/wargame/compat.pdf?job=dist[wargames_www]: https://wargames_tex.gitlab.io/wargame_www/
[advancedguard_tex]: https://gitlab.com/wargames_tex/advancedguard_tex
[battle_tex]: https://gitlab.com/wargames_tex/battle_tex
[bfm_tex]: https://gitlab.com/wargames_tex/bfm_tex
[hellsgate_tex]: https://gitlab.com/wargames_tex/hellsgate_tex
[unternehmung_tex]: https://gitlab.com/wargames_tex/unternehmung_tex
[dday_tex]: https://gitlab.com/wargames_tex/dday_tex
[sdday_tex]: https://gitlab.com/wargames_tex/sdday_tex
[sbotb_tex]: https://gitlab.com/wargames_tex/sbotb_tex
[sgb_tex]: https://gitlab.com/wargames_tex/sgb_tex
[dom_tex]: https://gitlab.com/wargames_tex/dom_tex
[pkmg_tex]: https://gitlab.com/wargames_tex/pkmg_tex
[pkdday_tex]: https://gitlab.com/wargames_tex/pkdday_tex
[firstblood_tex]: https://gitlab.com/wargames_tex/firstblood_tex
[malaya_tex]: https://gitlab.com/wargames_tex/malaya_tex
[afrikakorps_tex]: https://gitlab.com/wargames_tex/afrikakorps_tex
[boel_tex]: https://gitlab.com/wargames_tex/boel_tex
[sfo_tex]: https://gitlab.com/wargames_tex/sfo_tex
[kriegspiel_tex]: https://gitlab.com/wargames_tex/kriegspiel_tex
[portstanley_tex]: https://gitlab.com/wargames_tex/portstanley_tex
[pywargame]: https://gitlab.com/wargames_tex/pywargame
[cyberboard]: http://cyberboard.norsesoft.com/
[cyberboard_git]: https://github.com/CyberBoardPBEM/cbwindows
[pillow]: https://pillow.readthedocs.io/en/stable/
[texshop]: https://pages.uoregon.edu/koch/texshop/
[texworks]: https://www.tug.org/texworks/