1
2 ** Welcome to lincity **
3
4
5This is the README for lincity 1.13 (development version)
6
7
8WHAT IS LINCITY
9===============
10
11Lincity is a city/country simulation game for Linux (SVGALIB and X),
12Solaris, FreeBSD, HPUX, AIX, SCO, IRIX, Compaq Tru64, BeOS, OS/2, VMS,
13OS X, AtheOS, and Win32 (Win95, Win98, ME, NT, 2000, XP).
14
15You are required to build and maintain a city. You must feed, house,
16provide jobs and goods for your residents. You can build a sustainable
17economy with the help of renewable energy and recycling, or you can go for
18broke and build rockets to escape from a pollution ridden and resource
19starved planet, it's up to you. Due to the finite resources available in any
20one place, this is not a game that you can leave for long periods of time.
21
22Lincity recently moved to sourceforge.net. This brings new CVS
23access, mailing lists, and web pages. If you are subscribed to
24lincity-users@floot.demon.co.uk, please also subscribe to the new
25list, shown below, and make all of your posts there. Please also note
26the new home page, which is not yet complete. Anyone with an eye for
27design and a desire to help is welcome to make suggestions or design a
28page to replace this one.
29
30The lincity home page is now located at:
31
32 http://lincity.sourceforge.net
33
34The official users mailing list (mailman) can be subscribed to by visiting:
35
36 http://lists.sourceforge.net/lists/listinfo/lincity-users
37
38CVS commit notification can be had at:
39
40 http://lists.sourceforge.net/lists/listinfo/lincity-commits
41
42Additionally, our sourceforge page is:
43
44 http://sourceforge.net/projects/lincity/
45
46
47REQUIREMENTS
48============
49
50 * SVGALIB 1.3.0 (or greater).
51
52 OR X11.
53
54 OR A Win32 OS.
55
56 * The libpng and libz libraries.
57
58 I have tested with libpng versions 1.0.12 and 1.2.5. These
59 libraries are included in the windows version.
60
61 * A graphics card supported by your above choice.
62
63 * You probably need at least a 486DX2-66. (Even better for the X version
64 I suspect.)
65
66 * You probably need at least 8 MB memory (16 MB for X or win32).
67
68 * Other things? Send us an email.
69
70
71INSTALLATION (UNIX)
72===================
73
74To install lincity, (as root) untar the file lincity-1.12.0.gz
75
76 tar -xzvf lincity-1.12.0.tar.gz
77
78You now want to compile the source
79
80 cd lincity-1.12.0
81 ./configure
82 make
83
84Lincity will run out of the source directory. But if you want to install
85you can do this:
86
87 make install
88
89The old method choosing the install directory by setting LC_BINDIR and
90LC_LIBDIR in the makefile no longer applies. To install to a different
91directory, you must use the --prefix flag when you configure the package.
92For example:
93
94 ./configure --prefix=/usr/mylocal
95
96If you are installing a version downloaded from the cvs server, the
97timestamps may be incorrect, which will cause the "make" to fail. In this
98case, you need to run a script to fix the timestamps:
99
100 ./fix-timestamps.sh
101 ./configure
102 make
103 make install
104
105
106INSTALLATION (WIN32)
107====================
108
109Simply unpack the archive, and double click on the LINCITY.EXE icon.
110You can get your free copy of UNZIP from the INFO-ZIP web page at
111
112 http://www.info-zip.org
113
114
115UNINSTALLING (UNIX)
116====================
117
118If you still have the configured source directory, you can do this:
119
120 make uninstall
121
122Otherwise, do this (assuming you installed to /usr/local)
123
124 rm /usr/local/bin/lincity
125 rm /usr/local/bin/xlincity
126 rm /usr/local/man/man6/lincity.6
127 rm -rf /usr/local/share/lincity
128
129In addition, if you ran lincity, you should delete these:
130
131 rm -rf $HOME/.lincity
132 rm $HOME/.lincityrc
133
134If you have an older version, before 1.12pre54, you should delete this:
135
136 rm -rf $HOME/.Lin-city
137
138
139UNINSTALLING (WIN32)
140====================
141
142Like all good DOS programs, lincity runs within a single directory.
143No files are copied to your "windows directory." The windows registry
144is not used.
145
146Simply delete the lincity directory to uninstall.
147
148
149RUNNING LINCITY (UNIX)
150======================
151
152Usually you will invoke the game with 'lincity' or 'xlincity'.
153Typing 'lincity' will run the SVGA version, while typing 'xlincity' will
154run the X Windows version. The SVGA version will not run under X.
155
156 lincity [opts]
157 xlincity [opts]
158
159The following options apply to both.
160
161 -w Do some *crude* gamma correction to boost the red and blue.
162 This makes some 'washed out' displays a bit more colourful.
163 You have control of the individual values, see below.
164
165 -R <num>
166 -G <num>
167 -B <num>
168 These options allow you to boost the individual colours.
169 <num> is a number between 0.0 and 1.0
170 The default values for -w are 1.0 0.0 0.4 (ATTOW)
171
172This option only applies to lincity.
173
174 -m <num>
175 Set the VGA mode. See below for choices of mode.
176
177This option only applies to xlincity.
178
179 -r Add an extra border around the game.
180 -d Double the size of the window to 1280x960
181
182 -b *obsolete* omit border around game. Now on by default.
183
184
185RUNNING LINCITY (WIN32)
186======================
187
188Double click the LINCITY.EXE icon. The WIN32 version does not accept
189command line arguments.
190
191
192UPGRADING FROM VERSION 1.11
193===========================
194
195Lincity 1.12 is forward compatible with lincity 1.11, in the sense
196that 1.12 can read files generated in 1.11. However, please note
197that you may need to copy over the save files. Save files can
198be found in the following directories. UNIX users note the change!
199
200 Lincity 1.11 Lincity 1.12
201 ---------------- ----------------
202UNIX $HOME/.Lin-city $HOME/.lincity
203WINDOWS %LINCITY_HOME%\SAVED_GAMES %LINCITY_HOME%\SAVED_GAMES
204
205
206THE LINCITY HOME DIRECTORY
207==========================
208
209If you get a message such as "Error. Can't find LINCITY_HOME", this
210means that lincity can't find its home directory. To find its
211home directory, lincity searches for the file "colour.pal" in
212the following three directories (in order):
213
214 The directory pointed to by the $LINCITY_HOME environment variable
215 The current working directory
216 The default directory
217
218
219LINCITY CONFIGURATION FILE
220==========================
221
222Lincity now has a configuration file for saving defaults. You can
223find it in the following location:
224
225UNIX: $HOME/.lincityrc
226WINDOWS: %LINCITY_HOME%\lincity.ini
227
228To reset to the "factory default" configuration, simply delete the
229file. Lincity will regenerate the file if it is missing.
230
231
232LINCITY ARTWORK
233===============
234
235Starting with version 1.13, you can (more easily) customize the lincity
236buildings and animations. To modify the artwork simply edit the
237icon image file, located at opening/icons.png, with your favorite
238image editor.
239
240The icons.png file has a 256-color indexed format. The palette contained
241within icons.png, however, is ignored by lincity. Instead, lincity
242uses the file "Colour.pal" to determine the palette.
243
244
245NOTES FOR SVGALIB VERSION
246=========================
247
248It is now possible to run at higher resolution. You can use the command
249line to set the mode:
250
251 lincity ## default mode
252 lincity -m 10 ## mode 10, 640x480
253 lincity -m 11 ## mode 11, 800x600
254 lincity -m 12 ## mode 12, 1024x768
255 lincity -m 13 ## mode 13, 1280x1024
256
257If not specified, lincity uses the default mode. The default mode
258can be set according to the SVGALIB_DEFAULT_MODE environment variable.
259See "man svgalib" for details on the svgalib default graphics mode.
260If no default graphics mode has been specified, lincity will use
261mode 10 (640x480, 256 colors).
262
263As of version 1.12, lincity now uses the mouse settings in your
264svga configuration file (i.e. /etc/vga/vga.config). Please use
265this method to specify which make/model of mouse you are using,
266and other mouse parameters.
267
268
269NOTES FOR X VERSION
270===================
271
272When playing in 256 colour (8bbp) display modes, when you go over the edge
273of your window, the window manager changes the colour palette back to the
274'normal' one, then back to the game's one when the mouse reenters the
275window. This is what is supposed to happen, but can be a bit annoying when
276trying to click on areas close to the edge and overshooting. For this
277reason, I have added an extra border around the game to give players a bit
278of 'breathing space'.
279
280You can disable this feature by starting the game with a '-b' switch. ie.
281
282 xlincity -b
283
284There is now a button that enables you to confine the mouse pointer within
285the X window. ( xlincity -b, then confining the pointer and changing the
286screen resolution to 640x480 gives you a 'full screen' game. :) )
287
288
289NOTES FOR WIN32 VERSION
290=======================
291
292Lincity for Win32 automatically chooses whether or not to add a border
293and/or perform pix doubling, depending on your resolution. Furthermore,
294it will automatically maximize the window or even go into full screen
295mode. Here is what you should see for some of the more popular
296resolutions:
297
298 Resolution Window Style Border Pix Doubling
299 ------------ ------------ ------------ ------------
300 640 x 480 Full screen None No
301 800 x 600 Window Yes No
302 1024 x 768 Window Yes No
303 1152 x 864 Window Yes No
304 1280 x 1024 Window None Yes
305
306If you are running 1280x1024, you may need to autohide the taskbar
307in order to see pix doubling.
308
309Lincity no longer uses a real windows font to draw text. Although this
310gives a considerable speed improvement (about 20%), it sometimes
311doesn't work correctly, for a reason that I haven't yet identified.
312
313Save files are gzip compatible with the UNIX version of lincity. That is,
314you will need to gzip/gunzip the save files when you transfer them to/from
315your UNIX box.
316
317The source code is distributed together with the binary distribution,
318in the file source.tgz.
319
320
321NOTES FOR CYGWIN
322================
323
324Cygwin is fully supported. However, at the time of writing,
325performance is very slow when X Windows is started in multiwindow
326mode (which is the default setting). To fix this, you can
327edit startxwin.bat to choose a different setting.
328
329http://sources.redhat.com/ml/cygwin-xfree/2003-09/msg00485.html
330
331
332INTERNATIONALIZATION UNDER LINUX
333================================
334
335Lincity supports a modest amount of internationalization. Only languages
336that can be represented using a iso8859-1 font are currently supported.
337I have created a lincity-compatible iso8859-2 font also, but have not used
338it yet because of no demand (send me an email if you would like to try).
339
340If you wish to make a translation for your language, you will need to
341download and install gettext 0.11.2 or higher.
342
343The first task is to get the sample Italian translation to display
344correctly. Download a fresh lincity (1.12pre53 or higher) from
345sourceforge. Do a configure, make, and make install.
346
347Next, download the Italian package. Install as described in README.it.
348Run as follows:
349
350 export LANG=it_IT ## (on bash and similar)
351 setenv LANG it_IT ## (on csh and similar)
352 xlincity -D
353
354Hopefully you will see something like this:
355
356 Setting entire locale to it_IT
357 Setting messages locale to it_IT
358 Query locale is it_IT
359 GUESS 1 -- intl_suffix is it_IT
360 Trying Message Path /home/gsharp/lincity/share/lincity/messages/it_IT/
361 Trying Help Path /home/gsharp/lincity/share/lincity/help/it_IT/
362 GUESS 2 -- intl_suffix is it
363 Trying Message Path /home/gsharp/lincity/share/lincity/messages/it/
364 Set Message Path /home/gsharp/lincity/share/lincity/messages/it/
365 Trying Help Path /home/gsharp/lincity/share/lincity/help/it/
366 Set Help Path /home/gsharp/lincity/share/lincity/help/it/
367 Bound textdomain directory is /home/gsharp/lincity/share/locale
368 Textdomain is lincity
369 DefaultVisual id=35 bp-rgb=8 map-entries=256
370
371
372If you see this, then everything worked perfectly. You should see perfect
373Italian. In particular, note the following:
374
375 (1) The opening screen (help page) is in Italian
376 (2) The month January will be written "Gen" instead of "Jan"
377 (3) Click on something that hasn't been invented yet, like a
378 power station or windmill. The message for "Not enough tech"
379 will be in Italian.
380
381It is possible that you see English for (1) and (3). If so, you
382are probably running from the directory you built from. Please cd
383out of that directory, and try again.
384
385If you are less lucky, maybe only (1) and (3) worked correctly and
386but not (2). If so, you probably saw something like this:
387
388 Setting entire locale to (null)
389 Setting messages locale to (null)
390 Query locale is C
391 GUESS 1 -- intl_suffix is it_IT
392 Trying Message Path /usr/local/lincity/messages/it_IT/
393 Trying Help Path /usr/local/lincity/help/it_IT/
394 GUESS 2 -- intl_suffix is it
395 Trying Message Path /usr/local/lincity/messages/it/
396 Set Message Path /usr/local/lincity/messages/it/
397 Trying Help Path /usr/local/lincity/help/it/
398 Settling for help Path /usr/local/lincity/help/
399 Bound textdomain directory is /lincity/share/locale
400 Textdomain is lincity
401 DefaultVisual id=35 bp-rgb=8 map-entries=256
402
403If this happens, it means that your system is missing some files which
404are require to "set the locale" of your system to "it_IT". Probably
405you are running Linux -- I don't think other Unix's have this peculiar
406requirement.
407
408To check if this is the problem (on Linux), look for the directory
409/usr/lib/locale/it_IT. If this directory doesn't exist, you have this
410problem. To fix it, do the following:
411
412 1) Make a backup of the directory /usr/share/i18n/charmaps
413 2) Make a backup of the directory /usr/share/i18n/locale
414 3) cd /usr/share/i18n/charmaps
415 4) gunzip UTF-8.gz
416 5) gunzip ISO-8859-1.gz
417 6) cd /usr/share/i18n/locale
418 7) localedef -f ../charmaps/UTF-8 -i it_IT it_IT.UTF-8
419 8) localedef -f ../charmaps/ISO-8859-1 -i it_IT it_IT
420
421Now check for the directory /usr/lib/locale/it_IT. It will be there.
422
423OK, now you are ready to make translations for a new language.
424There are three parts to making a translation:
425 making help files
426 making message files
427 making a .po file.
428
429The messages and help files are just a matter of editing the ASCII
430files, and installing them. If your language is "it", you should
431create two directories such as /usr/local/share/lincity/messages/it
432and /usr/local/share/lincity/help/it. Copy the English language
433help and message files to these directories, and translate them.
434
435The .po file is a matter of translating these and getting them to compile
436correctly. First, edit the file po/LINGUAS, and add your language
437(e.g. "it") to the list. Next, create the .po file. For the language
438"it", the command looks like this like this:
439
440 cd po
441 msginit -l it
442
443You should now see the file "it.po". Edit this file. Specifically,
444you should edit what comes after "msgstr". Don't erase any of the
445other stuff such as "msgid" or "#: cliglobs.c:54" or that stuff.
446If you are using emacs, there is a "po-mode" to facilitate
447(or obstruct) this task.
448
449When you are done editing this file, you need to compile this file.
450Simply type "make" in the po directory to compile. This will
451create the file "it.gmo". Finally, you will need to install this file.
452To install, you will copy this file to the following location:
453
454 cp it.gmo /usr/local/share/locale/it/LC_MESSAGES/lincity.mo
455
456Now, you are ready to go. Set the LANG environment variable and
457lincity should run using your translations.
458
459Email to gregsharp@geocities.com for comments about this process.
460
461
462INTERNATIONALIZATION UNDER WINDOWS
463==================================
464
465The situation under windows is similar. Download lincity
466binary package, version 1.12pre53 or newer, and also download
467the Italian translation pack.
468
469Install the Italian translation pack directly into the lincity
470directory. Then run the batch file:
471
472 c:\lincity> lincity-it
473
474Now, you should see:
475
476 (1) The opening screen (help page) is in Italian
477 (2) The month January will be written "Gen" instead of "Jan"
478 (3) Click on something that hasn't been invented yet, like a
479 power station or windmill. The message for "Not enough tech"
480 will be in Italian.
481
482If the above procedure doesn't work "out of the box", email
483to gregsharp@geocities.com.
484
485OK, now you are ready to make translations for a new language.
486There are three parts to making a translation:
487 making help files
488 making message files
489 making a .po file.
490
491The messages and help files are just a matter of editing the ASCII
492files, and installing them. If your language is "it", you should
493create two directories such as /usr/local/share/lincity/messages/it
494and /usr/local/share/lincity/help/it. Copy the English language
495help and message files to these directories, and translate them.
496
497The .po file is a matter of translating these and getting them to compile
498correctly. First, make copy the file lincity.pot to your language
499(e.g. "it.po" for Italian). If you do not have a lincity.pot file,
500email gregsharp@geocities.com to get the latest one (or get it
501directly from the CVS server on sourceforge).
502
503You should now see the file "it.po". Edit this file. Specifically,
504you should edit what comes after "msgstr". Don't erase any of the
505other stuff such as "msgid" or "#: cliglobs.c:54" or that stuff.
506If you are using emacs, there is a "po-mode" to facilitate
507(or obstruct) this task.
508
509When you are done editing this file, you need to compile this file.
510Use the executable "msgfmt.exe" which is distributed with lincity
511for this purpose:
512
513 c:\lincity> msgfmt it.po -o it.gmo
514
515This should create the file it.gmo. You need to copy it to a
516prespecified location, like this:
517
518 c:\lincity> copy it.gmo locale\it\LC_MESSAGES\lincity.mo
519
520Create the appropriate subdirectories as necessary.
521
522Now, you are ready to go. Set the LANG environment variable
523and lincity should run using your translations.
524
525
526INSTALLING PICEDIT
527==================
528
529Picedit is deprecated. It may or may not compile. It will be removed
530after the transition to png graphics is complete.
531
532picedit is a simple drawing program that was used to draw all the icons
533found within the game. You are free to play with this, and even send me
534new icons that you have designed - although I cannot guarantee that any
535icons sent to me will be included in later versions. If you intend to design
536some that you feel should be included, please e-mail me first, this may save
537a lot of wasted effort. The following commands
538
539 ./configure
540 make picedit (or make xpicedit)
541 make install
542
543will compile and install picedit (or xpicedit). Most likely, you will
544prefer to install picedit and lincity at the same time to avoid copying
545all of the help and message files multiple times, like this:
546
547 ./configure
548 make lincity
549 make picedit
550 make install
551
552By the way, xpicedit does not work on hi-color or full-color displays.
553
554
555COMPILATION UNDER WIN32
556=======================
557
558I use both MS VC++ 4.0 and MS VC++ 6.0 on Win95 and Win98. I no longer
559include the MSVC workspace files or makefiles, since these do not
560seem to be particularly useful. If you would like them, I'd be glad
561to send them to you.
562
563You may need to generate your own Makefile. The file Makefile.am
564contains the information about which files you need to compile.
565As of version 1.12, you no longer need to link with your vendor
566supplied versions VERSION.LIB or WSOCK32.LIB.
567
568Lincity 1.11 was patched to compile with the Borland compiler
569too. If this is not still working in 1.12, please send me a patch
570and I'll be happy to add it to the archive.
571
572
573RUNNING LINCITY (CLIENT/SERVER)
574===============================
575
576Client/server version is disabled for this version. In fact, the code
577was completely removed as of version 1.12pre50, so the last version to
578contain the (non-functioning) network code was 1.12pre49.
579
580If you are interested in working on a client/server version, please send
581your email to the current maintainer or to the lincity mailing list.
582We are still interested in doing this!
583
584
585BUGS
586====
587
588Many. See the file TODO.
589
590If you wish to report a bug, you can send to directly to the current
591maintainer or to the lincity mailing list.
592
593
594HISTORY
595=======
596
597Ian Peters started writing lincity in June 1995 as an exercise in
598mouse control in SVGALIB. It quickly became a usable, then even fun,
599game to play. Over the next 18+ months it evolved into a challenging
600and stable game which, in a number of people's opinion, is worth uploading
601to the net.
602
603In late 1997, lincity developers made grand plans for lincity version 2,
604an intergalactic space simulation with all the trimmings. But from
6051998-1999, lincity underwent a period of hibernation, with only minor
606patches being applied.
607
608Development was restarted in late 1999 by Greg Sharp to provide
609some moderate improvements, including networking support, GUI
610improvements and additional gameplay developments. Networking
611support was subsequently dropped in 2001.
612
613In mid-2001, Greg was joined by Corey Keasling, who helped to bring
614the game to sourceforge.net. In late 2001, Corey became
615co-maintainer. Version 1.12 was released in December 2003.
616
617
618COPYRIGHT
619=========
620Lincity is copyrighted software.
621Copyright (c) I J Peters 1995-1997.
622Copyright (c) Greg Sharp 1997-2003.
623Copyright (c) Corey Keasling 2000-2003.
624
625You may freely copy, distribute and modify lincity under the terms of the
626
627 GNU GENERAL PUBLIC LICENSE
628
629Please read the file COPYING for the GPL.
630
631THANK YOU
632=========
633This game could not have been possible without the patches, scripts,
634bug reports, suggestions, and other contributions from hundreds of
635developers and users around the world. Please read the file
636'Acknowledgements' for details.
637
638And a special thanks to *you* for playing and enjoying lincity!
639
1 ================ =================
2 README.profiling part of Lin-city.
3 ================ =================
4
5I have only profiled this program when running with SVGALib.
6(If you what to profile under X, you're on your own.)
7
8If you are using svgalib 1.2.9 or greater (as you should), then you will
9need to edit .../svgalibxxx/src/vga.c and stop svgalib catching the profile
10signal. The code should now look like this:-
11
12/* We invoke the old interrupt handler after setting text mode */
13/* We catch all signals that cause an exit by default (aka almost all) */
14static char sig2catch[] =
15{SIGHUP, SIGINT, SIGQUIT, SIGILL,
16 SIGTRAP, SIGIOT, SIGBUS, SIGFPE,
17 SIGSEGV, SIGPIPE, SIGALRM, SIGTERM,
18 SIGXCPU, SIGXFSZ, SIGVTALRM,
19 /* SIGPROF, */ SIGPWR};
20static struct sigaction old_signal_handler[sizeof(sig2catch)];
21
22 NOTE the comments around SIGPROF.
23
24Now recompile svgalib with make install but READ THE SVGALIB DOCS YOURSELF
25just in case.
26
27To enable profiling, uncomment the PROFx vars in the makefile.
28
29To disable profiling, comment the PROFx vars in the makefile.
30
31Then just run the program as usual.
32
33When you exit, put the profiling info in a file:
34
35 gprof /usr/local/bin/lincity > proffile.txt
36
37(The raw profiling info is stored in gmon.out, a binary.)
38
39Note:
40 I have pushed the gl_setpixel() etc. routines through another
41 function when profiling is enabled. It will slow things down
42 a bit (<1%), but if you want to see how many times these routines
43 are called, you'll have to put up with it. Not all the gl_routines
44 are redirected in this way, only the ones called during the main
45 body of the code. These routines are identified by the FP in front
46 of the 'old' function name, ie the above becomes FPgl_setpixel().
47 (Perhaps not the best choice of prefix for obvious reasons, but
48 it stands for Floyd's Profiling.) You can disable this part alone
49 by commenting out the 'PROFD = -DCS_PROFILE' line.
50
51
52
53