.. -*- mode: rst; coding: utf-8 -*- .. role:: filename(literal) .. default-role:: filename ============================================ Star Traders: A Game of Interstellar Trading ============================================ Star Traders is a simple game of interstellar trading, where the objective is to create companies, buy and sell shares, borrow and repay money, in order to become the wealthiest player (the winner). The following history is presented in reverse chronological order. If you would like to see a list of detailed changes to this project, you should browse the `Star Traders Git repository`__ on `The ZAP Group Australia web server`__. __ https://www.zap.org.au/git-browser/trader.git __ https://www.zap.org.au/ .. contents:: Version 7.20 (31st January, 2024) --------------------------------- Updated the history of the game based on information kindly supplied by Patrick Dumais, who pointed out the source of Star Lanes in its original incarnation. Reworked the manual page as part of the updated history. Updated the Swedish, Norwegian Bokmål, French, German, Serbian, Esperanto, Romanian and Polish translations (in that order), with sincere thanks to Anders Jonsson, Johnny A. Solbu, Frédéric Marchal, Roland Illig, Мирослав Николић, Felipe Castro, Remus-Gabriel Chelu and Alina Skrinnikoff respectively. Made minor changes to the Ukrainian translation, using uk.po files from GNU C Library, GNU Coreutils and GNU AWK projects as a basis. This translation still needs a native speaker to look over it! Updated to the latest snapshot of the Gnulib GNU Portability Library. Version 7.19 (5th January, 2024) -------------------------------- Added a Romanian translation, with thanks to Remus-Gabriel Chelu. Updated the Hungarian translation, with thanks to Balázs Úr. Added preliminary Polish and Ukrainian translations—feel free to improve them! Updated to GNU Gettext 0.21 or later, to Automake 1.16 or later, and to the latest snapshot of the Gnulib GNU Portability Library. Renamed the desktop and AppStream data files to conform to the AppStream 1.0 specification; these now have names based on ``au.org.zap.trader``. Added a caption to the AppStream screenshot and updated all translations to suit. Renamed `build-aux/msgfmt-appdata` to `msgfmt-metainfo` to reflect these changes. Version 7.18 (3rd August, 2022) ------------------------------- Minor bug fix: remove the ```` line from `trader.appdata.xml.in` so that the icon is taken from the `trader.desktop` file instead, otherwise Fedora builds fail with a message from ``appstream-util validate-relax`` that “tag-invalid: stock icon is not valid [trader.svg]”. Version 7.17 (3rd August, 2022) ------------------------------- Fixed two TOCTOU (time-of-check / time-of-use) bugs that arose between checking for the traditional data directory and creating a data directory later. Also fixed a bug when the ``HOME`` environment variable is empty: use the current directory instead. Updated the Brazilian Portuguese, Norwegian Bokmål, Swedish, French, Esperanto, Serbian, German and English translations (in that order), with thanks to Rafael Fontenelle, Johnny A. Solbu, Anders Jonsson, Frédéric Marchal, Felipe Castro, Мирослав Николић and Roland Illig respectively. Updated the minimum version of GNU Autoconf required, giving the option of compiling with C17 or C11 instead of C99. Updated to the latest snapshot of the Gnulib GNU Portability Library. Version 7.16 (19th January, 2021) --------------------------------- Added code to allow the ``TEXTDOMAINDIR`` environment variable to specify where compiled translations are located. Updated the documentation to mention this new feature. Added an application metadata file that conforms to the AppStream 0.12 specification. Updated all translations to suit, using parts of existing strings. Updated the German translation, with thanks to Mario Blättermann. Version 7.15 (12th January, 2021) --------------------------------- Changed the default location where game files are saved from `~/.trader` to `~/.local/share/trader`, so as to follow the `XDG Base Directory Specification`__. If set to an absolute path, the ``XDG_DATA_HOME`` environment variable will override this location. If the `~/.trader` directory is already present, it will continue to be used. Updated the manual page to suit. __ https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html Updated the Russian translation to use the uppercase polite singular forms «Вы» and «Ваш», as is customary in written documents. Updated to GNU Gettext 0.20 or later. Updated to the latest snapshot of the Gnulib GNU Portability Library. Also updated the `INSTALL` file to list the latest tested versions of operating systems, including a new listing for Haiku R1/beta2. Version 7.14 (9th January, 2020) -------------------------------- Added the Brazilian Portuguese translation, with thanks to Rafael Fontenelle. Updated the French, Hungarian and Esperanto translations, in that order, with thanks to Frédéric Marchal, Balázs Úr and Felipe Castro. Updated to the latest snapshot of the Gnulib GNU Portability Library. Also updated the `INSTALL` file to list macOS 10.15 (Catalina) and the 64-bit version of Cygwin under Microsoft Windows 10 as being tested platforms. Version 7.13 (13th November, 2019) ---------------------------------- Converted all text files to reStructuredText (ReST) format. This format is still quite readable as raw text, and is much more capable than the myriad all-slightly-incompatible variants of Markdown. Modified the source code to work more reliably on non-GNU C Library (``glibc``) platforms, particularly FreeBSD, Solaris and Cygwin, when using the standard POSIX locale. Extensively tested the build procedure on multiple operating systems and compilers, and submitted code upstream to the Autoconf Archive project to make this work more robustly. Listed tested operating system and compiler combinations in the `INSTALL` file. Updated the Esperanto translation, with thanks to Felipe Castro. Updated one string in the game for consistency with other labels; updated all PO translations to suit. Also added strings from obsolete versions of the GNU C Library so that Star Traders can provide translations for them. Updated to the latest snapshot of the Gnulib GNU Portability Library. In addition, updated the list of prerequisites in the `INSTALL` file and listed some more command line options for the ``configure`` script. Version 7.12 (24th August, 2017) -------------------------------- Updated the Serbian translation, with thanks to Мирослав Николић. Version 7.11 (18th June, 2017) ------------------------------ Bug fix: some architectures (such as ARM, PowerPC and S390) treat :code:`char` as :code:`unsigned char`, and this caused :code:`b64decode()` to fail while loading a saved game. Changed the relevant type from :code:`char` to :code:`int` to fix this. Version 7.10 (2nd June, 2017) ----------------------------- Added a `data` directory that contains a desktop file and appropriate icons. Adjusted the game constants for more dynamic play: allow the share prices and returns to change a bit more frequently and more rapidly. Tweaked the colours in the example monochrome retro-computing command lines, including adding an amber monitor version. Added a Serbian translation, with thanks to Мирослав Николић. Updated the Danish, French, Swedish, Hungarian, Norwegian Bokmål and German translations, in that order, with thanks to Joe Hansen, Frédéric Marchal, Anders Jonsson, Balázs Úr, Johnny A. Solbu and Philipp Thomas respectively. Updated translatable strings to overcome a limitation of ``msgfmt``\(1): if a string starts or ends with a new-line character, its translation must do so as well. This has an impact on labels in particular. Also changed the help text string “Page *N* of *M*” to allow translations of the form “Of *M* pages, this is page *N*”, and all quoted strings using the obsolete GNU form ```like this'`` to ``'this'``. In addition, newer versions of `lib/getopt.c` have different strings. All translations have been updated as a result. Removed the obsolete Gnulib ``gettext`` module and updated to the latest Git snapshot of Gnulib. Updated the dependency version numbers for Autoconf, Automake and Gettext. Also updated all macros from the Autoconf Archive. Migrated the source code repository from Subversion to Git. Updated the documentation to suit, and also listed specific required version numbers for the Autoconf and Automake tools in the `INSTALL` file. Version 7.9 (5th January, 2016) ------------------------------- Updated the Danish translation, with thanks to Joe Hansen. Version 7.8 (10th September, 2015) ---------------------------------- Changed the name of the seventh company from “Gemeni Inc” to “Gemini Inc”: a spelling mistake that has been present since 1990! Special thanks to Anders Jonsson for pointing this out. Added the Swedish translation, with thanks to Anders Jonsson. Minor code changes were made to accommodate this language. Incorporated changes made by the translators for German, French and Norwegian Bokmål, in that order, with thanks to Philipp Thomas, Frédéric Marchal and Johnny A. Solbu. Also updated all references to GNU Gettext to version 0.19.5. Version 7.7 (18th August, 2015) ------------------------------- Added the Hungarian translation, with thanks to Balázs Úr. Minor code changes were made to accommodate this language. Also added documentation in the file `INSTALL` to translate Star Traders into another language. Version 7.6 (13th August, 2014) ------------------------------- A minor release to fix compilation bugs under Cygwin: the ``libiconv`` library must be listed *after* the GNU Portability Library on that platform. In addition, the minimum and maximum share return values were changed from -10% to -15% and 20% to 25% respectively. This gives more incentive to borrow money from the Interstellar Trading Bank, whose interest rate can reach a maximum of 20%. Version 7.5 (24th May, 2014) ---------------------------- Rewrote the file input and output routines so that saved games are now stored in a much more reliable (scrambled) ASCII format. However, saved games from older versions will no longer load: the workaround is to start the older version of Star Traders with the ``--dont-encrypt`` command line option, load the relevant game and save it again straight away, change the second line in the game file from “``File API 7.2``” to “``File API 7.5``”, then run the new version of Star Traders. Added translations for Norwegian Bokmål, Danish and Esperanto (in that order), with thanks to Johnny A. Solbu, Joe Hansen and Felipe Castro. Updated auxiliary files to the latest versions available from the Gnulib GNU Portability Library and the GNU Autoconf project. Version 7.4 (9th May, 2012) --------------------------- For the first time since the CP/M-80 version of Star Traders, the game algorithms have been carefully reviewed and revised. In particular, companies may now have negative returns, making players lose money on such shares. This may encourage players to use the “Sell shares” option at appropriate times… In addition, changes in share prices, returns and bank interest rates have been made much “smoother”, less prone to wild variations. These new algorithms were first modelled using Gnuplot and Perl before being implemented in C. The ``configure`` script now prints a prominent warning if a wide-character version of Curses, such as NcursesW, is not available when compiling the game. It is a warning and not an error as single-byte locales (such as US-ASCII and ISO8859-1) do not require NcursesW, even if the compilation environment itself is a multibyte one (such as UTF-8). The Russian translation has been updated, with thanks to Vladimir Tsarkov and Pavel Maryanov. Translations for French, German, Finnish and Croatian have been added (in that order), with thanks to Frédéric Marchal, Philipp Thomas, Jorma Karvonen and Tomislav Krznar. Special thanks also to the Translation Project, which brings free (open-source) software developers and translators together. Version 7.3 (16th March, 2012) ------------------------------ Star Traders has been translated into Russian. In addition, a number of bugs with internationalisation have been fixed. The “default value” key (originally “``=``” or “``;``” as the first key-press in any input field) has been incorporated into the language translation files. Version 7.2 (29th August, 2011) ------------------------------- Star Traders has been internationalised! As part of this update, all input and output routines have been rewritten to handle multibyte strings. English (Australian, British, Canadian and US) translations have been included. Translations for other languages (and corrections to existing languages) are more than welcome! Game files are now stored in UTF-8 format (once decrypted!) and can be loaded under any locale with automatic character set translation. This does mean, however, that game files from versions 7.0 and 7.1 of Star Traders will not load under this release. The program now better handles terminal resizing events (for versions of Curses supporting such events). It also tries to restore the terminal environment correctly when receiving a terminating signal. Version 7.1 (29th July, 2011) ----------------------------- A minor updated release to fix configuration problems on some platforms. In particular, some systems could not find the Curses libraries or header files, so the Autoconf macro that performed the search was rewritten and extended. Version 7.0 (25th July, 2011) ----------------------------- Released the first version of Star Traders for Unix-like operating systems such as Linux. It requires a text console or window of at least 80×24 in size. The code is written in the C99 programming language as a learning exercise for a number of software tools and libraries; the algorithms in the original Pascal and Visual Basic versions are reused for the game logic. Note that versions 7.0 and 7.1 of Star Traders did *not* handle locales with multibyte character sequences (such as UTF-8) correctly. Each byte in a such a sequence was treated as a separate character. Eight-bit locales (such as US-ASCII, ISO8859-1, etc.) worked correctly. Early history ------------- The original (and very primitive) game was written by Steven Faber and published as Star Lanes on pages `131–138`__ in :t:`Interface Age`, June 1977. It was described by the magazine’s software editor as: … a new imaginative Monopoly-type microcomputer game that everyone can and will want to play if you have a microcomputer. Like the Monopoly game, STAR LANES combines financial and positional strategies as players attempt to lay claim to valuable pieces of space real estate between the stars in the Galaxy. -- Robert A. Stevens, page 123__, :t:`Interface Age`, June 1977 __ https://www.zap.org.au/projects/trader/historical/mbasic/src/star-lanes.pdf __ https://archive.org/details/197706InterfaceAge/page/n124/mode/1up S. J. Singer took Star Lanes and republished it in 1984 as Star Traders. His version was modified by John Zaitseff for Microsoft Basic (MBASIC) running under the CP/M-80 operating system; it was released on 7th March, 1988. Star Traders was then completely rewritten in 1990 for the Australian-designed 8-bit MicroBee computer running CP/M-80 on a Zilog Z80 processor, using Turbo Pascal 3.01a. Essentially, only the name of the game, the names of the first five companies and some of the key ideas were retained in this version. Version 4.1 of Star Traders was released on 1st August, 1991. In 1992, it was recompiled for the NEC Advanced Personal Computer (with 8-inch floppy drives!) running CP/M-86 on an 8086 processor, using Turbo Pascal 2.0. This version had colour added to it in the form of ANSI escape sequences; version 4.4 was released on 2nd August, 1993. The next version came in 1993, when the program was recompiled to run on IBM-compatible machines running MS-DOS and ANSI.SYS. Turbo Pascal 6.0 was used for this. The ANSI escape sequences were slightly different under MS-DOS than under the NEC, in that the NEC supported a number of extra character attributes. In other words, the MS-DOS version looked worse than the one running under CP/M-86! Star Traders was recompiled again in 1994 for IBM-compatible machines with VGA/EGA/CGA video graphics adapters. The output routines were recoded to use a “windowed” look. Borland Pascal 7.0 was used for this purpose, along with a number of text window manipulation modules. Version 5.4 was released on 1st June, 1994. In 1995, Star Traders was completely rewritten for the 16-bit Microsoft Windows 3.1 graphical environment. Microsoft Visual Basic 3.0 was used for this purpose. Although completely rewritten, the original algorithms were reused from previous versions. Version 6.0 of the game was released on 15th September, 1995. Star Traders was then to languish until almost 16 years later…