LINCITY README FILE

Welcome to lincity.

This is the README for lincity 1.12.

WHAT IS LINCITY

Lincity is a city/country simulation game for Linux (SVGALIB and X), Solaris, FreeBSD, HPUX, AIX, SCO, IRIX, Compaq True64, BeOS, OS/2, VMS, OS X, AtheOS, and Win32 (Win95, Win98, ME, NT, 2000, XP).

You are required to build and maintain a city. You must feed, house, provide jobs and goods for your residents. You can build a sustainable economy with the help of renewable energy and recycling, or you can go for broke and build rockets to escape from a pollution ridden and resource starved planet, it's up to you. Due to the finite resources available in any one place, this is not a game that you can leave for long periods of time.

Lincity recently moved to sourceforge.net. This brings new CVS access, mailing lists, and web pages. If you are subscribed to lincity-users@floot.demon.co.uk, please also subscribe to the new list, shown below, and make all of your posts there. Please also note the new home page, which is not yet complete. Anyone with an eye for design and a desire to help is welcome to make suggestions or design a page to replace this one.

The lincity home page is now located at:

http://lincity.sourceforge.net

The official users mailing list (mailman) can be subscribed to by visiting:

http://lists.sourceforge.net/lists/listinfo/lincity-users

CVS commit notification can be had at:

http://lists.sourceforge.net/lists/listinfo/lincity-commits

Additionally, our sourceforge page is:

http://sourceforge.net/projects/lincity/

REQUIREMENTS

INSTALLATION (UNIX)

To install lincity, (as root) untar the file lincity-1.12.0.gz

tar -xzvf lincity-1.12.0.tar.gz

You now want to compile the source

cd lincity-1.12.0
./configure
make

Lincity will run out of the source directory. But if you want to install you can do this:

make install

The old method choosing the install directory by setting LC_BINDIR and LC_LIBDIR in the makefile no longer applies. To install to a different directory, you must use the --prefix flag when you configure the package. For example:

./configure --prefix=/usr/mylocal

If you are installing a version downloaded from the cvs server, the timestamps may be incorrect, which will cause the "make" to fail. In this case, you need to run a script to fix the timestamps:

./fix-timestamps.sh
./configure
make
make install

INSTALLATION (WIN32)

Simply unpack the archive, and double click on the LINCITY.EXE icon. You can get your free copy of UNZIP from the INFO-ZIP web page at

http://www.info-zip.org

UNINSTALLING (UNIX)

If you still have the configured source directory, you can do this:

make uninstall

Otherwise, do this (assuming you installed to /usr/local)

rm /usr/local/bin/lincity
rm /usr/local/bin/xlincity
rm /usr/local/man/man6/lincity.6
rm -rf /usr/local/share/lincity

In addition, if you ran lincity, you should delete these:

rm -rf $HOME/.lincity
rm $HOME/.lincityrc

If you have an older version, before 1.12pre54, you should delete this:

rm -rf $HOME/.Lin-city

UNINSTALLING (WIN32)

Like all good DOS programs, lincity runs within a single directory. No files are copied to your "windows directory." The windows registry is not used.

Simply delete the lincity directory to uninstall.

RUNNING LINCITY (UNIX)

Usually you will invoke the game with lincity or xlincity. Typing lincity will run the SVGA version, while typing xlincity will run the X Windows version. The SVGA version will not run under X.

lincity  [opts]
xlincity [opts]

The following options apply to both.

-w   Do some *crude* gamma correction to boost the red and blue.
     This makes some 'washed out' displays a bit more colourful.
     You have control of the individual values, see below.
-R <num>
-G <num>
-B <num>
     These options allow you to boost the individual colours.
     <num> is a number between 0.0 and 1.0
     The default values for -w are  1.0   0.0   0.4  (ATTOW)

This option only applies to lincity.

-m <num>
    Set the VGA mode.  See below for choices of mode.

This option only applies to xlincity.

-r   Add an extra border around the game.
-d   Double the size of the window to 1280x960
-b   *obsolete* omit border around game.  Now on by default.

RUNNING LINCITY (WIN32)

Double click the LINCITY.EXE icon. The WIN32 version does not accept command line arguments.

UPGRADING FROM VERSION 1.11

Lincity 1.12 is forward compatible with lincity 1.11, in the sense that 1.12 can read files generated in 1.11. However, please note that you may need to copy over the save files. Save files can be found in the following directories. UNIX users note the change!

          Lincity 1.11                  Lincity 1.12
          ----------------              ----------------
UNIX      $HOME/.Lin-city               $HOME/.lincity
WINDOWS   %LINCITY_HOME%\SAVED_GAMES    %LINCITY_HOME%\SAVED_GAMES

THE LINCITY HOME DIRECTORY

If you get a message such as "Error. Can't find LINCITY_HOME", this means that lincity can't find its home directory. To find its home directory, lincity searches for the file "colour.pal" in the following three directories (in order):

The directory pointed to by the $LINCITY_HOME environment variable
The current working directory
The default directory

LINCITY CONFIGURATION FILE

Lincity now has a configuration file for saving defaults. You can find it in the following location:

UNIX: $HOME/.lincityrc WINDOWS: %LINCITY_HOME%\lincity.ini

To reset to the "factory default" configuration, simply delete the file. Lincity will regenerate the file if it is missing.

NOTES FOR SVGALIB VERSION

It is now possible to run at higher resolution. You can use the command line to set the mode:

lincity                 ## default mode
lincity -m 10           ## mode 10, 640x480
lincity -m 11           ## mode 11, 800x600
lincity -m 12           ## mode 12, 1024x768
lincity -m 13           ## mode 13, 1280x1024

If not specified, lincity uses the default mode. The default mode can be set according to the SVGALIB_DEFAULT_MODE environment variable. See "man svgalib" for details on the svgalib default graphics mode. If no default graphics mode has been specified, lincity will use mode 10 (640x480, 256 colors).

As of version 1.12, lincity now uses the mouse settings in your svga configuration file (i.e. /etc/vga/vga.config). Please use this method to specify which make/model of mouse you are using, and other mouse parameters.

NOTES FOR X VERSION

When playing in 256 colour (8bbp) display modes, when you go over the edge of your window, the window manager changes the colour palette back to the normal one, then back to the game's one when the mouse reenters the window. This is what is supposed to happen, but can be a bit annoying when trying to click on areas close to the edge and overshooting. For this reason, I have added an extra border around the game to give players a bit of breathing space.

You can disable this feature by starting the game with a -b switch. ie.

xlincity -b

There is now a button that enables you to confine the mouse pointer within the X window. ( xlincity -b, then confining the pointer and changing the screen resolution to 640x480 gives you a full screen game. :) )

NOTES FOR WIN32 VERSION

Lincity for Win32 automatically chooses whether or not to add a border and/or perform pix doubling, depending on your resolution. Furthermore, it will automatically maximize the window or even go into full screen mode. Here is what you should see for some of the more popular resolutions:

Resolution      Window Style     Border         Pix Doubling
------------    ------------    ------------    ------------
640 x 480       Full screen     None            No
800 x 600       Window          Yes             No
1024 x 768      Window          Yes             No
1152 x 864      Window          Yes             No
1280 x 1024     Window          None            Yes

If you are running 1280x1024, you may need to autohide the taskbar in order to see pix doubling.

Lincity no longer uses a real windows font to draw text. Although this gives a considerable speed improvement (about 20%), it sometimes doesn't work correctly, for a reason that I haven't yet identified.

Save files are gzip compatible with the UNIX version of lincity. That is, you will need to gzip/gunzip the save files when you transfer them to/from your UNIX box.

The source code is distributed together with the binary distribution, in the file source.tgz.

NOTES FOR CYGWIN

Cygwin is fully supported. However, at the time of writing, performance is very slow when X Windows is started in multiwindow mode (which is the default setting). To fix this, you can edit startxwin.bat to choose a different setting.

http://sources.redhat.com/ml/cygwin-xfree/2003-09/msg00485.html

INTERNATIONALIZATION UNDER LINUX

Lincity supports a modest amount of internationalization. Only languages that can be represented using a iso8859-1 font are currently supported. I have created a lincity-compatible iso8859-2 font also, but have not used it yet because of no demand (send me an email if you would like to try).

If you wish to make a translation for your language, you will need to download and install gettext 0.11.2 or higher.

The first task is to get the sample Italian translation to display correctly. Download a fresh lincity (1.12pre53 or higher) from sourceforge. Do a configure, make, and make install.

Next, download the Italian package. Install as described in README.it. Run as follows:

export LANG=it_IT          ## (on bash and similar)
setenv LANG it_IT          ## (on csh and similar)
xlincity -D

Hopefully you will see something like this:

Setting entire locale to it_IT
Setting messages locale to it_IT
Query locale is it_IT
GUESS 1 -- intl_suffix is it_IT
Trying Message Path /home/gsharp/lincity/share/lincity/messages/it_IT/
Trying Help Path /home/gsharp/lincity/share/lincity/help/it_IT/
GUESS 2 -- intl_suffix is it
Trying Message Path /home/gsharp/lincity/share/lincity/messages/it/
Set Message Path /home/gsharp/lincity/share/lincity/messages/it/
Trying Help Path /home/gsharp/lincity/share/lincity/help/it/
Set Help Path /home/gsharp/lincity/share/lincity/help/it/
Bound textdomain directory is /home/gsharp/lincity/share/locale
Textdomain is lincity
DefaultVisual id=35 bp-rgb=8 map-entries=256

If you see this, then everything worked perfectly. You should see perfect Italian. In particular, note the following:

(1)  The opening screen (help page) is in Italian
(2)  The month January will be written "Gen" instead of "Jan"
(3)  Click on something that hasn't been invented yet, like a
     power station or windmill.  The message for "Not enough tech"
     will be in Italian.

It is possible that you see English for (1) and (3). If so, you are probably running from the directory you built from. Please cd out of that directory, and try again.

If you are less lucky, maybe only (1) and (3) worked correctly and but not (2). If so, you probably saw something like this:

Setting entire locale to (null)
Setting messages locale to (null)
Query locale is C
GUESS 1 -- intl_suffix is it_IT
Trying Message Path /usr/local/lincity/messages/it_IT/
Trying Help Path /usr/local/lincity/help/it_IT/
GUESS 2 -- intl_suffix is it
Trying Message Path /usr/local/lincity/messages/it/
Set Message Path /usr/local/lincity/messages/it/
Trying Help Path /usr/local/lincity/help/it/
Settling for help Path /usr/local/lincity/help/
Bound textdomain directory is /lincity/share/locale
Textdomain is lincity
DefaultVisual id=35 bp-rgb=8 map-entries=256

If this happens, it means that your system is missing some files which are require to "set the locale" of your system to "it_IT". Probably you are running Linux -- I don't think other Unix's have this peculiar requirement.

To check if this is the problem (on Linux), look for the directory /usr/lib/locale/it_IT. If this directory doesn't exist, you have this problem. To fix it, do the following:

1)  Make a backup of the directory /usr/share/i18n/charmaps
2)  Make a backup of the directory /usr/share/i18n/locale
3)  cd /usr/share/i18n/charmaps
4)  gunzip UTF-8.gz
5)  gunzip ISO-8859-1.gz
6)  cd /usr/share/i18n/locale
7)  localedef -f ../charmaps/UTF-8 -i it_IT it_IT.UTF-8
8)  localedef -f ../charmaps/ISO-8859-1 -i it_IT it_IT

Now check for the directory /usr/lib/locale/it_IT. It will be there.

OK, now you are ready to make translations for a new language. There are three parts to making a translation: making help files making message files making a .po file.

The messages and help files are just a matter of editing the ASCII files, and installing them. If your language is "it", you should create two directories such as /usr/local/share/lincity/messages/it and /usr/local/share/lincity/help/it. Copy the English language help and message files to these directories, and translate them.

The .po file is a matter of translating these and getting them to compile correctly. First, edit the file po/LINGUAS, and add your language (e.g. "it") to the list. Next, create the .po file. For the language "it", the command looks like this like this:

cd po
msginit -l it

You should now see the file "it.po". Edit this file. Specifically, you should edit what comes after "msgstr". Don't erase any of the other stuff such as "msgid" or "#: cliglobs.c:54" or that stuff. If you are using emacs, there is a "po-mode" to facilitate (or obstruct) this task.

When you are done editing this file, you need to compile this file. Simply type "make" in the po directory to compile. This will create the file "it.gmo". Finally, you will need to install this file. To install, you will copy this file to the following location:

cp it.gmo /usr/local/share/locale/it/LC_MESSAGES/lincity.mo

Now, you are ready to go. Set the LANG environment variable and lincity should run using your translations.

Email to gregsharp@geocities.com for comments about this process.

INTERNATIONALIZATION UNDER WINDOWS

The situation under windows is similar. Download lincity binary package, version 1.12pre53 or newer, and also download the Italian translation pack.

Install the Italian translation pack directly into the lincity directory. Then run the batch file:

c:\lincity> lincity-it

Now, you should see:

(1)  The opening screen (help page) is in Italian
(2)  The month January will be written "Gen" instead of "Jan"
(3)  Click on something that hasn't been invented yet, like a
     power station or windmill.  The message for "Not enough tech"
     will be in Italian.

If the above procedure doesn't work "out of the box", email to gregsharp@geocities.com.

OK, now you are ready to make translations for a new language. There are three parts to making a translation: making help files making message files making a .po file.

The messages and help files are just a matter of editing the ASCII files, and installing them. If your language is "it", you should create two directories such as /usr/local/share/lincity/messages/it and /usr/local/share/lincity/help/it. Copy the English language help and message files to these directories, and translate them.

The .po file is a matter of translating these and getting them to compile correctly. First, make copy the file lincity.pot to your language (e.g. "it.po" for Italian). If you do not have a lincity.pot file, email gregsharp@geocities.com to get the latest one (or get it directly from the CVS server on sourceforge).

You should now see the file "it.po". Edit this file. Specifically, you should edit what comes after "msgstr". Don't erase any of the other stuff such as "msgid" or "#: cliglobs.c:54" or that stuff. If you are using emacs, there is a "po-mode" to facilitate (or obstruct) this task.

When you are done editing this file, you need to compile this file. Use the executable "msgfmt.exe" which is distributed with lincity for this purpose:

c:\lincity> msgfmt it.po -o it.gmo

This should create the file it.gmo. You need to copy it to a prespecified location, like this:

c:\lincity> copy it.gmo locale\it\LC_MESSAGES\lincity.mo

Create the appropriate subdirectories as necessary.

Now, you are ready to go. Set the LANG environment variable and lincity should run using your translations.

INSTALLING PICEDIT

Picedit is deprecated. It may or may not compile.

picedit is a simple drawing program that was used to draw all the icons found within the game. You are free to play with this, and even send me new icons that you have designed - although I cannot guarantee that any icons sent to me will be included in later versions. If you intend to design some that you feel should be included, please e-mail me first, this may save a lot of wasted effort. The following commands

./configure
make picedit   (or make xpicedit)
make install

will compile and install picedit (or xpicedit). Most likely, you will prefer to install picedit and lincity at the same time to avoid copying all of the help and message files multiple times, like this:

./configure
make lincity
make picedit
make install

By the way, xpicedit does not work on hi-color or full-color displays.

COMPILATION UNDER WIN32

I use both MS VC++ 4.0 and MS VC++ 6.0 on Win95 and Win98. I no longer include the MSVC workspace files or makefiles, since these do not seem to be particularly useful. If you would like them, I'd be glad to send them to you.

You may need to generate your own Makefile. The file Makefile.am contains the information about which files you need to compile. As of version 1.12, you no longer need to link with your vendor supplied versions VERSION.LIB or WSOCK32.LIB.

Lincity 1.11 was patched to compile with the Borland compiler too. If this is not still working in 1.12, please send me a patch and I'll be happy to add it to the archive.

RUNNING LINCITY (CLIENT/SERVER)

Client/server version is disabled for this version. In fact, the code was completely removed as of version 1.12pre50, so the last version to contain the (non-functioning) network code was 1.12pre49.

If you are interested in working on a client/server version, please send your email to the current maintainer or to the lincity mailing list. We are still interested in doing this!

BUGS

Many. See the file TODO.

If you wish to report a bug, you can send to directly to the current maintainer or to the lincity mailing list.

HISTORY

Ian Peters started writing lincity in June 1995 as an exercise in mouse control in SVGALIB. It quickly became a usable, then even fun, game to play. Over the next 18+ months it evolved into a challenging and stable game which, in a number of people's opinion, is worth uploading to the net.

In late 1997, lincity developers made grand plans for lincity version 2, an intergalactic space simulation with all the trimmings. But from 1998-1999, lincity underwent a period of hibernation, with only minor patches being applied.

Development was restarted in late 1999 by Greg Sharp to provide some moderate improvements, including networking support, GUI improvements and additional gameplay developments. Networking support was subsequently dropped in 2001.

In mid-2001, Greg was joined by Corey Keasling, who helped to bring the game to sourceforge.net. In late 2001, Corey became co-maintainer. Version 1.12 was released in December 2003.

COPYRIGHT

Lincity is copyrighted software. Copyright (c) I J Peters 1995-1997. Copyright (c) Greg Sharp 1997-2003. Copyright (c) Corey Keasling 2000-2003.

You may freely copy, distribute and modify lincity under the terms of the

GNU GENERAL PUBLIC LICENSE

Please read the file COPYING for the GPL.

THANK YOU

This game could not have been possible without the patches, scripts, bug reports, suggestions, and other contributions from hundreds of developers and users around the world. Please read the file Acknowledgements for details.

And a special thanks to you for playing and enjoying lincity!