diff --git a/CMakeLists.txt b/CMakeLists.txt index e32e3c5894..11870129fb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -85,9 +85,6 @@ install( AUTHORS COPYING INSTALL - doc/BUGS - doc/CodingStyle - doc/HACKING doc/README.achievements doc/README.actions doc/README.agents diff --git a/doc/BUGS b/doc/BUGS deleted file mode 100644 index d0172d5dd9..0000000000 --- a/doc/BUGS +++ /dev/null @@ -1,89 +0,0 @@ -==== -BUGS -==== - -Freeciv 3.1 certainly contains some bugs. Please report all -you find to https://www.hostedredmine.com/projects/freeciv. - - -REPORTING A BUG: -================ - -Here's what to do: - - - Check that it is not listed as a known bug! For a continuously - updated list, see: - - http://www.freeciv.org/wiki/Known_Bugs - - - Check the Freeciv website, to ensure you're playing the latest - version. (We may have already fixed the problem.) - - - Check the Freeciv Bug Tracking System at: - - https://www.hostedredmine.com/projects/freeciv - - to see if the bug has already been reported. - - - Submit a bug report through our bug tracking system above! - - If you get any GDK/GTK messages, as for example: - - Gtk-CRITICAL **: file gtkobject.c: line 1163 (gtk_object_ref): - assertion object->ref_count > 0' failed. - - please restart your client and append "-- --g-fatal-warnings" to - the command line. You will get a core dump this way. Please include - the "stack trace" of this core dump in your bug report. - - What to include in your bug report: - - - Describe the problem, including any messages that were displayed. - - - Indicate which client(s) you are using (gtk3, gtk3.22, gtk3x, - SDL2, or Qt). - - - Tell us the name and version of: - - - The Operating System you're using. You may find the - "uname -a" command useful. - - - The version number of Freeciv. - - - If you are using the GTK+ client, the version numbers - (if you know them) of your GTK+ and GLib libraries. - Gtk-clients show those version numbers on 'About Freeciv' - dialog found from under 'Help' menu. - - - If you are using Qt client, the version number of Qt libraries. - In Qt-client that can be find by opening 'About Freeciv' dialog - from under 'Help' menu and clicking 'About Qt' button there. - - - If you are using the SDL2 client, the version numbers (if you - know them) of the SDL2, SDL2_image, SDL2_gfx, and SDL2_ttf - libraries. - - - If you're compiling from source code, the name - and version number of the compiler. - - - If you're installing from a binary package, the name of - the package, the distribution it's for, and where you - got it from. - - - If Freeciv "dumps core", then we may ask you to use a debugger to - give us a "stack trace". You'll need the "core" file for this as - well as the binary which you used, so please backup both. - - - If it is a bug in a translation, it should be reported to the - Primary Contact for the language. For their names and addresses, - see: - - http://www.freeciv.org/wiki/Localization - - -FURTHER INFORMATION: -==================== - -For more information, as always, see the Freeciv website: - - http://www.freeciv.org/ diff --git a/doc/CodingStyle b/doc/CodingStyle deleted file mode 100644 index 0ddf545d05..0000000000 --- a/doc/CodingStyle +++ /dev/null @@ -1,624 +0,0 @@ -============================================================================ - Freeciv Coding Style Guide -============================================================================ - -If you want to hack Freeciv, and want your patches to be accepted, it helps -to follow some simple style rules. Yes, some of these are a bit nit-picky, -but wars are fought over the silliest things ... - -- This style is used for all code in Freeciv. Freeciv gtk-clients use - this style, not gtk style. - -- Freeciv is mostly programmed in C, C89 with some C99 features. - Qt parts are programmed in C++. Even C++ parts should have mostly - consistent style with C parts, so where not otherwise noted, this - guide applies to C++ parts too. Headers that are included to both - C and C++ source files follow C style. - -- C++-style comments (i.e., // comments) are forbidden in C code. - They should be used for single-line comments in C++ code. - -- C++11 Lambda Expressions are allowed in C++ code, and encouraged for short - callbacks in Qt slot connections. - -- Declaring variables in the middle of the scope is forbidden - (unless you are using C99 dynamic arrays and you need to check the size - of the array before you declare it). - -- Where variable is logically boolean, 'bool' type should be used even in - C code. To make sure that the type is defined, include utility/support.h. - In C code boolean values are uppercase macros 'TRUE' and 'FALSE'. - In C++ code lowercase boolean values 'true' and 'false' should be used. - -- Functions that take no arguments should be declared and defined with - 'void' argument list in C code, and empty argument list in C++ code. - - C: - int no_arguments(void); - - C++: - int no_arguments(); - -- Use K&R indentation style with indentation 2 (if in doubt, use "indent -kr - -i2 -l77", but beware that that will probably mangle the _() macros used - to mark translated strings and the brace style for iteration macros). - -- Do not re-indent areas of code you are not modifying or creating. - -- Here are the most important formatting rules: - - - Lines are at most 77 characters long, including the terminating newline. - - - The tab width is 8 spaces for tabs that already exist in the source code - (this is just so that old code will appear correctly in your editor). - However, tabs should be avoided in newly written code. - - - The indentation is 2 spaces per level for all new code; do not use tabs - for any kind of indentation. The one exception to this is if you are - just adding one line to a set of lines that are already indented with - some strange mix of tabs and spaces; in this case you may use the same - indentation as the surrounding lines. - - - Do not add more than 2 empty lines between any sections in the code. - - - Spaces are inserted before and after operators: instead of "int a,b,c;" - use "int i, j, k;" and instead of - - if(foo<=bar){ - c=a+b; - } - - use - - if (foo <= bar) { - c = a + b; - } - - Note the space between "if" and the bracket. - - - Switch statement case labels are aligned with the enclosing "switch": - - switch (value) { - case MY_VALUE1: - do_some_stuff(value); - break; - case MY_VALUE2: - { - int value2 = value + 5; - do_some_other_stuff(value2); - } - break; - } - - - If case of a switch is supposed to continue to the next case, - explicitly mark it so by using fc__fallthrough; This also avoids - compiler warning about missing break; when such warnings are enabled. - - switch (value) { - case MY_VALUE1: - do_some_stuff(value); - - fc__fallthrough; /* break; intentionally left out */ - case MY_VALUE2: - { - int value2 = value + 5; - - do_some_other_stuff(value2); - } - break; - } - - - In the rare case that you actually use goto, the label should be all - capitals and "out-dented" in the block in which it is contained: - - static int frob(int n) - { - int i, j; - for (i = 0; i < n; i++) { - for (j = i; j < n; j++) { - if (some_condition(i, j)) { - goto EXIT_LOOP; - } - } - } - EXIT_LOOP: - return 123; - } - - - If a function prototype exceeds 77 characters on one line, you should - put the return value type and storage specifier on the line immediately - above it: - - static const struct incredibly_long_structure_name * - get_a_const_struct_incredibly_long_structure_name(int id); - - - If arguments in a function prototype or a function call cause the line - to exceed 77 characters, they should be placed on the following line and - lined up with spaces to the column after the '(': - - void some_function(const struct another_really_long_name *arln, - int some_other_argument); - - - If the line is still too long for some reason, you may place the - arguments two indentation levels on the next line: - - a_very_awkward_long_function_name(some_argument, - "A really long string that would have to be cut up."); - - But you should try to avoid this situation, either by naming your - functions/types/variables more succinctly, or by using helper variables - or functions to split the expression over a number of lines. - -- An empty line should be placed between two separate blocks of code. - -- Place operators at the beginning of a line, not at the end. It should be - - if ((a - && b) - || c) { - - instead of - - if ((a && - b) || - c) { - - -============================================================================ - Comments -============================================================================ - -- All comments should have proper English grammar, spelling and punctuation, - but you should not capitalize names of identifiers (variables, types, - functions, etc.) used in the code. If using plain identifiers in sentences - would be confusing to the reader, you should put the names in quotes. - -- Every function should have a comment header. The comment should look like - the example below, indented by two spaces. It should be above the - function's implementation, not the prototype. Note "*//**" in the end - of the beginning line for the doxygen. - -/************************************************************************//** - The description of the function should be here. Also describe what is - expected of the arguments if it is not obvious. Especially note down any - non-trivial assumptions that the function makes. - - Do _not_ introduce a new function without some sort of comment. -****************************************************************************/ -int the_function_starts_here(int value) -{ - return value + 2; -} - -- One line comments should be indented correctly and placed above the code - being commented upon: - - int x; - - /* I am a single line comment. */ - x = 3; - -- For multiline comments, asterisks should be placed in front of the comment - line like so: - - /* I am a multiline - * comment, blah - * blah blah. */ - -- If you need to comment a declared variable, it should be as such: - - struct foo { - int bar; /* bar is used for ... - * in ... way. */ - int blah; /* blah is used for ... . */ - }; - - Or if the comment is very long, it may be placed above the field - declaration, as in the one-line or multi-line comment cases. - -- Comments in conditionals: if you need a comment to show program flow, it - should be below the if or else: - - if (is_barbarian(pplayer)) { - x++; - } else { - /* If not barbarian... */ - x--; - } - -- Comments to translators are placed before the N_(), _(), Q_() or PL_() - marked string, and are preceded by "TRANS:". . They must be on the same or - immediately previous line to the gettext invocation. These comments are - copied to the translator's file. Use them whenever you think the - translators may need some more information: - - /* TRANS: Do not translate "commandname". */ - printf(_("commandname [-o ]")); - - -============================================================================ - Declaring Variables -============================================================================ - -- Avoid static and global variables if at all possible. When you absolutely - do need them, minimize the number of times they are referenced in the code - (e.g. use a helper function to wrap their access). - -- Never initialize variables with values that make no sense as their - value in case they get used. If there's no sensible initialization - value for a variable, leave it uninitialized. This allows various - tools to detect if such a variable ever gets used without assigning - proper value to it. - -- Variables can be initialized as soon as they are declared: - - int foo(struct unit *punit) - { - int x = punit->x; - int foo = x; - char *blah; - - /* Etc. */ - - (But you should generally check arguments to functions before using them, - unless you are absolutely sure that pointers are not NULL, etc.) - -- After variables are declared, there should be an empty line before the - rest of the function body. - -- Merging declarations: variables do not have to be declared one per line; - however, they should only be grouped by similar function. - - int foo(struct city *pcity) - { - int i, j, k; - int total, cost; - int build = pcity->shield_stock; - } - -- When declaring a pointer, there should be a space before '*' and no space - after, except if it is a second '*'. - - struct unit *find_random_unit(struct unit **array, size_t num) - { - struct unit *const *prand = array + fc_rand(num); - - return *prand; - } - - instead of - - struct unit* find_random_unit(struct unit* *array, size_t num) - { - struct unit * const* prand = array + fc_rand(num); - - return *prand; - } - - -============================================================================ - Bracing -============================================================================ - -- Function braces begin and end in the first column: - - int foo(void) - { - return 0; - } - - instead of - - int foo(void) { - return 0; - } - -- Use extra braces for iteration macros. Note that the "*_iterate_end;" - should be placed on the same line as the end brace: - - unit_list_iterate(pcity->units_supported, punit) { - kill(punit); - } unit_list_iterate_end; - -- In switch statements, braces should only be placed where needed, i.e. to - protect local variables. - -- Braces shall always be used after conditionals, loops, etc.: - - if (x == 3) { - return; - } - - and - - if (x == 3) { - return 1; - } else { - return 0; - } - - not - - if (x == 3) - return 1; /* BAD! */ - - -============================================================================ - Enumerators -============================================================================ -- First of all, reread comment about the switch statement indentations and - braces. - -- Avoid the usage of magic values (plain hard-coded value, such as 0 or -1) - and prefer the usage of enumerators. If an enumeration cannot be defined - for any reason, then define a macro for this value. - -- Avoid storing magic values in external processes. For example, savegames - shouldn't contain any enumerators as magic numbers. They should be saved - as strings, to keep compatibility when their definition is changed. For - doing this, there are some tools in utility/specenum_gen.h; have a look at - it. - -- Avoid the usage of the default case in switch statements, if possible. The - default case removes the warning of the compiler when a value is missing - in a switch statement. - - -============================================================================ - Including Headers -============================================================================ -- Order include files consistently: all includes are grouped together. - These groups are divided by an empty line. The order of these groups is as - follows: - - 1) fc_config.h (see below) - 2) system include files which are OS-independent (part of C-standard or - POSIX) - 3) system include files which are OS-dependent or conditional includes - 4) include files from utility/ - 5) include files from common/ - 6) include files from client/ - 7) include files from server/ and ai/ - 8) include the header corresponding to the current c source file after - all other headers. - - Each group is sorted in alphabetic order. This helps to avoid adding - unnecessary or duplicated include files. - - Always set a comment to determine the location of the following headers - before every group. - - It is very important that '#include ' is at the top of - every .c file (it need not be included from .h files). Some definitions in - fc_config.h will affect how the code is compiled, without which you can end - up with bad and untraceable memory bugs. - - #ifdef HAVE_CONFIG_H - #include - #endif - - #include - - /* utility */ - #include "log.h" - - /* common */ - #include "game.h" - - #include "myfileheader.h" - -- For headers within a subdirectory path, the common rule is to set them - in an additional group, after the same group (don't forget the location - comment). - - /* common */ - #include "game.h" - - /* common/aicore */ - #include "pf_tools.h" - - However, there is an exception to this. The last group is always the one - we are working on. So, if we are working on the common part, the order - should be: - - /* common/aicore */ - #include "pf_tools.h" - - /* common */ - #include "game.h" - - Same observations with ai/ and server/. When working on the server/ - directory, the order should be: - - /* ai */ - #include "aitools.h" - - /* server */ - #include "srv_main.h" - - and working on the ai/ directory: - - /* server */ - #include "srv_main.h" - - /* ai */ - #include "aitools.h" - -- Do not include headers in other headers if at all possible. Use forward - declarations for pointers to structs: - - struct connection; - void a_function(struct connection *pconn); - - instead of - - #include "connection.h" - void a_function(struct connection *pconn); - -- Of course, never include headers of non-linked parts of the code. For - example, never include client/ headers into a server/ file. Also, in the - client/ directory, GUI specific headers are never included. Always, use - the common set of headers defined in client/include/. - - -============================================================================ - Object-Oriented Programming -============================================================================ -Freeciv is not really object-oriented programming, but last written parts -seems to tend to there. Also, there are more and more parts which are -modular, so there are some observations to do: - -- Any function or member of a module must be prefixed by the name of this - module, or an abbreviation of it (but use the same prefix for all members - please!). Never set the module name as suffix! - - /* Super mega cool module! */ - void smc_module_init(void); - void smc_module_free(void); - - not - - /* Super mega cool module! */ - void smc_module_init(void); - void sm_cool_free(void); - - neither - - /* Super mega cool module! */ - void init_smc_module(void); - void free_smc_module(void); - -- A function which allocates memory for a pointer variable should use the - suffix '_new'. The memory is freed by a corresponding function with the - suffix '_destroy'. - - { - struct test *t = test_new(); - /* Do something. */ - test_destroy(t); - } - -- The suffix '_init' should be used for functions which initialize some - static data. The name of the corresponding function to deinitialize stuff - should use the suffix '_free' (see server/settings.c or common/map.c). - - { - struct astring str; - - astr_init(&str); - /* Do something. */ - astr_free(&str); - } - - -============================================================================ - Miscellaneous -============================================================================ - -- If an empty statement is needed, you should put an explanatory comment - in an empty block (i.e. {}): - - while (*i++) { - /* Do nothing. */ - } - -- Use the postfix operator instead of the prefix operator when either will - work. That is, write "a++" instead of "++a". - -- Strive to make your code re-entrant (thread/recursion safe), as long as - this does not make the implementation too cumbersome or involved. - -- Strive to make your code modular: make it independent from other parts of - the codebase, and assume as little as possible about the circumstances in - which it is used. - -- Strive to avoid code duplication: if some part of the code is repeated in - several places, factor it out into a helper function. - -- Try to use static inline functions and const data instead of macros. - -- If helper functions internal to freeciv are added, prefix their names - with 'fc_'. Do not use 'my_' because it is also used by MySQL and could - be included in some libs. - -- Do not use assert() or die(); instead use the macros defined within - utility/log.h: - - fc_assert(condition) - fc_assert_ret(condition) - fc_assert_ret_val(condition, val) - fc_assert_action(condition, action_on_failure) - fc_assert_exit(condition, action_on_failure) - - fc_assert_msg(condition, message, ...) - fc_assert_ret_msg(condition, message, ...) - fc_assert_ret_val_msg(condition, val, message, ...) - fc_assert_action_msg(condition, action_on_failure, message, ...) - fc_assert_exit_msg(condition, action_on_failure, message, ...) - - This way error conditions can be handled gracefully while still enforcing - invariants you expect not to be violated in the code. - (By default execution will continue with a warning, but it can be made - to halt by specifying the '-F' option to the client or server.) - - int foo_get_id(const struct foo *pfoo) - { - fc_assert_ret_val(pfoo != NULL, -1); - return pfoo->id; - } - -- Do not put multiple conditions in the same fc_assert*() statement: - - fc_assert(pfoo != NULL); - fc_assert(pfoo->id >= 0); - - instead of - - fc_assert(pfoo != NULL && pfoo->id >= 0); - -- Never include functionality also otherwise necessary inside fc_assert*(). - Such functionality would be missing from release builds where asserts - are disabled. If you want to assert return value of a critical function - call, make the call outside assert and place the return value to variable - and then assert value of that variable. - -- For strings containing multiple sentences, use a single space after periods - (not two, not zero, just one). - -- If you use a system specific feature, do not add #ifdef __CRAY__ or - something like that. Rather write a check for that feature for - configure.ac, and use a meaningful macro name in the source. - -- Always prototype global functions in the appropriate header file. Local - functions should always be declared as static. To catch these and some - other problems please use the following warning options "-Wall - -Wpointer-arith -Wcast-align -Wmissing-prototypes -Wmissing-declarations - -Wstrict-prototypes -Wnested-externs -Wl,--no-add-needed" if you use gcc. - -- Always check compilation with the configure option --enable-debug set. - -- Header files should be compatible with C++ but code (.c) files need not - be. This means some C++ keywords (like "this" or "class") may not be used - in header files. It also means casts on void pointers (which should be - avoided in C files) must be used in headers. - -- To assign null pointer, or to compare against one, use 'NULL' in C code, - and 'nullptr' in C++ code. - -- If you send patches, use "diff -u" (or "diff -r -u"). "git diff" works - correctly without extra parameters. - - For further information, see: - . - - Also, name patch files descriptively (e.g. "fix-foo-bug-0.patch" is good, - but "freeciv.patch" is not). - -- When doing a "diff" for a patch, be sure to exclude unnecessary files by - using the "-X" argument to "diff". E.g.: - - % diff -ruN -Xdiff_ignore freeciv_git freeciv >/tmp/fix-foo-bug-0.patch - - A suggested "diff_ignore" file is included in the Freeciv distribution. - -============================================================================ diff --git a/doc/HACKING b/doc/HACKING deleted file mode 100644 index c8ccdbac8a..0000000000 --- a/doc/HACKING +++ /dev/null @@ -1,1228 +0,0 @@ - Freeciv Hacker's Guide - -This guide is intended to be a help for developers, wanting to mess with -Freeciv program. - -Here and there, you'll see some comments marked as [...], containing more -personal thoughts on the design, why it looks like it does, and sometimes what -went wrong. I hope developers will find that interesting too. - -To read about the AI, see README.AI - -=========================================================================== -Basic -=========================================================================== -Freeciv is a client/server civilization style of game. -The client is pretty dumb. Almost all calculations are performed on the -server. - -[It wasn't like this always. Originally more code was placed in the -common/ dir, allowing the client to do some of the world updates itself. -The end_of_turn city-refresh was for example performed both on the server -and on the client. However things got quite complex, more and more info -was needed on the client-side(security problem). Little by little we moved -more code to the server, and as of 1.5 the client is quite dumb -PU] - -The source code has the following important directories: -dependencies: code from upstream projects -utility: utility functionality that is not freeciv-specific -common: data structures and code used by both the client and server. -server: (duh) -client: common client code -client/* (fx gui-gtk-3.0): a specific gui implementation of the client. -data: graphics, rulesets and stuff -translations: localization files -ai: the ai, later linked into the server -tools: freeciv support executables - -Freeciv is written in C. Header files should be compatible with C++ so -that C++ add-ons (particularly new clients) are possible. See the -CodingStyle file for more. - -=========================================================================== -Server -=========================================================================== -General: - -The server main loop basically looks like: - - while (server_state == RUN_GAME_STATE) { /* looped once per turn */ - do_ai_stuff(); /* do the ai controlled players */ - sniff_packets(); /* get player requests and handle them */ - end_turn(); /* main turn update */ - game_next_year(); - } - - -Most time is spend in the sniff_packets() function, where a select() -call waits for packets or input on stdin(server-op commands). - -=========================================================================== -Server Autogame Testing -=========================================================================== -Code changes should always be tested before submission for inclusion -into the git source tree. It is useful to run the client and server as -autogames to verify either a particular savegame no longer shows a -fixed bug, or as a random sequence of games in a while loop overnight. - -To start a server game with all AI players, create a file (below named -civ.serv) with lines such as the following: - -# set gameseed 42 # repeat a particular game (random) sequence -# set mapseed 42 # repeat a particular map generation sequence -# set timeout 3 # run a client/server autogame -set timeout -1 # run a server only autogame -set minplayers 0 # no human player needed -set ec_turns 0 # avoid timestamps in savegames -set aifill 7 # fill to 7 players -hard # make the AI do complex things -create Caesar # first player (with known name) created and - # toggled to AI mode -start # start game - -Note: The server prompt is unusable when game with timeout set to -1 -is running. You can stop such game with single ctrl+c, and continue by -setting timeout to -1 again. - -The commandline to run server-only games can be typed as variations -of: -$ while( time server/freeciv-server -r civ.serv ); do date; done - --- or --- -$ server/freeciv-server -r civ.serv -f buggy1534.sav.gz - -To attach one or more clients to an autogame, remove the "start" -command, start the server program and attach clients to created AI -players. Or type "aitoggle " at the server command prompt for -each player that connects. Finally, type "start" when you are ready to -watch the show. - -Note, that the server will eventually flood a client with updates -faster than they can be drawn to the screen, thus it should always be -throttled by setting a timeout value high enough to allow processing -of the large update loads near the end of the game. - -The autogame mode with timeout -1 is only available in DEBUG versions -and should not be used with clients as it removes virtually all the -server gating controls. - -If you plan to compare results of autogames the following changes can be -helpful: - -- define __FC_LINE__ to a constant value in ./utility/log.h -- undef LOG_TIMERS in ./utility/timing.h -- deactivation of the event cache (set ec_turns 0) - -=========================================================================== -Data Structures -=========================================================================== -For variable length list of fx units and cities freeciv uses a genlist, -which is implemented in utility/genlist.c. By some macro magic type specific -macros have been defined, avoiding much trouble. -For example a tile struct (the pointer to it we call ptile) has a unit -list, ptile->units; to iterate though all the units on the tile you would -do the following: - -unit_list_iterate(ptile->units, punit) { -/* In here we could do something with punit, which is a pointer to a - unit struct */ -} unit_list_iterate_end; - -Note that the macro itself declares the variable punit. -Similarly there is a - -city_list_iterate(pplayer->cities, pcity) { -/* Do something with pcity, the pointer to a city struct */ -} city_list_iterate_end; - -There are other operations than iterating that can be performed on a list; -inserting, deleting, sorting etc. See utility/speclist.h -Note that the way the *_list_iterate macro is implemented means you can use -"continue" and "break" in the usual manner. - -One thing you should keep in the back of your mind: Say you are iterating -through a unit list, and then somewhere inside the iteration decide to -disband a unit. In the server you would do this by calling -wipe_unit(punit), which would then remove the unit node from all the -relevant unit lists. But by the way unit_list_iterate works, if the removed -unit was the following node unit_list_iterate will already have saved the -pointer, and use it in a moment, with a segfault as the result. To avoid -this, use unit_list_iterate_safe instead. - -You can also define your own lists with operations like iterating; read how -in utility/speclist.h. - -========================================================================= -Network and Packets -========================================================================= -The basic netcode is located in server/sernet.c and client/clinet.c. - -(FIXME: this section is a bit out of date. See also doc/README.delta.) - -All information passed between the server and clients, must be sent -through the network as serialized packet structures. -These are defined in common/packets.h. - -For each 'foo' packet structure, there is one send and one receive function: - -int send_packet_foo (struct connection *pc, - struct packet_foo *packet); -struct packet_foo * receive_packet_foo (struct connection *pc); - -The send_packet_foo() function serializes a structure into a bytestream -and adds this to the send buffer in the connection struct. -The receive_packet_foo() function de-serializes a bytestream into a -structure and removes the bytestream from the input buffer in the -connection struct. -The connection struct is defined in common/connection.h. - -Each structure field in a structure is serialized using architecture -independent functions such as dio_put_uint32() and de-serialized with -functions like dio_get_uint32(). - -A packet is constituted by header followed by the serialized structure -data. The header contains the following fields (the sizes are defined in -common/packets.c:packet_header_set()): - -uint16 : length (the length of the entire packet) -uint16 : type (e.g. PACKET_TILE_INFO) - -For backward compatibility reasons, packets used for the initial protocol -(notably before checking the capabilities) have different header fields -sizes (defined in common/packets.c:packet_header_init()): - -uint16 : length (the length of the entire packet) -uint8 : type (e.g. PACKET_SERVER_JOIN_REQ) - -To demonstrate the route for a packet through the system, here's how -a unit disband is performed: - -1) A player disbands a unit. -2) The client initializes a packet_unit_request structure, and calls the - packet layer function send_packet_unit_request() with this structure and - packet type: PACKET_UNIT_DISBAND. -3) The packet layer serializes the structure, wraps it up in a packet - containing the packetlength, type and the serialized data. Finally - the data is send to the server. -4) On the server the packet is read. Based on the type, the corresponding - de-serialize function is called is called by get_packet_from_connection(). -5) A packet_unit_request is initialized with the bytestream. -6) Since the incoming packet is a request (a request in this context - is every packet sent from the client to the server) the server sends a - PACKET_PROCESSING_STARTED packet to the client. -7) Finally the corresponding packet-handler, handle_unit_disband() function, - is called with the newly constructed structure. -8) The handler function checks if the disband request is legal (is the sender - really the owner of the unit) etc. -9) The unit is disbanded => wipe_unit() => send_remove_unit(). -10) Now an integer, containing the id of the disbanded unit is - wrapped into a packet along with the type PACKET_REMOVE_UNIT: - send_packet_generic_integer(). -11) The packet is serialized and send across the network. -12) The packet-handler returns and the end of the processing is - announced to the client with a PACKET_PROCESSING_FINISHED packet. -13) On the client the PACKET_REMOVE_UNIT packet is deserialized into - a packet_generic_integer structure. -14) The corresponding client handler function is now called - handle_remove_unit(), and finally the unit is disbanded. - -Notice that the two packets (PACKET_UNIT_DISBAND and -PACKET_REMOVE_UNIT) were generic packets. That means the packet -structures involved, are used by various requests. The -packet_unit_request() is for example also used for the packets -PACKET_UNIT_BUILD_CITY and PACKET_UNIT_CHANGE_HOMECITY. - -When adding a new packet type, check to see if you can reuse some of the -existing packet types. This saves you the trouble of -writing new serialize/deserialize functions. - -The PACKET_PROCESSING_STARTED and PACKET_PROCESSING_FINISHED packets -from above serve two main purposes: - - - they allow the client to identify what causes a certain packet the - client receives. If the packet is framed by PACKET_PROCESSING_STARTED - and PACKET_PROCESSING_FINISHED packets it is the causes of the - request. If not the received packet was not caused by this client - (server operator, other clients, server at a new turn) - - - after a PACKET_PROCESSING_FINISHED packet the client can test if - the requested action was performed by the server. If the server has - sent some updates the client data structure will now hold other - values. - -The PACKET_FREEZE_HINT and PACKET_THAW_HINT packets serve two -purposes: - - - Packets send between these two packets may contain multiple - information packets which may cause multiple updates of some GUI - items. PACKET_FREEZE_HINT and PACKET_THAW_HINT can now be used to - freeze the GUI at the time PACKET_FREEZE_HINT is received and only - update the GUI after the PACKET_THAW_HINT packet is received. - - - Packets send between these two packets may contain contradicting - information which may confuse a client-side AI (agents for - example). So any updates send between these two packets are only - processed after the PACKET_THAW_HINT packet is received. - -The following areas are wrapped by PACKET_FREEZE_HINT and -PACKET_THAW_HINT: - - - the data send if a new game starts - - the data send to a reconnecting player - - the end turn activities - -The GTK+ client uses gdk_input_add() to tell gtk to call the callback -functions, when something happens on the client socket. - -========================================================================= -Network Improvements -========================================================================= - -In previous versions when a connection send buffer in the server got full -we emptied the buffer contents and continued processing. Unfortunately this -caused incomplete packets to be sent to the client, which caused crashes -in either the client or the server, since the client cannot detect this -situation. This has been fixed by closing the client connection when the -buffer is emptied. - -We also had (and still have) several problems related to flow control. -Basically the problem is the server can send packets much faster than the -client can process them. This is especially true when in the end of the -turn the AIs move all their units. Unit moves in particular take a long -time for the client to process since by default smooth unit moves is on. - -There are 3 ways to solve this problem: -1) We wait for the send buffers to drain before continuing processing. -2) We cut the player's connection and empty the send buffer. -3) We lose packets (this is similar to 2) but can cause an incoherent - state in the client). - -We mitigated the problem by increasing the send buffer size on the server -and making it dynamic. We also added in strategic places in the code calls -to a new flush_packets() function that makes the server stall for some time -draining the send buffers. Strategic places include whenever we send the -whole map. The maximum amount of time spent per flush_packets() call is -specified by the 'netwait' variable. - -To disconnect unreachable clients we added two other features: the server -terminates a client connection if it doesn't accept writes for a period -of time (set using the 'tcptimeout' variable). It also pings the client -after a certain time elapses (set using the 'pingtimeout' variable). If -the client doesn't reply its connection is closed. - -========================================================================= -Graphics -========================================================================= -Currently the graphics is stored in the PNG file format (other formats -may be readable by some clients). - -If you alter the graphics, then make sure that the background remains -transparent. Failing to do this means the mask-pixmaps will not be -generated properly, which will certainly not give any good results. - -Each terrain tile is drawn in 16 versions, all the combinations with -with a green border in one of the main directions. Hills, mountains, -forests and rivers are treated in special cases. - -Isometric tilesets are drawn in a similar way to how civ2 draws (that's -why civ2 graphics are compatible). For each base terrain type there -exists one tile sprite for that terrain. The tile is blended with -nearby tiles to get a nice-looking boundary. This is erronously called -"dither" in the code. - -Non-isometric tilesets draw the tiles in the "original" freeciv way, -which is both harder and less pretty. There are multiple copies of -each tile, so that a different copy can be drawn depending the terrain -type of the adjacent tiles. It may eventually be worthwhile to convert -this to the civ2 system. - -========================================================================= -Diplomacy -========================================================================= -A few words about the diplomacy system. When a diplomacy meeting is -established, a Treaty structure is created on both of the clients and -on the server. All these structures are updated concurrently as clauses -are added and removed. - -========================================================================= -Map structure -========================================================================= -The map is maintained in a pretty straightforward C array, containing -X*Y tiles. You can use the function -struct tile *map_pos_to_tile(x, y) -to find a pointer to a specific tile. -A tile has various fields; see the struct in "common/map.h" - -You may iterate tiles, you may use the following methods: - -whole_map_iterate(tile_itr) { - /* do something */ -} whole_map_iterate_end; -for iterating all tiles of the map; - -adjc_iterate(center_tile, tile_itr) { - /* do something */ -} adjc_iterate_end; -for iterating all tiles close to 'center_tile', in all *valid* directions -for the current topology (see below); - -cardinal_adjc_iterate(center_tile, tile_itr) { - /* do something */ -} cardinal_adjc_iterate_end; -for iterating all tiles close to 'center_tile', in all *cardinal* directions -for the current topology (see below); - -square_iterate(center_tile, radius, tile_itr) { - /* do something */ -} square_iterate_end; -for iterating all tiles in the radius defined 'radius' (in real distance, -see below), beginning by 'center_tile'; - -circle_iterate(center_tile, radius, tile_itr) { - /* do something */ -} square_iterate_end; -for iterating all tiles in the radius defined 'radius' (in square distance, -see below), beginning by 'center_tile'; - -iterate_outward(center_tile, real_dist, tile_itr) { - /* do something */ -} iterate_outward_end; -for iterating all tiles in the radius defined 'radius' (in real distance, -see below), beginning by 'center_tile'. (Actually, this is the duplicate -of square_iterate); - -or various tricky ones defined in "common/map.h", which automatically -adjust the tile values. The defined macros should be used whenever -possible, the examples above were only included to give people the -knowledge of how things work. - -Note that the following -for (x1 = x-1; x1 <= x+1; x1++) { - for (y1 = y-1; y1 <= y+1; y1++) { - /* do something */ - } -} -is not a reliable way to iterate all adjacent tiles for all topologies, so -such operations should be avoided. - - -Also available are the functions calculating distance between tiles. In -Freeciv, we are using 3 types of distance between tiles: - -map_distance(ptile0, ptile1) returns the *Manhattan* distance between -tiles, i.e. the distance from 'ptile0' to 'ptile1', only using cardinal -directions, for example (abs(dx) + ads(dy)) for non-hexagonal topologies. - -real_map_distance(ptile0, ptile1) returns the *normal* distance between -tiles, i.e. the minimal distance from 'ptile0' to 'ptile1' using all -valid directions for the current topology. - -sq_map_distance(ptile0, ptile1) returns the *square* distance between -tiles. This is a simple way to make Pythagorean effects for making circles -on the map for example. For non-hexagonal topologies, it would be -(dx * dx + dy * dy). Only useless square root is missing. - -========================================================================= -Different types of map topology -========================================================================= - -Originally Freeciv supports only a simple rectangular map. For instance -a 5x3 map would be conceptualized as - - <- XXXXX -> - <- XXXXX -> - <- XXXXX -> - -and it looks just like that under "overhead" (non-isometric) view (the -arrows represent an east-west wrapping). But under an isometric-view -client, the same map will look like - - X - X X - X X X - X X X - X X X - X X - x - -where "north" is to the upper-right and "south" to the lower-left. This -makes for a mediocre interface. - -An isometric-view client will behave better with an isometric map. This is -what Civ2, SMAC, Civ3, etc. all use. A rectangular isometric map can be -conceptualized as - - <- X X X X X -> - <- X X X X X -> - <- X X X X X -> - <- X X X X X -> - -(north is up) and it will look just like that under an isometric-view client. -Of course under an overhead-view client it will again turn out badly. - -Both types of maps can easily wrap in either direction: north-south or -east-west. Thus there are four types of wrapping: flat-earth, vertical -cylinder, horizontal cylinder, and torus. Traditionally Freeciv only wraps -in the east-west direction. - -========================================================================= -Topology, cardinal directions and valid directions -========================================================================= - -A *cardinal* direction connects tiles per a *side*. -Another *valid* direction connects tiles per a *corner*. - -In non-hexagonal topologies, there are 4 cardinal directions, and 4 other -valid directions. -In hexagonal topologies, there are 6 cardinal directions, which matches -exactly the 6 valid directions. - -Note that with isometric view, the direction named "North" (DIR8_NORTH) -is actually not from the top to the bottom of the screen view. All -directions are turned a step on the left (pi/4 rotation with square tiles, -pi/3 rotation for hexagonal tiles). - -========================================================================= -Different coordinate systems -========================================================================= - -In Freeciv, we have the general concept of a "position" or "tile". A tile -can be referred to in any of several coordinate systems. The distinction -becomes important when we start to use non-standard maps (see above). - - Here is a diagram of coordinate conversions for a classical map. - - map natural native index - - ABCD ABCD ABCD - EFGH <=> EFGH <=> EFGH <=> ABCDEFGHIJKL - IJKL IJKL IJKL - - Here is a diagram of coordinate conversions for an iso-map. - - map natural native index - - CF A B C ABC - BEIL <=> D E F <=> DEF <=> ABCDEFGHIJKL - ADHK G H I GJI - GJ J K L JKL - -Below each of the coordinate systems are explained in more detail. - -Note that hexagonal topologies are always considered as isometric. - -- Map (or "standard") coordinates. - - All of the code examples above are in map coordinates. These preserve - the local geometry of square tiles, but do not represent the global map - geometry well. In map coordinates, you are guaranteed (so long as we use - square tiles) that the tile adjacency rules - - (map_x-1, map_y-1) (map_x, map_y-1) (map_x+1, map_y-1) - (map_x-1, map_y) (map_x, map_y) (map_x+1, map_y) - (map_x-1, map_y+1) (map_x, map_y+1) (map_x+1, map_y+1) - - are preserved, regardless of what the underlying map or drawing code - looks like. This is the definition of the system. - - With an isometric view, this looks like: - - (map_x-1, map_y-1) - (map_x-1, map_y) (map_x, map_y-1) - (map_x-1, map_y+1) (map_x, map_y) (map_x+1, map_y-1) - (map_x, map_y+1) (map_x+1, map_y) - (map_x+1, map_y+1) - - Map coordinates are easiest for local operations (like 'square_iterate' - and friends, translations, rotations and any other scalar operation) - but unwieldy for global operations. - - When performing operations in map coordinates (like a translation - of tile (x, y) by (dx, dy) -> (x + dx, y + dy)), the new map coordinates - may be unsuitable for the current map. In case, you should use one of - the following functions/macros: - - map_pos_to_tile(): return NULL if normalization is not possible; - - normalize_map_pos(): return TRUE if normalization have been done (wrapping - X and Y coordinates if the current topology allows it); - - is_normal_map_pos(): return TRUE if the map coordinates exist for the map; - - is_real_map_pos(): return TRUE if the map coordinates may exist if we - perform normalization. - - CHECK_MAP_POS(): assert whether the map coordinates exist for the map. - - Map coordinates are quite central in the coordinate system, and they may - be easily converted to any other coordinates: MAP_TO_NATURAL_POS(), - MAP_TO_NATIVE_POS(), map_pos_to_index(). - -- Natural coordinates. - - Natural coordinates preserve the geometry of map coordinates, but also have - the rectangular property of native coordinates. They are unwieldy for - most operations because of their sparseness - they may not have the same - scale as map coordinates and, in the iso case, there are gaps in the - natural representation of a map. - - With classical view, this looks like: - - (nat_x-1, nat_y-1) (nat_x, nat_y-1) (nat_x+1, nat_y-1) - (nat_x-1, nat_y) (nat_x, nat_y) (nat_x+1, nat_y) - (nat_x-1, nat_y+1) (nat_x, nat_y+1) (nat_x+1, nat_y+1) - - With an isometric view, this looks like: - - (nat_x, nat_y-2) - (nat_x-1, nat_y-1) (nat_x+1, nat_y-1) - (nat_x-2, nat_y) (nat_x, nat_y) (nat_x+2, nat_y) - (nat_x-1, nat_y+1) (nat_x+1, nat_y+1) - (nat_x, nat_y+2) - - Natural coordinates are mostly used for operations which concern the user - view. It is the best way to determine the horizontal and the vertical - axis of the view. - - The only coordinates conversion is done using NATURAL_TO_MAP_POS(). - -- Native coordinates. - - With classical view, this looks like: - - (nat_x-1, nat_y-1) (nat_x, nat_y-1) (nat_x+1, nat_y-1) - (nat_x-1, nat_y) (nat_x, nat_y) (nat_x+1, nat_y) - (nat_x-1, nat_y+1) (nat_x, nat_y+1) (nat_x+1, nat_y+1) - - With an isometric view, this looks like: - - (nat_x, nat_y-2) - (nat_x-1, nat_y-1) (nat_x, nat_y-1) - (nat_x-1, nat_y) (nat_x, nat_y) (nat_x+1, nat_y) - (nat_x-1, nat_y+1) (nat_x, nat_y+1) - (nat_x, nat_y+2) - - Neither is particularly good for a global map operation such as - map wrapping or conversions to/from map indexes, something better - is needed. - - Native coordinates compress the map into a continuous rectangle; the - dimensions are defined as map.xsize x map.ysize. For instance the - above iso-rectangular map is represented in native coordinates by - compressing the natural representation in the X axis to get the - 3x3 iso-rectangle of - - ABC (0,0) (1,0) (2,0) - DEF <=> (0,1) (1,1) (2,1) - GHI (0,2) (1,2) (3,2) - - The resulting coordinate system is much easier to use than map - coordinates for some operations. These include most internal topology - operations (e.g., normalize_map_pos, whole_map_iterate) as well as - storage (in map.tiles and savegames, for instance). - - In general, native coordinates can be defined based on this property: - the basic map becomes a continuous (gap-free) cardinally-oriented - rectangle when expressed in native coordinates. - - Native coordinates can be easily converted to map coordinates using - NATIVE_TO_MAP_POS(), to index using native_pos_to_index() and - to tile (shortcut) using native_pos_to_tile(). - - After operations, such as FC_WRAP(x, map.xsize), the result may be checked - with CHECK_NATIVE_POS(). - -- Index coordinates. - - Index coordinates simply reorder the map into a continuous (filled-in) - one-dimensional system. This coordinate system is closely tied to - the ordering of the tiles in native coordinates, and is slightly - easier to use for some operations (like storage) because it is - one-dimensional. In general you can't assume anything about the ordering - of the positions within the system. - - Indexes can be easily converted to native coordinates using - index_to_native_pos() or to map positions (shortcut) using - index_to_map_pos(). - - An map index can tested using the CHECK_INDEX macro. - -With a classical rectangular map, the first three coordinate systems are -equivalent. When we introduce isometric maps, the distinction becomes -important, as demonstrated above. Many places in the code have -introduced "map_x/map_y" or "nat_x/nat_y" to help distinguish whether -map or native coordinates are being used. Other places are not yet -rigorous in keeping them apart, and will often just name their variables -"x" and "y". The latter can usually be assumed to be map coordinates. - -Note that if you don't need to do some abstract geometry exploit, you -will mostly use tile pointers, and give to map.[ch] tools the ability -to perform what you want. - -Note that map.xsize and map.ysize define the dimension of the map in -_native_ coordinates. - -Of course, if a future topology does not fit these rules for coordinate -systems, they will have to be refined. - -========================================================================= -Native coordinates on an isometric map -========================================================================= - -An isometric map is defined by the operation that converts between map -(user) coordinates and native (internal) ones. In native coordinates, an -isometric map behaves exactly the same way as a standard one. (See -"native coordinates", above. - -Converting from map to native coordinates involves a pi/2 rotation (which -scales in each dimension by sqrt(2)) followed by a compression in the X -direction by a factor of 2. Then a translation is required since the -"normal set" of native coordinates is defined as - {(x, y) | x: [0..map.xsize) and y: [0..map.ysize)} -while the normal set of map coordinates must satisfy x >= 0 and y >= 0. - -Converting from native to map coordinates (a less cumbersome operation) is -the opposite. - EJ - ABCDE A B C D E DIO - (native) FGHIJ <=> F G H I J <=> CHN (map) - KLMNO K L M N O BGM - AFL - K - -Note that - - native_to_map_pos(0, 0) == (0, map.xsize-1) - native_to_map_pos(map.xsize-1, 0) == (map.xsize-1, 0) - native_to_map_pos(x, y+2) = native_to_map_pos(x,y) + (1,1) - native_to_map_pos(x+1, y) = native_to_map_pos(x,y) + (1,-1) - -The math then works out to - - map_x = ceiling(nat_y / 2) + nat_x - map_y = floor(nat_y / 2) - nat_x + map.xsize - 1 - - nat_y = map_x + map_y - map.xsize - nat_x = floor(map_x - map_y + map.xsize / 2) - -which leads to the macros NATIVE_TO_MAP_POS(), MAP_TO_NATIVE_POS() that are -defined in map.h. - -========================================================================= -Unknown tiles and Fog of War -========================================================================= - -In common/player.h, there are several fields: - -struct player { - ... - struct dbv tile_known; - - union { - struct { - ... - } server; - - struct { - struct dbv tile_vision[V_COUNT]; - } client; - }; -}; - -While tile_get_known() returns: - -/* network, order dependent */ -enum known_type { - TILE_UNKNOWN = 0, - TILE_KNOWN_UNSEEN = 1, - TILE_KNOWN_SEEN = 2, -}; - -The values TILE_UNKNOWN, TILE_KNOWN_SEEN are straightforward. -TILE_KNOWN_UNSEEN is a tile of which the user knows the terrain, -but not recent cities, roads, etc. - -TILE_UNKNOWN tiles never are (nor should be) sent to the client. In the -past, UNKNOWN tiles that were adjacent to UNSEEN or SEEN were sent to make -the drawing process easier, but this has now been removed. This means -exploring new land may sometimes change the appearance of existing land (but -this is not fundamentally different from what might happen when you -transform land). Sending the extra info, however, not only confused the -goto code but allowed cheating. - -Fog of war is the fact that even when you have seen a tile once you are -not sent updates unless it is inside the sight range of one of your units -or cities. - -We keep track of fog of war by counting the number of units and cities -[and nifty future things like radar outposts] of each client that can -see the tile. This requires a number per player, per tile, so each player_tile -has a short[]. Every time a unit/city/miscellaneous can observe a tile -1 is added to its player's number at the tile, and when it can't observe -any more (killed/moved/pillaged) 1 is subtracted. In addition to the -initialization/loading of a game this array is manipulated with the -void unfog_area(struct player *pplayer, int x, int y, int len) -and -void fog_area(struct player *pplayer, int x, int y, int len) -functions. "int len" is the radius of the area that should be -fogged/unfogged, i.e. a len of 1 is a normal unit. In addition to keeping -track of fog of war, these functions also make sure to reveal TILE_UNKNOWN -tiles you get near, and send info about TILE_UNKNOWN tiles near that the -client needs for drawing. They then send the tiles to -void send_tile_info(struct player *dest, int x, int y) -which then sets the correct known_type and sends the tile to the client. - -If you want to just show the terrain and cities of the square the -function show_area does this. The tiles remain fogged. -If you play without fog of war all the values of the seen arrays are -initialized to 1. So you are using the exact same code, you just never -get down to 0. As changes in the "fogginess" of the tiles are only sent -to the client when the value shifts between zero and non-zero, no -redundant packages are sent. You can even switch fog of war on/off -in game just by adding/subtracting 1 to all the tiles. - -We only send city and terrain updates to the players who can see the -tile. So a city (or improvement) can exist in a square that is known and -fogged and not be shown on the map. Likewise, you can see a city in a -fogged square even if the city doesn't exist (it will be removed when -you see the tile again). This is done by 1) only sending info to players -who can see a tile 2) keeping track of what info has been sent so the -game can be saved. For the purpose of 2) each player has a map on the -server (consisting of player_tile's and dumb_city's) where the relevant -information is kept. - -The case where a player p1 gives map info to another player p2: This -requires some extra info. Imagine a tile that neither player sees, but -which p1 have the most recent info on. In that case the age of the players' -info should be compared which is why the player tile has a last_updated -field. -This field is not kept up to date as long as the player can see the tile -and it is unfogged, but when the tile gets fogged the date is updated. - -[An alternative solution would be to give each tile a list -of the units and cities that observe it. IMO this would not be any -easier than just counting, and would have no benefits. The current -solution also gives the possibility to reveal squares as you like, -say near a radar tower tile special. Very flexible.] - -[The barbarians and the ai take their map info directly from the server, -so they can currently ignore fog of war, and they do so. I really think -that the ideal AI wouldn't be cheating like this.] - -There is now a shared vision feature, meaning that if p1 gives shared -vision to p2, every time a function like show_area, fog_area, unfog_area -or give_tile_info_from_player_to_player is called on p1 p2 also gets the -info. Note that if p2 gives shared info to p3, p3 also gets the info. -This is controlled by p1's really_gives_vision bitvector, where the -dependencies will be kept. - -If there is anything I have explained inadequately in this section you -can ask me on . --Thue - -========================================================================= -National borders -========================================================================= -For the display of national borders (similar to those used in Sid Meier's -Alpha Centauri) each map tile also has an "owner" field, to identify -which nation lays claim to it. If game.borders is non-zero, each city -claims a circle of tiles game.borders in radius (in the case of neighbouring -enemy cities, tiles are divided equally, with the older city winning any -ties). Cities claim all immediately adjacent tiles, plus any other tiles -within the border radius on the same continent. Land cities also claim ocean -tiles if they are surrounded by 5 land tiles on the same continent (this is -a crude detection of inland seas or lakes, which should be improved upon). - -Tile ownership is decided only by the server, and sent to the clients, which -draw border lines between tiles of differing ownership. Owner information is -sent for all tiles that are known by a client, whether or not they are fogged. -A patch to convert this to "semi-fogged" behaviour, whereby clients receive -limited information about non-neighbouring and unseen enemies, is available -at http://freecivac.sf.net/. - -=========================================================================== -Generalized actions -=========================================================================== -An action is something a player can do to achieve something in the game. -Not all actions are enabler controlled yet. - -=========================================================================== -Generalized action meaning -=========================================================================== -A design goal for the action sub system is to keep the meaning of action -game rules clear. To achieve this actions should keep having clear -semantics. There should not be a bunch of exceptions to how for example an -action enabler is interpreted based on what action it enables. This keeps -action related rules easy to understand for ruleset authors and easy to -automatically reason about - both for parts of Freeciv like menus, help -text generation and agents and for third party tools. - -Please don't make non actions actions because they are similar to actions -or because some of the things Freeciv automatically does for actions would -be nice to have. Abstract out the stuff you want in stead. Make it apply to -both actions and to the thing you wanted. - -An action is something a player can order a game entity, the actor, to do. -An action does something in the game it self as defined by the game rules. -It should not matter if those game rules run on the Freeciv server or on a -human umpire. An action can be controlled by game rules. That control can -not be broken by a patched client or by a quick player. An action is at the -level where the rules apply. A sequence of actions isn't an action. Parts -of an action isn't an action. - -Putting a unit in a group so the quickly can select it with the rest of the -units in the group and the server can save what group a unit belongs to -is server side client state, not an action. The rules don't care what group -a unit belongs to. Adding a unit to an army where the game rules treat -units in armies different from units outside an army - say by having them -attack as one unit - would be an action. - -Putting a unit under the control of the autosettlers server side agent -isn't an action. The player could modify his client to automatically give -the same orders as autosettlers would have given or even give those orders -by hand. - -Leaving a destroyed transport isn't an action. The player can't order a -unit to perform this action. Having a unit destroy his transport and then -leave it is an action. Leaving a transport "mid flight" (no matter if it -was destroyed or not) and having a certain probability of surviving to -show up somewhere else is an action. - -Please don't add action (result) specific interpretations of requirements -in action enablers. If you need a custom interpretation define a new actor -kind or target kind. - -=========================================================================== -Misc - The idea trashcan -=========================================================================== -[Currently all of the major entities - units, cities, players, contains -an unique id. This id is really only required when a reference to an entity -is to be serialized(saved or distributed over the net). However in the -current code, the id is also used for comparing, looking up and in general -referencing entities. This results in a lot of mess and unnecessary duplicate -functions. Often when programming, one wonders if some function needs -the id or a pointer when referring to an entity. -PU] - -The paragraph above isn't true anymore for player, units and cities. -RF - -=========================================================================== - -Player-related entities in Freeciv - by Reinier Post -+ by dwp@mso.anu.edu.au - -Freeciv is confused about the meaning of 'player'. As a participant in -Freeciv games, you'll notice that the participants are called 'players'. -At the same time, players seem to be identified with civilizations. -On the other hand, civilizations seem to be identified by 'nation': -every player chooses a nation at the start of the game. - -In the data structures, a 'player' identifies a civilization, not a user. - ----- - THE PLAN: - -There are four player-related entities: - -+ player - A civilization, with a capital, cities, units, an income, etc. - -+ nation - A type of civilization (except that very little actually depends on - nation, and the oddity exists that each player must be of different - nation) - -+ user - Identifies 'someone out there', usually a human user running - freeciv client. - -+ connection - Records a client connection; like a user, but disappears when the user - disconnects, whereas for real users we may want to remember them between - connections. See Connections section below. - -Where do these entities exist? - -Nations aren't actually used for annything that matters; for them, -so the question isn't very interesting. - -Players (more aptly named, 'civilizations'), exist in games. Except in -the context of a running game, the entity makes no sense. Players and -their status are part of savefiles. A game can be saved and restarted -on a different server; the players will be the same. A new game will -have new players. Players exist in common/ (even games do) but a -client only has one instantiated player. - -The reason to introduce users is client-side server commands. It must -be possible to assign different levels of access to commands to different -users. Attaching it to players is not good enough: the information must -survive the addition and removal of other players, the start or restart -of a game, reconnections by the same user even from different computers, -or transferral of the game to a different server. However, a user -may have different levels of access in different games. - -While they last, connections are sufficient identification for users. -The user entity will allow users to be identified when they reconnect. - -Ideally, users would be identified with unique global ids, handed out -by a 'registry service' similar to the metaserver, but this would be -too cumbersome in practice. So the plan is to make users persist in -a server session (even whan a game is started, or restarted when that -option is added) and make them persist across games (when a saved -game is loaded in a different server session). - -Users will be created when they first connect to a server, remembered by -the running server and in savefiles. Upon connecting, the client will -be sent a unique session id, generated when the server started, plus a -fresh user id; it will store them in a ~/.civcookie file, and send it -back when trying to reconnect. This will allow the identity of users -to be protected. 'Protected' players will only allow the same user to -reconnect; 'unprotected' ones allow anyone to connect; server commands -and probably client options will be available to control this. - -Player names will be assigned to users, not players. - -The server maintains a default access level, which is used for new -users and unprotected ones. - ----- - THE PRESENT IMPLEMENTATION: - -Currently access levels are stored in the connection struct. This allows -access levels to be assigned to each individual connected player, which -would not be the case if they were directly assigned to the player struct -(due to the fact that the players array changes when players are added or -removed). - -But that's it. - -Players are still created before the game is started, and player names -still belong to players. Access levels exist in client and server, -but only the server uses them. User ids are not yet implemented; -Server ids do not exist at all. - -Commands to protect/unprotect users do not yet exist; they would serve -no useful purpose. - -Access levels can set for individual users, including AI players with -a connected observer, but only while someone is connected; they will not -be remembered when the user disconnects. - -=========================================================================== -Connections -=========================================================================== - -The code is currently transitioning from 1 or 0 connections per player -only, to allowing multiple connections for each player (recall -'player' means a civilization, see above), where each connection may -be either an "observer" or "controller". - -This discussion is mostly about connection in the server. The client -only has one real connection (client.conn) -- its connection to the -server -- though it does use some other connection structs (currently -pplayer->conn) to store information about other connected clients -(eg, capability strings). - -In the old paradigm, server code would usually send information to a -single player, or to all connected players (usually represented by -destination being a NULL player pointer). With multiple connections -per player things become more complicated. Sometimes information -should be sent to a single connection, or to all connections for a -single player, or to all (established) connections, etc. To handle -this, "destinations" should now be specified as a pointer to a struct -conn_list (list of connections). For convenience the following -commonly applicable lists are maintained: - game.all_connections - all connections - game.est_connections - established connections - game.game_connections - connections observing and/or involved in game - pplayer->connections - connections for specific player - pconn->self - single connection (as list) - -Connections can be classified as follows: (first match applies) - -1. (pconn->used == 0) Not a real connection (closed/unused), should - not exist in any list of have any information sent to it. - -(All following cases exist in game.all_connections.) - -2. (pconn->established == 0) TCP connection has been made, but initial - Freeciv packets have not yet been negotiated (join_game etc). - Exists in game.all_connections only. Should not be sent any - information except directly as result of join_game etc packets, - or server shutdown, or connection close, etc. - -(All following cases exist in game.est_connections.) - -3. (pconn->player == NULL) Connection has been established, but is not - yet associated with a player. Currently this is not possible, but - the plan is to allow this in future, so clients can connect and - then see list of players to choose from, or just control the server - or observe etc. Two subcases: - - 3a. (pconn->observer == 0) Not observing the game. Should receive - information about other clients, game status etc, but not map, - units, cities, etc. - -(All following cases exist in game.game_connections.) - - 3b. (pconn->observer == 1) Observing the game. Exists in - game.game_connections. Should receive game information about - map, units, cities, etc. - -4. (pconn->player != NULL) Connected to specific player, either as - "observer" or "controller". (But observers not yet implemented.) - Exists in game.game_connections, and in pconn->player->connections. - - -=========================================================================== -Starting a Server from Within a Client -=========================================================================== - -After many years of complaints regarding the ease (or lack thereof) of -starting a game of Freeciv [start a server, input settings on a command line, -start a client, and connect, etc], a method has been developed for starting -and playing a complete game using only the client. This has been called the -"extended" or "new connect dialog". This is perhaps a misnomer, but there it -is. This win32 client has had this feature in some form for some time. - -It works by forking a server from within the client and then controlling that -server via chatline messages. The guts of the machinery to do this can be -found in these files: - -client/connectdlg_common.[ch] -client/gui-*/connectdlg.[ch] -common/networking/packets.def -server/gamehand.[ch] -server/stdinhand.[ch] - -When a player starts a client, he is presents with several options: start -a new game, continue a saved game and connect to a networked game. For the -latter option, connect_to_server() is called and login proceeeds as normal. -The first two options, connectdlg_common.c:client_start_server() is -called. Here, a server is spawned, standard input and outputs to that process -are closed, and then connect_to_server() is called so the client connects to -that server. - -At this point everything regarding the client/server connection is as usual; -however, for the client to control the server, it must have access level HACK, -so it must verify to the server that it is local (on the same machine or at -least has access to the same disk as the server). The procedure is: - -1. the server creates a file using gamehand.c:create_challenge_filename() and - puts the name of this file in packet_server_join_reply that it sends back - to the client. The name of the file is semi-random. -2. The client, upon receiving confirmation that it can join the server, - creates a file using the name the server selected and places a random number - inside that file. -3. The client sends a packet [packet_single_want_hack_req] with that random - number back to the server. -4. The server upon receiving the packet [packet_single_want_hack_req], opens - the file and compares the two numbers. If the file exists and the numbers - are equal the server grants that client HACK access level and sends a - packet [packet_single_want_hack_reply] informing the client of its elevated - access level. - -Only one other packet is used --- packet_single_playerlist_req --- which asks -the server to send a player list when a savegame is loaded. This list is used -for player selection. - - -=========================================================================== -Macros and inline functions -=========================================================================== - -For a long time Freeciv had no inline functions, only macros. With the -use of other C99 features and some new requirements by the code, this has -changed. Now both macros and inline functions are used. - -This causes problems because one coder may prefer to use a macro while -another prefers an inline function. Of course there was always some -discretion to the author about whether to use a function or a macro; all -we've done is add even more choices. - -Therefore the following guidelines should be followed: - -- Functions should only be put into header files when doing so makes a - measurable impact on speed. Functions should not be turned into macros or - inlined unless there is a reason to do so. - -- Macros that take function-like parameters should evaluate each parameter - exactly once. Any macro that doesn't follow this convention should be - named in all upper-case letters as a MACRO. - -- Iterator macros should respect "break". - -- In header files macros are preferred to inline functions, but inline - functions are better than MACROS. - -- Functions or macros that are currently in one form do not have to be - changed to the other form. - -Note that many existing macros do not follow these guidelines. - - -=========================================================================== -Style Guide -=========================================================================== - -See CodingStyle in this directory. - -- If you send patches, use "diff -u" (or "diff -r -u"). For further - information, see . - Also, name patch files descriptively (e.g. "fix-foo-bug-0.patch" is good, - but "freeciv.patch" is not). - -- When doing a "diff" for a patch, be sure to exclude unnecessary files - by using the "-X" argument to "diff". E.g.: - - % diff -ruN -Xdiff_ignore freeciv_git freeciv >/tmp/fix-foo-bug-0.patch - - A suggested "diff_ignore" file is included in the Freeciv distribution. - -=========================================================================== -Internationalization (I18N) -=========================================================================== - -Messages and text in general which are shown in the GUI should be -translated by using the "_()" macro. In addition qInfo() and -some qWarning() messages should be translated. In most cases, the other -log levels (qFatal(), qCritical(), qDebug(), log_debug()) should -NOT be localised. - -See utility/fciconv.h for details of how Freeciv handles character sets -and encodings. Briefly: - -The data_encoding is used in all data files and network transactions. -This is UTF-8. - -The internal_encoding is used internally within freeciv. This is always -UTF-8 at the server, but can be configured by the GUI client. (When your -charset is the same as your GUI library, GUI writing is easier.) - -The local_encoding is the one supported on the command line. This is not -under our control, and all output to the command line must be converted. - -=========================================================================== -Debugging and Profiling -=========================================================================== - -Debugging has to be activated on compile time. For autotools based builds -that's done by adding the option '--enable-debug=no/some/yes/checks' -to the configure script. See m4/debug.m4 for exact compiler flags each -value sets. The different values have roughly the following meaning: - - no: no debugging enabled(FREECIV_NDEBUG and NDEBUG are defined) - additional compiler flags for optimisation (-O3 -fomit-frame-pointer) - some: default build (neither FREECIV_NDEBUG nor FREECIV_DEBUG is defined) - yes: debugging enable (FREECIV_DEBUG is defined) - debugging log level available (4, log_debug()) - more compiler warning flags than with lower debug levels - checks: same as 'yes' but with one additional compiler check: - -Wstrict-prototypes - -Profiling is enabled by '--enable-gprof'. After the compilation run freeciv -normally. It will be 5 to 10 times slower due to the added calls to the -profiling functions. After freeciv quits normally (not after a crash) the -file gmon.out is written. It can be analyzed by calling -'gprof ./server/freeciv-server gmon.out > gprof.txt'. More information can -be found at http://sourceware.org/binutils/docs/gprof/index.html. - -=========================================================================== diff --git a/doc/ca/BUGS.ca b/doc/ca/BUGS.ca deleted file mode 100644 index b834580c01..0000000000 --- a/doc/ca/BUGS.ca +++ /dev/null @@ -1,91 +0,0 @@ -========= -PROBLEMES -========= - -Freeciv 2.2 és una versió "estable" i es considera prou lliure d'errors -per l'ús normal. No obstant, si hi trobes algun problema, ens agradaria -molt saber-ho, i així el podrem solucionar. - - -INFORMAR D'UN PROBLEMA: -======================= - -S'ha de fer el següent: - - - Comprovar que no sigui un problema ja conegut. Per una llista que es - manté sempre al dia, veure: - - http://www.freeciv.org/wiki/Known_Bugs - - - Mirar el web de Freeciv, per assegurar-se que estàs jugant amb la - versió més nova. (Potser ja l'hem solucionat). - - - Mirar el Sistema de Seguiment d'Errors de Freeciv a: - - https://www.hostedredmine.com/projects/freeciv - - per veure si ja s'ha informat del problema. - - - Enviar un informe de l'error amb el sistema de seguiment d'errors del - punt anterior! - - Si et surten missatges de GDK/GTK, com per exemple: - - Gtk-CRITICAL **: file gtkobject.c: line 1163 (gtk_object_ref): - assertion oject->ref_count > 0' failed. - - si us plau reinicia el client i afegeix "-- --g-fatal-warnings" a - la línia de comandes. Així obtindràs un fitxer "core". Si us plau, - inclou la "traça de la pila" d'aquest "core" al teu informe d'errors. - - Què incloure al teu informe d'errors: - - - Descriu el problema, inclosos els missatges que han sortit. - - - Indica quin(s) client(s) fas servir (GTK+, SDL, Win32, o Xaw). - - - Digue'ns el nom i versió de: - - - El Sistema Operatiu que fas servir. Et pot ser útil la comanda - "uname -a". - - - La versió de Freeciv. - - - Si fas servir el client GTK+, els números de versió (si els saps) - de les llibreries GTK+, GLib, i imlib. - - - Si fas servir el client SDL, els números de versió (si els saps) - de les llibreries SDL, SDL_image, PNG, i freetype. - - - Si fas servir el client Xaw, els números de versió (si els saps) - de les llibreries X, la llibreria PNG, la llibreria Z, i la - llibreria Xaw, i sobretot si és el Xaw estàndard, o una variant - com ara Xaw3d, Xaw95, o Nextaw. - - - Si compiles del codi font, el nom i número de versió del - compilador. - - - Si ho has instal·lat d'un paquet binari, el nom del paquet, la - distribució per la qual és, i d'on l'has tret. - - - Si el Freeciv et fa un "core", pot ser que et demanem que facis servir - un depurador per donar-nos una "traça de la pila". Et caldrà el fitxer - "core" per això, així com el binari que has fet servir; per tant, - guarda'ls tots dos. - - - Si és un problema de traducció, s'hauria de dir al Contacte Primari per - l'idioma. Per veure els seus noms i adreces, vés a: - - http://www.freeciv.org/wiki/Localization - - -INFORMACIÓ ADDICIONAL: -====================== - -Per més informació, com sempre, la web de Freeciv: - - http://www.freeciv.org/ - -i ara, la versió catalana: - - http://www.freeciv.org/wiki-ca/ diff --git a/doc/ca/HOWTOPLAY.ca b/doc/ca/HOWTOPLAY.ca deleted file mode 100644 index 50288bd8ca..0000000000 --- a/doc/ca/HOWTOPLAY.ca +++ /dev/null @@ -1,267 +0,0 @@ -Com jugar al Freeciv - - Originalment de Michael Hohensee (àlies Zarchon) - - -Si el que busques és com instal·lar el Freeciv, veure el fitxer INSTALL. -Si el que busques és com executar el Freeciv, mira el fitxer README.ca. - -Si no has jugat mai als jocs Civilization, el més fàcil és començar -llegint el manual de Freeciv, consultable a: - - http://www.freeciv.org/wiki-ca/Manual_de_joc - -Si el que vols són idees per jugar al Freeciv, continua llegint!! - - Ara que ja tens el Freeciv en marxa, deus voler jugar les -primeres partides. Es recomana que juguis sol algunes vegades, per -agafar una idea de com funcionen les coses, però no és estrictament -necessari. També pots aprendre'n jugant amb d'altres o contra l'IA. - -P: Pots donar-me una estratègia bàsica? - - Primer de tot, aquesta estratègia no és pas *perfecte*; ni -tan sols no és massa bona. Però et servirà per començar a jugar. Part -de la gràcia del Freeciv és desenvolupar estratègies noves. - - La partida es pot dividir en diferents fases: - - La fase d'Expansió Inicial - Subfase tecnològica - Fase de la Segona Expansió - Fase de Producció - i la fase de l'Anorreament Total dels Teus Enemics - -Expansió Inicial: - - Aquesta fase és la més crítica. El primer que has de fer és -construir ciutats i explorar la teva illa. Necessites moltes ciutats, -set o vuit com a mínim. - - La clau del joc és apropiar-se de tants quadrats de terra com -sigui possible. Quan construeixes una ciutat, assegura't que no se -t'ajunta amb massa territori d'alguna de les altres ciutats teves. Pots -veure quines caselles fa servir una ciutat clicant-hi a sobre. El mapa -de la ciutat i l'àrea dels voltants conté el territori d'aquella ciutat. -Tenint això en compte, intenta mantenir les teves ciutats força juntes. -Com més lluny estiguin les unes de les altres, més difícils seran de -defensar i administrar en aquesta fase. (Consell: Intenta de -construir-les sobre escuts (cavalls) o a prop dels peixos). - - Ara que ja tens una ciutat o dues, cal que posis la taxa de -ciència tan alta com ho permeti el teu tipus de govern. No et preocupis -per la taxa d'impostos, perquè encara no construiràs edificis que -necessitin diners; has de construir colons. Cada ciutat hauria d'estar -generant colons. Com més colons facis, més ciutats pots tenir; com -més ciutats tinguis, més ràpid obtindràs tecnologia; com més ràpid -obtinguis tecnologia, guanyaràs abans. Quan hagis construït tantes -ciutats com et càpiguen al teu racó de món, envia els colons a irrigar -i construir camins. - -(Nota: Si l'excedent de menjar d'una ciutat baixa a +1 pel fet de -suportar massa colons, i no pots redistribuir la gent per augmentar-lo, -canvia'ls a la producció de temples. Si no és que contactes amb un -altre jugador, no et preocupis de construir unitats militars, encara). - - Tota aquesta estona, has estat obtenint tecnologies tan ràpid -com hagi estat possible. On hauries d'apuntar primer és "La República", -després "Democràcia", després "Ferrocarril", i després "Industrialització". -(Hi ha gent que ve per la Monarquia abans que la República). De seguida -que hagis investigat un nou tipus de govern, engega una revolució i -canvia-hi. Les ciutats funcionen molt millor en una República que no -pas en Despotisme, però vigila perquè és molt més difícil de mantenir -les unitats militars fora dels límits de les ciutats en una República. -També, no t'oblidis de repassar les taxes després de canviar de govern, -perquè els màxims varien per cada tipus. - - Quan obtens la Democràcia, ja tens tot el que necessites per -passar a la fase de la Segona Expansió. Això s'aconsegueix canviant el -govern a Democràcia, fent que totes les ciutats construeixin temples, i -fixant la taxa de luxes al 100%. Quan facis això, totes les ciutats -passaran a estar en festa immediatament, i creixeran a un ritme d'un -per torn mentre tinguin excedent de menjar. Quan siguin prou grans, -abaixa el luxe a un nivell raonable entre el 20 i el 40%. Això et -col·loca a la fase de la Segona Expansió. - - L'inconvenient d'això és que posar els luxes al 100% implica -que la teva recerca científica pràcticament s'aturarà. Un cop les -ciutats t'hagin crescut, i tornis la ciència a un nivell de 50% o així, -tornaràs a guanyar tecnologies, però a un ritme lleugerament menor. Si -has fet alguna mica d'exploració, i no estàs amenaçat de forma -immediata per un altre jugador, pot ser bona idea de mantenir la ciència -al màxim fins que les tecnologies comencin a trigar massa a generar-se. - -Fase de la Segona Expansió: - - Quan tinguis les ciutats a un nivell de població bo, desacostuma- -les dels luxes gradualment, i augmenta els impostos. Un cop hagin baixat -al 30% de luxes o així, augmenta la taxa de ciència tant com sigui -possible, tot mantenint un nivell d'ingressos positiu. Quan obtinguis el -ferrocarril, converteix tots els camins en vies, o almenys les caselles -que es fan servir per producció, o les que formin part de la xarxa de -transport. (Consell: converteix cada casella que faci servir una ciutat -en camí/via, augmenta la producció de la ciutat. No cal millorar la -casella del centre mateix - això es fa automàticament). - - Ara és el moment de desenvolupar la industrialització, i les -tecnologies militars. Et caldria començar a fundar ciutats en d'altres -illes, i posar-te a explorar sèriament si encara no ho has fet. Has -d'esbrinar on són els teus enemics. Busca les tecnologies bones per -als vaixells, i intenta construir l'Expedició de Magallanes. Quan -estiguis preparat, vés a: - -La Fase de Producció: - - Ara estàs construint fàbriques i centrals tèrmiques a les -teves ciutats. Has d'aconseguir tanta producció com sigui possible de -cada ciutat. La contaminació es converteix en un problema. De seguida -que puguis, intenta d'investigar Prouducció en Cadena per tenir Transports -Públics, i Reciclatge per poder construir Centres de Reciclatge. Un cop -tinguis totes les ciutats ben fortes, has de construir unitats militars. -(Nota: si entres en contacte amb un altre jugador, cal que construeixis -immediatament unes quantes unitats d'atac, i almenys una unitat defensiva -per ciutat). - - Quan comencis a pensar a atacar algú, fixa la ciència al 0%, i -augmenta els impostos tant com puguis sense provocar desordres. Recorda -que els diners també poden construir unitats! - - -Fase de l'Anorreament Total dels Teus Enemics: - - Això pot fer-se en qualsevol moment, però és més divertit amb les -armes avançades. - - Tria un enemic relativement dèbil, i envia-hi unes quantes barques -plenes de tropes. Conquereix les seves ciutats, i fes-les servir per -construir més unitats per conquerir la resta. Sense quarter! A mort! - -Repetir el procediment, tan sovint com calgui! ;-) - -[Nota per pacifistes: el Freeciv també permet que un jugador guanyi si -construeix una nau espacial que arribi a Alpha Centauri abans que els -altres]. - - -Questions addicionals: - -Q. Quines altres estratègies hi ha? - - Hi ha una colla de tutorials i guies d'estratègia disponibles a la -wiki de Freeciv (en anglès): - - http://www.freeciv.org/wiki/Tutorials - -A més, l'ajuda en línia de Freeciv en descriu una altra. - - -Q. En partides multijugador, quin temps màxim he de deixar? - - Això depèn del nombre de jugadors. Si només jugueu dos, pots -deixar-ho en temps 0 (sense límit). Si n'hi ha més de dos, o si un dels -dos marxarà del seu terminal de tant en tant i no vols aturar el joc, un -temps màxim de 60 segons normalment és suficient. Avançada la partida, -però, a mesura que les coses es posen més difícils, voldràs augmentar -el temps màxim a 240 segons. En general, com més jugadors tinguis, -més temps necessitaràs. Posa tu mateix el temps amb què en sentis -més còmode, però recorda que pujar de 300 sol avorrir a la gent. - - -Q. Quina mida de mapa faig servir? - - La mida del mapa depèn de quants jugadors hi hagi, i com de -ràpid vols que acabi la partida. La mida de mapa per defecte (80x50) -és prou gran per una partida de dos jugadors força ràpida, però es -convertirà en una partida *molt* ràpida si hi juguen més de tres persones. - - Les partides ràpides solen ser frustrants per tothom excepte el -que guanya, ja que ningú no ha tingut temps de desenvolupar cap defensa. -Si tens més de tres persones jugant, val més que facis servir un mapa de -80x80. Si tens cinc o més persones, voldràs considerar-ne un de 100x100. - - -Q. Què és aquesta opció del "generador"? - - Modifica el procés de generació del mapa. Si jugues al Freeciv -unes quantes vegades sense canviar aquest paràmetre, segur que sentiràs -a parlar de (o patiràs) els horrors d'una illa petita. La Síndrome -d'Illa Petita (SIP) provoca bogeria en persones. Per solucionar-ho, els -nostres amables i benvoluguts programadors van instal·lar l'opció de -generador. -- Quan es fixa a 1, crear el mapa amb un generador hight aleatori, - amb illes de mides diferents (i potencialment injustes). -- Quan es fixa a 2, genera el mapa amb un generador hight pseudo fractal. - Això vol dir que les muntanyes i turons es col·locaran segons xifres - matemàtiques. -- 3 genera illes de mida igual (de vegades amb algunes illes més petites - de propina). D'aquesta manera, ningú no pot queixar-se d'haver perdut - "per culpa d'aquest recoi d'illa" -- 0 es fa servir per mapes prefabricats. (Carrega un mapa escrivint - /load /dir/partidadesada.sav.gz al camp d'entrada de la part inferior - de la pantalla, d'aquesta manera es poden modificar els paràmetres - d'una partida. Fes servir l'editor de mapes per modificar un mapa). - -Sota l'opció del generador hi ha l'opció de startpos. Aquest paràmetre -determina quants jugadors es col·loquen al mateix continent. Cada -opció de generador té el seu propi valor de startpos per defecte, que -és el que es carrega quan startpos és 0. (La startpos per defecte per -al generador fractal hight és 3, que vol dir que el generador intentarà -col·locar tots els jugadors al mateix continent). - -Q. Puc fer la partida més fàcil augmentant l'or inicial? - - Si no tens experiència, i estàs jugant amb gent sense experiència, -segurament ningú no s'oposarà a un augment en la quantitat d'or amb què es -comença. No obstant, això no és pas una bona manera d'aprendre a jugar. -Començar amb molts diners fa que el joc sigui molt més fàcil, i et -fa més difícil d'aprendre a espavilar-te amb la quantitat per defecte. -La majoria de jugadors experts no toquen aquest paràmetre, i si saben -espavilar-se i tu no, acabaràs com l'Atlàntida. - -Nota: Es pot dir el mateix dels paràmetres "techlevel" i "researchspeed" - - -Q. I què me'n dius de les altres opcions? - - La resta tenen a veure sobretot amb el tipus de món que es genera -i la mecànica del joc. Augmentar les "especials" et dóna una taxa alta de -recursos per casella, i "huts" determina quantes cabanes de regals hi ha. -Augmentar el nombre de colons i exploradors amb què es comença fa que -el joc vagi més ràpid, i permet a la gent de sobreviure als "bàrbars dels -$#@!" que de vegades viuen a les cabanes. - - Els paràmetres relacionats amb el ferrocarril determinen quanta -més producció de menjar/comerç/producció tindrà una casella amb ferrocarril, -i el paràmetre "foodbox" determina quant de menjar ha de tenir cada -persona de la ciutat abans d'afegir-n'hi una altra. - - Sobre la resta, augmentar "mountains" vol dir un mapa més -muntanyós, augmentar "deserts" implica més deserts, etc. - - -Q. Com obtinc la tecnologia _____? - -Busca la tecnologia a l'ajuda online. Et dirà les tecnologies que has -d'aconseguir primer. - -Pots llegir el joc de regles de tecnologia de -'data/default/techs.ruleset'. Conté ana llista de totes les tecnologies, -i quines fan falta per obtenir-ne d'altres. - - -Q. Quins tipus d'unitats militars són els més útils? - - Per Atac: - - Tancs , Helicòpters, Míssils de Creuer, Cuirassats, - Transports, Nuclears, Obusos, Bombarders. - - Per Defensa: - - Tancs, Infanteria Mecanitzada, Obusos, Cuirassats, - Míssils de Creuer, Nuclears. - -Recorda, la millor defensa és un bon atac. - - -Afegits a aquest document seran benvinguts! diff --git a/doc/ca/README.ca b/doc/ca/README.ca deleted file mode 100644 index 7018e52dde..0000000000 --- a/doc/ca/README.ca +++ /dev/null @@ -1,507 +0,0 @@ -================== -Freeciv Versió 2.2 -================== - -Benvingut a Freeciv! - -Aquest arxiu conté Freeciv, un joc lliure semblant al Civilization, -principalment per X sota Unix. Té suport per jocs en multijugador tant -en local com per xarxa, i un IA que a la majoria de gent li costa de -guanyar. - -El Freeciv intenta ser bàsicament compatible a nivell de regles amb -el Civilization II [tm], publicat per Sid Meier i Microprose [tm]. -Algunes regles són diferents on ens sembla que té més sentit, i tenim -un munt de paràmetres retocables per fer possible la personalització -del joc. - -El Freeciv s'ha implementat de forma totalment independent del -Civilization; no has de tenir-lo per jugar al Freeciv. - - -Traduccions: -============= - -Pots trobar una versió traduïda d'aquest fitxer, així com d'altres parts -de la documentació de Freeciv, als següents llocs: - - Anglès ./doc - Holandès ./doc/nl - Francès ./doc/fr - Alemany ./doc/de - Italià ./doc/it - Japonès ./doc/ja - Suec ./doc/sv - -Encara que no tinguis traducció per la teva llengua, pot ser que el joc -la suporti. Mira la traducció "Suport d'idiomes propis", més avall. - - -Pàgina web: -========= - -El web de Freeciv és aquí: - - http://www.freeciv.org/ - -Et convidem a visitar-lo. Pots obtenir-hi les últimes notícies sobre el -Freeciv, versions i pegats, informació sobre les llistes de correu de -Freeciv, i veure el metaservidor de Freeciv, que registra partides que -es juguen per tot el món. - - -Llicència: -========== - -El Freeciv es distribueix sota la Llicència GPL. En resum, pots copiar -aquest programa (inclòs el codi font) lliurement, però mira't el fitxer -COPYING per tots els detalls. - - -Compilar i instal·lar: -====================== - -Si us plau, llegeix el fitxer INSTALL amb atenció per instruccions sobre -la compilació i la instal·lació de Freeciv a la teva màquina. - - -Engegar una partida nova: -========================= - -De fet, el Freeciv són dos programes: un servidor i un client. Quan -una partida està en progrés, hi haurà un programa servidor en execució, -i tants programes client com jugadors humans. El servidor no necessita -X, però els clients sí. - - NOTA: - Els exemples següents assumeixen que el Freeciv s'ha instal·lat al - teu sistema, i que el directori que conté els programes "civclient" - i "civserver" és al teu PATH. Si el Freeciv no està instal·lat, pots - fer servir els programes "civ" i "ser", que es poden trobar al directori - principal de Freeciv. Es fan servir exactament igual que "civclient" i - "civserver". - -Executar Freeciv implica engegar el servidor, després el(s) client(s) -i IA(s), i després dir-li al servidor que comenci la partida. Aquests -són els passos: - -Servidor: - - Per engegar el servidor: - - | % civserver - - O per una llista d'opcions de línia de comandes: - - | % civserver --help - - Un cop el servidor està engegat, apareix un '>': - - | Per ajuda introductòria, escriu 'help'. - | > - - i pots veure aquesta informació amb la comanda help: - - | > help - | Benvingut - aquesta és l'ajuda d'introducció al servidor Freeciv. - | - | Al servidor hi ha dos conceptes importants, Comandes i Opcions. - | Les Comandes, com 'help', s'usen per a interactuar amb el servidor. - | Hi ha comandes que tenen arguments, separats per espais. - | En molts casos les comandes i els arguments poden ser abreujats. - | Les opcions són valors que controlen el funcionament del servidor. - | - | Per saber com trobar més informació sobre les comandes i les opcions, - | fes 'help help'. - | - | Per als més impacients, les principals comandes per començar són: - | show - per veure les opcions actuals - | set - per fixar opcions - | start - per iniciar la partida un cop els jugadors s'han connectat - | save - per desar la partida actual - | quit - per sortir - | > - - Si vols, pots fer servir la comanda 'set' per modificar qualsevol de - les diferents opcions de servidor per la partida. Pots obtenir una - llista de totes les opcions amb la comanda 'show', i descripcions - detallades amb la comanda 'help '. - - Per exemple: - - | > help size - | Opció: size - Mida de mapa (en milers de caselles) - | Descripció: - | Aquest valor es fa servir per determinar les dimensions del mapa. - | size = 4 és un mapa normal de 4.000 caselles (per defecte) - | size = 20 és un mapa enorme de 20.000 caselles. - | Estat: canviable - | Valor: 4, Mínim: 1, per Defecte: 4, Màxim: 29 - | > - - I: - - | > set size 8 - - Farà que el mapa sigui el doble de gros que el que surt per defecte. - -Client: - - Ara s'hi haurien d'afegir tots els jugadors humans, executant el - client Freeciv: - - | % civclient - - Això, suposant que el servidor s'estigui executant a la mateixa màquina. - Si no, pots, o bé especificar-lo a la línia de comandes amb l'opció - '--server' o bé introduir-lo a la primera caixa de diàleg un cop s'engega - el client. - - Per exemple, suposem que el servidor s'està executant en una màquina - diferent, anomenada 'timbalet'. Llavors, els jugadors s'hi afegirien - amb una comanda com: - - | % civclient --server timbalet - - Si ets l'únic jugador humà, llavors només cal que s'engegui un client. - A la manera estàndard de Unix, pots engegar el client "de fons" - afegint-hi un ampersand: - - | % civclient & - - Una altra opció per al client que pots voler provar és la '--tiles', - que es fa servir per seleccionar 'jocs de caselles' diferents (és - a dir, gràfics diferents per al terreny del mapa, les unitats, etc.). - La distribució ve amb cinc 'jocs de caselles' principals: - - amplio: un joc de caselles isomètric amb caselles més grans i més detallades. - - isotrident: un joc de caselles isomètric de forma similar al de Civ 2. - - trident: un joc de caselles a l'estil de Civ 1 amb caselles de 30x30. - - isophex: un joc de caselles isomètric hexagonal. - - hex2t: un joc de caselles hexagonal vist des de dalt. - - En aquesta versió, el joc de caselles per defecte és l'amplio. - Per provar-ne un altre, per exemple el trident, engega el client amb: - - | % civclient --tiles trident - - Es poden obtenir altres jocs de caselles a http://www.freeciv.org/wiki/Tilesets - - - Es pot autoritzar als clients a donar comandes de servidor. Per - permetre'ls de fer servir només comandes informatives, escriu al - prompt del servidor - - | > cmdlevel info - - Amb això, els clients ara podran fer servir '/help', '/list', - '/show settlers', etc. - -Jugadors de l'Ordinador: - - Hi ha dues maneres de crear jugadors IA. La primera és fixar - el nombre de jugadors (humans i IA) inicialitzant l'opció de - servidor 'aifill'. Per exemple: - - | > set aifill 7 - - Després de donar la comanda 'start' al servidor per engegar la - partida, tots els jugadors que no siguin controlats per humans - seran jugadors IA. Per l'exemple de dalt, si s'haguessin afegit - dos jugadors, es crearien cinc jugadors IA. - - La segona manera és crear explícitament un IA amb la comanda - de servidor 'create'. Per exemple: - - | > create HumanKiller - - Això crearà un jugador controlat per IA anomenat HumanKiller. - - S'assignen nacions als jugadors IA un cop tots els jugadors humans - han triat la seva, però pots triar una nació en concret per un - jugador IA fent servir el nom normal del líder d'aquella nació. - Per exemple, per jugar contra Romans controlats per IA, fes servir - aquesta comanda de servidor: - - | > create Caesar - - Fixa't que això només és una preferència: Si cap més humà no vol - jugar amb els Romans, aquest IA ho farà. - -Servidor: - - Quan tothom s'hi ha afegit (fes servir la comanda "list" per veure - qui hi ha), engega la partida amb la comanda "start": - - | > start - -I la partida està en marxa! - - -Anunciar la partida: -==================== - -Si no vols limitar els teus rivals a amics locals o jugadors IA, -visita el metaservidor de Freeciv: - - http://meta.freeciv.org/ - -És una llista de servidors de Freeciv. Per fer que el teu servidor s'hi -anunciï, engega civserver amb l'opció '--meta', o '-m' per abreujar. - -Coses a tenir en compte: - - 1) Degut a la inclusió de noves característiques, les versions de - client i de servidor són sovint incompatibles. La versió 2.0.0, - per exemple, és incompatible amb la 1.14.2 o les anteriors. - - 2) Si el botó de Metaservidor al diàleg de conneixó no funciona, - comprova si el teu proveïdor d'Internet té un proxy obligatori i, - en aquest cas, fes que civclient el faci servir amb la variable - d'entorn $http_proxy. Per exemple, si el proxy és proxy.myisp.com - port 8888, fixa $http_proxy a http://proxy.myisp.com:8888/ abans - d'engegar el client. - - 3) De vegades no hi ha partides al metaservidor. Passa de vegades. - El nombre de jugadors varia amb l'hora del dia. Prova d'engegar-ne - un tu! - - -Joc: -==== - -La partida es pot desar en qualsevol moment amb la comanda de servidor -'save', així: - - | > save partida_meva.sav - -(Si el teu servidor està compilat amb suport de compressió, i l'opció -de servidor 'compress' està a un valor diferent de zero, llavors el -fitxer escrit pot ser comprimit i anomenat partida_meva.sav.gz'). - -El client Freeciv funciona com es podria esperar d'un joc estil -civilization multijugador. És a dir, els jugadors humans es mouen -tots al mateix temps, després es mouen tots els jugadors IA un cop -tots els jugadors humans han acabat el seu torn. Hi pot haver un -temps màxim per acabar el torn, però per defecte es fixa a zero -(sense temps màxim). L'operador del servidor pot modificar aquest -valor en qualsevol moment amb la comanda 'set'. - -Dóna un cop d'ull al sistema d'ajuda en línia. Es poden fer servir -tots tres botons de ratolí, i estan documentats allà. - -Els jugadors poden prémer 'Majúscules' i la tecla de 'Retorn' per -anunciar el final del seu torn, o clicar el botó 'Acabar el Torn'. - -Amb el diàleg de 'Jugadors' pots veure qui ha anunciat el final -del seu torn, i a qui estàs esperant. (Ei, mestre, estem adormits -o què?? ;). - -Amb la línia d'entrada a la part inferior de la finestra pots -enviar missatges als altres jugadors. - -Pots enviar un missatge a només un jugador (p.ex., 'pere') així: - - | pere: treu el tanc d'aquí *ARA MATEIX*! - -El servidor és prou llest com per "acabar noms"; per tant, si -haguessis escrit "per:", trobarà un nom de jugador que concordi -amb la part del nom que has escrit. - -Pots enviar un missatge a tots els teus aliats prefixant-lo amb el -caràcter '.' (és a dir, un punt). - -Pots donar comandes al servidor des de la línia d'entrada del client: - - | /list - | /set settlers 4 - | /save partida.sav - -L'operador del servidor segurament només et deixarà donar comandes -informatives. En part és perquè permetre als clients de fer servir -totes les comandes del servidor té implicacions de seguretat; -imagina't que un jugador intenta: - - | /save /etc/passwd - -Evidentment, el servidor no hauria d'executar-se amb privilegis de -superusuari en cap cas, per reduir aquest tipus de risc. - -Si ets un principiant, i t'agradaria fer-te una idea d'una estratègia, -dóna un cop d'ull a la guia COMESFA, continguda al fitxer HOWTOPLAY - -Per molta més informació sobre el client, el servidor, i els -conceptes i regles del joc, veure el manual de Freeciv, disponible -a la wiki també en català: - - http://www.freeciv.org/wiki-ca/Manual - - -Final de la partida: -==================== - -Hi ha tres maneres d'acabar la partida: - -1) Només queda una nació. -2) S'ha arribat a l'últim any. -3) Un jugador construeix i llança una nau espacial, que arriba a - Alpha Centauri primer. - -Es mostrarà un marcador de punts en tots els casos. Pista: l'operador -del servidor pot fixar l'any final mentre el joc encara dura -modificant l'opció 'end-year'. Això va bé quan el guanyador està -dat i beneït, però no vols jugar la 'fase de neteja', que pot ser -avorrida. - - -Recuperar partides: -=================== - -Pots recuperar una partida desada amb l'opció de servidor '-f', p.ex.: - - | % civserver -f partidanostra2001.sav - -o, si la partida l'havia creada un servidor que comprimia: - - | % civserver -f partidanostra2001.sav.gz - -Ara els jugadors poden tornar-s'hi a afegir: - - | % civclient -n Alexander - -Fixa't que el nom del jugador s'especifica amb l'opció -n. És vital -que el jugador faci servir el mateix nom que tenia quan la partida era -en marxa, perquè se'l deixi tornar a entrar. - -Llavors la partida ja es pot tornar a engegar amb la comanda 'start' -de forma normal. - - -Suport d'idiomes propis: -======================== - -El Freeciv està traduït a molts idiomes. - -Pots triar quin idioma vols fer servir especificant la "locale". Cada -locale té un nom estàndard (p.ex., 'ca' per català). Si has instal·lat -Freeciv, pots triar una locale assignant a la variable d'entorn LANG -el nom estàndard de la teva locale abans d'executar civserver i -civclient. - -Per exemple, suposant que vulguis fer servir la traducció al català, -has de fer: - - export LANG; LANG=ca (al shell Bourne (sh)), -o - setenv LANG ca (al shell C (csh)). - -(Pots fer-ho al teu fitxer .profile o .login). - - -Registre de missatges: -====================== - -Tant el client com el servidor treuen missatges anomenats "de registre" -o "de log". Hi ha cinc categories de missatges de registre: "fatal", -"error", "normal", "verbose", i "debug". - -Per defecte, els missatges fatal, error i normal es treuen per la -sortida estàndard des d'on s'ha engegat el client o el servidor. Pots -redireccionar els missatges de registre a un fitxer en comptes de la -pantalla amb les opcions de línia de comanda "--log nom_fitxer", o -"-l nom_fitxer". - -Pots canviar el nivell de missatges de registre que es mostren amb -"--debug nivell" o "-d nivell" (o "-de nivell" per al client Xaw, ja -que "-d" és ambigu entre "-debug" i "-display"), on "nivell" pot ser -0, 1, 2, o 3. 0 vol dir mostrar només els missatges "fatal", 1 vol -dir mostrar els missatges "fatal" i "error", 2 vol dir missatges -"fatal", "error" i "normal" (el defecte), i 3 vol dir mostrar els -missatges "fatal", "error", "normal" i "verbose". - -Si has compilat amb DEBUG definit (una manera fàcil de fer-ho és -amb l'opció --enable-debug en fer configure), llavors pots obtenir -els missatges de nivell debug posant el nivell a 4. També és possible -de controlar els missatges de nivell debug (els altres no) per fitxer -i per línia. Per fer-ho, fes "--debug 4:cad1:cad2" (tantes cadenes com -vulguis, separades per dos punts) i tots els fitxers el nom dels quals -contingui aquestes subcadenes tindran els missatges de debug permesos, -i tots els altres missatges de debug se suprimiran. Per controlar les -línies, fes: "--debug 4:cad1,min,max" i per fitxers que concordin amb -cad1 només es permetran els missatges de debug entre les línies mínima -i màxima que s'hagin especificat. Només es pot aplicar una parella -(min,max) per cada fitxer. - -Exemple: - - | % civserver -l elmeu.log -d 3 - -Això enviar tots els missatges de registre del servidor al fitxer -"elmeu.log", inclosos els de nivell "verbose". - -Exemple: - - | % civclient --debug 0 - -Això suprimeix tots els missatges de registre no fatals del client. - -Exemple: - - | % civserver -d 4:log:civserver,120,500:autoattack - -Això permet tots els missatges fatal, error, normal i verbose per al -servidor, i els de nivell de debug per alguns mòduls especificats. -Fixa't que "log" concorda tant amb "gamelog.c" com amb "log.c". Per -"civserver.c", es mostraran els missatges de debug entre les línies -120 i 500. Aquest exemple només funciona si el servidor s'ha compilat -amb DEBUG. - - -Errors de programa: -=================== - -Has trobat un error al programa? De veritat que volem que ens ho -expliquis, i així el podem solucionar. Mira el fitxer BUGS, per -una llista dels problemes coneguts en aquesta versió, i informació -sobre com informar de nous errors. - - -Llistes de correu: -================== - -Mantenim 4 llistes de correu: - - freeciv-announce Anuncis d'interès general. - És una llista de "Només Lectura", amb missatges escassos. - En altres paraules, no pots enviar-hi correus, només llegir-la. - (Els anuncis que s'hi envien també s'envien a freeciv). - freeciv-i18n Traducció del Freeciv. - Totes les discussions relacionades amb la traducció del codi - de Freeciv, la documentació i el web, cap a llenguatges diferents - de l'anglès. - freeciv-dev Desenvolupament del Freeciv. - freeciv-commits Notificacions de canvis al repositori SVN. - És una llista de "Només Lectura", amb missatges automatitzats. - En altres paraules, no pots enviar-hi correus, només llegir-la. - -Totes les llistes estan obertes al públic en general i tothom s'hi pot apuntar. -Només els mantenidors poden enviar correus a les llistes -announce i -commits. - -Les llistes viuen a gna.org. Per més informació, per afegir-t'hi, o per -esborrar-te'n, vés a http://gna.org/mail/?group=freeciv - - -Internet Relay Chat (IRC) -========================= - -Alguns jugadors i desenvolupadors s'estan als canals #freeciv i #freeciv-dev -de la xarxa freenode. Prova de connectar-te al servidor - - irc.freenode.net - - -I per acabar: -============= - -Diverteit-te i dona'ls canya! - - -- L'equip de Freeciv. diff --git a/doc/de/BUGS.de b/doc/de/BUGS.de deleted file mode 100644 index 9b7a38d989..0000000000 --- a/doc/de/BUGS.de +++ /dev/null @@ -1,161 +0,0 @@ -====== -FEHLER -====== - -Freeciv 2.2 ist eine stabile Version, und kann für den täglichen -Gebrauch als ausreichend fehlerfrei betrachtet werden. Informationen -über Fehler sind jederzeit willkommen. - -Diese Datei listet die bekannten Fehler dieser Version, und informiert -darüber, wie Fehler berichtet werden können. - -Hier sind nur die offensichtlichsten Fehler aufgeführt. Eine vollständige -Liste findet man unter: - - https://www.hostedredmine.com/projects/freeciv - - -BEKANNTE FEHLER: -================ - - - Die Einstellungen der Automatischen Stadtverwaltung werden erst am - Ende der Runde an den Server geschickt; deshalb gehen Änderungen, die - in der gleichen Runde gemacht werden in der das Spiel abgespeichert - wird verloren. - - - Wenn die Automatische Stadtverwaltung benutzt wird, können die - gespeicherten Spiele nur unter dem gleichen Betriebssystem - verwendet werden. - - - Die auf "easy" gestellten Computerspieler sind nicht leicht genug - für neue Spieler. Wenn die KI schon in einer früher Spielphase - gewinnt, sollte die "generator" Option auf 2 oder 3 gestellt werden - Im Server muss dazu vor dem Spielstart - set generator 2 oder - set generator 3 - eingegeben werden. - - - Die auf "hard" gestellten Computergegner sind nicht schwer genug - für sehr erfahrene Spieler, und sie tun immer noch einige dumme - Dinge. Zum Beispiel lassen sie Städte revoltieren, anstatt sie - schrumpfen zu lassen. - - - Manchmal gibt es zu viele Fortschritte im "Ziel" Menü des - Fortschrittsdialoges, so daß das Menü unten aus dem Schirm - herausläuft, und sich manche Einträge nicht anwählen lassen. - Dies tritt nur beim GTK+-1.2 Client auf. - - - Wenn man 'esound' verwendet, erhält man manchmal Meldungen wie - '{ss} player for sample <01> not found' - Diese können problemlos ignoriert werden. - - - Wenn der Client mit Strg-C abgebrochen wird, während gerade eine - Soundausgabe mit dem esd Plugin erfolgt, wird der Sound eventuell - nicht richtig beendet. - - - Einige Wirkungen von Wundern und Fortschritten treten erst nach - einer Runde Verzögerung ein. Wenn zum Beispiel der Leuchturm - fertiggestellt wird, bekommen einige Triremen den Bewegungsbonus erst - eine Runde später. - - - Der Xaw Client kann im Stadtdialog nur maximal 25 Bürger anzeigen. - - - Das "automatische Angreifen" funktioniert nicht besonders gut. - - - Wenn der Server den Weg für einen "Gehe nach" Befehl festlegt, zum - Beispiel für einen automatische Siedler oder ein Flugzeug, benutzt - der Server Wissen, das dem Spieler nicht zur Verfügung steht. - - - Der Fortschrittsdialog wird nicht erneuert, wenn man einen - Fortschritt erhält. Man muß den Dialog schließen und wieder öffnen. - - - Im Gtk Clienten enthält die Anzeige unter der kleinen Karte manchmal - Unsinn. - - - Funktionen wie automatisches Erkunden beherrschen den Umgang mit - Triremen nicht sehr gut. - - - LOG_DEBUG funktioniert nur mit GCC Compilern. - - - Beim Setzen von Servervariablen werden manche Werte nicht gut - genug überprüft. - - - Wenn man gleichzeitig mehrere globale Arbeitslisten verändert, - kann es zu schweren Fehlern kommen. - - - Auch im Einzelspiel hat die KI die Möglichkeit, sowohl vor als - auch nach dem Zug des menschlichen Spielers zu ziehen. Das ergibt - manchmal den Eindruck, als wenn ein Computerspieler zweimal ziehen - würde. - - - Der Xaw Client arbeitet mit dem KDE Windowmanager nicht gut zusammen. - Verwenden Sie stattdessen den Gtk Clienten oder einen anderen - Windowmanager. - - -FEHLER MITTEILEN: -================= - -(Fehler in der deutschen Übersetzung berichten Sie bitte an die -Mailingliste der deutschen Freeciv-Übersetzer .) - -Bitte gehen Sie so vor: - - - Sehen Sie nach, ob der Fehler nicht schon oben auf dieser Liste steht! ;-) - - - Schauen Sie auf der Freeciv Website nach, um sicherzugehen, dass Sie die - neueste Version verwenden (Der Fehler könnte schon korrigiert worden sein.) - - Insbesondere könnten Sie die neueste Entwicklerversion ausprobieren. Sie - können über FTP bekommen, unter: - - http://files.freeciv.org/latest/ - - - Prüfen Sie die FAQ auf der Freeciv Website, ob dort steht, wie Sie den - Fehler umgehen können. - - - Schauen Sie im Freeciv Fehlerberichtssystem nach, ob der Fehler bereits - berichtet wurde: - - https://www.hostedredmine.com/projects/freeciv - - - Übermitteln Sie einen Fehlerbericht! - - In Ihrem Fehlerbericht sollte folgendes stehen: - - - Eine Problembeschreibung, einschliesslich der Nachrichten, die - angezeigt wurden. - - - Die Angabe, welchen Client Sie benutzen (Gtk+ oder Xaw). - - - Name und Version von - - - dem Betriebssystem, dass Sie benutzen (vielleicht ist das Kommando - "uname -a" hilfreich). - - - Die Versionsnummer von Freeciv. - - - Im Falle des Gtk+ Clienten, die Versionsnummern der Gtk+, glib und - imlib Bibliotheken (falls bekannt). - - - Im Falle des Xaw Clienten, die Versionsnummern der X, Xpm, und Xaw - Bibliotheken, insbesondere, ob es Standard Xaw oder eine der - Varianten Xaw3d, Xaw95, oder Nextaw ist (falls bekannt). - - - Wenn Sie Freeciv selber übersetzt haben, Name und Version des - Compilers. - - - Wenn Sie ein Binärpaket installiert haben, den Namen des Pakets, - die Distribution, für die es gebaut wurde, und woher Sie es haben. - - - Wenn Freeciv eine "core" Datei produziert, werden wir Sie vielleicht - um einen "Stack Trace" bitten. Dafür brauchen Sie die core Datei, heben - Sie sie also bitte ein paar Tage auf. - - -WEITERE INFORMATIONEN: -====================== - -Weitere Informationen finden Sie auf der Freeciv Website: - - http://www.freeciv.org/ diff --git a/doc/de/HOWTOPLAY.de b/doc/de/HOWTOPLAY.de deleted file mode 100644 index e211ca6a68..0000000000 --- a/doc/de/HOWTOPLAY.de +++ /dev/null @@ -1,261 +0,0 @@ -Wie spielt man Freeciv? -======================= - -Wenn Sie Freeciv installieren möchten, sollten Sie INSTALL.de oder -README.de lesen. Wenn Sie noch nie Civilization oder eine der vielen -Nachahmungen gespielt haben, sollten Sie zunächst einen Blick in die -(leider veraltete und nur in Englisch vorliegende) Bedienungsanleitung -werfen: - - http://www.freeciv.org/wiki-de/Handbuch - http://files.freeciv.org/contrib/manual/ - -*************************************************************************** -* Wenn Sie wissen wollen, wie man Freeciv spielt, sind Sie hier richtig! * -*************************************************************************** - -Wenn Ihr Freeciv (endlich) läuft, werden Sie mit dem Spielen beginnen -wollen... - -Wir empfehlen Ihnen, zunächst einige Spiele ohne Gegenspieler zu -absolvieren, um ein Gefühl für Freeciv zu bekommen. Es ist aber auch -möglich, Freeciv zu lernen, indem man gegen Andere oder die KI spielt. - - -F: Gibt es eine Strategie für Anfänger? - -Um es gleich zu sagen, dies ist keine *perfekte* Strategie; es ist noch nicht -einmal eine gute. Sie nur dazu gedacht, das Spiel kennen zu lernen. -Ein großer Teil des Reizes von Freeciv besteht darin, neue Strategien zu -entwickeln. - -Wir unterteilen das Spiel in verschiedene Abschnitte: - - Die einleitende Expansionsphase - Die technologische Zwischenphase - Die zweite Expansionsphase - Die Produktionsphase - und Die Phase der völligen Vernichtung aller Feinde - -Expansion zu Beginn des Spiels: - -Diese Phase ist am Wichtigsten. Ihre erste Aufgabe besteht darin, Städte zu -bauen und den eigenen Kontinent zu erforschen. Ziel ist es, möglichst viele -Städte zu bauen (mindestens sieben oder acht). - -Sie sollten Ihre Städte möglichst dicht zusammen bauen, dabei aber -berücksichtigten, daß sich die Territorien nicht überschneiden. Informationen -darüber, welche Stadt welche Felder verwendet, bekommen Sie, indem Sie die -jeweilige Stadt anklicken. Die Karte links oben zeigt das Territorium der -Stadt. Je weiter die Städte auseinanderliegen, desto schwerer sind sie in -diesem Spielabschnitt zu verteidigen und zu verwalten. (Tip: Versuchen Sie, -in der Nähe von Pferden und Fischen/Walen zu bauen.) - -Wenn Sie über ein oder zwei Städte verfügen, ist es ratsam, die -Forschungsquote so hoch zu setzen, wie es Ihre Regierungsform erlaubt. -Machen Sie sich dabei keine Gedanken über die Steuerquote. Sie werden zunächst -keine Stadterweiterungen bauen, die Kosten verursachen, sondern Siedler. Jede -Stadt sollte Siedler produzieren. Mehr Siedler bedeuten mehr Städte, mehr -Städte bedeuten schnelleren Fortschritt; schneller Fortschritt ist eine -Voraussetzung zum Sieg. Nachdem Sie möglichst viele Städte gebaut haben, -verwenden Sie die Siedler, um Bewässerungen anzulegen und Straßen zu bauen. - -(Anmerkung: Wenn der Nahrungsüberschuß einer Stadt wegen Unterstützung -zu vieler Siedler auf +1 sinkt und sich durch anderes Bewirtschaften der -Felder keine Steigerungen mehr vornehmen lassen, dann lassen Sie die -Stadt Tempel bauen. Solange Sie keinen Kontakt zu anderen Spielern -haben, sollten Sie auf den Bau von Militäreinheiten verzichten.) - -Die ganze Zeit über haben Sie so schnell wie möglich Forschung betrieben. Ihr -erstes Ziel sollte "Die Republik" sein, gefolgt von "Demokratie", "Eisenbahn" -und "Industrialisierung". (Manche Spieler erforschen vor der Republik noch -die Monarchie). Wenn Sie eine neue Regierungsform erforscht haben, starten -Sie eine Revolution und wechseln Sie zu der neuen Regierungsform. Städte sind -in der Republik viel effektiver als im Despotismus; allerdings ist es in einer -Republik sehr viel schwieriger, Militäreinheiten außerhalb ihrer Heimatstadt -einzusetzen. Denken Sie auch daran, die Quoten nach einem Regierungswechsel -anzupassen, da die Maximalwerte bei jeder Regierungsform variieren. - -Sobald Sie "Demokratie" erhalten, sind Sie für die zweite Expansionsphase -bereit. Wechseln Sie nun zur Demokratie, lassen Sie alle Städte Tempel bauen -und setzen Sie die Luxusrate auf 100%. Daraufhin werden alle Städte Feiern -abhalten und infolgedessen pro Runde um 1 wachsen, solange ein -Nahrungsüberschuß vorhanden ist. Wenn die Städte groß genug geworden sind, -setzen Sie die Luxusquote auf ein vernünftiges Maß (20%-40%). Nun befinden -Sie sich in der zweiten Expansionsphase. - -Die Schattenseite dieser Methode ist, daß der Fortschritt zum Erliegen kommt, -solange die Luxusquote auf 100% gesetzt ist. Nachdem die Städte gewachsen sind -und Sie die Forschungsquote auf ca. 50% setzen, werden Sie wieder -Forschungsergebnisse erhalten, wenn auch in etwas größeren Abständen. - -Wenn Sie Ihre Umgebung weiter erforscht haben und nicht unmittelbar von -anderen Spielern bedroht sind, empfiehlt es sich, die Forschungsquote -auf das Maximum zu setzen, solange Erfindungen noch nicht zu viel Zeit -beanspruchen. - -Zweite Expansionsphase: - -Sobald Ihre Städte groß genug sind, sollten Sie die Luxusquote schrittweise -zu Gunsten der Steuerquote senken. Sobald die Luxusquote 30% erreicht, heben -Sie die Forschungsquote soweit wie möglich an. Erheben Sie nur soviele Steuern -wie nötig sind, um ihre Kosten zu decken. Sobald Sie "Eisenbahn" erhalten, -verwandeln Sie alle Straßen in Schienen (zumindest auf den Feldern, die für die -Produktion verwendet werden oder die Teil des Transportnetzwerkes sind). -(Tip: Bauen Sie auf jedem von einer Stadt verwendeten Feld Straßen/Schienen, -dadurch steigt die Produktivität der Stadt. Es ist nicht nötig, das Stadtfeld -selbst umzuwandeln, das passiert automatisch.) - -Nun ist es an der Zeit, Industrialisierung und Militärtechnik zu erforschen. -Sie sollten nun außerdem damit beginnen, Städte auf anderen Kontinenten zu -errichten, und wenn Sie das noch nicht getan haben, die Karte erforschen. Sie -müssen herausfinden, wo Ihre Feinde sind. Konzentrieren Sie sich auf -Technologien, die neue Schiffstypen ermöglichen und versuchen Sie, -Magellans Expedition zu bauen. Sobald Sie sich bereit fühlen, wechseln Sie zur - -Produktionsphase: - -Nun werden Sie Fabriken und Kraftwerke in Ihren Städten bauen. Ihr Ziel ist es, -die Produktion jeder Stadt zu maximieren. Dabei wird Umweltverschmutzung zu -einem Problem. Erforschen Sie so schnell wie möglich: - -- Massenproduktion, um Massenbeförderung bauen zu können -- Recycling, um Recycling-Zentren bauen können - -Wenn Ihre Städte produktionsstark genug geworden sind, beginnen Sie damit, -Militäreinheiten zu bauen. (Anmerkung: Wenn Sie in Kontakt mit anderen Spielern -treten sollten, sollten Sie auf der Stelle einige Angriffseinheiten und -mindestens eine Verteidigungseinheit je Stadt bauen.) - -Wenn Sie sich stark genug fühlen, jemanden anzugreifen, setzen Sie Forschung auf -0%, und heben die Steuern soweit an wie es geht, ohne Aufstände zu provozieren. -Denken Sie daran, daß man Einheiten auch kaufen kann! - -Die Phase der völligen Vernichtung der Feinde: - -Diese Phase können Sie jeder Zeit einleiten, aber mit besseren Waffen macht es -einfach mehr Spaß. - -Wählen Sie einen verhältnismäßig schwachen Gegner und senden Sie einige -Schiffsladungen Truppen. Erobern Sie seine Städte, und bauen Sie in den -eroberten Städten neue Einheiten, um den Gegner gänzlich zu vernichten. -Zeigen Sie keine Gnade! - -(Anmerkung für Pazifisten: Freeciv kann auch gewonnen werden, indem man -ein Raumschiff baut und auf die Reise nach Aplha Centauri schickt. Es -gewinnt der Spieler, dessen Schiff zuerst Aplha Centauri erreicht.) - - -Sonstige Fragen: - -Frage: Gibt es noch andere Strategien? - -Es gibt einige Tutorials und Strategieführer, verfügbar auf der -Freeciv-Homepage: - - http://freeciv.org/wiki/Tutorials - -Außerdem beschreibt die Freeciv-Online-Hilfe noch eine andere -Strategie. - - -Frage: Welchen Rundenzeit sollte man in Mehrspieler-Partien verwenden? - -Das hängt von der Anzahl der Spieler ab. Wenn nur zwei Leute teilnehmen, -funktioniert normalerweise ein Timeout von 0. Wenn es mehr als zwei Mitspieler -gibt, oder einer von beiden Spielern immer mal wieder seinen Rechner verläßt -und Sie deswegen nicht mit dem Spielen warten wollen, ist ein Timeout -von ca. 60 Sekunden ausreichend. In späteren Spielabschnitten, wenn das Spiel -komplexer wird, sollten Sie den Timeout vielleicht auf 240 Sekunden ausdehnen. -Allgemein: Je mehr Spieler teilnehmen, desto größer sollte die erlaubte Zeit -sein. Setzen Sie das Limit wie immer es Ihnen passend erscheint, aber denken -Sie daran, daß Werte ab 300 die Leute meist stören. - - -Frage: Wie groß sollte die Karte sein? - -Die optimale Größe hängt davon ab, wieviele Spieler teilnehmen und wie lange -das Spiel dauern soll. Die Voreinstellung (80x50) ist groß genug für eine -recht schnelle Runde mit zwei Spielern, wird aber in ein zu schnelles Spiel -ausarten, wenn mehr als drei Spieler teilnehmen. - -Schnelle Spiele tendieren dazu, jeden außer dem Gewinner zu frustrieren, weil -niemand wirklich Zeit hatte, seine Verteidigung aufzubauen. Wenn Sie mehr als -drei Teilnehmer haben, sollten Sie eine 80x80 Karte verwenden. Ab fünf -Mitspielern bietet sich eine Karte mit 100x100 Feldern an. - - -Frage: Was hat es mit der "generator"-Option auf sich? - -Sie beeinflußt die Kartengenerierung. Wenn Sie Freeciv einige Male spielen, -ohne diesen Wert zu verändern, werden sie von den Schrecken winziger Inseln -hören oder sie am eigenen Leibe erfahren. Das "Tiny Island Syndrome" (TIS) ist -bekannt dafür, die Leute in den Wahnsinn zu treiben. Um das zu beheben, haben -die Programmierer die "generator"-Option eingeführt. Ein Wert von 1 erzeugt -eine normale Karte, mit Kontinenten von unterschiedlichen (und evtl. unfairen) -Größenverhältnissen. Wenn man aber 2, 3, oder 4 wählt, werden Kontinente -gleicher Größe generiert (manchmal mit einigen kleineren Inseln dazwischen). -Dann kann sich niemand beschweren, er hätte "nur wegen dieser verdammten Insel" -verloren. - - -Frage: Sollte ich das Startkapital erhöhen, um das Spiel leichter zu -machen? - -Wenn Sie und die anderen Mitspieler noch unerfahren sind, wird vielleicht -niemand etwas dagegen haben, wenn jedem Spieler zu Spielbeginn mehr Gold zur -Verfügung steht. Das ist aber kein guter Weg, das Spielen richtig zu lernen. -Das Spiel mit einer Menge Gold zu beginnen, macht das Spiel um einiges -leichter und erschwert es Ihnen, mit dem normalen Startkapital klarzukommen. -Die meisten Spieler mit Erfahrung heben diesen Wert nicht an und wenn die -wissen, wie man damit umgeht, und Sie nicht, ergeht es Ihrem Volk wie Atlantis. - -Anmerkung: Dasselbe gilt auch für die "techlevel" und "researchspeed"-Optionen. - - -Frage: Was ist mit den anderen Einstellungen? - -Die restlichen Einstellungen haben hauptsächlich mit der Kartengenerierung und -der Spielmechanik zu tun. Ein höherer "specials"-Wert erhöht die Häufigkeit von -besonderen Ressourcen, und "huts" legt fest, wieviele Dörfer existieren. Eine -höhere Anzahl von Siedlern oder Kundschaftern zu Spielbeginn beschleunigt das -Spiel und erlaubt es den Spielern, die Angriffe "dieser $#@! Barbaren" zu -überleben, die manchmal in den Dörfern leben. - -Die Einstellungen bezüglich Schienen legen fest, wie viel mehr ein Feld an -Nahrung/Handel/Pruduktion produziert, wenn man Schienen darauf gebaut hat, und -die "foodbox"-Option bestimmt, über wieviel Nahrung jeder Stadtbewohner -verfügen muß, bevor ein neuer Bewohner hinzukommen kann. - -Für den Rest gilt: ein höherer Wert bei "mountains" führt zu einer Karte mit -mehr Bergen, bei "deserts" zu mehr Wüsten, usw. - - -Frage: Wie erhalte ich die Technologie XY? - -Schlagen Sie die Technologie in der Online-Hilfe nach. Dort sind die -Technologien aufgeführt, die Voraussetzungen sind. - -Als Alternative können Sie David Pfitzner's "techtree"-Übersicht -downloaden: - -http://files.freeciv.org/contrib/charts/ - - -Außerdem können Sie sich die Datei '../data/default/techs.ruleset' ansehen. -Dort werden alle Technologien samt Ihrer Voraussetzungen aufgelistet. - - -Frage: Welche Militäreinheiten sind am Nützlichsten? - -Für den Angriff: - Panzer, Helikopter, Lenkraketen, Schlachtschiffe, - Transporter, Atomraketen, Haubitzen, Bomber. - -Für die Verteidigung: - Panzer, Mech. Inf., Haubitzen, Schlachtschiffe, - Lenkraketen, Atomraketen. - -Denken Sie daran, Angriff ist die beste Verteidigung. - - diff --git a/doc/de/README.de b/doc/de/README.de deleted file mode 100644 index a5d44e430c..0000000000 --- a/doc/de/README.de +++ /dev/null @@ -1,195 +0,0 @@ -Hinweis: Dies ist *KEINE* Übersetzung der Datei README! -Stand: 05.06.02 - - ================================== - Deutsche Freeciv 2.2 Dokumentation - ================================== - -Willkommen bei Freeciv! - -Dieses Archiv enthält die aktuelle Freeciv Version (soweit sinnvoll) -auch in deutscher Sprache. - -Hinweis: Die deutsche Online-Hilfe ist vollständig übersetzt und - erkärt unter den entsprenden Stichworten vieles besser als - dieser Text. - -Freeciv ist ein Civilization-Abkömmling für X11, vorzugsweise unter Unix. Es -unterstützt alle Arten von Multiplayer-Spielen und die KI ist für fast alle -Spieler eine wirkliche Herausforderung. - -Freeciv ist ein absolut eigenständiges Programm; Sie müssen kein -Civilization besitzen, um es spielen zu können. - - - -WWW: -==== -Freeciv hat eine eigene Webseite: http://www.freeciv.org - -Hier können Sie neben Neuigkeiten, neuen Versionen und Patchen auch näheres -über unsere Mailinglisten erfahren. Außerdem können Sie unseren Metaserver -einsehen, der Spiele auf der ganzen Welt anzeigt. - - -Lizenz: -======= -Freeciv wird auf Grundlage der GNU General Public Licence veröffentlicht. -Kurzgesagt, Sie dürfen das Programm einschließlich der Quelltexte unter -bestimmten Voraussetzungen frei kopieren. Näheres erfahren Sie in der Datei -COPYING. - - -Kompilieren und Installieren -============================ -Bitte lesen Sie sorgfältig die Datei ../doc/de/INSTALL.de. - - -Ein neues Spiel beginnen -======================== -Freeciv besteht aus einem Server- und einem Clientprogramm. An einem Spiel -sind ein Serverprogramm und eine der Anzahl der menschlichen Spieler -entsprechende Zahl an Clientprogrammen beteiligt. X wird nur für die -Clientprogramme benötigt. - -Um Freeciv spielen zu können, muß zunächst der Server, gefolgt von zumindest -einem Client, gestartet werden. Dann müssen auf dem Server KIs generiert -und der Startbefehl erteilt werden. - -Server: - starten: - - > civserver - - Mögliche Startoptionen erhalten Sie mit: - - > civserver --help - - Sobald der Server gestartet ist, meldet er sich mit: - - Freeciv version N.N.N Server - Weitere Informationen zu Freeciv finden Sie auf ... - 1: Warte auf Spieler... - - 'help' gibt Erläuterungen zur Verwendung der Online-Hilfe. - > - - Lassen Sie sich mögliche Befehle und Optionen mit - - > help commands - - bzw. - - > help options - - anzeigen. - -Client: - starten: - - > civclient - - Wählen Sie den Server durch entsprechende Eingaben in der - erscheinenden Dialogbox aus. Vorgabe ist der lokale Server. - -KI Spieler: - Es gibt zwei Möglichkeiten, KI Spieler zu generieren. Die erste ist, - die Gesamtanzahl der Spieler festzulegen. Beispiel: - - > set aifill 7 - - Nachdem "start" eingeben wurde, übernimmt die KI alle Spieler, die - nicht von Menschen gespielt werden. Sollten in unserem Beispiel zwei - menschliche Spieler anwesend sein, werden fünf KI-Spieler generiert. - - Der andere Weg ist, über den Serverbefehl "create" einen KI-Spieler - zu erzeugen: - - > create Killer - - Dies erzeugt einen KI-Spieler namens Killer. - -Server: - Sobald alle Teilnehmer anwesend sind, ("list" zeigt eine Liste der - Anwesenden.) wird das Spiel mit - - > start - - begonnen. - - -Spiel ankündigen -================ -Wenn man auch unbekannte Teilnehmer als Mitspieler zulassen möchte, kann man -den Server mit der Option "-m" starten. Er "veröffentlicht" seine Existenz -auf dem Metaserver, über den sich nun Spieler durch Auswahl der Metaserver- -Registerkarte im Eröffnungsdialog einloggen können. - -HINWEIS: Firewalls machen es unmöglich, als Server für - Dritte zu fungieren. - - -Hinweise zum Spiel -================== -- Das Spiel kann jeder Zeit über den Serverbefehl "save" gespeichert werden. -- Die Spieler ziehen zur gleichen Zeit. Die maximal zulässige Zeit kann - vorgegeben werden. -- Benutzen Sie die Online-Hilfe! - - -Spielende -========= -Das Spiel kann auf drei Arten enden: -- Es ist nur noch eine Nation im Spiel. -- Das letzte Jahr wurde erreicht. -- Ein Spieler hat Alpha Centauri erreicht. - - -Gespeichertes Spiel laden -========================= -Ein gespeichertes Spiel kann fortgesetzt werden, in dem man den Server mit - -> civserver -f DATEINAME - -startet. Die Spieler müssen sich jetzt unter ihrem Herrschernamen wieder -anmelden um teilnehmen zu können. Danach wird das Spiel wie üblich mit dem -Serverbefehl "start" wieder aufgenommen. - - -Fehler -====== -Bitte teilen Sie uns mit, wenn Sie Programmfehler finden! -In der Datei BUGS finden Sie eine Liste der uns bekannten Fehler und -Informationen darüber, wie Sie neue Fehler melden können. - - -Mailinglisten -============== -Es gibt mehrere englischsprachige, öffentliche Mailinglisten zu Freeciv. -Die interessantesten sind: - - für Fehlerberichte und Entwickler - zur Ankündigung *WICHTIGER* - Neuigkeiten - -Sie können Sie mit einer Email an abonnieren, in dem -Sie die Betreff-Zeile freilassen und in den Text nur "subscribe LISTE" -schreiben. Beispiel: - - Wenn Sie z.B. die Liste abonnieren möchten, - schreiben Sie einfach "subscribe freeciv". - -Es gibt auch eine öffentliche Mailingliste, die sich ausschließlich mit der -deutschen Übersetzung beschäftigt . -Sie können diese Liste über www.freelists.org abonnieren. - - -Neue Versionen -============== -Sie können etwa einmal im Jahr mit einer neuen Version rechnen. -Kontrollieren Sie ab und zu unsere Webseite. - - -Zum Schluß -========== -Viel Spaß! diff --git a/doc/fr/BUGS.fr b/doc/fr/BUGS.fr deleted file mode 100644 index 8aa5b6aa98..0000000000 --- a/doc/fr/BUGS.fr +++ /dev/null @@ -1,158 +0,0 @@ -==== -BUGS -==== - -Freeciv 2.2 est une version "stable" et est considérée comme suffisament -exempte de bugs pour un usage de tous les jours. Cependant, si vous trouvez un -bug, nous voulons réellement le savoir afin de pouvoir le corriger. Ce fichier -liste les bugs connus de la version et donne des informations sur la manière de -rpporter un nouveau bug. - -Ne sont listés que les bugs les plus évidents. Pour une liste exhaustive, -voyez : - - https://www.hostedredmine.com/projects/freeciv - -BUGS CONNUS : -=========== - - - Vos réglages AGU ne sont envoyés au serveur que quand vous pressez "fin du - tour" et par conséquent, les changements que vous apportez à l'AGU dans le - même tour que celui où vous sauvegardez un jeu seront perdus. - - - - L'IA facile ne l'est pas assez pour des joueurs novices. Si l'IA - vous bat trop tôt dans le jeu, essayez de positionner l'option - "generator" du serveur sur 2 ou 3. C'est à dire, sur le serveur, - avant de démarrer un jeu, tapez : set generator 2 ou set generator 3. - - - - L'IA difficile ne l'est pas suffisamment pour des joueurs expérimentés - et continue à faire des choses stupides. Par exemple, elle préfère - laisser des villes en désordre civil plutôt que de les laisser - s'affamer/diminuer de taille. - - - - Parfois, il y a tellement d'avances dans le menu "objectif" du rapport - de science que celui-ci dépasse le haut de l'écran et vous ne pouvez pas - sélectionner des items. - - - - Vous pouvez parfois obtenir les messages - {ss} player for sample <01> not found - {ss} player for sample <01> not found - en utilisant le pilote son esound. Il n'y a pas lieu de s'inquiéter. - - - Si vous tapez ctrl-c dans le client pendant l'utilisation du plugin son esd, - le son actuellement en boucle risque de ne pas être correctement terminé. - - - Les effets de certaines merveilles ou technologies ne prennent effet - qu'au tour suivant. Par exemple, quand vous construisez le phare, - certaines trirèmes n'auront le bonus de déplacement qu'au tour suivant. - - - Le client xaw ne peut afficher que 25 citoyens dans la boite de dialogue - des villes. - - - L'auto-attaque ne fonctionne pas très bien de façon générale. - - - Quand vous préparez un GOTO dans le serveur, par exemple pour un colon - ou bien un avion, le serveur utilisera des connaissances pas encore - disponibles pour le joueur. - - - Dans le client GTK+, parfois, l'affichage près de la mini-carte contient - des parasites. - - - Les routines automatiques comme auto-explorer ne gèrent pas très bien les - trirèmes. - - - - LOG_DEBUG ne fonctionne pas avec des compilateurs non GCC. - - - - Au réglage des variables du serveur, celui-ci ne vérifie pas les valeurs - aussi bien qu'il le pourrait. - - - Des choses mauvaises se produisent quand vous manipulez simultanément - des listes de travail multiples. - - - Même en mono-joueur, l'IA peut effectuer à chaque tour des mouvements - avant et après l'humain. Ceci donne parfois l'impression qu'elle effectue - deux fois ses mouvements. - - - - Le client xaw ne fonctionne pas très bien avec le gestionnaire de fenêtres - de KDE. Essayez d'utiliser le client gtk ou bien un autre gestionnaire de - fenêtres. - - -FAIRE UN RAPPORT DE BUG : -======================= - -(S'il s'agit d'un bug dans la traduction, il doit être rapporté au contact -primaire pour la langage. Voyez pour -les noms et adresses des personnes.) - -Voici ce qu'il faut faire : - - - Vérifier si ce n'est pas un des bugs listés plus haut ! :-) - - - Assurez-vous sur le site de Freeciv que vosu utilisez bien la dernière - version. (Nous avons peut-être déjà résolu le problème.) - - En particulier, vous pouvez essayer une version de développement depuis - notre CVS. Vous pouvez la récupérer à : - - http://files.freeciv.org/latest/ - - - Vérifiez la FAQ Freeciv dans le site web pour voir si un moyen de contourner - le bug n'a pas été publié. - - - Vérifiez le système de rapport de bugs à : - - https://www.hostedredmine.com/projects/freeciv - - pour voir si le bug n'a pas déjà été rapporté. - - - Soumettez un rapport ! - - Si vous voulez faire part aux développeurs Freeciv des commentaires sans pour - autant présenter un rapport de bug, vous pouvez envoyer un message à - , la liste de diffusion des développeurs Freeciv. - - A inclure dans votre rapport de bug : - - - Décrivez le problème, y compris tout message ayant été affiché. - - - Indiquez quel est (sont) le(s) client(s) utilisé (Gtk+ or Xaw). - - - Communiquez nous le nom et la version : - - - Du système d'exploitation que vou utilisez. Vous vouvez trouver la - commande "uname -a" utile. - - - Le numéro de version de Freeciv. - - - Si vous utilisez le client Gtk+, les numéros de version (si vous les - connaissez) des bibliothèques Gtk+, glib, et imlib. - - - Si vous utilisez le client Xaw, les numéros de version (si vous les - connaissez) des bibliothèques X, des la bibliothèque Xpm et Xaw, et en - particulier s'il s'agit de la Xaw standard ou d'une variante telle que - Xaw3d, Xaw95, ou Nextaw. - - - Si compilez depuis le source, le nom et le numéro de version du - compilateur. - - - Si vous installez depuis un paquet binaire, le nom du paquet, la - distribution pour laquelle il est fait, et où vous l'avez obtenu. - - - Si Freeciv fait un vidage de mémoire, alors nous vous demanderons d'utiliser un - debogueur pour nous donner un état de la pile. Vous aurez besoin du fichier - "core" pour cela, donc conservez-le pendant un moment. - -INFORMATIONS SUPPLÉMENTAIRES : -============================ - -Pour plus d'informations, comme d'habitude, voyez le site web de Freeciv : - - http://www.freeciv.org/ diff --git a/doc/fr/HOWTOPLAY.fr b/doc/fr/HOWTOPLAY.fr deleted file mode 100644 index e0111dbc77..0000000000 --- a/doc/fr/HOWTOPLAY.fr +++ /dev/null @@ -1,283 +0,0 @@ -Freeciv playing HOWTO - - Écrit initialement par Michael Hohensee (aka Zarchon) - - -Si vous cherchez comment installer Freeciv, lisez le fichier INSTALL.fr -Si vous cherchez comment lancer Freeciv, lisez le fichier README.fr - -Si vous n'avez jamais joué aux jeux Civilization, il sera plus facile de -commencer par lire le "Freeciv Manual", disponible séparément aux -endroits suivants : - - http://www.freeciv.org/wiki-fr/Manuel - http://files.freeciv.org/contrib/manual/ - -Si vous cherchez des idées pour jouer à Freeciv, continuez à lire ! - - Maintenant que Freeciv est lancé, vous allez vouloir jouer vos -quelques première parties. Il est recommandé que vous jouiez quelques -parties seul, afin d'avoir un aperçu du fonctionnement du jeu, mais ce -n'est pas indispensable. Vous pouvez aussi apprendre en jouant contre -d'autres humains, ou contre l'IA. - -Q : Pourrais-je avoir une stratégie de base ? - - Tout d'abord, ce n'est pas une stratégie *parfaite*. On ne peut -pas dire qu'elle soit vraiment bonne non plus. Mais elle vous permettra -de commencer à jouer à Freeciv. Une partie de l'engouement pour Freeciv -découle du développement de nouvelles stratégies. - - La partie est divisée en plusieurs étapes : - - La phase d'expansion initiale - La sous-phase technologique - La seconde phase d'expansion - La phase de production - et la phase d'annihilation totale de vos ennemis - -L'expansion initiale : - - Cette phase est la plus critique. La première chose à faire est -de construire des villes et d'explorer votre île. Vous devez faire -beaucoup de villes (au moins 7 ou 8). - - Le but du jeu est d'occuper le plus de carrés de territoire -possible. Lors de la construction d'une ville, assurez-vous que vous ne -recouvrez pas trop le territoire d'une autre de vos villes. Vous pouvez -voir quels carrés sont utilisés par une ville en cliquant sur elle. Le -territoire occupé/occupable par la ville est visible sur cet écran. En -gardant ceci à l'esprit, essayez de construire vos villes suffisamment -proches les unes des autres. Plus elles sont éloignées, plus elles sont -difficiles à défendre et à gérer à ce stage (truc : essayez de -construire sur des "chevaux" ou près de "poissons"). - - Maintenant que vous avez une ville ou deux, vous devez régler -le taux de science aussi haut que votre type de gouvernement le -permet. Ne vous inquiétez pas des impôts étant donné que vous n'allez -pas construire de bâtiments nécessitant des frais de fonctionnement, -mais des colons. Plus vous aurez de colons, plus vous pourrez avoir de -villes. Plus vous aurez de villes, plus vous gagnerez de -technologies. Plus vous gagnerez de technologies, plus la victoire sera -rapide. Après avoir construit autant de villes que votre coin de monde -peut contenir, faites construire des routes et des irrigations à vos -colons. - -[ Note : si la production de nourriture dans une ville tombe à +1 à -cause du soutien d'un nombre important de colons et que vous ne pouvez -pas réorganiser les habitants pour accroître la production de -nourriture, construisez des temples. Si vous ne croisez pas d'autres -joueurs, ne vous préoccupez pas de construire des unités militaires dès -maintenant ] - - Pendant tout ce temps, vous avez gagné des technologies aussi -vite que possible. Vos premiers buts sont "La République", puis -"Démocratie" puis "Chemin de Fer" et enfin "Industrialisation" (certains -passent par la Monarchie avant la République). Dès que vous avez -découvert un nouveau type de gouvernement, déclenchez une révolution -pour changer de gouvernement. Les villes fonctionnent bien mieux sous la -République que sous le Despotisme mais il est plus difficile de garder -des unités militaires en dehors des limites de la ville sous un régime -républicain. De plus, n'oubliez pas de re-vérifier vos taux de taxe -après les changements de gouvernement, étant donné que les maxima -varient suivant chaque type. - - Lorsque vous avez la Démocratie, vous êtes prêt à passer à la -seconde phase d'expansion. Pour ce faire, changez de gouvernement pour -une Démocratie, faites construire des temples à toutes vos villes et -mettez le taux de "luxe" à 100%. En faisant ceci, toutes les villes vont -être en liesse et croître à un taux de un habitant par tour tant qu'il y -aura du surplus de nourriture. Lorsqu'elles sont devenues suffisamment -grandes, réglez le taux de luxe à un niveau plus raisonnable de -20-40%. Vous êtes à présent en seconde phase d'expansion. - - L'inconvénient de tout ceci est qu'avec un taux de luxe de -100%, votre recherche va totalement s'arrêter. Après que vos villes -aient grandi, et que vous ayez remis la science à environ 50%, vous -allez à nouveau gagner des technologies, mais à un rythme moins -soutenu. Si vous avez fait un peu d'exploration, et que vous n'êtes pas -directement menacé par un autre joueur, et ce serait donc une bonne idée -de garder la science au maximum jusqu'à ce que les technologies -deviennent trop longues à découvrir. - - -La seconde phase d'expansion : - - Lorsque vos villes ont atteint une population raisonnable, -diminuez progressivement le luxe et augmentez les taxes. Une fois que -vous êtes descendu à environ 30 % de luxe, mettez le plus possible de -taxes pour la recherche tout en maintenant des revenus positifs. Lorsque -vous avez les chemins de fer, transformez toutes vos routes en chemins -de fer, ou au moins les carrés utilisés pour la production ou qui font -partie d'un réseau de transport (astuce : transformez chaque carré -utilisé par une ville en route/rail afin d'accroître la production de -cette ville. Ne vous occupez pas du carré central, c'est automatique). - - Il est temps, à présent, de développer l'industrialisation et -les technologies militaires. Vous devriez également commencer à -construire des villes sur d'autres îles et à faire sérieusement de -l'exploration, si ce n'est déjà fait. Vous avez besoin de découvrir où -vos ennemis se situent. Faites des recherches propices aux bateaux et -essayez de construire l'expédition de Magellan. Lorsque vous vous sentez -prêt, passez à : - - -La phase de production : - - À présent, vous construisez des usines et des centrales dans -vos villes. Vous voulez tirer le maximum de production de chaque -ville. La pollution devient un problème. Aussi tôt que vous le pouvez, -essayez de rechercher la "Production de masse" pour les "Transports en -commun", et le "Recyclage" pour pouvoir construire des "Usines de -Recyclage". Une fois que toutes vos villes sont puissantes, vous devez -construire des unités militiares (note : si vous rencontrez un autre -joueur, vous devriez immédiatement construire quelques unités offensives -et au moins une unité défensive par ville). - - Quand vous voulez commencer à envisager d'attaquer quelqu'un, -mettez la science à 0%, et augmentez les taxes autant que possible sans -provoquer de révoltes. N'oubliez pas que l'or permet aussi de construire -des unités ! - - -La phase d'annihilation totale de vos ennemis : - - Ceci peut se produire n'importe quand, mais c'est beaucoup plus -amusant avec des armes avancées. - - Choisissez un ennemi relativement faible, et envoyez-lui -quelques cargaisons de troupes. Capturez ses villes, et utilisez les -pour produire d'autres unités, qui serviront à capturer le reste. Pas de -quartiers ! À mort ! - -Recommencez autant que nécessaire ! ;-) - -[ note pour les pacifistes : Freeciv permet aussi à un joueur de gagner -en construisant et en lançant un vaisseau spatial qui arrive avant tout -le monde sur Alpha du Centaure ] - - -Autres questions : - -Q : Y-a-t-il d'autres stratégies ? - - Il y a un certain nombre de tutoriaux et de guides de stratégie -disponibles sur les pages web de Freeciv : - - http://www.freeciv.org/wiki-fr/Documentation - -L'aide en ligne de Freeciv décrit également une autre stratégie. - - -Q : Dans les parties multijoueurs, quel timeout devrais-je mettre ? - - Ceci dépend du nombre de joueurs. Si vous n'êtes que deux, un -timeout de 0 devrait rester supportable. Si vous êtes plus de deux, ou -si l'un des deux a des chances de quitter l'écran de son terminal à des -intervalles aléatoires et que vous ne voulez pas que le jeu s'arrête -pour autant, un timeout de 60 secondes est en général suffisant. Plus -tard dans la partie, cependant, quand les choses deviennent plus -complexes, vous voudrez sans doute étendre le timeout à 240 secondes. En -général, plus il y a de joueurs, plus un timeout long sera -nécessaire. N'hésitez pas à choisir un timeout qui paraît confortable, -tout en sachant qu'un timeout au-dessus de 300 aura tendance à ennuyer -les joueurs. - - -Q : Quelle taille de carte devrais-je utiliser ? - - La taille de la carte dépend du nombre de joueurs présents et à -quelle vitesse vous voulez que la partie se termine. La taille de carte -par défaut (80x50) est suffisamment grande pour une partie rapide à deux -joueurs, mais donnera une partie *très* rapide si plus de trois joueurs -participent. - - Les parties rapides ont tendance à être frustrantes pour tout le -monde sauf le vainqueur, étant donné que personne n'a vraiment eu le -temps de développer quelque défense que ce soit. S'il y a plus de trois -joueurs, vous devriez utiliser une carte de 80x80. S'il y a cinq joueurs -ou plus, vous aurez sans doute besoin d'une carte de 100x100. - - -Q : Qu'est-ce que l'option "generator" ? - - Elle modifie le processus de génération de la carte. Si vous -jouez à Freeciv quelques fois sans ce paramètre, vous entendrez -certainement parler (ou vous en aurez l'expérience) des horreurs d'une -petite île. Le syndrôme des petites îles (SPI [ NdT : TIS en Anglais, -pour "Tiny Island Syndrom" ]) a la réputation de rendre les gens -fous. Pour corriger ceci, nos chers et tendres développeurs ont créé -l'option "generator". Lorsqu'elle est à 1, on obtient la carte normale, -avec des îles de tailles différentes (qui peuvent être injustes). Mais -lorsqu'elle est à 2, 3 ou 4, elle génère des îles de tailles égales -(parfois avec des îles plus petites). Ainsi, personne ne peut plus se -plaindre de perdre "à cause de cette s***té d'île". - - -Q : Est-il raisonnable de rendre la partie plus facile en augmentant la - quantité d'or initiale ? - - Si vous êtes inexpérimenté, et que vous jouez avec des gens -inexpérimentés, personne ne trouvera sans doute d'inconvénient à -augmenter la quantité d'or de départ. Ce n'est cependant pas une bonne -façon d'apprendre à jouer. Commencer la partie avec beaucoup d'or rend -la partie plus facile, mais il vous est plus difficile d'apprendre -comment se débrouiller avec le montant d'or par défaut. Les joueurs les -plus expérimentés ne modifient pas ce réglage. Or, s'ils savent comment -se débrouiller avec et que vous ne savez pas, vous allez connaître le -même sort que l'Atlantide. - -Note : on peut appliquer le même raisonnement aux options "techlevel" -(niveau de technologie) et "researchspeed" (vitesse de recherche). - - -Q : Un petit mot sur les autres paramètres ? - - Les autres touchent principalement au type de monde qui sera -généré et aux mécanismes du jeu. Augmenter les "specials" vous donne de -bonnes chances de ressources/carré et les "huts" déterminent combien de -huttes indépendantes il y aura. Augmenter le nombre de colons ou -d'explorateurs de départ rend la partie plus rapide, et permet aux -joueurs de survivre à "ces $#@! de barbares" qui vivent parfois dans les -huttes. - - Les paramètres liés au chemin de fer déterminent combien un -carré produira en plus de nourriture/commerce/production s'il y a un -chemin de fer dessus. Le paramètre "foodbox" détermine combien de -nourriture par habitant d'une ville est nécessaire avant qu'un nouvel -habitant soit ajouté. - - Comme pour le reste, un paramètre "moutains" plus haut implique -une carte plus montagneuse, un paramètre "deserts" plus haut implique -plus de déserts, etc. - - -Q : Comment avoir la technologie XXX ? - -Consultez l'aide en ligne. Elle vous indique quelles technologies sont -nécessaires pour pouvoir faire des recherches sur une nouvelle -technologie. - -Sinon, vous pouvez télécharger le "techtree" de David Pfitzner : -http://files.freeciv.org/contrib/charts/. - -En dernier recours, vous pouvez lire les sources dans common/tech.c. Il -y a une liste de toutes les technologies, et quelles technologies sont -nécessaires pour pouvoir les avoir [ NdT : en Anglais ]. - - -Q : Quelles sont les unités militaires les plus utiles ? - - Pour l'attaque : - - Tanks, Hélicoptères, Missiles de croisière, Cuirassés, - Transports, armes nucléaires, Obusiers, Bombardiers. - - Pour la défense : - - Tanks, Infanterie mobile, Obusiers, Cuirassés, - Missiles de croisière, armes nucléaires. - -N"oubliez pas : la meilleure défense, c'est une attaque puissante. - - diff --git a/doc/fr/README.fr b/doc/fr/README.fr deleted file mode 100644 index 53faad0e2e..0000000000 --- a/doc/fr/README.fr +++ /dev/null @@ -1,642 +0,0 @@ -=================== -Freeciv Version 3.1 -=================== - -Bienvenue à Freeciv ! - -Cette archive contient Freeciv, un clone libre de Civilization pour X, -principalement sous Unix. Il permet les parties multijoueurs locales ou -à travers un réseau, et inclut une IA qui donne du fil à retordre à la -plupart des gens. - -Le but de Freeciv est d'avoir des règles compatibles avec Civilization -II [tm], publié par Sid Meier et Microprose [tm]. Quelques règles -diffèrent, lorsque nous pensons que c'est plus logique, et il y a -beaucoup de paramètres réglables pour permettre la personnalisation des -parties. - -Freeciv a été implémenté totalement indépendamment de Civilization ; -vous n'avez pas besoin de posséder Civilization pour jouer à Freeciv. - -Bien que les graphismes ne soient pas aussi soignés que ceux de -Civilization II, les règles sont très complètes et notre code réseau et -multijoueurs est excellent. - -Traductions : -============= - -Vous pouvez trouver des versions traduites de ce fichier, ainsi que -d'autres parties de la documentation de Freeciv, aux emplacements -suivants : - - Catalan ./doc/ca - Hollandais ./doc/nl - Anglais ./doc - Allemand ./doc/de - Italien ./doc/it - Japonais ./doc/ja - Suédois ./doc/sv - -Même s'il n'y a pas de traduction pour votre langue, le jeu lui-même -la supporte peut-être. Prière de consulter la partie "Localisation" -ci-dessous. - -Site web : -========== - -Le site web de Freeciv se trouve à cette adresse : - - http://www.freeciv.org/ - -Nous vous invitons à le visiter. Vous pourrez y connaître les dernières -nouvelles concernant Freeciv, télécharger les dernières versions et -patches, trouver des informations à propos des listes de diffusion et -consulter le métaserveur Freeciv, qui répertorie des parties du monde -entier. - - -Licence : -========= - -Freeciv est distribué sous la GNU General Public License (version 2 -ou, à votre discrétion, tout version plus récente). En bref, vous -pouvez copier ce programme (y compris ses sources) librement, mais -consultez le fichier COPYING.fr pour les détails complets. - -Certains des éléments utilisés pour préparer les graphismes du jeu -(dans le sous-répertoire 'data'), comme les modèles 3D utilisés pour -créer les images bitmap, ne sont pas distribués avec le code source -principal à cause de leur taille ; ils ne sont pas nécessaires pour -construire Freeciv à partir de ses sources, puisque les graphismes -(manuellement) dérivés sont aussi inclus dans la distribution. Ces -éléments sont disponibles dans la distribution séparée -'graphics-material' (par exemple, -freeciv-2.4.0-graphics-materials.tar.bz2), ou depuis le gestionnaire -de versions (Git). - - -Compilation et installation : -============================= - -Merci de lire attentivement le fichier INSTALL.fr pour savoir comment -compiler et installer Freeciv sur votre machine. - - -Freeciv est modulaire : -======================= - -Freeciv est en fait plusieurs programmes, un serveur et un ou -plusieurs clients. Quand le jeu sera en cours, il y aura un programme -serveur en fonctionnement, et autant de programmes clients qu'il y a -de joueurs humains. Le serveur n'utilise pas d'IHM, mais les clients, -si. Il y a de nombreuses variétés de clients : - -freeciv-gtk3 : Il utilise les librairies GTK+ 3. Pour l'installer, - voir la section 1a du document INSTALL.fr. - -freeciv-gtk3.22 : Il utilise les librairies GTK+ 3. La version 3.22 ou - 3.24 est nécessaire. Pour l'installer, voir la version 1b du - document INSTALL.fr. Ce client est mieux supporté et plus développé - que les autres ; il est de ce fait considéré comme étant l'interface - par défaut dans le reste de ce document. - -freeciv-qt : Il utilise la librairie QT. Le développement de ce client - a récemment atteint l'état où il est généralement considéré comme - utilisable, mais il lui manque encore un certain nombre de - fonctionnalités dont disposent les clients GTK. - -freeciv-sdl2 : Il utilise les librairies Simple DirectMedia Layer version 2. - -freeciv-gtk3x : Il utilise les librairies GTK+ 3.90+. C'est une - version de développement d'un client qui évoluera pour utiliser GTK4 - une fois qu'il sera diffusé. - -Commencer une partie: -===================== - - NOTE : - Les exemples suivants partent du principe que Freeciv a été installé - sur votre système, et que le répertoire contenant les programmes - "freeciv-gtk3" et "freeciv-server" est dans votre PATH. Si Freeciv - n'est pas installé, vous pouvez utiliser les programmes "fcgui" et - "fcser", qui se trouvent dans le répertoire racine de Freeciv. Ils - s'utilisent exactement de la même façon que "freeciv-gtk3" et - "freeciv-server". - - -Jouer à Freeciv implique de lancer le serveur, puis le(s) client(s) et -de créer la ou les IA. Ensuite, vous devez dire au serveir de lancer -la partie. Voici les étapes : - - -Serveur : - - Pour lancer le serveur : - - | % freeciv-server - - Ou pour la liste des options en ligne de commande : - - | % freeciv-server --help - - Une fois que le serveur est lancé, une invite doit apparaître : - - | Pour obtenir une aide sommaire, tapez 'help'. - | > - - [ Si ce message n'est pas en Français, et que vous voulez absolument - jouer dans notre langue, positionnez la variable d'environnement - LANG à "fr". Pour plus de détails, consultez le fichier - INSTALL.fr. ] - - Et vous pourrez alors voir l'information suivante en tapant la - commande help : - - | > help - | Bienvenue - ceci est le texte d'aide introductif du serveur Freeciv. - | - | Les commandes et les options sont deux concepts importants pour le - | serveur. Les commandes, comme 'help', sont utilisées pour interagir - | avec le serveur. Certaines commandes prennent un ou plusieurs - | arguments, séparés par des espaces. Dans la plupart des cas, les - | commandes et les arguments des commandes peuvent être abrégés. Les - | options sont des paramètres qui contrôlent la façon dont fonctionne - | le serveur. - | - | Pour savoir comment obtenir plus d'information sur les commandes et - | les options, utilisez 'help help'. - | - | Pour les impatients, les commandes principales pour commencer sont : - | show - pour voir les options actuelles - | set - pour régler des options - | start - pour lancer la partie une fois que les joueurs sont - | connectés - | save - pour sauver la partie en cours - | quit - pour quitter - | > - - Si vous le désirez, vous pouvez utiliser la commande 'set' pour régler - certaines options de la partie. Vous pouvez obtenir une liste des - options grâce à la commande 'show', et des descriptions détaillées de - chacune avec 'help '. - - Par exemple : - - | > help size - | Option : size - Taille de la carte (en milliers de cases) - | Description : - | Cette valeur est utilisée pour déterminer les dimensions de la - | carte. - | size = 4 est une carte normale de 4000 cases (défaut) - | size = 20 est une carte énorme de 20000 cases - | Pour que cette option soit prise en compte, l'option "Définition de - | la taille de la carte" ('Mapsize') doit être positionnée à "Nombre - | de cases" (FULLSIZE). - | État : modifiable - | Valeur : 4, Minimum : 0, Défaut : 4, Maximum : 2048 - | > - - Et : - - | > set size 8 - - Ceci rendra la carte deux fois plus grande que celle par défaut. - -Client : - - À présent, tous les joueurs humains devraient se connecter en - lançant le client Freeciv : - - | % freeciv-gtk3 - - Ceci part du principe que le serveur tourne sur la même - machine. Sinon, vous pouvez le spécifier en ligne de commande à - l'aide de l'option '--server' ou le saisir dans la première boîte de - dialogue lorsque le client démarre. - - Par exemple, supposons que le serveur tourne sur une machine - différente appelée 'neptune'. Dans ce cas, les joueurs rejoignent la - partie avec une commande de ce style : - - | % freeciv-gtk3 --server neptune - - Si vous êtes le seul joueur humain, un seul client a besoin d'être - lancé. Vous pouvez lancer le client "en tâche de fond" de la manière - standard sous Unix en ajoutant une esperluette (ou "et commercial" - - '&') : - - | % freeciv-gtk3 & - - Une autre option du client que vous pourriez vouloir essayer est - l'option '--tiles', qui peut être utilisée pour choisir des "jeux de - tuiles" différents (c'est-à-dire des graphismes différents pour le - terrain, les unités, etc.). La distribution fournit neuf tilesets - principaux : - - - amplio2 : un jeu de tuiles isométriques, avec des tuiles plus - grandes et plus détaillées. - - isotrident : un jeu de tuiles isométriques, de forme similaire à - celui de Civ 2. - - cimpletoon : amplio2 avec des unités alternatives qui affichent - leur direction. - - trident : un jeu de tuiles de style Civ 1 ('vue de dessus'), avec - des tuiles de 30×30. - - hexemplio : un jeu de tuiles iso-hexagonal avec des tuiles plus - grandes, dérivées d'amplio2. - - toonhex : un jeu de tuiles qui combine les tuiles hexemplio avec - les unités cimpletoon. - - isophex : un jeu de tuiles iso-hexagonal - - hex2t : un jeu de tuiles hexagonal - - alio : un jeu de tuiles iso-hexagonal avec des graphiques adaptés - pour les règles du jeu alien. - - Dans cette distribution, chaque topologie de carte a son propre jeu - de tuiles par défaut ; avec les options par défaut, amplio2 est le - jeu de tuiles par défaut. - Pour en essayer un autre, par exemple le jeu de tuiles trident, - lancez le client ainsi : - - | % freeciv-gtk3 --tiles trident - - D'autres jeux de tuiles sont disponibles sur - http://www.freeciv.org/wiki/Tilesets - - Les clients peuvent être autorisés à utiliser des commandes du - serveur. Pour les autoriser à n'utiliser que des commandes - d'information, tapez ce qui suit à l'invite du serveur : - - | > cmdlevel info - - Les clients peuvent à présent utiliser '/help', '/list', '/show - settlers', etc. - - -Joueurs IA : - - Il y a deux façons de créer des joueurs IA. La première est de - régler le nombre total de joueurs (humains et IA) à l'aide de - l'option 'aifill' du serveur. Par exemple : - - | > set aifill 7 - - Après avoir utilisé la commande 'start' du serveur pour commencer la - partie, tous les joueurs qui ne sont pas contrôlés par des humains - seront des joueurs IA. Dans l'exemple ci-dessus, si 2 joueurs - humains ont rejoint la partie, 5 joueurs IA seront créés. - - La deuxième façon est de créer explicitement une IA avec la commande - 'create' du serveur. Par exemple : - - | > create TueurdHumains - - Ceci créera un joueur IA appelé TueurdHumains. - - Des nations sont assignées aux joueurs IA après que tous les joueurs - humains aient choisi les leurs, mais vous pouvez choisir une nation - particulière pour un joueur IA en utilisant le nom normal pour le - chef de cette nation. Par exemple, pour jouer contre des Romains - contrôlés par l'IA, utilisez la commande du serveur suivante : - - | > create César - - Note : ceci n'est qu'un préférence. Si aucun joueur humain ne choisit - de jouer les Romains, alors cette IA les prendra. - -Serveur : - - Une fois que tout le monde a rejoint la partie (utilisez la commande - "list" pour savoir qui est là), lancez la partie avec la commande - "start" : - - | > start - -Et la partie est lancée ! - - NOTE : Les clients ont la capacité de lancer une session - freeciv-server automagiquement quand l'utilisateur sélectionne - "Démarrer une nouvelle partie" à partir du menu principal. Ceci - réduit les étapes nécessaires pour commencer à jouer un jeu de - Freeciv. D'un autre côté, cela veut aussi dire que si le client - tombe en panne pour une raison quelconque ou devient inaccessible, - alors la session freeciv-server sera également perdue. De ce fait, - lancer une session freeciv-server séparée, et s'y connecter ensuite - avec le client est généralement la méthode recommandée. - -Annoncer la partie : -==================== - -Si vous ne voulez pas limiter vos opposants à des amis locaux ou aux -joueurs IA, visitez le métaserveur Freeciv : - - http://meta.freeciv.org/ - -C'est une liste de serveurs Freeciv. Pour que votre propre serveur s'y -annonce lui-même, lancez freeciv-server avec l'option '--meta', ou -'-m'. - -Avertissements : - - 1) Étant donnée l'inclusion de nouvelles fonctionnalités, des - versions différentes du client et du serveur sont souvent - incompatibles. La version 2.5.0, par exemple, est incompatible - avec toutes les versions 2.4.x ou plus anciennes. - - 2) Si le bouton Métaserveur dans la boîte de dialogue de connexion ne - fonctionne pas, vérifiez si votre fournisser d'accès utilise un - proxy web et signalez-le au client à l'aide de la variable - d'environnement $http_proxy. Par exemple, si le proxy est - proxy.monfournisseur.com, sur le port 8888, positionnez - $http_proxy à http://proxy.monfournisseur.com:8888/ avant de - lancer le client. - - 3) Parfois, il n'y a pas de partie sur le métaserveur. Cela - arrive. Le nombre de joueurs varie en fonction de l'heure de la - journée. Essayez d'en lancer une vous-même ! - - -Jouer : -======= - -La partie peut être sauvée à n'importe quel moment en utilisant la -commande 'save' du serveur, ainsi : - - | > save mapartie.sav - -(Si votre serveur est compilé avec le support de la compression et que -l'option serveur 'compresstype' du serveur a une autre valeur que -PLAIN, alors le fichier écrit peut être compressé et appelé -'mapartie.sav.gz', 'mapartie.sav.bz2' ou 'mapartie.sav.xz', en -fonction de l'option.) - -Le client Freeciv fonctionne d'une façon assez proche de ce à quoi on -peut s'attendre pour une partie de Civilization multijoueurs - -c'est-à-dire que les joueurs humains se déplacent tous en même temps, -puis tous les joueurs IA se déplacent lorsque tous les joueurs humains -ont terminé leur tour. Il y a une valeur de timeout pour les tours, -qui est par défaut de 0 seconde (pas de timeout). L'administrateur du -serveur peut modifier cette valeur à n'importe quel moment grâce à la -commande 'set'. - -Jetez un oeil au système d'aide en ligne. Les trois boutons de la -souris sont utilisés, et documentés dans l'aide. - -Les joueurs peuvent maintenir 'Maj' pressée et appuyer sur la touche -'Entrée' pour annoncer la fin de leur tour, ou simplement cliquer sur -le bouton 'Fin du tour'. - -Utilisez la boîte de dialogue 'Joueurs' pour savoir qui a annoncé la -fin de son tour, et qui vous attendez ("Hé, gars ! Tu t'es endormi ou -quoi ?" ;-) ). - -Utilisez la ligne de saisie en bas de la fenêtre pour diffuser des -messages aux autres joueurs. - -Vous pouvez envoyer un message à un seul joueur (par exemple 'pierre') : - - | pierre: enlève ce tank *TOUT DE SUITE* ! - -Le serveur est suffisamment intelligent pour faire de la "complétion -de nom" ; ainsi, si vous aviez tapé "pie:", il aurait trouvé un nom de -joueur qui corresponde à la partie du nom que vous avec tapée. - -Vous pouvez envoyer un message à tous vos alliés en le préfixant avec -la lettre '.' (oui, c'est un point.) - -Vous pouvez exécuter des commandes du serveur depuis la ligne de -saisie du client : - - | /list - | /set settlers 4 - | /save mapartie.sav - -L'administrateur du serveur ne vous laissera probablement lancer que -des commandes d'information. Ceci est en partie dû au fait que laisser -des clients utiliser toutes les commandes du serveur a des -répercussions sur la sécurité ; imaginez qu'un joueur essaye : - - | /save /etc/passwd - -Bien sûr, le serveur ne devrait en aucun cas être lancé avec les -privilèges de super-utilisateur pour réduire ce genre de risques. - -Si vous débutez juste et que désirez avoir une idée d'une stratégie -possible, consultez le "Freeciv playing HOWTO", contenu dans le -fichier HOWTOPLAY.fr. - -Pour avoir beaucoup plus de renseignements à propos du client, du -serveur et des concepts et des règles du jeu, consultez le manuel de -Freeciv disponible sur le site wiki : - - http://www.freeciv.org/wiki-fr/Manuel - ou - http://www.freeciv.org/wiki/Manual (en anglais) - -Fin de la partie : -================== - -Il y a six façons dont une partie peut se terminer : - -1) Il ne reste que des gagnants dans le jeu - 1a) Si la clause de victoire 'ALLIED' est activée dans l'option - serveur 'victories' : toutes les nations restantes, sauf celles - qui ont capitulé (/surrender), sont alliées ou dans la même - équipe. - 1b) Si la clause de victoire 'ALLIED' est desactivée dans l'option - serveur 'victories' : il ne reste qu'une seule nation ou qu'une - seule équipe, ou tous les autres joueurs de toutes les autres - équipes ont capitulé (/surrender). -2) L'année de fin est atteinte (/show endturn). -3) Si la clause de victoire 'SPACERACE' est activée dans l'option - serveur 'victories' et qu'un joueur construit et lance un vaisseau - spatial qui atteint Alpha du Centaure le premier. -4) Si la clause de victoire 'CULTURE' est activée dans l'option - serveur 'victories' et qu'un joueur a atteint à la fois le nombre de - points de culture minimal défini dans les règles du jeu, et le - nombre minimal de points de culture d'avance défini par les règles - du jeu. -5) Si le modpack a des conditions de victoire particulières, et qu'un - joueur a atteint l'une d'entre elles. -6) L'opérateur du serveur utilise la commande /endgame. - -Un tableau des scores sera montré dans tous les cas. Truc : -l'administrateur du serveur peut changer l'année de fin pendant que la -partie est en cours en modifiant l'option 'endturn'. C'est agréable -lorsque le vainqueur est évident mais que l'on veut pas avoir à jouer -toute la phase ennuyeuse de "nettoyage". - - -Restauration des parties : -========================== - -Vous pouvez restaurer une partie sauvegardée en utilisant l'option -'-f' du serveur, par exemple : - - | % freeciv-server -f notresauvegarde2001.sav - -ou, si le fichier de sauvegarde a été créé par un serveur qui l'a -compressé : - - | % freeciv-server -f notresauvegarde2001.sav.gz - -À présent, les joueurs peuvent rejoindre la partie : - - | % freeciv-gtk3 -n Alexandre - -Remarquez la façon dont le nom du joueur est spécifié avec l'option --n. Il est primordial que le joueur utilise le même nom qu'il avait -lorsque la partie était en cours, s'ils veulent être autorisés à la -rejoindre. - -La partie peut ensuite être redémarrée avec la commande 'start', comme -d'habitude. - - -Localisation : -============== - -Freeciv supporte un certain nombre de langues (dont le Français ^^). - -Vous pouvez choisir quel langue locale utiliser, en précisant une -"locale". Chaque locale a un nom standard (par exemple, 'fr' pour le -Français). Si vous avez installé Freeciv, vous pouvez choisir une -locale en positionnant la variable d'environnement LANG au nom -standard de cette locale, avant de lancer freeciv-server et -freeciv-gtk3. - -Par exemple, pour utiliser la localisation française, vous feriez : - - export LANG; LANG=fr (avec un shell Bourne (sh)), -ou - setenv LANG fr (avec le shell C (csh)). - -(Vous pourriez faire ceci dans votre .profile ou votre .login) - -Parfois, il y a un conflit entre l'implémentation de la librairie -locale et la résolution interne de la locale. Il est souvent possible -de contourner les problèmes avec un descripteur plus détaillé : - - LANG=fr_FR.UTF-8 - -Nous aimerions être au courant de ce genre de problèmes. Merci de les -rapporter en tant que bugs (voir BUGS). - -Journal : -========= - -Le client et le serveur affichent tous les deux des messages de log -("journal"). Il y a cinq ou six catégories de messages de log : -"fatal", "erreur" (error), "avertissement" (warning), "normal", -"verbeux" (verbose) et, dans les versions de mise au point, "débogage" -(debug). - -Par défaut, les messages fatals, d'erreur, d'avertissement et normaux -sont affichés sur la sortie standard à l'endroit où le client et le -serveur ont été lancés. Vous pouvez rediriger les messages de log vers -un fichier au lieu de l'écran avec les options en ligne de commande -"--log fichier" ou "-l fichier". - -Vous pouvez modifier le niveau des messages affichés avec "--debug -niveau" ou "-d niveau", où "niveau" est le nom du niveau de log, ou de -la valeur numérique qui lui correspond (l'un de 0, 1, 2, 3 ou 4). Tous -les messages du niveau sélectionné, et inférieur, sont affichés. Par -exemple, au niveau par défaut "normal", vous aurez tous les messages -de niveau "fatal", "erreur", "avertissement" et "normal". - -Si vous avez compilé en définissant DEBUG (vous pouvez facilement le -faire en lançant la configuration avec --enable-debug), vous pouvez -avoir les messages de niveau "débogage" en réglant le niveau à "debug" -(ou 5). De plus, il est possible de contrôler les messages de niveau -débogage (mais pas les autres) par fichier et par ligne. Pour ce -faire, utilisez "--debug debug:chaîne1:chaîne2" (autant de chaînes que -vous voulez, séparées par des deux-points) et tous les noms de -fichiers source qui contiennent ces sous-chaînes auront les messages -log de débogage activés, tandis que tous les autres messages de -déboguage seront supprimés. Pour contrôler les lignes, utilisez : -"--debug debug:chaîne1,min,max" et, pour les fichiers qui -correspondent à chaîne1, seuls les messages de débogage entre les -lignes min et max seront affichés. Un seul couple (min,max) peut être -appliqué à chaque fichier. - -Exemple : - - | % freeciv-server -l mon.log -d verbose - -Ceci met tous les messages de log du serveur dans le fichier -"mon.log", y compris les messages de niveau verbeux. - -Exemple: - - | % freeciv-gtk3 --debug fatal - -Ceci supprime tous les messages de log non fatals du client. - -Exemple: - - | % freeciv-server -d debug:log:freeciv-server,120,500:autoattack - -Ceci active tous les messages fatals, d'erreur, d'avertissement, -normaux et verbeux pour le serveur, et les messages de déboguage pour -certains modules. Notez que "log" s'applique aussi bien à "gamelog.c" -qu'à "log.c". Pour "freeciv-server.c", seuls les messages de déboguage -entre les lignes 120 et 500 seront affichés. Cet exemple ne fonctionne -que si le serveur à été compilé avec DEBUG. - - -Bugs : -====== - -Vous avez trouvé un bug ? Nous voudrions vraiment que vous nous -préveniez, afin que nous puissions le corriger. Consultez le fichier -BUGS pour avoir une liste des bugs connus dans cette distribution, -ainsi que des renseignements pour signaler de nouveaux bugs. - - -Listes de diffusion : -===================== - -Nous maintenons 4 listes de diffusion : - - freeciv-announce@freelists.org - Annonces d'intérêt général. - C'est une liste en "lecture seule", avec des messages peu - fréquents. En d'autres termes, vous ne pouvez pas écrire à cette - liste, seulement la lire. - Pour s'inscrire : https://www.freelists.org/list/freeciv-announce - freeciv-i18n@freelists.org - Traduction de Freeciv. - Toutes les discussions en rapport avec la traduction du code, de - la documentation et du site Web de Freeciv vers d'autres langues - que l'anglais. - Pour s'inscrire : https://www.freelists.org/list/freeciv-i18n - freeciv-dev@freelists.org - Développement de Freeciv. - Pour s'inscrire : https://www.freelists.org/list/freeciv-dev - freeciv-commits@gna.org - Notifications de changements dans le dépôt de code. - C'est une liste en "lecture seule", qui porte des messages - automatisés. En d'autres mots, vous ne pouvez pas écrire à cette - liste, uniquement la lire. (Au moment de la rédaction, il est - prévu que gna.org ferme prochainement ; nous ne sommes pas encore - sûrs des adaptations qui seront faites pour avoir une liste de - remplacement pour la diffusion des changements.) - -Toutes ces listes sont publiques et chacun est le bienvenu pour s'y -inscrire. Seuls les mainteneurs peuvent poster dans les listes --announce et -commits. - -Internet Relay Chat (IRC) -========================= - -Plusieurs joueurs et développeurs traînent sur les canaux #freeciv and -#freeciv-dev sur le réseau freenodenetwork. Essayez de vous connecter -au serveur - - irc.freenode.net - - -Et pour conclure : -================== - -Amusez-vous bien et envoyez-les en enfer ! - - -- L'équipe de Freeciv diff --git a/doc/it/HOWTOPLAY.it b/doc/it/HOWTOPLAY.it deleted file mode 100644 index 7e7563adcd..0000000000 --- a/doc/it/HOWTOPLAY.it +++ /dev/null @@ -1,279 +0,0 @@ -Questo file si basa sulla versione cvs-1.2 di doc/HOWTOPLAY. -This file based on cvs-1.2's doc/HOWTOPLAY. - -====================== -Come giocare a Freeciv -====================== - - ****************************************************** - * Le note relative alla traduzione sono disponibili * - * al termine del documento * - ****************************************************** - - Scritto originariamente da Michael Hohensee (alias Zarchon). - - -Se cerchi informazioni su come installare Freeciv, leggi il file INSTALL (o la -versione italiana doc/INSTALL.it Ndt). -Per avere Freeciv funzionante vedi il file README (oppure doc/README.it Ndt). - -Se non hai mai giocato a giochi come Civilization, e' piu' facile cominciare -leggendo il manuale di Freeciv, disponibile separatamente presso: - - http://freeciv.org/wiki/It:Manual - -Se stai cercando idee per giocare a Freeciv continua a leggere!! - - Ora che hai Freeciv funzionante, vorrai giocare le tue prime partite. -E' raccomandabile provare a giocare in solitario alcune volte, in modo da -poter prendere confidenza con come funzionano le cose; ma questo non e' -indispensabile. Puoi anche imparare giocando con altri o contro le IA -(Intelligenze Artificiali, in inglese AI Ndt). - -Domanda: potete darmi una strategia di base? - - Prima di tutto, questa non e' una strategia *perfetta*; non e' neanche -una molto buona. Ma ti permettera' di iniziare a giocare a Freeciv. Una parte -del fascino di Freeciv consiste nello sviluppare nuove strategie. - - Il gioco e' diviso in diverse fasi: - - la fase dell' Espansione Iniziale - la sotto-fase Tecnologica - la fase della Seconda Espansione - la fase della Produzione - e la fase dell' Annientamento Totale dei Tuoi Nemici - -Espansione Iniziale: - - Questa fase e' la piu' critica. La prima cosa che dovresti fare e' -costruire citta' e esplorare la tua isola. Dovresti costruire molte citta', -sette od otto almeno. - - Lo scopo dell'operazione e' occupare quanti piu' quadrati di terra -possibile. Costruendo una citta' accertati di non sovrapporti troppo con il -territorio di un'altra delle tue citta'. Puoi vedere quali quadrati sono usati -da una citta' cliccandoci sopra; la mappa della citta' e l'area circostante -contiene il territorio di quella citta'. Tenendo a mente cio' prova a tenere -le tue citta' abbastanza vicine tra loro. Piu' sono distanti, piu' sono -difficili da difendere e da amministrare in questa fase (suggerimento: prova a -costruirle sui cavalli o vicino al pesce). - - Quando avrai una o due citta', dovresti impostare il tasso di Scienza -il piu' alto possibile permesso sotto la tua forma di governo. Non ti -preoccupare del tasso di Imposte, poiche' non costruirai nessuna struttura che -svuoti il tuo tesoro; costruirai coloni. Ogni citta' dovrebbe rigurgitare -coloni. Piu' coloni crei, piu' citta' puoi avere; piu' citta' hai, piu' -velocemente scopri nuove tecnologie; piu' velocemente scopri nuove tecnologie, -piu' velocemente vinci. Dopo che hai costruito tante citta' quante il tuo -angolo di mondo puo' contenerne, usa i coloni per costruire strade e -irrigazioni. - -(Nota: se il surplus di cibo in una citta' scende a +1 perche' mantiene troppi -coloni, e non puoi riorganizzare la popolazione per aumentarla, allora inizia -a costruire un tempio. A meno che non prendi contatto con un altro giocatore, -non ti preoccupare di costruire gia' unita' militari.) - - Per tutto questo tempo hai ricercato nuove tecnologie il piu' -velocemente possibile. Cio' su cui devi puntare per prima e' la "Repubblica", -poi la "Democrazia", "Ferrovia" e "Industrializzazione" (alcune persone -ricercano la "Monarchia" prima della "Repubblica"). Non appena hai scoperto -una nuova forma di governo, inizia una rivoluzione e passa a questa. Le citta' -funzionano molto meglio nella Repubblica di quanto non facciano sotto il -Dispotismo, ma nota che e' molto piu' difficile mantenere unita' militari -fuori dai confini di una citta' sotto una Repubblica. Inoltre non dimenticare -di ricontrollare i tuoi tassi dopo che hai cambiato governo, poiche' i massimi -variano per ogni forma di governo. - - Quando hai scoperto la Democrazia sei pronto per entrare nella fase -della Seconda Espansione. Questo avviene cambiando il governo in Democrazia, -costruendo Templi in ogni citta' e impostando il tasso di lusso al 100%. -Quando fai cio tutte le citta' iniziano immediatamente a festeggiare e si -ingrandiranno ad una velocita' di uno per turno finche' c'e' surplus di cibo. -Quando sono diventate abbastanza grandi imposta il tasso di lusso ad un -livello ragionevole del 20-40%. Cio' ti inserisce nella fase della Seconda -Espansione. - - Il rovescio della medaglia di questo e' che impostare il lusso al 100% -significa che la tua ricerca scientifica si fermera' completamente. Dopo che -le tue citta' sono cresciute, e imposti la scienza piu' o meno al 50%, -ricomincerai ad acquisire tecnologie, ma ad una velocita' leggermente piu' -lenta. Se hai svolto un po' di esplorazioni e non sei immediatamente impegnato -da un altro giocatore, potrebbe essere una buona idea lasciare la scienza al -massimo finche' le tecnologie non cominciano ad impiegare troppo tempo per -essere scoperte. - -Fase della Seconda Espansione: - - Quando le tue citta' raggiungono una buona dimensione diminuisci -gradualmente il lusso e aumenta le imposte. Quando scendi piu' o meno al 30% -di lusso, sposta il tasso di imposte verso la scienza quanto piu' possibile -continuando a mantenere delle entrate positive. Quando scopri la ferrovia -converti tutte le tue strade in ferrovie, o almeno i quadrati usati per la -produzione o quelli che fanno parte della rete di trasporto (suggerimento: -costruisci una strada/ferrovia su ogni quadrato usato da una citta', cosi' -aumenta la produzione della citta'. Non c'e' bisogno di aggiornare il quadrato -al centro - e' fatto automaticamente). - - Adesso e' ora di sviluppare l'industrializzazione e le tecnologie -militari. Dovresti anche iniziare a costruire citta' su altre isole e fare -qualche seria esplorazione, se non l'hai gia' fatto prima. Devi cercare dove -sono i tuoi nemici. Ricerca le tecnologie navali e prova a costruire la -Spedizione di Magellano. Quando ti senti pronto entra nella - -Fase della Produzione: - - Ora stai costruendo fabbriche e centrali elettriche nelle tue citta'. -Devi ottenere quanta piu' produzione possibile da ogni citta'; l'inquinamento -diventa un problema. Non appena puoi, prova a scoprire la Produzione di Massa -per il Trasporto di Massa e il Riciclaggio, in modo da poter costruire Centri -di Riciclaggio. Quando hai ottenuto molta produzione da tutte le tue citta' -devi costruire unita' militari (nota: se vieni in contatto con un'altro -giocatore dovresti costruire immediatamente alcune unita' di attacco e almeno -un'unita' di difesa per ogni citta'). - - Quando vuoi iniziare a pensare ad attaccare qualcuno, imposta la -scienza allo 0% e rialza le imposte il piu' alte possibili senza provocare -disordini. Ricorda, i soldi possono anche costruire unita'! - -Fase dell' Annientamento Totale dei Tuoi Nemici: - - Questa puo' avvenire in ogni momento, ma e' piu' divertente con le -armi avanzate. - - Scegli un nemico relativamente debole e mandagli alcuni carichi di -nave di truppe. Conquista le sue citta' e usale per costruire ulteriori unita' -per far fuori il resto delle citta'. Non mostrare pieta'! Fino alla morte! - -Ripetere tante volte quanto necessario. ;-) - -[Nota per i pacifisti: Freeciv permette anche ad un giocatore di vincere -costruendo e lanciando un'astronave che arrivi ad Alpha Centauri prima di -chiunque altro.] - - -Ulteriori domande: - -D. Quali altre strategie esistono? - - Ci sono alcuni tutorial e guide strategiche disponibili presso le -pagine web di Freeciv, presso: - - http://freeciv.org/wiki/It:Docs - -Inoltre la guida in linea di Freeciv descrive un'altra strategia. - - -D. Che timeout devo impostare nei giochi in multiutente? - - Dipende dal numero di giocatori. Se siete solo in due a giocare puoi -normalmente farne a meno usando un timeout a 0. Se siete in piu' di due, o se -uno dei due lascia ogni tanto il computer e non volete interrompere il gioco, -un timeout di 60 secondi e' normalmente sufficiente. Piu' avanti nel gioco -comunque, quando le cose si fanno piu' complesse, potresti voler alzare il -timeout a 240 secondi. In genere piu' giocatori hai, piu' hai bisogno di un -timeout lungo. Sei libero di impostare qualsiasi tempo ti sembra comodo, ma -ricorda che andare sopra i 300 tendera' a far annoiare la gente. - - -D. Qual e' la dimensione della mappa che devo usare? - - La dimensione della mappa dipende dal numero di giocatori che ci sono -e da quanto velocemente vuoi che il gioco finisca. La dimensione predefinita -della mappa (80x50) e' abbastanza grande per un gioco a due persone abbastanza -veloce, ma si risolvera' in una partita *molto* veloce se partecipano piu' di -tre giocatori. - - I giochi veloci tendono ad essere frustranti per chiunque tranne il -vincitore, in quanto nessuno ha veramente avuto il tempo per sviluppare -qualsiasi difesa. Se avete una partita con piu' di tre giocatori dovreste -usare una mappa 80x80. Se siete cinque o piu' dovreste probabilmente -considerarne una di 100x100. - - -D. Cos'e' questa opzione "generator"? - - Questa opzione modifica il processo di creazione della mappa; se -giochi alcune volte a Freeciv senza cambiare questa impostazione, sicuramente -sentirai (o farai personalmente esperienza) degli orrori di una piccola isola. -La Sindrome della Piccola Isola (in inglese TIS, Tiny Island Syndrome, Ndt) -puo' rendere le persone folli. Per impedire cio' i nostri amati e premurosi -programmatori hanno installato l'opzione generator. Quando e' impostato ad 1, -da' la mappa normale con isole di dimensioni diverse (e a volte ingiuste). Ma -quando e' impostata a 2, 3 o 4, genera isole delle stesse dimensioni (a volte -con altre isole piu' piccole in mezzo). In questo modo nessuno puo' lamentarsi -di aver perso "per colpa di quella f**tuta isola". - - -D. Devo rendere il gioco piu' facile aumentando gli auri iniziali? - - Se non hai esperienza e stai giocando con persone inesperte, -probabilmente nessuno si opporra' ad un aumento dei soldi con cui partono -(l'opzione in questione e' "gold" Ndt). Ma questo non e' comunque un buon modo -di imparare come giocare. Iniziare con molti auri rende il gioco piu' facile e -rende piu' difficile imparare come cavarsela con la quantita' predefinita. -Molti giocatori esperti non aumentano questa impostazione, e se loro sanno -fronteggiare questa situazione e tu no, stai per fare la fine di Atlantide. - -Nota: le stesse considerazioni si applicano alle opzioni "techlevel" e -"researchspeed". - - -D. E per quanto riguarda le altre opzioni? - - Il resto di loro ha principalmente a che fare con che tipo di mondo -sara' creato ed i meccanismi del gioco. Aumentare "specials" ti da' un -rapporto piu' alto tra risorse e quadrati; "huts" determina quante capanne -indipendenti ci sono. Aumentare la quantita' di coloni (opzione "settlers") o -esploratori ("explorer") con i quali si inizia rende il gioco piu' veloce e -permette alla gente di sopravvivere a "questi $#@! barbari" che a volte vivono -nelle capanne. - - Le impostazioni riguardanti la ferrovia determinano quanto un -quadrato produrra' in termini di cibo/commercio/scudi con una ferrovia su di -se'; l'opzione "foodbox" determina quanto cibo ogni persona in una citta' deve -avere prima che una nuova persona possa essere aggiunta. - - Per il resto: un valore piu' alto di "mountains" significa una mappa -piu' montuosa; un "deserts" piu' alto significa piu' deserti, ecc. - -D. Come posso ottenere la tecnologia _____? - -Cercala nella guida in linea. Mostra le tecnologie di cui hai bisogno prima. - -In alternativa puoi scaricare il grafico "techtree" di David Pfitzner da - http://files.freeciv.org/contrib/charts/ - - Oppure puoi leggere l'insieme di regole per le tecnologie nel file -'data/default/techs.ruleset' che elenca tutte le tecnologie e quali tecnologie -sono necessarie per ottenerle. - - -D. Quali sono le unita' militari piu' utili? - - Per l'attacco: - - Carro Armato, Elicottero, Missile Cruise, Nave da Guerra, - Trasporti, Missile Nucleare, Obice, Bombardiere. - - Per la difesa: - - Carro Armato, Fanteria Meccanizzata, Obice, Nave da Guerra, - Missile Cruise, Missile Nucleare. - -Ricorda: la miglior difesa e' un deciso attacco. - -Aggiunte a questo documento (e alla sua versione inglese Ndt) sono benvenute! - -=========================================================================== -Note per la traduzione in Italiano: - -Le note del traduttore sono segnate fra parentesi con 'Ndt'. -Il traduttore non si assume nessuna responsabilita' per eventuali -errori/omissioni nel presente documento. -Comunicate eventuali inesattezze all'indirizzo email: - -slug-freeciv@siena.linux.it - -per eventuali aggiornamenti/revisioni. -=========================================================================== diff --git a/doc/it/README.it b/doc/it/README.it deleted file mode 100644 index 0ea5b5baa6..0000000000 --- a/doc/it/README.it +++ /dev/null @@ -1,517 +0,0 @@ -Questo file si basa sulla versione cvs-1.5 di doc/README. -This file based on cvs-1.5's doc/README. - -==================== -Freeciv Versione 2.2 -==================== - - ****************************************************** - * Le note relative alla traduzione sono disponibili * - * al termine del documento * - ****************************************************** - -Benvenuto in Freeciv! - -Questo pacchetto contiene Freeciv, un clone libero di Civilization progettato -principalmente per X sotto Unix. -Supporta la modalita' multiplayer in locale o su una rete, e una IA -(Intelligenza Artificiale) che da' del filo da torcere a molti giocatori. - -Freeciv mira ad avere regole compatibili con Civilization II [tm], pubblicato -da Sid Meier e Microprose [tm]. Alcune regole sono state cambiate laddove -credevamo che potessero essere migliorate, e abbiamo reso personalizzabili -le partite con una montagna di parametri. - -Freeciv e' stato creato in modo del tutto indipendente da Civilization; non -siete obbligati a possedere Civilization per giocare a Freeciv. - -Anche se non abbiamo ancora il sopporto per il suono ed i giocatori IA non -possono ancora negoziare, le regole sono molto complete ed il nostro codice -per il multiplayer ed il gioco in rete e' eccellente. - -(Questo file e' la traduzione in italiano del'originale. Per eventuali errori e -correzioni scrivete a: slug-freeciv@siena.linux.it Ndt) - - -Traduzioni: -============= - -Potresti trovere una versione tradotta di questo file e di altre parti della -documentazione di Freeciv, nelle seguenti locazioni: - - Francese ./doc/fr - Giapponese ./doc/ja - Italiano ./doc/it - Olandese ./doc/nl - Svedese ./doc/sv - Tedesco ./doc/de - -Anche se non ci sono traduzioni per la tua lingua, il gioco stesso potrebbe -supportarla. Guarda per favore "Native Language Support" piu' sotto. - - -Sito Web: -========= - -Il sito Web di Freeciv (in Inglese Ndt) e' reperibile presso: - - http://www.freeciv.org/ - -Vi invitiamo a visitarci. Potete trovare le ultime versioni, patch e notizie -su Freeciv, informarvi sulle mailing list di Freeciv, e vedere il metaserver, -che registra le partite che vengono giocate in tutto il mondo. - - -Licenza: -======== - -Freeciv viene distribuito sotto la GNU General Public License. In breve, -potete copiare liberamente questo programma (sorgenti inclusi), ma leggete il -file COPYING per dettagli approfonditi. - - -Compilazione e installazione: -============================= - -Per favore leggete con attenzione il file INSTALL per avere istruzioni su come -compilare ed installare Freeciv sulla vostra macchina. -(E' disponibile anche la versione in Italiano. Ndt) - - -Iniziare un nuovo gioco: -======================== - -Freeciv e' in verita' due programmi, un server e un client. Quando e' in corso -una partita saranno in esecuzione un server e tanti client quanti giocatori -umani partecipano. Il server non richiede X Windows, i client si. - - NOTA: - Gli esempi seguenti presumono che Freeciv sia installato sul - vostro sistema e che la directory contenente i programmi "civclient" - e "civserver" sia nella vostra PATH. Se Freeciv non e' installato, potreste - usare i programmi "civ" e "ser", che si trovano nella directory base di - Freeciv. Si usano esattamente allo stesso modo di "civclient" e "civserver". - -Eseguire Freeciv richiede l'esecuzione del server, poi del/dei client e della/e -IA, quindi iniziando la partita digitando "START" sul server. -Ecco i singoli passi: - -Server: - - Per eseguire il server: - - | % civserver - - O per avere una lista di opzioni da linea di comando: - - | % civserver --help - - Inizializzato il server, apparira' un propt: - - | For introductory help, type 'help'. - | > - - Potete visualizzare queste informazioni (in Inglese) usando il comando help: - - | > help - | Welcome - this is the introductory help text for the Freeciv server. - | - | Two important server concepts are Commands and Options. - | Commands, such as 'help', are used to interact with the server. - | Some commands take one or more parameters, separated by spaces. - | In many cases commands and command arguments may be abbreviated. - | Options are settings which control the server as it is running. - | - | To find out how to get more information about commands and options, - | use 'help help'. - | - | For the impatient, the main commands to get going are: - | show - to see current options - | set - to set options - | start - to start the game once players have connected - | save - to save the current game - | quit - to exit - | > - - Se volete, potete usare il comando 'set' per impostare le varie opzioni di - gioco. Potete ottenere una lista delle opzioni con il comando 'show', e le - relative descrizioni dettagliate con il comando 'help '. - - Per esempio: - - | > help xsize - | Option: xsize - Map width in squares - | Status: changeable - | Value: 80, Minimum: 40, Default: 80, Maximum: 200 - - E: - - | > set xsize 100 - | > set ysize 80 - - Questo raddoppiera' la mappa, rispetto alle dimensioni standard 80x50. - -Client: - - Ora e' il momento per far connettere tutti i giocatori, eseguendo il client - Freeciv: - - | % civclient - - Questo comando presume che il server stia girando sulla stessa macchina. Se - non e' cosi',potete specificarlo da linea di comando con l'opzione '--server' - oppure dalla prima finestra che appare insieme al client. - - Per esempio, supponiamo che il server stia girando su una macchina chiamata - 'neptune'. I giocatori si collegherebbero con un comando come: - - | % civclient --server neptune - - Se siete l'unico giocatore umano, basta eseguire un solo client. Secondo la - normale sintassi di Unix potete avviare il client in background - aggiungendo in fondo una "e commerciale": - - | % civclient & - - Un'altra opzione del client che potreste voler provare e' '--tiles', - che puo' essere usata per scegliere diversi "tileset" (cioe' differenti - temi per il terreno della mappa, le unita' e cosi' via). La distribuzione - include 2 tileset principali: - - isotrident: grafica isometrica come quella in civ2 (non ancora supportata - dal client xaw). - - trident: grafica in stile civ1 con quadranti 30x30. - Il tileset trident ha una variante chiamata "trident_shields". - - In questa versione il tileset isotrident e' quello predefinito nei client - gtk, amiga e win32, mentre il client xaw ha il trident come predefinito. - La variante "_shields" usa una bandiera "a scudo", che e' piu' piccola e - potrebbe risultare meno oscurata. Provatele entrambe e decidete voi. - Per usare il tileset trident fate partire il client con: - - | % civclient --tiles trident - - Altri tilesets sono disponibili sul sito ftp e nel sito web. - - - I client possono essere autorizzati a invocare comandi del server. Per - permettere che usino solo comandi informativi, scrivete al prompt del server: - - | > cmdlevel info - - Ora i client possono usare '/help', '/list', '/show settlers', ecc. - -Giocatori Simulati: - - Ci sono due modi per creare giocatori con IntelligenzaArtificiale. - Il primo e' di impostare il numero totale di giocatori (umani e IA) - attraverso l'opzione 'aifill' del server. Per esempio: - - | > set aifill 7 - - Dopo aver usato il comando 'start' del server per iniziare il gioco, - ogni giocatore che non e' controllato da umani sara' controllato dall'IA. - Per l'esempio sopra, se partecipassero 2 giocatori umani, verrebbero creati - 5 (cioe' 7 meno 2) giocatori con IA. - - Il secondo modo e' creare esplicitamente un giocatore con IA col comando - 'create' del server. Per esempio: - - | > create HumanKiller - - Cosi' verra' creato un giocatore con IA, chiamato HumanKiller. - - Ai giocatori con IA vengono assegnate le nazioni dopo che gli umani hanno - scelto le loro, ma potete scegliere una nazione particolare per un giocatore - IA il nome standard del leader di quella nazione. Per esmpio, per giocare - contro Romani controllati dall'IA, usa questo comando del server: - - | > create Caesar - - Nota che questa e' solo una preferenza: l'IA giochera' con i Romani solo se - nessun umano li sceglie prima. - -Server: - - Quando tutti si sono connessi (usa il comando "list" per vedere chi lo ha - gia' fatto), iniziate il gioco col comando "start": - - | > start - -E il gioco e' iniziato! - - -Annunciare il gioco: -==================== - -Se non vuoi limitare il gioco ad amici o giocatori artificiali, visita il -metaserver di Freeciv: - - http://meta.freeciv.org/ - -E' una lista di server Freeciv. Perche' il tuo server sia annunciato sul -metaserver, devi avviare civserver con l'opzione '--meta', o solo '-m' -per brevita'. - -Attenzione: - - 1) A causa dell'inclusione di nuove caratteristiche, versioni differenti del - client e del server sono spesso incompatibili. La versione 1.13.0 ad - esempio non e' compatibile con l versione 1.12.0 o precedenti. - - 2) Se il bottone Metaserver nella finestra di connessione non funziona, - controllate se il vostro ISP usa un proxy WWW obbligatorio e fatelo usare - a civclient attraverso la variabile d'ambiente $http_proxy. Per esempio, - se il proxy fosse proxy.mioisp.com sulla porta 8888, impostate $http_proxy - su http://proxy.myisp.com:8888/ prima di avviare il client. - - 3) Alcune volte non ci sono giochi sul metaserver. Alle volte succede. - Il numero di giocatori nel metaserver varia con l'ora del giorno. - Provate a crearne uno voi! - - -Giocare: -======== - -La partita puo' essere salvata ad ogni momento usando il comando "save" del -server, per esempio cosi': - - | > save miapartita.sav - -(Se il tuo server e' compilato col supporto per la compressione, e l'opzione -'compress' del server non e' impostata su 0 (zero), il file salvato puo' essere -compresso e rinominato miapartita.sav.gz .) - -Il client Freeciv funziona come ci si aspetterebbe da un gioco multiplayer di -Civilization. Questo significa che prima muovono tutti i giocatori umani, -quindi, appena gli umani hanno completato il loro turno, giocano tutti i -giocatori con IA. C'e' un'impostazione di "scadenza" del turno, che e' -predefinita a 0 secondi ( =nessun limite di tempo). Chi gestisce il server puo' -cambiare questo valore in ogni momento con il comando "set". - -Date un'occhiata al sistema di aiuto on-line. Tutti e tre i tasti del mouse -possono essere usati, e le funzioni sono documentate nell'help. - -I giocatori possono premere il tasto Invio per annunciare la fine del loro -turno, o semplicemente premere il bottone 'Turn Done' (Turno completo). - -Usate la finestra 'Players' (Giocatori) per vedere chi ha annunciato la fine -del proprio turno, e chi invece si sta facendo aspettare. (Ehi amico, stai -dormendo o cosa?? ;). - -Usate la riga di input in fondo alla pagina per trasmettere messaggi ad altri -giocatori. - -Potete mandare un messaggio ad un singolo giocatore (es. 'matteo') cosi': - - | matteo: Ritira quel carro armato *ORA*! - -Il server e' abbastanza intelligente da completare i nomi, quindi se aveste -scritto solo "mat:", avrebbe comunque trovato il giocatore che comincia per -'mat'. - -Potete invocare comandi del server dalla riga di input del client: - - | /list - | /set settlers 4 - | /save miapartita.sav - -Probabilmente il gestore del server vi lascera' invocare solo comandi -informativi. Questo perche' permettendo ai client di usare tutti i -comandi del server si avrebbero ripercussioni sulla sicurezza; pensate -se un giocatore scrivesse: - - | /save /etc/passwd - -Ovviamente il server non dovrebbe MAI girare con i privilegi di ROOT, per -ridurre questo tipo di rischi. - -Se giocate per la prima volta e volete farvi un'idea delle strategie, date -un'occhiata al Freeciv playing HOWTO, contenuto nel file HOWTOPLAY. - -Per molte piu' informazioni sul client, sul server esui concetti e le regole di -gioco, confrontate il manuale di Freeciv, disponibile presso: - - http://freeciv.org/wiki/It:Docs - - -Concludere il gioco: -==================== - -Ci sono tre modi in cui un gioco puo' finire: - -1) Se rimane una sola civilta'. -2) Si e' raggiunto "il giorno del giudizio". -3) Un giocatore costruisce e lancia un'astronave, che raggiunge per prima - Alpha Centauri. - -In ogni caso viene mostrata una tabella dei punteggi. -Consiglio: il gestore del server puo', con l'opzione 'end-year', impostare il -giorno del giudizio mentre il gioco si sta ancora svolgendo. Cio' e' utile -quando il vincitore e' ovvio e non volete giocare la noiosa fase di "sterminio -dei perdenti". - - -Riprendere una partita: -======================= - -Potete riprendere una partita salvata usando l'opzione '-f'del server. -Es: - - | % civserver -f nostrosalvataggio2001.sav - -o, se il salvataggio e' stato compresso dal server che lo ha creato: - - | % civserver -f nostrosalvataggio2001.sav.gz - -Ora i giocatori posono riconettersi alla partita: - - | % civclient -n Alexander - -Notate che il nome del giocatore e' specificato con l'opzione -n. E' vitale -che il giocatore usi lo stesso nome che aveva prima, se vuole essere ammesso. - -Il gioco puo' quindi essere riavviato con il comando 'start', come al solito. - - -Supporto per lingue locali: -=========================== - -Freeciv supporta diverse lingue. - -Potete scegliere quale linguaggio usare specificando un "locale". -Ogni locale ha un nome standard (es: 'it' per l'Italiano). Se avete installato -Freeciv, potete scegliere un locale impostando, prima di eseguire civserver e -civclient, la variabile di ambiente LANG con il nome standard di quel locale. - -Per esempio, presumendo di voler installare la localizzazione Italiana, fareste: - - export LANG; LANG=it (nella shell Bourne (sh) e simili), -or - setenv LANG it (nella shell C (csh) e simili). - -Per comodita' potreste inserire queste righe nel vostro file .profile (bash) o -.login (csh). - - -Messaggi di Log: -================ - -Sia il client e il server danno messaggi conosciuti come "messaggi di log". -Ci sono cinque categorie di messaggi di log: "fatal"(fatali), "error"(errori), -"normal"(normali), "verbose"(prolissi) e "debug". - -Per default, i messaggi fatali, di errore e normali sono scritti sullo -standard output su cui il client o il server e' stato avviato. Potete scrivere -i messaggi in un file invece che sullo schermo con le opzioni da linea di -comando "--log nomefile" o "-l nomefile". - -Potete cambiare il livello di mssaggi di log mostrati con "--debug livello" -o "-d livello" (o "-de livello" per il client Xaw, visto che "-d" e' ambiguo -fra "-debug" e "-display"), dove "livello" is 0, 1, 2 o 3. 0 mostra solo i -messaggi fatali, 1 mostra quelli fatali e gli errori, 2 (predefinito) mostra i -fatali, gli errori e i normali, e 3 mostra tutti i messaggi, siano fatali, -errori, normali o prolissi. - -Se avete compilato con DEBUG definito (un modo semplice per farlo e' fare -configure con --enable-debug), potete avere i messaggi di debug impostando il -livello 4. Inoltre e' possibile controllare i messaggi di debug (ma non gli -altri) file per file o linea per linea. Per farlo usate "--debug 4:str1:str2" -(avanti per quante linee volete, separate da due punti): cosi' qualsiasi nome -di file che abbia quelle stringhe come substringa avra' i messaggi di debug -attivi mentre gli altri saranno disattivati. Per controllare le linee, usate: -"--debug 4:str1,min,max" -Cosi' per i file che abbiano "str1" verranno mostrati solo messaggi di debug -compresi fra le linee min e max specificate. Solo una coppia (min,max) puo' -essere usata su un singolo file. - -Esempio: - - | % civserver -l mio.log -d 3 - -Questo manda tutti i messaggi del server, compresi i prolissi, nel file -"mio.log". - -Esempio: - - | % civclient --debug 0 - -Questo esclude tutti i messaggi del client che non siano fatali. - -Esempio: - - | % civserver -d 4:log:civserver,120,500:autoattack - -Questo attiva tutti i messaggi del server fatali, di errore, normali e -prolissi, piu' i messaggi di debug per certi moduli specificati. Nota che -"log" corrisponde sia a "gamelog.c" che a "log.c". Per "civserver.c", solo i -messaggi di debug fra le linee 120 e 500 saranno mostrati. Questo esempio -funziona solo se il server e' stato compilato con DEBUG. - - -Bug: -==== - -Avete trovato un bug? Siamo ansiosi di averne notizie per rimediare. -Leggete il file BUGS, per una lista di BUG noti in questa versione, e per -informazioni su come farci sapere di nuovi bug. - - -Mailing list: -============= - -Abbiamo 4 mailing list: - - freeciv-announce Annunci di interesse generale. - Questa e' una lista "solo in lettura", con rari messaggi. - In altre parole non potete postare, ma solo leggerla. - (Questi annunci sono postati anche su freeciv.) - freeciv-dev Sviluppo di Freeciv. - freeciv-commits Notifiche di cambiamenti al server SVN. - Questa e' una lista "solo in lettura", con messaggi - automatici. - In altre parole non potete postare, ma solo leggerla. - freeciv-i18n - -Tutte le liste sono aperte al pubblico e chiunque e' il benvenuto. - - -Internet Relay Chat (IRC) -========================= - -Parecchi giocatori e sviluppatori sono presenti sul canale #freeciv sui -server della rete Freenode. Provate a connettervi al server - - irc.freenode.net - -(Provate anche ad affacciarvi sul canale #freeciv-italia spesso ci trovate -i giocatori italiani. Ndt) - - -Nuove versioni: -=============== - -Speriamo di rilasciare una nuova versione stabile di Freeciv ogni quattro mesi -circa. Controllate il sito di Freeciv di tanto in tanto per vedere se c'e' -una nuova versione!! - - -E per finire: -============= - -Divertitevi! - - - -- Il team di Freeciv. - -=========================================================================== -Note per la traduzione in Italiano: - -Le note del traduttore sono segnate fra parentesi con 'Ndt'. -Il traduttore non si assume nessuna responsabilita' per eventuali -errori/omissioni nel presente documento. -Comunicate eventuali inesattezze all'indirizzo email: - -slug-freeciv@siena.linux.it - -per eventuali aggiornamenti/revisioni. -=========================================================================== diff --git a/doc/ja/BUGS.ja b/doc/ja/BUGS.ja deleted file mode 100644 index 5a6b82a079..0000000000 --- a/doc/ja/BUGS.ja +++ /dev/null @@ -1,154 +0,0 @@ -Original: CVS-1.17 -Translator: SAWADA Katsuya - -==== -バグ -==== - -Freeciv 2.2 は、「安定版(stable)」リリースです。普通に遊ぶにはバグ -がないと見なせます。もしもバグを見つけたら、是非教えて下さい。その結果、 -我々はそのバグを修正できるようになります。このファイルには今回のリリー -ス時点での既知のバグと、新しいバグを報告する方法が書かれています。 - -このバグリストは、ほとんど明白なバグのみです。完全なリストは、 - - https://www.hostedredmine.com/projects/freeciv - -を見て下さい。 - -既知のバグ: -=========== - - - CMA 設定は「ターン終了」を押した時にサーバに送られます。従って、ゲー - ムを保存と同じターンの CMA 変更は、失なわれるでしょう。 - - - easy AI は、初心者のプレイヤーにはそれほど易しくありません。ゲーム - 初期に AI があなたを負かすようなら、サーバ・オプションの - "generator" を 2 もしくは 3 にセットすることを試みて下さい。やり方 - は、サーバでゲームを始める前に、 「set generator 2」 もしくは - 「set generator 3」と打ちます。 - - - hard AI は、経験を積んだプレイヤーにはそれほど難しくありません。ま - だ間抜けな行動を起こします。例: AI は暴動の都市を飢饉/縮小させるよ - りそのままにすることを好みます。 - - - 時々、科学報告の「目標」メニューの科学が多過ぎることがあります。メ - ニューが画面の下を越えるので、あなたは一部の項目が選択できません。 - この問題は GTK+-1.2 クライアントのみ影響を受けます。 - - - esound サウンドドライバを利用している時、時々 - {ss} player for sample <01> not found - {ss} player for sample <01> not found - のようなメッセージ表示されるかもしれません。心配の必要はありません。 - - - esd サウンドプラグインを利用しているクライアントで ctrl-c を叩いた - ら、現在はループしている音がきちんと止まらないかもしれません。 - - - 不思議と最初の研究は、ターンの後に効力を発揮します。例えば大灯台を - 建築した時、トライリームは次のターンになって移動ボーナスを得ます。 - - - Xaw クライアントは、都市ダイアログを 25 都市まで表示できます。 - - - 自動攻撃は一般的にあまりうまく動作しません。 - - - サーバ内で移動を計画している時、自動開拓もしくは飛行機に対してサー - バはプレイヤーが持たない知識を使います。 - - - GTK+ クライアントでは、ときどき縮小地図の近くにゴミが表示されます。 - - - 自動探索のような自動化ルーチンは、トライリームをうまく扱えません。 - - - LOG_DEBUG は GCC コンパイラ以外では動作しません。 - - - サーバ変数をセットする時、ほとんどの場合サーバは、その値が可能かど - うかを調べません。 - - - 複数の全体作業リストを同時に操作したら、悪い事が起きます。 - - - たとえシングルプレイヤーであったとしても、AI は各ターンで人間プレイ - ヤーの前後両方動く機会があります。これにより、時々 AI が2度動いてい - る印象を与えます。 - - - Xaw クライアントは KDE ウィンドウ・マネージャではうまく動作しません。 - GTK+ クライアントか他のウィンドウ・マネージャを使って下さい。 - -バグを報告する: -=============== - -(そのバグが翻訳上のものであるなら、その言語の「コンタクトを取る相手」 -にメールして下さい。名前とメールアドレスは - を見て下さい。) - -手順: - - - 上記の既知のバグにあるか調べる :-) - - - Freeciv ウェブサイトを見て、最新版を利用しているか調べる(我々はその - 問題を既に修正しているかもしれません。) - - さらに CVS リポジトリの開発中のスナップショットも利用して頂けます。 - - http://files.freeciv.org/latest/ - - から FTP できます。 - - - バグを避ける方法を公表しているかどうを確かめるために Freeciv ウェブ - サイト上の FAQ を調べて下さい。 - - - バグが既に報告されていないか確かめるために - - https://www.hostedredmine.com/projects/freeciv - - の Freeciv バグ追跡システムを調べて下さい。 - - - バグを報告する! - - Freeciv 開発者にコメントを送りたいがバグ報告に委ねたくないなら、 - Freeciv 開発者メーリング・リストへemailを送ることもできます。 - - 何らかの GDK/GTK メッセージを受け取ったら、(以下のようなもの: - - Gtk-CRITICAL **: file gtkobject.c: line 1163 (gtk_object_ref): - assertion oject->ref_count > 0' failed. - - ) クライアントを再起動して、 "-- --g-fatal-warnings" をコマンドライ - ンに追加して下さい。残念ながらこれは現在の CVS か 1.15 以降のバージョ - ンでのみ機能します。この方法でコアダンプを入手できます。ぜひバグ報 - 告にこのコアダンプの「スタックトレース」を含めて下さい。 - - バグ報告に含めるべきもの: - - - 表示されるメッセージを含む、問題の説明。 - - - 使っているクライアント(GTK+, Xaw)を示す。 - - - 次の名前をバージョンを知らせる。 - - - 使用しているオペレティーング・システム。"uname -a" が有益です。 - - - Freeciv のバージョン。 - - - GTK+ クライアントを使用しているなら、 GTK+, GLib, imlib ライ - ブラリのバージョン(わかれば)。 - - - Xaw クライアントを使用しているなら、 X, PNG, Z, Xaw の各ライ - ブラリのバージョン(わかれば)と、特にそれが標準の Xaw か、派生 - の Xaw3d, Xaw95, Nextaw か。 - - - ソースコードからコンパイルしているなら、コンパイラの名前とバー - ジョン。 - - - バイナリパッケージからインストールしているなら、パッケージ、 - ディストリビューションの名前と、どこから入手したか。 - - - Freeciv が「コアダンプ」したなら、「スタックトレース」を得るため - にデバッカを使ってくれと頼むかもしれません。このために "core" ファ - イルと使用したバイナリファイルが必要なので、両方ともバックアップ - を取っておいて下さい。 - -さらなる情報: -============= - -さらなる情報は、常にウェブサイトを見て下さい。 - - http://www.freeciv.org/ diff --git a/doc/ja/HOWTOPLAY.ja b/doc/ja/HOWTOPLAY.ja deleted file mode 100644 index 23817de170..0000000000 --- a/doc/ja/HOWTOPLAY.ja +++ /dev/null @@ -1,240 +0,0 @@ -Original: CVS-1.2 -Translator: SAWADA Katsuya - -Freeciv の遊び方 HOWTO - - 原文: Michael Hohensee (別名 Zarchon) - - -インストールの仕方は INSTALL に書いてあります。 -実行の仕方は README に書いてあります。 - -Civilization ゲームを一度も遊んだことがないなら、マニュアルを読むこと -から始めるのが簡単です。マニュアルは以下から入手できます。 - - http://www.freeciv.org/wiki-ja/マニュアル - -Freeciv の遊び方のアイディアを探しているなら、このまま読み進めて下さい。 - - - 今あなたは起動中の Freeciv を目の前にして、最初にちょっとゲー -ムをしてみたいでしょう。数回独りで遊んでみることを勧めます。そうすると -ものごとがどうなっているかの感触が捕めます。ただ、これは必須ではありま -せん。他のプレイヤーや AIと遊んで勉強するのもいいでしょう。 - -Q: 基本的な戦略を教えてもらえますか? - - まず言っておきたいことは、これは「完璧」な戦略ではありません。 -非常によい戦略でもありません。しかしこの戦略で Freeciv を遊び始めるこ -とができるではずです。 Freeciv の魅力の一つは、新しい戦略の発見にあり -ます。 - - ゲームを幾つかの段階に分けることができます: - - 第一期発展過程 - 技術の副過程 - 第二期発展過程 - 生産過程 - 敵の完全絶滅過程 - -第一期発展過程: - - この過程は最も重要です。最初に行なうべきことは、都市を建て島を -調査することです。沢山の都市、最低でも 7個か8個の都市が必要です。 - - 一番肝心なことは、できるだけ多くの土地を占領することです。都市 -を作る時、自分の他の都市と領土があまり重ならないように気をつけましょう。 -都市の上でマウスをクリックすると、都市が利用している土地が分かります。 -表示される都市とその周辺の地図が、その都市の領土です。このことを頭に入 -れて、都市同士が接するように配置します。あまり都市同士を離すと、敵から -の防御とこの過程を管理することが難しくなります。(ヒント: 都市は、馬の -上か魚の近くに作りましょう。) - - 都市を一つか二つ持ったら、科学の割合を現在の政治体制で許されて -いる最大に設定します。税率について心配する必要はありません。どの建築物 -を建てても、お金は出て行きません。どの都市にも、開拓者を作らせます。開 -拓者を作れば作るほど、沢山の都市を持つことができます。都市が多ければ技 -術の獲得が速くなり、技術の獲得が速ければ勝つのが速くなります。できるだ -けの都市を作った後は、開拓者を潅漑と道路建築に向けます。 - -(注意: 沢山の開拓者支援の影響で都市の食料生産が +1 を下回り、食料増産 -のために人をやりくりできないなら、寺院の建築に切り替えます。他のプレイ -ヤーとまだ接触していないなら、まだ軍事部隊を作る必要はありません。) - - 上記の間、可能なだけ速く技術を獲得しています。最初に「共和制」 -次に「民主制」「鉄道」「産業化」を狙います(人によっては共和制の前に君 -主制にを狙います)。新しい政治体制を発見したらすぐに革命を起こし、政治 -体制を変更します。都市の扱いは、専制政治下で行なうより共和制下の方が簡 -単です。しかし共和制下では、都市制限の外で軍事部隊を維持するのがとても -難しくなることに注意しておいて下さい。他に、政治体制によって許される科 -学の割合が変化するので、新しい政治体制に変更した後は科学が最大になって -いるか調べるのを忘れないようにします。 - - 民主主義を獲得したら、第二期発展過程へ突入する準備ができました。 -民主主義政府へ変更し、全ての都市に寺院を建築し、贅沢の割合を 100% に設 -定します。すると即座に全ての都市で祝典が催され、余剰食料がある限り一ター -ンにつき一つの割合で大きくなります。都市が十分大きくなったら、贅沢の割 -合を 20-40% の適当な割合に下げます。この時が第二期発展過程です。 - - このマイナス面は、贅沢を 100% に設定することで、科学研究がほぼ -停止することです。都市が発展した後、科学への支援を 50%程度にし、少しゆっ -くりな速度で技術獲得を再開します。ある程度探索を終えていて、近い中に他 -のプレイヤーにより脅かされることがないなら、獲得に時間がかかる研究を始 -めるまで、科学を最大の保つのもいい考えです。 - -第二期発展過程: - - 都市が適当な人口になったら、贅沢を徐々に減らし税を増やします。 -一旦 30% 程度に贅沢を下げ、税収が黒字になるだけ維持しつつ税をできるだ -け科学にします。鉄道を手に入れたら道路を全て鉄道にします。不可能なら、 -最低でも生産用の土地と輸送網を形成している土地は鉄道にします。(ヒント: -都市で利用されている土地を道路や鉄道にすると、都市の生産が増えます。中 -心の土地はアップグレードする必要はありません。自動的に行なわれます。) - - 産業化と軍事技術を発展させる時がきました。他の島に都市を建て始 -める時でもあります。まだ重要な探索が残っているなら、それも行ないます。 -敵がどこにいるか知る必要があります。船に適している技術に科学を向け、マ -ゼランの探検航海を建てることを考えます。準備ができているなら、次の過程 -に進みます。 - -生産過程: - - 今、あなたは都市に工場や発電所を建てています。各都市でできるだ -け多くの生産を行ないたい。すると、公害が問題になってきます。できるだけ -早く、大量輸送を建てるための大量生産、リサイクル・センターを建てるため -のリサイクルに到達するように務めます。全ての都市を強くしたら、軍事部隊 -を作ります。(注意: 他のプレイヤーと接触したら、すぐに小数の攻撃部隊と、 -最低でも一都市につき一つの防御部隊を作るべきです。) - - 何者かに攻撃しようと考えているなら、科学を 0%にし、混乱を引き -起こさない範囲で税率を最大に設定します。忘れないで下さい、お金で部隊を -作ることができるということを! - - -敵の完全絶滅過程: - - この過程はしばしば起こりますが、高度な武器を用いるとても楽しい -ものです。 - - 比較的弱そうな敵を選び、2,3の船に乗せた軍隊を送ります。敵の都 -市を占領し、都市をより沢山の部隊を作るために使用します。そして、作った -部隊で残りの都市を排除します。1/4 以上を敵に見せてはいけません。命取り -になります。 - -必要なだけ繰り返す ;-) - -[平和主義者への注: Freeciv では、だれよりも早くアルファ・ケンタウリに -着く宇宙船を作って打ち上げることでも勝つことができます。] - - -追加質問: - -Q. ほかにどんな戦略がありますか? - -多くのチュートリアルと戦略ガイドが Freeciv ウェブ・ページにあります: - - http://www.freeciv.org/wiki-ja/チュートリアル - - -加えて、Freeciv オンライン・ヘルプには別の戦略があります。 - - -Q. マルチプレイヤーのゲームでは、 timeout をどのぐらいに設定すべきです -か? - - 答えはプレイヤーの数に依存します。二人で遊んでいるなら、普通は -timeout 0 を使って逃げることができます。二人以上の場合、もしくは二人の -うち一人が勝手に端末から離れた時にゲームを中断したくない場合には、60秒 -の timeout で通常は十分です。ゲーム後半では、事態が複雑になるので 240 -秒まで timeout を延ばすのがいいかもしれません。一般に、プレイヤーが多 -くなるほど、 timeout を延ばす必要があります。快適と思える timeout を自 -由に設定して下さい。ただし、 timeout が 300 以上になると不快に思うプレ -イヤーが出てくることを忘れないで下さい。 - - -Q. 地図のサイズはどう設定すべきですか? - - 地図のサイズはどのくらいプレイヤーが存在するか、どのくらい速く -ゲームの修了したいかに依存します。デフォルトの地図サイズ(80x50)は、二 -人で軽くゲームするには大きすぎますが、四人以上参加するような場合にはと -ても早く決着がつきます。 - - 速いゲームでは、防御部隊を作る時間が全然ないために、勝者以外の -誰もが挫折する傾向があります。四人以上で遊ぶなら、 80x80 を使うべきで -す。五人以上なら、 100x100 ぐらいがいいかもしれません。 - - -Q. "generator" オプションとは何ですか? - - "generator" オプションは、地図生成の処理を変更します。この設定 -を変更せずに数回遊んだことがあるなら、小さな島の恐ろしさをきっと聞いた -ことがあるでしょう。小さな島症候群(Tiny Island Syndrome, TIS)は、人を -気違いに導くものとして知られています。この対策として、我々の愛する、そ -して親切なプログラマが generator オプションを導入しました。値が 1 なら、 -異なる(そしてたぶん不公平な)大きさの島を持つ通常の地図を生成されます。 -しかし、 2, 3, 4 に設定した時は、等しい大きさの島(と、時々幾つかの小さ -な島)が生成されます。この方法だと、「だめな島のせいで」負けたと言い訳 -することができなくなります。 - - -Q. 開始時の金を増やしてゲームを簡単にしてもかまいませんか? - - もしあなたが不慣れで相手も不慣れなら、開始時のお金を増やすこと -に恐らく誰も反対しないでしょう。しかし、遊び方の勉強のためにはよい方法 -ではありません。沢山のお金を持って開始するとゲームが簡単になり、デフォ -ルトのお金で対処する方法が学びづらくなります。多くの経験を積んだプレイ -ヤーは、この設定を増やしません。敵が少ないお金で対処する方法を知ってい -たら、あなたの島はアトランティス大陸と同じ道を辿り、沈んでしまうでしょ -う。 - -注意: 同じことは、 "techlevel" と "researchspeed" の設定にも当てはまり -ます。 - - -Q. その他の設定についてはどうですか? - - 残りの設定は主に、生成された世界とゲームの方法を決めるものです。 -"specials" を増加させると土地に対する資源の割合が増えます。"huts" はタ -ダで手に入る小屋の量を決めます。 "settlers" や "explorer" を増加させる -とゲームの進行が速くなったり、小屋に時々住んでいる「$#@! バーバリアン」 -から助かり易くなります。 - - 鉄道関連の設定は、土地の上に鉄道を敷くことでどのくらい食料/交 -易/生産が増えるかを決定します。(訳注: 鉄道に関する設定は -terrain.ruleset によって行なわれます。) "foodbox" 設定は、新しい人が加 -わわる前に都市内の一人一人が持たなければいけない食料の量です。 - - "mountains" が多いと山が多い地図、 "deserts" が多いと砂漠が多 -い地図、他も同様です。 - - -Q. 〜という科学を得るにはどうしたらいいですか? - -オンライン・ヘルプの科学の項目を見て下さい。得たい科学より先に得る必要 -のある科学が表示されます。 - -かわりに David Pfitzner の "techtree" 図を -http://files.freeciv.org/contrib/charts/ からダウンロードすることもでき -ます。(訳注: 拙者の翻訳版が -http://amanatto.hp.infoseek.co.jp/freeciv/index.ja.html にあります。) - -これらがうまくいかないなら、 'data/default/techs.ruleset' の科学ルール -セットを読むこともできます。これには全ての科学のリストと、その科学を得 -るためにどの科学が必要かが示されています。 - - -Q. 一番役に立つ軍事部隊は何ですか? - - 攻撃用: - - 装甲車(戦車), ヘリコプター, 巡航ミサイル, 戦艦, 輸送船, 核兵器, - 榴弾砲, 爆撃機 - - 防御用: - - 装甲車(戦車), 自動化歩兵, 榴弾砲, 戦艦, 巡航ミサイル, 核兵器 - -攻撃は最大の防御だということを忘れないで下さい。 - - -この文章への追加を歓迎します! diff --git a/doc/ja/README.ja b/doc/ja/README.ja deleted file mode 100644 index 9dfce52807..0000000000 --- a/doc/ja/README.ja +++ /dev/null @@ -1,507 +0,0 @@ -Original: CVS-1.9 -Translator: SAWADA Katsuya - -==================== -Freeciv バージョン 2.2 -==================== - -ようこそ Freeciv へ! - -このアーカイブには、主に Unix 下の X で動くフリーな Civilization クロー -ンが入っています。このゲームは、ローカルやネットワーク越しでのマルチプ -レイヤーゲーム、さらに AI をサポートします。 AI は、自分の富を目指して -行動する沢山のプレイヤーを与えます。 - -Freeciv の目的は Sid Meier と Microprose [tm] によって発表されている -Civilization II [tm] とのだいたいのルール互換です。わずかなルールは我々 -がもっと意味をなすと考えて異なります。また、我々はカスタマイズ可能な非 -常にたくさんのパラメータを持ちます。 - -Freeciv は Civilization とは完全に独立して実装されています。 Freeciv -を遊ぶのに Civilization は必要ありません。 - -まだコンピュータ・プレイヤーは交渉できません。しかし、ルールは完璧で、 -マルチプレイヤーとネットワーク・コードは優秀です。 - - -翻訳物: -======= - -以下の場所に、このファイルの翻訳版(これ)や他の Freeciv 文章を見つける -ことができるかもしれません: - - オランダ語 ./doc/nl - フランス語 ./doc/fr - ドイツ語 ./doc/de - イタリア語 ./doc/it - 日本語 ./doc/ja - スウェーデン語 ./doc/sv - -自国語向けの翻訳がない場合でも、ゲーム自身がその言語をサポートしている -可能性があります。下の「自国語サポート」の項を見て下さい。 - - -ウェブサイト: -============= - -Freeviv にはウェブサイトがあります。 - - http://www.freeciv.org/ - -どうぞ我々のサイトを訪れて下さい。最新の Freeciv ニュース、リリース、 -パッチが入手できたり、メーリングリストをみつけたり、世界中で遊ばれてい -るゲームの記録を見ることができます。 - - -ライセンス: -=========== - -Freeciv は GNU General Public License の下でリリースされます。手短に言 -うと、このプログラム(ソースを含む)を自由にコピーしてもかまわないという -ことですが、詳細は COPYING ファイルを見て下さい。 - -コンパイルとインストール: -========================= - -あなたのマシンでコンパイルされインストールされた Freeciv をどうやって -得るかについての説明は、注意深く INSTALL ファイルを読んで下さい。 - - -新しいゲームを始める: -===================== - -Freeciv は実際には二つのプログラム、サーバとクライアントからなります。 -ゲームをしている時には、一つのサーバプログラムと人間のプレイヤーと同じ -だけのクライアントが実行されています。サーバは X を必要としませんが、 -クライアントには必要です。 - - 注: - 以下の例では、あなたのシステムに Freeciv がインストールされていて、 - "civclient" と "civserver" プログラムを含んでいるディレクトリが PATH - に含まれているとみなします。 Freeciv がインストールしないなら、 - Freeciv のトップディレクトリにある "civ" や "ser" プログラムを使いた - いと思うかもしれません。これらは "civclient" や "civserver" とまった - く同じ様に使うことができます。 - -Freeciv の実行には、サーバ、それからクライアント、AI の起動を必要とし -ます。その後、ゲームを開始するようにサーバに告げます。以下はそのステッ -プです: - -サーバ: - - サーバを起動するにはこのようにします: - - | % civserver - - コマンドラインオプションを表示します: - - | % civserver --help - - サーバを起動するとプロンプトが表れます: - - | 初歩的なヘルプが欲しければ、 'help' と打って下さい。 - | > - - ヘルプコマンドを用いるとこのような情報が表れます: - - | > help - | ようこそ - これは Freeciv サーバの初歩的なヘルプテキストです。 - | - | コマンドとオプションという、二つの重要なサーバ概念があります。 - | 'help' のようなコマンドは、サーバと交信するために使われます。 - | 幾つかのコマンドは、スペースで区切られた複数のパラメータを取ります。 - | ほとんどの場合、コマンドとコマンド引数は省略されます。 - | オプションは、サーバの動作をコントロールします。 - | - | コマンドとオプションについてもっと多くの情報を得るためには、 'help help' - | と打って下さい。 - | - | せっかちな方のための、主要なコマンド: - | show - 現在のオプションを見ます。 - | set - オプションをセットします。 - | start - プレイヤーが接続していたらゲームを開始します。 - | save - 現在のゲームを保存します。 - | quit - 終了します。 - | > - - 望むなら、ゲームの幾つかのサーバオプションを設定するために 'set' コ - マンドを利用できます。 'show' コマンドを用いるとオプションのリストを - 見ることができ、各々の詳しい説明は 'help <オプション名>' で表示され - ます。 - - 例: - - | > help xsize - | オプション: xsize - 地図の幅 - | 状態: 変更可 - | 現在値: 80, 最小値: 40, 既定値: 80, 最大値: 200 - - そして: - - | > set xsize 100 - | > set ysize 80 - - これでデフォルトの地図 80x50 の二倍になりました。 - -クライアント: - - 今や人間プレイヤーが参加する時です。 Freeciv クライアントを実行しま - す: - - | % civclient - - この場合サーバが同じマシンで実行されているとみなします。そうでなけれ - ばコマンドに '--server' オプションを与えるか、クライアントを起動した - 時に表示される最初のダイアログボックスに入力します。 - - 例えば、今サーバを 'neptune' という名前のマシンで実行しているとしま - す。プレイヤーは次のようなコマンドで参加できます。 - - | % civclient --server neptune - - あなたが唯一の人間のプレイヤーであって、開始するのが一つのクライアン - トだとします。標準的な Unix 流儀では、最後にアンパサンドを付けること - で、「背後で」クライアントを実行できます。 - - | % civclient & - - クライアントのオプションで他には、 '--tiles' を試したくなるかもしれ - ません。このオプションを使うと異なる「タイルセット」を使うことができ - ます(タイルセットとは、地形、部隊、その他で使うグラフィックスです)。 - ディストリビューションには二つ主なタイルセット: - - isotrident: civ 2 に似た isometric(等角)タイルセット - (Xaw クライアントではまだサポートされていません。) - - trident: civ1 スタイル・タイルセット(30x30) - - このリリースでは、デフォルトのタイルセットは GTK+, amiga, win32 クラ - イアントでは isotrident, xaw クライアントでは trident です。 - "_shields" 派生は盾形の旗を使います。この場合、旗が小さくて隠れた部 - 分が少なくなるかもしれません。両方を使ってみて自分で決めて下さい。 - trident タイルセットを使ってクライアントを開始するには、 - - | % civclient --tiles trident - - とします。他のタイルセットは ftp や webサイトから入手できます。 - - サーバコマンドの使用権をクライアントに与えることができます。クライア - ントに info コマンドの使用権を与えるには、サーバプロンプトで、 - - | > cmdlevel info - - のように打ちます。これでクライアントは '/help', '/list', '/show - settlers' などを使用できるようになりました。 - -コンピュータ・プレイヤー: - - AI プレイヤーを作るには二つの方法があります。一つ目は、サーバオプショ - ン 'aifill' を設定することで(人間と AI の)プレイヤーの数を指定するこ - とです。例えばこうです: - - | > set aifill 7 - - ゲームを開始するためのサーバコマンド 'start' を使った時に、人間が操 - 作していないプレイヤーは全て AI プレイヤーになります。上の例の場合、 - 二人の人間プレイヤーが参加していたら 5人の AI プレイヤーが作られます。 - - 二つ目の方法は、サーバコマンド 'create' を使って明示的に AI を作るこ - とです。例えばこうです: - - | > create HumanKiller - - これは HumanKiller と呼ばれる AI が操作するプレイヤーを作ります。 - - 人間プレイヤーが全員自分の国を選択した後で AI プレイヤーへ国が割り当 - てられます。 AI プレイヤーの名前に国のリーダーを使うことで、AI の国 - を選択できます。例えば、 AI のローマ作りたければ、サーバコマンドで - - | > create Caesar - - を使います。これは単に優先するだけだということに注意して下さい。人間 - プレイヤーがローマを選ばない時だけ、 AI がローマになります。 - -サーバ: - - みんなが参加したら、 "start" コマンドを使ってゲームを開始します。(誰 - が参加しているかを見るには "list" コマンドを使います) - - | > start - -さぁ、ゲームの始まりだ! - - -ゲームのアナウンス: -=================== - -ローカルの友達や AI プレイヤーに敵を限定したくなければ、 Freeciv メタ -サーバを訪れて下さい。 - - http://meta.freeciv.org/ - -ここには Freeciv サーバがリストされます。自分のサーバをそこへアナウン -スするには、 '--meta' もしくは短かく '-m' オプション付きで civserver -を起動して下さい。 - -注意: - - 1) 新しい機能の追加により、クライアントとサーバのバージョンが違うとう - まくいきません。例えば 1.14.0 は、 1.13.0 やそれ以前のバージョンと - は非互換です。 - - 2) 接続ダイアログでメタサーバ・ボタンが動作しない場合、あなたの ISP - が WWW プロクシを強制していないか、もしそうなら civclient が - $http_proxy 環境変数を通して WWW にアクセスしているかを調べて下さ - い。例えばプロクシが proxy.myisp.com のポート 8888 なら、クライア - ントを起動する前に $http_proxy へ http://proxy.myisp.com:8888/ を - 設定します。 - - 3) 時にはメタサーバにゲームがないことがあります。可能性はあります。プ - レイヤーの数は日によって異なります。サーバを自分自身で立ち上げましょ - う。 - - -ゲームを遊ぶ: -============= - -サーバコマンド 'save' を使っていつでもゲームを保存できます。こんな感じ -です: - - | > save mygame.sav - -(サーバが圧縮サポート付きでコンパイルされていて、サーバオプション -'compress' が 1以上に設定されているなら、ファイルは 'mygame.sav.gz' と -いう名前で圧縮されます。) - -あなたがマルチプレイヤー civilization ゲームに期待することはだいたい -Freeciv クライアントで動きます。即ち、全人間プレイヤーは同時に動き、全 -AI プレイヤーは人間プレイヤーが自分のターンが終了してから動きます。ター -ンにはタイムアウト値があり、デフォルトで 0 秒(タイムアウトなし) に設定 -されています。サーバオペレータはこの値を 'set' コマンドを使って好きな -値に変更できます。 - -オンライン・ヘルプシステムを眺めてみて下さい。3つのマウスボタン全部を -使います。使い方はヘルプに書いてあります。 - -プレイヤーは「リターン」キーを叩くか、「ターン終了」ボタンを押すことで、 -自分のターンが終了したことを知らせます。 - -誰が自分のターンを終了したか、また誰があなたのターン終了を待っているか -を知るには、「プレイヤー」ダイアログを使います。 (Hey feller, are you -asleep or what?? ;). - -他のプレイヤーにメッセージをブロードキャストするには、ウィンドウの一番 -下にある入力行を使います。 - -特定のプレイヤー(例: 'peter')へメッセージを送るにはこうします: - - | peter: move that armor away *NOW*! - -サーバは「名前補完」を行なえるだけ十分賢いので、"pet:" と入力したなら -入力した名前の一部に一致するプレイヤー名を見つけます。 - -サーバコマンドをクライアントの入力行から発行できます。 - - | /list - | /set settlers 4 - | /save mygame.sav - -サーバの管理者は、恐らくあなたが情報コマンドだけしか発行できないように -しています。この理由の一つ、全てのサーバコマンドをクライアントが使える -ようにするとセキュリティの問題があるからです。例えば、プレイヤーが次の -コマンドを実行したことを考えてみて下さい。 - - | /save /etc/passwd - -もちろんこの種のリスクを減らすために、どんな場合でも特権を与えるスーパー -ユーザで、サーバを実行すべきではありません。 - -もしゲームを開始して、戦略のアイディアが欲しくなったら、 HOWTOPLAY ファ -イルに含まれている Freeciv playing HOWTO を見て下さい。 - -クライアント、サーバ、そしてゲームのコンセプトやルールについてのもっと -沢山の情報は、 Freeciv マニュアルを見て下さい。ウェブページにあります: - - http://www.freeciv.org/wiki-ja/マニュアル - - -ゲームの終局: -============= - -ゲームの終局は三つの場合があります。 - -1) 一民族だけ残る。 -2) 終了年に到達する。 -3) プレイヤーが宇宙船を建て、打ち上げ、アルファ・センタウリに最初に到 - 着する。 - -スコアテーブルにはどの場合も表れます。ヒント: サーバ管理者はゲームの実 -行中に 'endyear' オプションを変更することで終了年を設定できます。これ -は、勝者は明白で「後片づけ期間」を我慢して遊びたくない時、役に立ちます。 - - -ゲームの復元: -============= - -サーバオプション '-f' を使って保存されたゲームを復元できます。例: - - | % civserver -f oursave2001.sav - -セーブファイルが圧縮されたものであれば、こうします。 - - | % civserver -f oursave2001.sav.gz - -今、プレイヤーは再びゲームに参加できます。 - - | % civclient -n Alexander - --n オプションでプレイヤー名を指定できることに注意して下さい。再接続が -許可されているなら、プレイヤーは過去に実行していた時と同じ名前を使う必 -要があります。 - -この後、普通は 'start' コマンドでゲームを再スタートします。 - - -サーバの自動開始: -================= - -最大数のプレイヤーが接続された時、サーバは自動的に開始します。最大数の -プレイヤーは 'maxplayers' オプションで設定できます。 - - -サーバ自動開始: -=============== - -最大数のプレイヤーが接続した時、サーバは自動開始します。最大数のプレイ -ヤーは、 'maxplayers' オプションで設定できます。 - - -自国語サポート: -=============== - -Freeciv は多くの言語をサポートしています。 - -"locale" を指定することである場所の言語を選択できます。各 locale は標 -準名を持ちます(例えばドイツ語は 'de')。既に Freeciv をインストールして -いるなら、 civserver や civclient を実行する前に環境変数 LANG を設定す -ることで locale を選択できます。 - -例えばドイツ語の地域化を使いたいと望むなら、こうします: - - export LANG; LANG=de (ボーンシェル(sh)の時) -もしくは - setenv LANG de (C シェル(csh)の時) - -(これを .profile ファイルや .login ファイルで行なうこともできます。) - -(訳注: 日本語の標準名は ja です。) - - -ログメッセージ: -=============== - -クライアントとサーバは、「ログメッセージ」と呼ばれるメッセージを印字し -ます。ログメッセージには五つの種類があります。「致命的(fatal)」「エラー -(error)」「通常(normal)」「冗長(verbose)」「デバッグ(debug)」です。 - -デフォルトでは、致命的、エラー、標準のメッセージはクライアントやサーバ -を開始した標準出力へ印字されます。コマンドラインオプション "--log ファ -イル名" もしくは"-l ファイル名" を使うことで、画面の代わりにファイルへ -ログメッセージを吐き出すことができます。 - -表示されるログメッセージのレベルを "--debug レベル" もしくは "-d レベ -ル" で変更できます(Xaw クライアントの場合 "-d" は "-debug" なのか -"-display" なのかがあいまいなので、"-d レベル" の替わりに "-de レベル" -を使います)。ここで「レベル」は 0 から 3 の数値です。 0 は致命的なメッ -セージだけを表示、致命的、エラーを表示、 2(既定値)は致命的、エラー、通 -常を表示、3 は致命的、エラー、通常、冗長の全てを表示することを表わしま -す。 - -DEBUG を定義してコンパイルしているなら(これを行なう簡単な方法は -configure に --enable-debug を付けます)、レベルを 4 に設定することでデ -バッグレベルメッセージを吐きます。さらに、ファイル単位、行単位でデバッ -グレベルメッセージを設定することもできます(他のレベルのメッセージに対 -してはできません)。"--debug 4:str1:str2" (好きなだけコロンで区切った文 -字列を並べる)。このようにするとこれらの文字列にファイル名が部分的にで -も一致すると、そのファイルのデバッグログメッセージが有効になります。他 -のデバッグメッセージは抑制されます。行を制御するには "--debug -4:str1,min,max" の形式を使います。 str1 に一致するファイルの min から -max の範囲のデバッグメッセージだけが印字されます。各ファイルに対して -(min,max) 一組だけが適用できます。 - -例: - - | % civserver -l my.log -d 3 - -これは冗長レベルのメッセージを含むサーバログメッセージ全てをファイル -"my.log" へ出力します。 - -例: - - | % civclient --debug 0 - -これは致命的以外のログメッセージ全てを抑制します。 - -例: - - | % civserver -d 4:log:civserver,120,500:autoattack - - -これは、致命的、エラー、通常、冗長メッセージと、指定したモジュールのデ -バッグベルメッセージを有効にします。 "log.c" だけでなく "gamelog.c" に -も一致することに注意して下さい。 "civserver.c" に対しては 120行から -500行間のデバッグメッセージが印字されます。この例はサーバが DEBUG 付き -でコンパイルされている時だけ動作します。 - - -バグ: -===== - -バグはありましたか?我々はバグを修復するための情報をあなたから聞きたい -と思っています。このリリースで知られているバグのリストと新しいバグ報告 -に関する情報は BUGS ファイルを見て下さい。 - - -メーリングリスト: -================= - -我々は四つのメーリングリストを維持しています: - - freeciv-announce 一般の人が関心を持つアナウンス - これはまれにしかメールされない「読み出し専用」リストです。 - このリストへは投稿できません。読むだけです。 - (ここへ送られたアナウンスは freeciv へも送られます。) - freeciv-i18n Freeciv 翻訳。 - Freeciv コード、文章、ウェブサイトを英語以外に翻訳 - する上での議論。 - freeciv-dev Freeciv 開発用。 - freeciv-commits SVN リポジトリの変更通知。 - これは自動的に送られる「読み出し専用」リストです。 - このリストへは投稿できません。読むだけです。 - -全てのリストは一般へ歓迎されています。誰でも参加を歓迎します。 - -(訳注: メールは英語で送って下さい。日本語のメーリングリストはありませ -ん。) - - -Internet Relay Chat (IRC) -========================= - -一部のプレイヤーと開発者が freenode network の #freeciv に入りびたって -います。サーバへ接続してみて下さい。 - - irc.freenode.net - - -新版のリリース: -=============== - -我々は、およそ四ヶ月ごとに Freeciv をリリースしたいと考えています。新 -しいバージョンがないか時々ウェブサイトを見に来て下さい。 - - -最後に: -======= - -Have fun and give 'em hell! - - -- Freeciv チーム diff --git a/doc/nl/BUGS.nl b/doc/nl/BUGS.nl deleted file mode 100644 index 22646377ef..0000000000 --- a/doc/nl/BUGS.nl +++ /dev/null @@ -1,168 +0,0 @@ -================ -BUGS c.q. FOUTEN -================ - -Freeciv 2.2 is een "stabiele" versie en wordt bug/foutvrij genoeg geacht -voor dagelijks gebruik. Indien u echter een bug ontdekt dan willen we dat echt -graag weten, zodat we dat kunnen verhelpen. Dit document is een opsomming van -ons bekende fouten in deze versie en geeft informatie over hoe u een nieuwe -bug kunt rapporteren. - -De opsomming betreft uitsluitend de meest zichtbare fouten. Voor een complete -opsomming zie: - - https://www.hostedredmine.com/projects/freeciv - -BEKENDE FOUTEN: -=============== - - - Sommige regels met speciale tekens erin verschijnen blanco indien uw locale - op "C" is ingesteld. Als een noodoplossing kunt u uw locale op iets anders - zetten, zoals "en_US" of uiteraard "dutch" ;-) - - - Wijzigingen in de Burgemeester-instellingen worden pas naar de server - gezonden als u op de 'Beurt klaar' knop klikt (of Enter geeft). Wijzigingen - die u maakt in dezelfde beurt als die waarin u het spel opslaat komen als - gevolg hiervan dus niet in het opgeslagen spel terecht. - - - Als u de burgemeester gebruikt is het resulterende opgeslagen spel niet - 'endian' en 64bit veilig. U kunt deze spelen dus niet overdragen naar een - computer met een andere architectuur. - - - De 'easy' KI is niet gemakkelijk genoeg voor beginnende spelers. Als de KI - u al in het beginstadium van het spel op uw donder geeft, probeer dan de - 'generator' serveroptie op 2 of 3 te zetten. Uiteraard voordat u het spel - begonnen bent. Aan de serverprompt type: - set generator 2 - of: - set generator 3 - - - De 'hard' KI is niet sterk genoeg voor zeer ervaren spelers en doet nog - steeds enkele domme dingen. Hij verkiest het bijv. om steden in opstand te - laten boven het laten uithongeren/krimpen. - - - Soms zijn er zoveel vooruitgangen in het 'doel' menu van het - wetenschappelijk rapport, dat het menu voorbij de onderkant van het scherm - komt en u niet alles meer kunt selecteren. - - - U kunt some het bericht krijgen - {ss} speler voor fragment <01> niet gevonden - {ss} speler voor fragment <01> niet gevonden - wanneer u de esound driver gebruikt. Dat is niets om u zorgen over te - maken. - - - Sommige gevolgen van wonderen en onderzoek hebben pas de beurt erop - effect. Bijv. wanneer u de vuurtoren gebouwd hebt dan zullen de triremen - pas de beurt erop een bewegingspunt extra krijgen. - - - De XAW client kan slechts 25 burgers tonen in de stadsdialoog. - - - De auto-aanval werkt in het algemeen niet erg goed. - - - Wanneer u een goto/ga naar in de server plant, bijv. een auto-kolonist of - een vliegtuig, dan kan de server informatie gebruiken waarover de speler - nog niet kan beschikken. - - - De wetenschapsdialoog wordt niet bijgewerkt wanneer u een vooruitgang - boekt. U dient hem te sluiten en opnieuw te openen. - - - In de Gtk client is er soms rommel in het gebied naast de minikaart. - - - Automatische routines zoals auto-onderzoek kunnen niet zo goed overweg - met triremen. - - - LOG_DEBUG werkt niet met niet-GCC compilers. - - - De kleurmarkering in het Gtk-berichtenvenster gaat verloren indien de - dialoog gesloten en heropend wordt. - - - Bij het instellen van servervariabelen controleert de server de waarden - niet altijd zo goed als zou moeten. - - - Erge dingen gebeuren wanneer u meerdere algemene werklijsten tegelijk - bijwerkt. - - - Zelfs in enkelspel zal de KI elke beurt zowel voor als na de menselijke - speler een kans om te bewegen krijgen. Dit kan soms de indruk wekken dat - een KI tweemaal verplaatst (dat is dus echt niet zo). - - - De xaw client werkt niet erg goed in combinatie met de KDE window manager. - Probeer de GTK client te gebruiken of gebruik een andere window manager. - - - Versie 1.13.0 werkt niet met versie 1.12.0 en eerder. Merk op dat de client - nu wat harder stopt door een boodschap af te drukken op stdout en daarna te - stoppen. - -RAPPORTEREN VAN FOUTEN: -======================= - -(Als het vertalingsfouten betreft in de Nederlandse versie, neem dan contact -op met Pieter J. Kersten . Voor vertalingsfouten in andere -talen, neem contact op met de primaire contactpersoon voor die taal. Kijk op - voor de namen en mailadressen van deze -mensen.) - -Dit is wat u moet doen: - - - Controleer of het niet één van de bovenstaande fouten is! :-) - - - Controleer het Freeciv website om er zeker van te zijn dat u de laatste - versie van Freeciv hebt. (We zouden het al opgelost kunnen hebben.) - - In het bijzonder zou u een ontwikkelaars-versie kunnen proberen uit onze - CVS database. Deze kunt u FTP'en van: - - http://files.freeciv.org/latest/ - - - Controleer de Freeciv FAQ (Frequent Asked Questions) op het Freeciv website - om te kijken of er een noodoplossing (Engels: workaround) is voor uw fout. - - - Controleer het Freeciv foutenvolgsysteem op: - - https://www.hostedredmine.com/projects/freeciv - - om te kijken of de fout al eerder gerapporteerd is. - - - Verstuur een foutrapport! - - Of, als u de Freeciv ontwikkelaars enig commentaar wilt sturen maar niet - direct een foutrapport in wilt vullen, kunt u email sturen naar - , de Freeciv ontwikkelaars mailinglijst. - - Wat moet er in uw rapport staan (Let op: in het Engels!): - - - Beschrijf het probleem, inclusief eventuele berichten die getoond werden. - - - Geef aan welke client u gebruikte (Gtk+ of Xaw, ...) - - - Vertel ons de naam en de versie van: - - - Het besturingssysteem dat u gebruikt. U kunt in dit geval de - "uname -a" opdracht bruikbaar vinden. - - - Het versienummer van Freeciv - - - Als u de Gtk+ client gebruikt, de versienummers (indien bekend) van - uw Gtk+, glib en imlib bibliotheken. - - - Als u de Xaw client gebruikt, de versienummers (indien bekend) van de - X, Xpm en Xaw-bibliotheken en in het bijzonder of het standaard Xaw - is of een variant als Xaw3d, Xaw95 of Nextaw. - - - Als u van sourcecode hebt gecompileerd, de naam en het versienummer - van de compiler. - - - Als u installeerde van een binair pakket, de naam van het pakket, de - distrubutie waarvoor het bestemd is en waar u het vandaan hebt. - - - Als Freeciv "core dumpt", dan kunnen wij u vragen om een debugger te - gebruiken om ons van een "stack trace" te voorzien. U hebt daar dan het - "core" bestand voor nodig, dus bewaar deze alstublieft nog even. - - -VERDERE INFORMATIE: -==================== - -Voor meer informatie, als altijd, kom naar het Freeciv website: - - http://www.freeciv.org/ diff --git a/doc/nl/HOWTOPLAY.nl b/doc/nl/HOWTOPLAY.nl deleted file mode 100644 index 14e0f29005..0000000000 --- a/doc/nl/HOWTOPLAY.nl +++ /dev/null @@ -1,258 +0,0 @@ -De Freeciv spel HOWTO - - Oorspronkelijk door Michael Hohensee (alias Zarchon) - - -Als u zoekt hoe u Freeciv moet installeren, kijk in INSTALL. -Als u zoekt hoe u Freeciv moet starten, kijk in README. - -Als u nog nooit Freeciv gespeeld hebt, is het het gemakkelijkst -om te beginnen met de Freeciv handleiding (in Engels), apart -beschikbaar op: - - http://freeciv.org/wiki/Manual - -Als u zoekt naar ideëen om Freeciv te spelen, blijf dan lezen!! - - Nu u Freeciv opgestart hebt, zult u uw eerste paar spellen willen -spelen. Het wordt u aangeraden om eerst een paar keer alleen te spelen, -zodat u een beetje een idee krijgt hoe alles werkt, maar dit is uiteraard -niet noodzakelijk. U kunt ook leren door met anderen te spelen of door tegen -een KI te spelen. - -V: Kunt u mij een basisstrategie geven? - - Ten eerste, dit is niet een *perfecte* strategie; het is zelfs -geen goede. Maar het helpt u aan de gang met het spelen van Freeciv. -Onderdeel van de aantrekkingskracht van Freeciv is het ontwikkelen van -nieuwe strategieën. - - Het spel is onderverdeeld in verschillende fasen: - - De eerste expansiefase - Technologische subfase - De tweede expansiefase - De produktiefase - en 'De totale vernietiging van uw vijanden'-fase. - -Eerste expansie: - - Deze fase is verreweg het belangrijkst. Het eerste wat u wilt -doen is steden bouwen en uw eiland onderzoeken. U wilt veel steden, -tenminste zeven of acht. - - De naam van het spel is om zoveel mogelijk vlakken land vast te -pinnen als mogelijk. Wanneer u een stad bouwt, verzeker u er dan van dat -deze in territorium niet teveel overlapt met een andere stad. U kunt zien -welke vlakken een stad gebruikt door er op te klikken. De stadsplattegrond -en de directe omgeving bevatten het stadsterritorium. Met dit in het -achterhoofd probeer uw steden zo dicht mogelijk op elkaar te bouwen. Hoe -verder uit elkaar ze staan hoe moeilijker het wordt om ze te verdedigen en -te beheren in deze fase. (Tip: probeer op paarden of bij vis te bouwen.) - - Nu u een stad of twee hebt, zult u de wetenschapswaarde zo hoog -willen zetten als uw regeringsvorm u toestaat. Maak u geen zorgen over de -belastingswaarde, aangezien u toch nog geen stadsverbeteringen bouwt die -uw geld opslokken; u gaat Kolonisten bouwen. Elke stad zou kolonisten moeten -uitbraken. Hoe meer kolonisten u bouwt, hoe meer steden u kunt bouwen; hoe -meer steden u heeft, hoe sneller u technologie kunt ontwikkelen; hoe sneller -u technologie kunt ontwikkelen, hoe sneller u wint. Nadat u zoveel steden hebt -gebouwd als uw gedeelte van de wereld kan bevatten, zet de kolonisten aan het -irrigeren en het bouwen van wegen. - -(Opmerking: Als het voedingsoverschot in een stad zakt naar +1 door het -ondersteunen van teveel kolonisten en u kunt geen mensen herschikken om dat te -veranderen, dan zet ze aan het bouwen van tempels. Tenzij u contact maakt met -een andere speler maakt u zich nog niet druk over miltaire eenheden.) - - Gedurende deze hele tijd hebt u technologie ontwikkeld zo snel als -mogelijk is. Waar u zich op zou moeten richten is eerst "De Republiek", -dan "Democratie", dan "Spoorwegen" en dan "Industrialisatie". (Sommige mensen -onderzoeken eerst "Monarchie" voor "De Republiek"). Zodra u een nieuwe -regeringsvorm onderzocht hebt begint u een revolutie en schakelt u er naar -over. Steden opereren veel beter onder een Republiek dan onder een Dictatuur, -maar merk op dat het veel moeilijker is om militaire eenheden buiten het -gebied van een stad te onderhouden onder een Republiek. Vergeet ook niet om uw -instellingen te controleren na een regeringswijziging, aangezien de maximale -waarden per regeringsvorm verschillen. - - Wanneer u Democratie heeft onderzocht bent u toegerust om de tweede -expansiefase in te zetten. Dit wordt bereikt door de regeringsvorm te wijzigen -in Democratie, alle steden tempels te laten bouwen en de luxe-waarde op 100% -te zetten. Wanneer u dit doet, zullen alle steden onmiddelijk beginnen met -feestvieren en ze zullen per beurt 1 groeien voor zover er voeding beschikbaar -is. Zodra ze groot genoeg zijn, zet dan de luxe op een meer acceptable waarde -van 20-40%. Dit plaatst u in de tweede expansiefase. - - De keerzijde van deze aanpak is dat een luxe-waarde van 100% inhoud -dat uw wetenschappelijk onderzoek tot stilstand komt. Nadat uw steden gegroeid -zijn en uw wetenschapswaarde weer op 50% staat of zoiets zult u weer -ontwikkeling zien, maar langzamer. Als u wat verkenningen hebt verricht en -niet bedreigd bent door een andere speler, kan het een goed idee zijn om de -wetenschapswaarde op een maximum te houden totdat de snelheid van onderzoek -teveel terug loopt. - -Tweede expansiefase: - - Wanneer u uw steden op een goede grootte hebt gebracht, breng dan -geleidelijk de luxe naar beneden en verhoog de belasting. Zodra ze op een -waarde van 30% luxe zitten of zoiets, stop dan zoveel mogelijk belasting in -wetenschap met behoud van een positief inkomen. Wanneer u Spoorwegen hebt, -zet al uw wegen om in spoorwegen, of tenminste de vlakken die voor produktie -worden gebruikt of die die deel uitmaken van een transportnetwerk. (Tip: -bouw spoorwegen op elk vlak die een stad inneemt. Het verhoogt die stads' -inkomen. Er is geen reden om het centrale vlak op te waarderen, dat gebeurt -automagisch.) - - Nu is het de tijd om industrialisatie en militaire technologieën te -ontwikkelen. U zou nu ook moeten beginnen met het bouwen van steden op andere -eilanden en om u serieus met verkenningen bezig te houden indien u dat nog -niet hebt gedaan. U moet uitzoeken waar uw vijanden zijn. Ga voor scheepvaart -gerelateerde ontwikkelingen en probeer Magellaens Expeditie te bouwen. Zodra u -vindt dat u er klaar voor bent, ga naar de: - -Produktiefase: - - Nu bouwt u fabrieken en electriciteitscentrales in uw steden. -U wilt nu zoveel mogelijk produktie van uw steden. Verontreiniging wordt nu -een probleem. Probeer zo snel als u kunt massaproduktie te onderzoeken voor -massavervoer en hergebruik zodat u kringloopcentra kunt bouwen. Zodra alle -steden op volle sterkte draaien, begint u aan militaire eenheden. (Opmerking: -Als u in contact komt met andere spelers dient u onmiddelijk enkele aanvals- -eenheden te bouwen en tenminste één verdedigingseenheid per stad.) - - Wanneer u erover begint te denken om iemand aan te vallen, zet dan de -onderzoekswaarde op 0% en de belastingswaarde zo hoog mogelijk zonder onlusten -te veroorzaken. Onthoud, geld kan ook eenheden bouwen! - - -'De totale vernietiging van uw vijanden'-fase: - - Dit kan op elk gewenst moment, maar het is leuker met de geavanceerde -wapens. - - Zoek een relatief zwakke tegenstander, stuur een paar scheepsladingen -troepen, neem wat steden in en gebruik deze om meer eenheden te bouwen om -daarmee de rest in te nemen. Toon geen genade! Tot de dood! - -Herhaal zo vaak als nodig! ;-) - -[Opmerking voor pacifisten: Freeciv staat een speler ook toe te winnen met het -bouwen en lanceren van een ruimteschip dat vervolgens als eerste op Alfa -Centauri aankomt.] - - -Extra vragen: - -V. Welke strategieën zijn er nog meer? - - Er zijn een aantal (Engelstalige) instructie- en strategie-documenten -beschikbaar op de Freeciv web pagina's op: - - http://freeciv.org/wiki/Tutorials - -Plus, de Freeciv online help beschrijft een andere strategie. - - -V. Welke tijdslimiet moet ik gebruiken in multispeler-spellen? - - Dat hangt van het aantal spelers af. Als er slechts twee van u spelen, -komt u meestal wel weg met een tijdslimiet van 0 (=geen). Als er meer dan twee -zijn of als één van de twee op willekeurige tijden wegloopt van zijn werkplek -en u wilt niet stoppen met spelen dan is een tijdslimiet van 60 seconden -doorgaans voldoende. Later in het spel echter, als de zaken complexer gaan -worden, dan is het beter deze op te hogen naar 240 seconden. In het algemeen: -hoe meer spelers u hebt, hoe groter de tijdslimiet die u nodig hebt. Voel u -vrij om elke waarde in te stellen die u comfortabel vindt, maar onthoud dat -waarden boven de 300 mensen doorgaans irriteert. - - -V. Welke kaartgrootte zal ik gebruiken? - - De kaartgrootte hangt af van het aantal spelers en hoe snel u het spel -wilt beëindigen. De standaard grootte (80x50) is groot genoeg voor een -redelijk snel twee-speler spel, maar resulteert in een *erg* snel spel als er -meer dan drie mensen meedoen. - - Snelle spelen frustreren doorgaans iedereen behalve de winnaar, -aangezien niemand goed de kans krijgt om een verdediging op te bouwen. Als u -meer dan drie spelers hebt, zou u een 80x80 formaat kaart moeten gebruiken. -Als er vijf of meer spelers meedoen zult u waarschijnlijk een 100x100 formaat -moeten overwegen. - - -V. Wat is die "generator" optie? - - Die verandert het kaart-maakproces. Als u Freeciv een paar maal speelt -zonder deze instelling te wijzigen, dan zult u zeker de verschrikkingen horen -(of ervaren) van kleine eilanden. Het kleine eilanden syndroom (TIS in het -Engels) is bekend voor het tot waanzin drijven van spelers. Om dit te -corrigeren hebben onze geliefde en vriendelijke programmeurs de generator- -optie gemaakt. Als deze op 1 staat geeft het een normale kaart met eilanden -van verschillende (en mogelijk oneerlijke) grootte. Maar wanneer deze op 2, 3 -of 4 staat genereert hij eilanden van gelijke grootte (soms worden er wat -kleinere eilanden ingezet). Op deze manier kan niemand zeuren over het -verliezen "door dan ver* eiland". - - -V. Moet ik het spel gemakkelijker maken door het startgoud te verhogen? - - Als u onervaren bent en speelt met onervaren mensen zal waarschijnlijk -niemand protesteren tegen een grotere hoeveelheid goud in het begin. Het is -echter geen goede manier om het spel te leren spelen. Een begin met een grote -zak met goud maakt het spel een stuk makkelijker en maakt het moeilijker voor -u om om te leren gaan met de standaard hoeveelheid goud. De meeste ervaren -spelers verhogen deze optie niet. Als zij weten hoe ze met deze hoeveelheid -goud overweg moeten en u niet, dan gaat u de route van Atlantis op. - -Opmerking: Hetzelfde is van toepassing op de "techlevel" en "researchspeed"- -opties. - - -V. Wat met al die andere opties? - - De rest heeft voornamelijk betrekking op wat voor soort wereld er zal -ontstaan en het mechanisme van het spel. Het verhogen van "specials" geeft u -een grotere kant op hulpbronnen per vlak en "huts" bepaalt hoeveel -inboorling-dorpen er zijn. Het verhogen van het aantal kolonisten of -verkenners maakt het spel sneller en stelt mensen in staat "die #$%! barbaren" -te overleven die soms in deze dorpen/hutten leven. - - De spoorweg gerelateerde opties bepalen hoeveel een vlak meer opbrengt -in voeding/handel/produktie met een spoorweg erop en de "foodbox"-optie -bepaalt hoeveel voeding de inwoners in een stad moeten hebben voordat er meer -inwoners bij kunnen komen. - - En voor de rest, hogere "mountains" betekent een meer bergachtig -landschap, hogere "deserts" meer woestijn, enz. - - -V. Hoe krijg ik _____ technologie? - -Zoek de technologie op in de online help. Het zal u de technologieën tonen die -u eerst dient te ontwikkelen. - -Alternatief: u kunt David Pfitzner's "techtree" kaart van -http://files.freeciv.org/contrib/charts/ downloaden. - -Als dat allemaal niet lukt, dan kunt u de technologie spelregels in -'data/default/techs.ruleset' lezen. Het toont de lijst van alle technologieën -en welke technologieën nodig zijn om ze te kunnen ontwikkelen. - - -V. Welke militaire eenheden zijn het beste bruikbaar? - - Voor aanval: - - Tanks, Helicopters, Kruisrakketten, Slagschepen, - Vrachtschepen, Kernraketten, Houwitzers, Bommenwerpers. - - Voor verdediging: - - Tanks, Grenadiers, Houwitzers, Slagschepen, - Kruisraketten, Kernraketten. - -Onthoud: de beste verdediging is een sterke aanval. - - -Toevoegingen op dit document zijn welkom! diff --git a/doc/nl/README.nl b/doc/nl/README.nl deleted file mode 100644 index ed8a4cb75b..0000000000 --- a/doc/nl/README.nl +++ /dev/null @@ -1,490 +0,0 @@ -================== -Freeciv Versie 2.2 -================== - -Welkom bij Freeciv! - -Dit archief bevat Freeciv, een vrije Civilization kloon, primair voor -X onder Unix. Het heeft ondersteuning voor multi-speler spellen lokaal -of over een netwerk en een KI die de meeste mensen een de stuipen op het -lijf jaagt. - -Freeciv probeert overwegend spelregel-uitwisselbaar te zijn met -Civilization II [tm], gepubliceerd door Sid Meier en Microprose [tm]. -Een aantal regels zijn anders waar we denken dat dat zinvol is en we -hebben heel veel instelbare parameters om het customizen van spelen -mogelijk te maken. - -Freeciv is volledig onafhankelijk van Civilization gebouwd; u hebt -Civilization niet nodig om Freeciv te kunnen spelen. - -Hoewel de computerspelers (KI's) nog niet kunnen onderhandelen, hebben -we inmiddels geluidsondersteuning, zeer volledige spelregels en is onze -multispeler netwerkcode uitstekend. - - -Web site: -========= - -Freeciv's web site is hier: - - http://www.freeciv.org/ - -Wij nodigen u uit deze te bezoeken. U kunt hier het laatste Freeciv nieuws, -nieuwe versies en patches vinden, meer te weten komen over de mailinglijsten -van Freeciv en de Freeciv Metaserver zien, die spelen bijhoudt die over de -hele wereld gespeeld worden. - - -Licentie: -========= - -Freeciv wordt uitgebracht onder de GNU General Public License. In het kort -mag u dit programma onbeperkt kopiëren (inclusief source), maar kijk naar -het bestand COPYING voor volledige details. - - -Compileren and installatie: -=========================== - -Lees alstublieft het bestand INSTALL zorgvuldig voor instructies hoe -u Freeciv gecompileerd en geïnstalleerd krijgt op uw machine. - - -Een nieuw spel beginnen: -======================== - -Freeciv is eigenlijk twee programma's, een server en een client. Wanneer -een spel loopt, dan zal er één serverprogramma draaien en zoveel clients -als er menselijke spelers zijn. De server heeft geen X nodig, maar de -clients wel. - - OPMERKING: - De volgende voorbeelden gaan ervan uit dat Freeciv op uw systeem - geïnstalleerd is en dat de map die "civclient" en "civserver" bevat - zich in uw PATH bevindt. Als Freeciv niet geïnstalleerd is, dan wilt - u wellicht de "civ" en "ser" programma's gebruiken. Deze kunt u vinden - in de top van de Freeciv map. Ze worden op exact dezelfde wijze - gebruikt als "civclient" en "civserver". - -Het draaien van Freeciv omvat het starten van de server, daana de client(s) -en KI(s), vervolgens het geven van de opdracht aan de server om het spel -te starten. Hier volgen de stappen: - -Server: - - Om de server te starten: - - | % civserver - - Of voor een lijst van opdrachtregel-opties: - - | % civserver --help - - Zodra de server eenmaal gestart is verschijnt een prompt: - - | Voor een introductie, type 'help'. - | > - - en u kunt de volgende informatie zien door de opdracht help te - gebruiken: - - | > help - | Welkom - dit is de introduktie helptekst voor de Freeciv server. - | - | Twee belangrijke server concepten zijn Opdrachten en Opties. - | Opdrachten, zoals 'help', worden gebruikt om met de server te - | communiceren. Sommige opdrachten verwachten één of meer argumenten, - | gescheiden door spaties. - | In veel gevallen kunnen opdrachten en argumenten worden ingekort. - | Opties zijn instellingen die de server sturen terwijl hij draait. - | - | Om te leren hoe u meer informatie over opdrachten en opties kunt - | krijgen, gebruik 'help help'. - | - | Voor de ongeduldigen zijn de belangrijkste opdrachten om aan de - | gang te kunnen gaan: - | show - om de huidige instellingen te bekijken - | set - om de instellingen te wijzigen - | start - om het spel te starten zodra alle spelers verbinding hebben - | save - om het huidige spel te bewaren - | quit - om de server te verlaten - | > - - Als u wilt kunt u de opdracht 'set' gebruiken om elk van de diverse - server-opties voor het spel te wijzigen. U kunt een lijst van de opties - krijgen met de opdracht 'show' en gedetailleerde beschrijvingen van elk - met de opdracht 'help '. - - Bijvoorbeeld: - - | > help xsize - | Optie: xsize - Kaart-breedte in vlakken - | Status: veranderbaar - | Waarde: 80, Minimaal: 40, Standaard: 80, Maximaal: 200 - | > - - And: - - | > set xsize 100 - | > set ysize 80 - - Dit maakt de kaart bijna tweemaal zo groot als de standaard van 80x50. - -Client: - - Nu moeten alle menselijke spelers meedoen door de Freeciv client - op te starten: - - | % civclient - - Dit gaat er vanuit dat de server draait op dezelfde machine. Indien - niet, dan kunt de servernaam opgeven met hetzij met een optie '--server' - op de opdrachtregel of door het intypen in het eerste dialoogvenster - zodra de client gestart is. - - Bijvoorbeeld, aangenomen dat de server draait op een andere machine met - de naam 'neptune'. Dan zouden spelers meedoen met een opdracht als: - - | % civclient --server neptune - - Als u de enige menselijke speler bent, dan is slechts één client - nodig. In standaard Unix-stijl kunt u de client "in de achtergrond" - starten door toevoeging van een '&'-teken: - - | % civclient & - - Een ander optie voor de client die u wellicht wilt proberen is de - '--tiles' optie, die gebruikt wordt voor het kiezen van een andere - "vlakkenset" (dat is een verzameling andere afbeeldingen voor kaart, - terrein, eenheden, enz.). De distributie bevat twee hoofdsets: - - isotrident: Een isometrische vlakkenset gelijkend op die van civ 2. - (nog niet voor de Xaw client) - - trident: een civ1-stijl vlakkenset met 30x30 afbeeldingen. - De trident vlakkenset heeft een variant met de naam "trident_shields". - - In deze uitgave is de isotrident vlakkenset de standaard voor de gtk-, - amiga- en win32 clients, terwijl de xaw clients trident als standaard - heeft. De "_shields" variant gebruikt een schild-vormige vlag, die - kleiner is en wellicht minder bedekt. Probeer ze beide en beslis voor - uzelf. Om de trident vlakkenset te gebruiken start u de client met: - - | % civclient --tiles trident - - Andere vlakkensets (tilesets in het Engels) zijn beschikbaar van de - ftp- en websites. - - Clients kunnen geautoriseerd worden om serveropdrachten te geven. - Om alleen informatieve opdrachten te geven, type aan de serverprompt - - | > cmdlevel info - - Clients kunnen nu '/help', '/list', '/show settlers', enz. gebruiken. - -Computerspelers: - - Er zijn twee manieren om KI-spelers te maken. De eerste is om - het aantal spelers (menselijk én KI) in te stellen met de 'aifill' - server-opdracht. Bijvoorbeeld: - - | > set aifill 7 - - Na het gebruik van de server-opdracht 'start' zullen alle spelers die - niet door gebruikers worden bestuurd KI-spelers zijn. Voor het boven- - staande voorbeeld zouden in het geval van twee menselijke spelers vijf - KI-spelers worden gemaakt. - - De tweede manier is om expliciet een KI te maken met de server-opdracht - 'create'. Bijvoorbeeld: - - | > create MensenMoordenaar - - Dit zal een KI-bestuurde speler met de naam MensenMoordenaar maken. - - KI-spelers worden toegekend aan naties nadat alle menselijke spelers - een natie gekozen hebben, maar u kunt een specifieke natie voor een - KI-speler kiezen door het gebruik van de normale naam voor die natie's - leider. Om bijvoorbeeld tegen KI-bestuurde Romeinen te spelen dient u - de volgende opdracht te typen (op de serverprompt): - - | > create Caesar - - Let op, dit is slechts een voorkeur: als geen andere menselijke speler - de Romeinen als natie kiest, zal deze KI dat doen. - -Server: - - Wanneer iedereen verbinding gemaakt heeft (gebruik de opdracht 'list' - om te zien wie er binnen zit), start dan het spel met de opdracht - 'start': - - | > start - -En het spel is begonnen! - - -Aankondigen van het spel: -========================= - -Als u uw opponenten niet wilt beperken tot lokale vrienden of KI-spelers, -bezoek dan de Freeciv metaserver: - - http://meta.freeciv.org/ - -Het is een lijst van Freeciv servers. Om uw eigen server zich daar te laten -aankondigen, start civserver met de '--meta' optie, of gewoon '-m'. - -Aandachtspunten: - - 1) Als gevolg van nieuwe mogelijkheden zijn verschillende client- en - server-versies vaak niet uitwisselbaar. De 1.13.0 versie is bijv. - niet uitwisselbaar met 1.12.0 of eerdere versies. - - 2) Als de Metaserver knop in de verbindingsdialoog niet werkt, controleer - dan of uw ISP een verplichte WWW-proxy heeft en laat civclient deze - gebruiken door de $http_proxy omgevingsvariabele. Als bijvoorbeeld de - proxy proxy.myisp.com is, poort 8888, zet dan $http_proxy op - http://proxy.myisp.com:8888/ voordat u de client start. - - 3) Soms zijn er geen spelen op de metaserver. Dat gebeurt. Het aantal - spelers daar varieert in de loop van een dag. Probeer zelf een spel - te starten! - - -Spelen van het spel: -==================== - -Het spel kan op ieder gewenst moment worden opgeslagen met de server- -opdracht 'save' aldus: - - | > save mijnspel.sav - -(Als uw server is gecompileerd met compressie-ondersteuning en de -'compress' serveroptie heeft een andere waarde dan 0 (nul), dan -wordt het bestand weggeschreven in een gecomprimeerd formaat met -de naam 'mijnspel.sav.gz'.) - -De Freeciv client werkt behoorlijk zoals u zou mogen verwachten van -een multispeler civilization spel. Tenminste, de menselijke spelers -bewegen allemaal tegelijk, de KI-spelers bewegen zodra alle menselijke -spelers hun zet hebben voltooid. Er is een beurt-tijdslimiet die -standaard op 0 seconden staat (geen limiet). De serverbeheerder kan -deze waarde wijzigen op elk gewenst moment met de 'set' opdracht. - -Kijk eens naar het online helpsysteem. Alle drie de muisknoppen worden -gebruikt en staan gedocumenteerd in de helpsysteem. - -Spelers kunnen de 'Enter'-toets gebruiken om het einde van hun zet te -markeren of kunnen klikken op de 'Beurt klaar' knop. - -Gebruik de 'Spelers'-dialoog om te zien wie al klaar is met zijn beurt -en op wie u zit te wachten. (Hé vriend, zit je te slapen of zo?? ;). - -Gebruik de invoerregel aan de onderkant van het venster voor het sturen van -berichten naar andere spelers. - -U kunt een persoonlijk bericht sturen (aan bijv. 'peter') als volgt: - - | peter: Haal die tank *NU* weg! - -De server is slim genoeg om 'name completering' toe te passen, dus als -u 'pet:' had gebruikt dan had hij de spelersnaam gezocht met hetzelfde -begin als wat u gebruikt had. - -U kunt ook serveropdrachten versturen vanaf de invoerregel: - - | /list - | /set settlers 4 - | /save mijnspel.sav - -Waarschijnlijk beperkt de serveroperator uw opdrachten tot alleen -informatieve opdrachten. Dit is voornamelijk omdat er nogal wat -beveiligingsaspecten van toepassing zijn indien alle clients alle -serveropdrachten zouden kunnen geven; bedenk als een speler probeerde: - - | /save /etc/passwd - -Uiteraard zou de server niet met root-privileges mogen draaien in welk -geval dan ook, juist om dit soort risico's te beperken. - -Als u net begint en u wilt een idee krijgen van de strategie, kijk dan -in de Freeciv HOWTO, in het bestand HOWTOPLAY. - -Voor heel veel meer informatie over de client, de server en de concepten -en regels van het spel, bekijk de Freeciv handleiding, beschikbaar op de -webpagina's op: - - http://freeciv.org/wiki/Manual - - -Beëindigen van het spel: -======================== - -Er zijn drie manieren waarop een spel kan eindigen: - -1) Slechts één natie is overgebleven -2) Het eindjaar is bereikt -3) Een speler bouwt en lanceert een ruimteschip dat vervolgens - Alfa Centauri bereikt. - -Een score-tabel zal in elk van de gevallen getoond worden. De server- -beheerder kan het eindjaar instellen terwijl het spel al aan de gang -is door de 'end-year' optie te wijzigen. Dit is leuk als de winnaar -duidelijk is, maar u wilt vast niet door de saaie 'opruimingsfase' -spelen. - - -Herstellen van spellen: -====================== - -U kunt een opgeslagen spel herstellen c.q. laden met de -f serveroptie: - - | % civserver -f onsbewaard2002.sav - -of, als het spel is gemaakt door een server met compressie: - - | % civserver -f onsbewaard2002.sav.gz - -Nu kunnen de spelers opnieuw verbinding maken met de server: - - | % civclient -n Alexander - -Merk op hoe de spelersnaam is opgegeven met de -n optie. Het is van -groot belang dat de speler dezelfde naam gebruikt die hij/zij had -toen het spel draaide, willen ze toestemming krijgen om mee te doen. - -Het spel kan dan voortgezet worden door gebruik te maken van de 'start'- -opdracht als gebruikelijk. - - -Nationale Taal Ondersteuning: -============================= - -Freeciv ondersteunt diverse nationale talen. - -U kunt kiezen welke lokale taal gebruikt wordt door het opgeven van -een 'locale'. Elke locale heeft een standaard naam (bijv. 'de' voor -Duits). Als u Freeciv geïnstalleerd hebt kunt u een locale kiezen door -de omgevingsvariabele 'LANG' in te stellen op die standaard naam -vóórdat u civserver en civclient opstart. - -Bijvoorbeeld, aangenomen dat u de Nederlandse locale wilt gebruiken -doet u: - - export LANG; LANG=nl (in the Bourne shell (sh)), -of - setenv LANG nl (in the C shell (csh)). - -(U kunt dit in uw .profile of .login bestand zetten.) - - -Logberichten: -===================== - -Zowel de client ald de server geven berichten die bekend staan als -"logberichten". Er zijn vijf categoriëen van logberichten: "fataal", -"fout", "normaal", "uitgebreid" and "debug". - -Standaard worden fataal, fout en normaal-berichten afgedrukt op standaard -uitvoer van de server-start. U kunt logberichten naar een bestand omleiden -met de '--log bestandsnaam' of '-l bestandsnaam' opdrachtregel-opties te -gebruiken. - -U kunt het niveau van de logberichten die getoond wordt met -'--debug niveau' of '-d niveau' (of '-de niveau' voor de xaw client, -aangezien '-d' zowel '-debug' als '-display' zou kunnen zijn), waar -niveau de waarde 0, 1, 2 of 3 is. 0 betekent alleen fatale berichten, -1 fatale- en foutberichten, 2 fatale-, fout- en normale berichten (de -standaardwaarde), 3 betekent toon alle fatale-, fout-, normale- en -uitgebreide berichten. - -Als u gecompileerd heeft met DEBUG gedefinieerd (een makkelijke manier -om dit te doen is door te configureren met de optie --enable-debug), -dan kunt u debug-berichten krijgen door het niveau op 4 te zetten. -Ook is het mogelijk om debug-berichten (maar niet andere-) te beheersen -op een per-bestand en per-regel basis. Om dit te doen gebruik -"--debug 4:str1:str2" (zoveel strings als u wilt, gescheiden door :'en) -en elke bestandsnaam die overeenkomt met zal debug-berichten gaan -genereren terwijl alle andere debug-berichten onderdrukt worden. Om -regels te beheersen gebruik "--debug 4:str1,min,max" en voor bestanden -die in naam overeenkomen met str1 zullen van regel min tot regel max -debug-berichten genereren, terwijl alle andere debug-berichten onderdrukt -worden. Slechts één set van (min,max) kan per bestand worden toegepast. - -Voorbeeld: - - | % civserver -l mijn.log -d 3 - -Dit stuurt alle server logberichten naar bestand "mijn.log", inclusief -berichten van de 'uitgebreid' categorie. - -Voorbeeld: - - | % civclient --debug 0 - -Dit onderdrukt alle niet-fatale logberichten. - -Voorbeeld: - - | % civserver -d 4:log:civserver,120,500:autoattack - -Dit zet alle fatale-, fout-, normale- en uitgebreide berichten aan -voor de server en debug-klasse berichten voor enkele specifieke modules. -Let op dat 'log' zal overeenkomen met zowel 'gamelog.c' als 'log.c'. -Voor 'civserver.c' zullen debugberichten komen voor akties tussen regel -120 en 500. Dit voorbeeld werkt alleen indien de server is gecompileerd -met DEBUG. - - -Fouten: -======= - -Fout gevonden? We willen dit echt graag van u horen zodat we dat herstellen -kunnen. Bekijk het bestand BUGS voor een lijst met bekende fouten in deze -versie en informatie over het rapporteren van fouten. - - -Mailing lijsten: -================ - -Wij onderhouden 4 mailing lijsten: - - freeciv-announce Aankondigingen van algemeen belang - Dit is een 'Alleen lezen' lijst met infrequente berichten. - M.a.w. u kunt niet naar deze lijst sturen, alleen maar - ontvangen. (Aankondigingen die hier naar toe gestuurd - worden komen ook op freeciv). - freeciv-dev Freeciv ontwikkeling. - freeciv-commit Kennisgevingen van veranderingen in de SVN repository. - Dit is een 'Alleen lezen' lijst met uitsluitend - automatische berichten. M.a.w. u kunt niets naar deze - lijst sturen, u kunt alleen maar ontvangen. - freeciv-i18n - -Alle lijsten staan open voor het grote publiek en iedereen is welkom om mee te -doen. - - -Internet Relay Chat (IRC) -========================= - -Diverse spelers en ontwikkelaars hangen rond op #freeciv op het Freenode -netwerk. Probeer verbinding te maken met de server - - irc.freenode.net - - -Nieuwe versies: -=============== - -We hopen elke vier maanden een nieuwe release van Freeciv te maken. -Controleer het Freeciv website van tijd tot tijd om te zien of er een nieuwere -versie is!! - - -Tenslotte: -========== - -Heb plezier en geef ze van katoen!! - - -- Het Freeciv team. diff --git a/doc/sv/BUGS.sv b/doc/sv/BUGS.sv deleted file mode 100644 index 2663741644..0000000000 --- a/doc/sv/BUGS.sv +++ /dev/null @@ -1,86 +0,0 @@ -====== -BUGGAR -====== - -Freeciv 2.2 är en "driftssäker" utgåva och anses vara tillräckligt -fri från programfel för dagligt bruk. Om man trots allt hittar -buggar skulle vi vilja få reda på det så att vi kan rätta -dem. - - -ATT ANMÄLA BUGGAR: -================== - -Så här gör man: - -- Ser efter att det inte är en känd bugg! Se listan vid: - - http://www.freeciv.org/wiki/Known_Bugs - -- Tittar på och försäkrar sig om att man har - den nyaste versionen. (Vi kanske redan har rättat felet.) - -- Tittar på Freecivs system för spårning av buggar vid: - - https://www.hostedredmine.com/projects/freeciv - - för att se om programfelet redan har anmälts. - -- Anmäler buggen via buggsökarsystemet ovan! - - Om du får några GDK/GTK-meddelanden, som t.ex.: - - Gtk-CRITICAL **: file gtkobject.c: line 1163 (gtk_object_ref): - assertion oject->ref_count > 0' failed. - - v.g. starta om din klient och lägg till "-- --g-fatal-warnings" vid - kommandoraden. På detta sätt får du en "core dump". V.g. bifoga den - del av denna core dump som kallas "stack trace" med din buggrapport. - - Vad man ska nämna i sin buggrapport: - - - Beskrivning av problemet och i förekommande fall det felmeddelande - man får. - - - Vilken klient man använder (GTK+, SDL, Win32 eller Xaw). - - - Namn och versionsnummer av: - - - Det operativsystem som man använder. Kommandot "uname -a" kan - vara användbart. - - - Versionsnumret för Freeciv. - - - Om man använder Gtk+-klienten, versionsnumren (om man känner - till dem) för sina Gtk+-, glib- och imlib-bibliotek. - - - Om man använder SDL-klienten, versionsnumren (om man känner - till dem) för sina SDL-, SDL_image-, PNG- och - freetype-biblioteken. - - - Om man använder Xaw-klienten, versionsnumren (om man känner - till dem) för X-, PNG-, Z- och Xaw-biblioteken, samt i - synnerhet om det är en variant såsom Xaw3d, Xaw95 eller Nextaw. - - - Om man kompilerar från källkod: namnet och versionsnumret för - kompilatorn. - - - Om man installerar från ett färdigkompilerat paket, dess - namn, vilken distribution det är för och varifrån man hämtat - det. - - - Om Freeciv gör en "core dump", kan vi efterfråga en "stack trace" - som du kan skaffa fram m.h.a. en avlusare. För detta behövs - "core"-filen samt binären, så var god behåll de ett tag. - - - Om det är ett fel i en översättning ska det anmälas till - översättaren för språket i fråga. För deras namn och addresser, - se: - - -YTTERLIGARE INFORMATION: -======================== - -Freecivs webbplats tillhandahåller mycket mer material: - - http://www.freeciv.org/ diff --git a/doc/sv/HOWTOPLAY.sv b/doc/sv/HOWTOPLAY.sv deleted file mode 100644 index c5a3d21661..0000000000 --- a/doc/sv/HOWTOPLAY.sv +++ /dev/null @@ -1,267 +0,0 @@ -Hur man spelar Freeciv - - Ursprungligen av Michael Hohensee (aka Zarchon) - -För upplysningar om hur man installerar Freeciv, se INSTALL.sv -För upplysningar om hur man kör Freeciv, se README.sv - -Om man aldrig har spelat något av spelen i Civilization-serien -är det bäst om man börjar med att läsa Freecivs handbok som är -tillgänglig vid: - - http://www.freeciv.org/wiki/Manual - -För upplysningar om hur man spelar Freeciv, fortsätt läsa! - - När man har fått i gång Freeciv vill man antagligen spela sina -första spel. Man råds att spela ensam några gånger för att få en -känsla för hur saker fungerar, men det är inte nödvändigt. Man kan -lära sig genom att spela mot andra människor eller mot datorn. - -Fråga: Vilken är den grundläggande strategin? - - För det första är detta inte en *perfekt* strategi; det är -inte ens en mycket bra strategi. Men låt oss först sätta i gång med att -spela Freeciv. En del av lockelsen hos Freeciv är att utveckla nya -strategier. - - Strategin är indelat i flera steg: - - Det inledande utvidgningsskedet - Teknologiskt underskede - Det andra utvidgningsskedet - Uppbyggnadsskedet - Den slutgiltiga förintelsen av dina fiender-skedet - -Det inledande utvidgningsskedet: - - Detta skede är viktigast. Det första man bör göra är att -grunda städer och utforska sin ö. Man bör ha många städer, mist 7 -eller 8. - - Spelets mål är att behärska så många landrutor som möjligt. -När man grundar en stad bör man se till att att dess område inte -kommer att överlappa för mycket med andra städers områden. Man kan se -vilka rutor som används av en stad genom att klicka på den. Kartan -över staden och dess omgivning visar stadens område. Ta hänsyn till -detta och försök samtidigt att hålla dina städer nära varandra. Ju -längre från varandra de är, desto svårare är det att försvara och -förvalta dem i detta skede. (Hänvisning: Försök att grunda städer på -hästar eller nära fisk.) - - När man har 1 eller 2 städer bör man sätta forskningssatsen så -högt som regeringsformen tillåter. Man ska strunta i skattesatsen -eftersom man inte kommer att färdigställa några stadsförbättringar som -kostar underhåll regelbundet. Man bygger i stället bosättare. Varje -stad bör bygga bosättare. Ju fler bosättare man färdigställer, desto -fler städer kan man grunda; ju fler städer man har, desto fortare kan -man forska; ju fortare man kan forska, desto fortare kan man vinna. -När man har fyllt det tillgängliga utrymmet med städer befaller man -sina bosättare att bygga bevattningsanläggningar och vägar. - -(Anmärkning: Om matöverskottet i en stad sjunker till +1 på grund -av understöd av för många bosättare och man inte kan flytta om -arbetare så att överskottet blir större låter man staden bygga ett -tempel i stället för bosättare. Om man inte har känner sig hotad av -någon annan spelare än kan man strunta i att bygga krigsenheter ett -tag till.) - - Under denna tid lär man sig teknologier så fort som möjligt. -Det man bör sikta på först är "republik", sedan "folkstyre", sedan -"järnväg", sedan "industrialisering". (Vissa siktar på "monarki" före -"republik".) Så snart som man forskat fram en regeringsform som man -vill använda sätter man i gång en revolution och byter till den nya -regeringsformen när revolutionen är över. Sedan ser man till att -satserna är som man vill ha dem, ty den högsta tillåtna satsen skiljer -sig mellan olika regeringsformer (forskningssatsen sätts så högt som -möjligt av sig själv). - - När man har fått kunskap om folkstyre är man rustad att gå in -i det andra utvidgningsskedet. Det gör man genom att ändra -regeringsform till folkstyre, befalla alla städer att bygga tempel och -sätta överflödssatsen till 100%. När man gör detta börjar alla städer -genast att fira och växer 1 steg varje omgång så länge det finns -matöverskott. När de har blivit tillräckligt stora sätt -överflödssatsen till rimliga 20-40%. Detta försätter dig i det andra -utvidgningsskedet. - - Nackdelen med att sätta överflödssatsen till 100% är att -forskningen avstannar fullständigt. Efter att städerna har vuxit och -forskningssatsen har höjts till ungefär 50% får man åter nya -teknologier, men något saktare. Om man har utforskat ganska mycket -utan att ha hittat någon hotfull motspelare kan det vara bra att -forska så mycket som möjligt tills teknologierna tar för lång tid att -forska fram. - -Det andra utvidgningsskedet: - - När städerna har fått en lämplig storlek avvänjer man dem med -överflöd och ökar skattesatsen. När de är nere på ungefär 30% överflöd -ökar man forskningssatsen så mycket man kan utan att skatteinkomsten -blir lägre än utgifterna. När man får järnväg bygger man om alla vägar -till järnvägar, åtminstone alla som är på rutor som används av någon -stads arbetare eller ingår i fjärrvägnätet. (Hänvisning: Utrusta varje -ruta som används av en stad med väg/järnväg. Då gör staden mer nytta. -Det finns ingen anledning att uppgradera mittrutan, den med staden på. -Det görs av sig själv.) - - Nu är det dags att utveckla industrialisering och -krigsteknologier. Man bör börja grunda städer på andra öar och -utforska ordentligt om man inte redan har gjort det. Man bör ta reda -på var fienderna är. Sikta på teknologier som är bra för båtar och -försök färdigställa Magellans Världsomsegling. När man känner dig -beredd går man in i: - -Uppbyggnadsskedet: - - Nu bygger man fabriker och kraftverk i städerna. Man försöker -få så hög tillverkningsförmåga som möjligt. Förorening blir ett -problem. Så snart man kan försöker man forska fram masstillverkning -för kollektivtrafik och återvinning för återvinningsanläggning. När -man har gjort alla sina städer till goda tillverkningsanläggningar -bygger man krigsenheter. (Anmärkning: Om man får förbindelse med någon -annan spelare ska man genast bygga några angreppsenheter och minst 1 -försvarsenhet för varje stad.) - - När man vill börja angripa någon sätter man forskningssatsen -till 0% och höjer skattesatsen så mycket man kan utan att få upplopp. -Kom ihåg att enheter kan köpas för guld! - -Den slutgiltiga förintelsen av dina fiender-skedet: - - Detta kan ske när som helst men det är skojigare med de -framskridna vapnen. - - Välj en förhållandevis svag fiende och skicka över några -båtlaster trupper. Ta över fiendens städer och låt dem bygga fler -enheter för att utplåna resten av fienden. Visa ingen medkänsla! -Intill döden! - -Upprepa så ofta som det behövs! ;-) - -[Anmärkning för fredliga: Freeciv låter även en spelare vinna genom -att färdigställa och sända iväg ett rymdskepp som anländer till Alfa -Kentauri före alla andra spelares eventuella rymdskepp.] - - -Ytterligare frågor: - -Fråga: Vilka andra strategier finns det? - - Det finns ett antal handledningar och strategianvisningar -tillgängliga vid Freecivs webplats vid: - - http://www.freeciv.org/wiki/Tutorials - -Dessutom beskriver Freecivs inbyggda hjälp en annan strategi. - - -Fråga: Vilken tidsgräns skall man sätta i flerspelarspel? - - Det beror på antalet spelare. Om man bara är 2 som spelar -klarar man sig vanligtvis med tidsgränsen 0. Om man är > 2 eller en av -de 2 kommer att vara borta från spelet under slumpmässliga tillfällen -och den andre inte vill vänta kan en tidsgräns på 1 minut (när man -sätter tidsgränsen anger man dock tiden i sekunder) vara tillräckligt. -Senare i spelet när det är mer att göra vill man antagligen öka -tidsgränsen till 4 minuter. I allmänhet behövs det längre tid ju fler -spelare man är. Sätt den tidsgräns som passar men kom i håg att det brukar -störa folk om man går över 5 minuter. - -Fråga: Vilken kartstorlek ska man använda? - - Kartstorleken beror på hur många spelare man är och hur snart -man vill att spelet ska ta slut. Standardkartstorleken (80x50) är -tillräckligt stor för ett ganska snabbt 2-spelarspel men ger ett -*mycket* snabbt spel om > 3 spelare deltar. - - Snabba spel brukar vara otillfredställande för alla utom -vinnaren eftersom ingen har haft tid att utveckla något försvar. Om -man har > 3 spelare bör man använda en 80x80-karta. Om man är > 5 -spelare bör man ha en 100x100-karta. - - -Fråga: Vad innebär servertillvalet "generator"? - - Den påverkar det sätt på vilket kartan skapas. Om man spelat -Freeciv några gånger utan att ändra på denna servertillvalet har -man säkerligen hört talas om (och/eller upplevt) problemen med en -alldeles för liten ö. Att behöva börja på en alldeles för liten ö kan -göra folk vansinniga. För att åtgärda detta har våra godhjärtade -hjältar till programmerare byggt in servertillvalet "generator". -- När den är satt till 1 ger det en vanlig karta med öar av olika - (orättvisa) storlekar. -- När den är satt till 2 skapas en karta m.h.a. en pseudo-fraktal - generator. Det innebär att berg och kullar placeras i enlighet - med en naturlig matematisk formel. -- När den är satt till 3 skapas en lika stor ö för varje spelare, - så att ingen kan skylla på sin ö om de förlorar. -- 0 används för färdiga kartor. Ladda en karta med /load - /katalog/savegame.sav.gz i chatraden. - -Under "generator" finns även tillvalet "startpos". Detta tillval -avgör hur många spelare som startar på samma ö. Varje "generator"- -tillval has sitt egen standardvärde som används när "startpos" är -satt till 0. Standardvärdet för "generator" 2 till exempel är 3, -vilket innbär att den försöker placera samtliga spelare på samma ö. - -Fråga: Ska man förenkla spelet genom att öka mängden guld som spelarna - får att börja med? - - Om en oerfaren spelare som spelar mot erfarna spelare föreslår -en ökning av guldmängden kommer antagligen ingen att beklaga sig. -Detta är dock inget bra sätt att lära sig att spela. Att börja med -massor av guld gör spelet mycket enklare och gör det svårare att lära -sig att hanskas med standardguldmängden. De flesta erfarna spelare -ökar inte mängden, och de vet hur de ska få mest nytta av en ökning. -Det vet inte oerfarna spelare. Därför går de i så fall samma öde till -mötes som Atlantis. - -Anmärkning: Samma sak gäller inställningarna "techlevel" och -"researchspeed" - -Fråga: Hur är det med de andra inställningarna? - - Resten av dem har mest att göra med vilken sorts karta som -kommer att skapas inför spelet. Att öka "specials" ger större -sannolikhet att få många tillgångar/ruta och "huts" avgör hur många -mindre stambyar det ska finnas. Att öka antalet bosättare och -utforskare gör att spelet går fortare och ökar sannolikheten att -spelare överlever barbarstammarna som i bland finns i de mindre -stambyarna. - - Inställningarna som har med järnväg att göra avgör hur mycket -en ruta ger i form av mat/sköldar/handel med järnväg och "foodbox" -bestämmer hur mycket mat varje medborgare i en stad måste ha innan en -ny person kan läggas till. - - För övrigt ger högre "mountains" mer berg, högre "deserts" ger -mer öken och så vidare. - -Fråga: Hur får man en viss teknologi? - - Titta i den inbyggda hjälpen. Den visar vilka teknologier man -måste ha först. - -Det går även att se detta i David Pfitzners "techtree"-karta som kan -laddas ned från . - -Om det inte går man kan läsa i "data/default/techs.ruleset". Där står -vilka teknologier som man måste ha innan man kan få en given -teknologi. - -Fråga: Vilka krigsenheter är bäst? - - För angrepp: - - pansar, helikopter, kryssningsmissil, slagskepp, fraktskepp, - kärnvapen, haubits, bombflygplan. - - För försvar: - - pansar, mekaniserat infanteri, haubits, slagskepp, - kryssningsmissil, kärnvapen. - -Kom i håg att det bästa försvaret är ett kraftfullt angrepp. - -Tillägg till detta dokument är välkomna! diff --git a/doc/sv/README.sv b/doc/sv/README.sv deleted file mode 100644 index f8e808b5f0..0000000000 --- a/doc/sv/README.sv +++ /dev/null @@ -1,487 +0,0 @@ -=================== -Freeciv Version 2.2 -=================== - -Välkommen till Freeciv! - -Detta arkiv innehåller Freeciv, ett fritt Civilizationsliknande spel, -huvudsakligen för X under Unix. Den har stöd för flerspelarspel lokalt -eller över nätverk, samt utmanande datorstyrda spelare. - -Freeciv siktar på att ha regler som huvudsakligen stämmer överens med -Civilisation II [tm] utgivet av Sid Meier och Microprose [tm]. Vissa -regler är annorlunda för att vi tycker att det är bättre så. Det finns -många inställbara parametrar för att anpassa sina spel. - -Freeciv har skapats helt oberoende av Civilization; man behöver inte -äga Civilization för att spela Freeciv. - -Detta är den svenska översättningen av filen "../README". Eftersom -denna översättning har färre läsare än originalet är det större risk -att den innehåller felaktigheter. Det kan finnas oupptäckta -felöversättningar, rester av gammal information som tagits bort i -originalet men ej i översättningen, samt tillägg i originalfilen -som ännu inte kommit med i översättningen. Jämför därför med -originalet om tveksamhet uppstår. Vid felaktigheter, säg till på -diskussionslistan . - - -Webbplats: -========== - -Freecivs webbplats är: - - http://www.freeciv.org/ - -Här kan man få de senaste nyheterna, utgåvorna och uppdateringarna, -hitta information om Freecivs diskussionslistor samt se metaservern -som visar information om spel som spelas runt om i världen. - -Licens: -======= - -Freeciv ges ut under GNU General Public License. Det betyder i korthet -att man får kopiera detta program (även källkoden) fritt, men se filen -"COPYING" för fullständiga villkor. - -Kompilera och installera: -========================= - -Var god läs filen INSTALL.sv noga för anvisningar kompilering och -installering av Freeciv. - - -Påbörja ett nytt spel: -====================== - -Freeciv är 2 program, en server och en klient. När ett spel är i gång -körs ett serverprogram och så många klientprogram som det finns -mänskliga spelare. Serverprogrammet behöver inte X, men det gör -klientprogrammen. - - ANMÄRKNING: - Följande exempel antar att Freeciv har installerats på systemet och - att katalogen som innehåller programmen "civclient" och "civserver" - finns i variabeln PATH. Om Freeciv inte är installerat kan man - använda programmen "civ" och "ser" som finns i freecivkatalogen. De - används på samma sätt som "civclient" och "civserver". - -För att kunna spela Freeciv behöver man starta servern, klienterna och -datorspelarna, samt ge servern startkommandot. Här är stegen: - -Server: - - För att starta servern: - - | % civserver - - Eller för en lista över kommandoradsargument: - - | % civserver --help - - När servern har startats visas en prompt: - - | För inledande hjälp, skriv 'help'. - | > - - och man kan se denna information genom att använda hjälpkommandot: - - | > help - | Välkommen - detta är den inledande hjälptexten för - | freecivservern. - | - | 2 Viktiga serverbegrepp är kommandon och valmöjligheter. - | Kommandon, såsom "help", används för att växelverka med servern. - | Vissa kommandon tar ett eller flera argument, åtskilda av - | blanksteg. I många fall kan kommandon och kommandoargument - | förkortas. Valmöjligheter är inställningar som styr servern medan - | den är i gång. - | - | För att ta reda på hur man får mer information om kommandon och - | valmöjligheter, använd "help help". - | - | För den otåliga är kommandona för att komma i gång: - | show - se nuvarande valmöjligheter - | set - sätt valmöjligheter - | start - sätt i gång spelet när spelare har anslutit sig - | save - spara nuvarande spel - | quit - avsluta - | > - - Man kan använda kommandot "set" för att ändra någon av - servervalmöjligheterna. Man kan få en lista med alla - servervalmöjligheter med kommandot "show" och utförliga - beskrivningar av varje servervalmöjlighet med kommandot "help - ". - - Till exempel: - - | > help size - | Valmöjlighet: size - kartstorlek i 1000 rutor - | Beskrivning: - | Detta värde bestämmer kartans storlek. - | size = 4 är en normal karta med 4000 rutor (standard) - | size = 20 är en jättelik karta med 20000 rutor - | Status: ändringsbar - | Värde: 4, Minsta möjliga: 1, Standard: 4, Högsta möjliga: 29 - - Och: - - | > set size 8 - - Detta gör kartan dubbelt så stor som standardstorleken. - -Klient: - - Nu ska alla mänskliga spelare ansluta genom att köra - freecivklienten: - - | % civclient - - Detta antar att servern kör på samma maskin. Om inte kan man - antingen ange det på kommandoraden med parametern "--server" eller - skriva in det i den första dialogrutan som visas i klientprogrammet. - - Antag till exempel att servern körs på en annan maskin kallad - "baldur". Då ansluter spelare med kommandot: - - | % civclient --server baldur - - Om man är den enda mänskliga spelaren behöver endast en klient - användas. På vanligt Unixvis kan man köra klienten i bakgrunden - genom att lägga till ett och-tecken: - - | % civclient & - - En annan valmöjlighet är "--tiles" som används för att köra klienten - med en annan uppsättning rutbilder för landskap, enheter med mera. - Utgåvan innehåller 2 uppsättningar rutbilder: - - amplio: Isometrisk, större och mer detaljerade rutor. - - isotrident: Isometrisk, liknar Civilization 2. - - trident: Liknar Civilization 1, rutstorlek 30x30 bildpunkter. - - isophex: Isometrisk och hexagonal. - - hex2t: Hexagonal. - - I denna utgåva är amplio stadardrutbildsuppsättning. - Kör klienten med följande kommando för att använda en annan - uppsättning, t.ex. trident: - - | % civclient --tiles trident - - Andra uppsättningar kan hämtas från: - - http://www.freeciv.org/wiki/Tilesets - - Klienter kan ges tillåtelse att utföra serverkommandon. Skriv - följande vid serverprompten för att endast ge dem tillåtelse att - endast ge informationskommandon: - - | > cmdlevel info - - Klienter kan nu använda "/help", "/list", "/show settlers" med mera. - -Datorstyrda spelare: - - Det finns 2 sätt att skapa datorstyrda spelare. Det först är att - ange antalet spelare med servervalmöjligheten "aifill": - - | > set aifill 7 - - Efter att ha använt serverkommandot "start" för att sätta i gång - spelet, kommer de spelare som inte är mänskliga att bli datorstyrda. - I exempelt ovan skulle 5 datorstyrda spelare ha skapats om det hade - funnits 2 mänskliga spelare. - - Det andra sättet är att skapa en datorspelare med serverkommandot - "create": - - | > create Widukind - - Detta skapar den datorstyrda spelaren Widukind. - - Datorstyrda spelare tilldelas folkstammar efter att alla mänskliga - spelare har valt folkstammar, men man kan välja en särskild folkstam - för en datorstyrd spelare genom att använda ett namn som är namnet - på en ledare för den folkstammen. Man kan till exempel spela mot - ryssarna med följande kommando: - - | > create Stalin - - Om ingen av de mänskliga spelarna väljer att spela med ryssarna - kommer denna datorstyrda spelare att göra det. - -Server: - - När alla har anslutit (använd kommandot "list" för att se vilka som - är anslutna), sätt i gång spelet med kommandot "start": - - | > start - - Sedan är spelet i gång! - -Lägg märke till att i denna version av Freeciv har GTK- samt SDL- -klienterna förmågan att automatiskt starta en civserver-session i -bakgrunden när spelaren väljer att starta ett nytt spel från -huvudmenyn. Tack vare detta har det blivit mycket enklare att -komma igång med att spela Freeciv. Å andra sidan innebär det att -i det fall klienten krashar, drar den med sig servern i fallet och -det pågående spelet går förlorat. P.g.a. detta är det fortfarande -rekommenderat att starta civserver separat från civclient. - - -Tillkännage spelet: -=================== - -Om man vill ha andra motståndare än lokala vänner och datorstyrda -spelare kan man besöka Freecivs metaserver: - - http://meta.freeciv.org/ - -Det är en lista över freecivservrar. För att få sin server att anmäla -sig där kör man civserver med kommandoradsargumentet "--meta" eller -"-m". - -Varningar: - - 1) På grund av nya funktioner är olika versioner av server och klient - ofta oförenliga. Versionen 2.0.0 är till exempel oförenlig med - 1.14.2 och tidigare versioner. - - 2) Om metaserverknappen i anslutningsdialogen inte fungerar, undersök - om internetanslutningen kräver en WWW-proxy, och se till att - Freeciv använder den genom att ställa in variabeln $http_proxy. Om - proxyn till exempel är proxy.minanslutning.se port 8888, sätt - $http_proxy till http://proxy.minanslutning.se:8888/ innan - klienten startas. - - 3) Ibland finns det inga spel på metaservern. Antalet spelare där - växlar under dygnets tider. Försök att skapa ett spel där själv! - - -Under spelets gång: -=================== - -Spelet kan sparas med serverkommandot "save": - - | > save mittspel.sav - -(Om servern är kompilerad med packningsstöd och servervalmöjligheten -"compress" är satt till någnting annat än 0 packas filen och kallas -mittspel.sav.gz.) - -Freecivklienten fungerar i stort sett så som man kan förvänta sig av -ett civilizationspel med flerspelarstöd. De mänskliga spelarna gör -sina drag samtidigt. De datorstyrda spelarna gör sina drag när de -mänskliga spelarna har avslutat sina omgångar. Det finns en tidsgräns -som är satt till 0 sekunder (ingen tidsgräns) som standard. Detta -värde kan ändras med serverkommandot "set". - -Titta på hjälpen i klientprogrammet. Alla 3 musknapparna används och -är dokumenterade i hjälpen. - -Spelare kan trycka på returnknappen eller klicka på "Avsluta -omgång"-knappen för att avsluta sin omgång. - -Använd spelardialogen för att se vilka som har avslutat sin omgång och -vilka man väntar på. - -Använd inmatningsraden vid fönstrets underkant för att skicka -meddelanden till andra spelare. - -Man kan skicka ett meddelande till en enskild spelare (till exempel -"einar"): - - | einar: flytta på pansarvagnen NU! - -Servern kan gissa sig till namn om man skriver dem ofullständigt. Om -man till exempel skriver "ein:" hittar den spelaren med namn som -stämmer delvis med namnet man skrev. - -På nyare servrar (version 1.8.1 eller vissa utvecklingsversioner av -1.8.0) eller nyare kan man ge serverkommandon på klientens -inmatningsrad: - - | /list - | /set settlers 4 - | /save mittspel.sav - -Serverhandhavaren tillåter kanske bara informationskommandon eftersom -det är en säkerhetsrisk att låta spelare använda alla serverkommandon, -till exempel: - - | /save /etc/passwd - -Naturligtvis ska freecivservern inte köras med fullständiga -rättigheter på grund av denna risk. - -Om man just har börjat spela Freeicv och vill ha hjälp med strategin -kan man titta i filen "HOWTOPLAY.sv". - -Se freecivhandboken på följande adress för mycket mer information om -klienten, servern och spelet: - - http://www.freeciv.org/wiki/Manual - - -Avsluta spelet: -=============== - -Det finns 3 sätt att avsluta spelet: - -1) Vara den enda återstående spelaren. -2) Nå slutåret. -3) Bygga ett rymdskepp och sända i väg det så att det når Alfa - Kentauri. - -En utvärderingstabell visas i samtliga fall. Anmärkning: -Serverhandhavaren kan sätta slutåret när spelet är i gång genom att -ändra servervalmöjligheten "end-year". Detta är användbart när det är -uppenbart vem som kommer att segra men man inte vill spela sig igenom -uppstädningen. - - -Öppna spel: -=========== - -Man kan öppna ett sparat spel genom att köra servern med -kommandoradsargumentet "-f": - - | % civserver -f mittspel2001.sav - -eller om filen är pacakd: - - | % civserver -f mittspel2001.sav.gz - -Sedan kan spelarna återansluta: - - | % civclient -n Bismarck - -Lägg märke till att spelarnamnet anges med kommandoradsargumentet -"-n". Det är viktigt att spelaren använder sama namn som den använde -förrut, annars släpps de inte in. - -Spelet kan sättas i gång igen med serverkommandot "start". - - -Lokalt språkstöd: -================= - -Freeciv stöder flera språk. - -Man kan välja vilket lokalt språk man vill använda genom att ange en -"locale". Varje locale har ett standardnamn (till exempel "de" för -tyska). Om man har installerat Freeciv kan man välja locale genom att -sätta variablen LANG till denna locales standardnamn innan man kör -civserver och civclient. För att till exempel köra Freeciv på tyska -gör man så här: - - export LANG; LANG=de (i Bourneskalet (sh)) - -eller - - setenv LANG de (i C-skalet (csh)) - -(Man kan göra detta i sin "~/.profile" eller "~/.login".) - -Loggmeddelanden: -================ - -Både klienten och servern skriver loggmeddelanden. Dessa är av 5 olika -slag: "fatal", "error", "normal", "verbose", samt "debug". - -Som standard skrivs fatal-, error- samt normal-meddelanden till -standard output. Man man skicka loggmeddelanden till en fil i stället -med kommandoradsargumentet "--log " eller "-l filnamn". - -Man kan ändra loggläget med kommandoradsargumentet "--debug " -eller "-d " (eller "-de " för Xawklienten eftersom "-d" är -flertydigt mellan "-debug" och "-display"), där är 0, 1, 2 -eller 3. 0 betyder att endast dödligameddelanden visas, 1 betyder att -dödliga och felmeddelanden visas, 2 betyder att dödliga, fel- och -normala meddelanden visas (standard). 3 betyder att dödliga, fel-, -normala och mångordiga meddellanden visas. - -Om man kompilerar med DEBUG definierad (ett enkelt sätt att göra detta -är att konfigurera med "--enable-debug") , kan man få -avlusningsmeddelanden genom att sätta loggläget till 4. Det är -dessutom möjligt att styra avlusningsmeddelanden (men inte andra -meddelanden) med avseende på fil. Använd då "--debug 4:str1:str2" (så -många strängar man vill) och alla filnamn som överensstämmer med dessa -strängar som understräng har avlusningsloggning påslaget. Alla andra -avlusningsmeddelanden stängs av. Använd "--debug 4:str1,undre,övre" -för att styra rader. Endast meddelanden mellan undre raden och övre -raden kommer att visas. Endast 1 uppsättning gränser kan anges för en -fil. - -Exempel: - - | % civserver -l mitt.log -d 3 - -Detta skickar alla loggmeddelanden, innefattande verbose- -meddelanden, från servern till filen "mitt.log". - -Exempel: - - | % civclient --debug 0 - -Detta döljer alla loggmeddelanden utom dödliga meddelanden. - -Exempel: - - | % civserver -d 4:log:civserver,120,500:autoattack - -Detta visar alla fatal-, error-, normal- samt verbose-meddelanden för -servern, samt avlusningsmeddelanden för vissa angivna delar. Lägg -märke till att "log" stämmer överens med både "gamelog.c" och "log.c". -För "civserver.c" visas endast avlusningsmeddelanden mellan raderna -120 och 500. Detta exempel fungerar endast om servern har kompilerats -med DEBUG. - - -Buggar: -======= - -Vi vill gärna bli underrättade om buggar så att vi kan åtgärda dem. -Se filen BUGS.sv för instruktioner om hur man rapporterar buggar. - - -Diskussionslistor: -================== - -Vi har fyra diskussionslistor: - - freeciv-announce Kungörelser av allmänt intresse. - Denna lista kan endast läsas och har låg aktivitet. - Man kan alltså inte skicka mail till - listan utan bara ta emot. - freeciv-i18n Översättning av Freeciv. - Samtal om översättning av Freecivkoden, - dokumentation och websida till andra språk än - engelska. - freeciv-dev Programmering och annan utveckling. - freeciv-commits Kungörelser om ändringar i SVN-trädet. - Denna lista kan endast läsas och sprider - automatiska meddelanden. Man kan alltså inte skicka - brev till listan utan endast ta emot. - -Alla listor är öppna för allmänheten och alla är välkomna att prenumerera. - -Listorna tillhandahålls av gna.org. För mer information hur du kan -läsa och prenumerera, se http://gna.org/mail/?group=freeciv - - -Internet Relay Chat (IRC) -========================= - -Flera spelare och utvecklare håller till på #freeciv och #freeciv-dev -på Freenode. Försök ansluta till servern: - - irc.freenode.net - - -Slutligen: -========== - -Ha det kul och lycka till! - - -- Freecivgänget diff --git a/docs/Developing/bugs.rst b/docs/Developing/bugs.rst new file mode 100644 index 0000000000..85bf089cc8 --- /dev/null +++ b/docs/Developing/bugs.rst @@ -0,0 +1,37 @@ +Filing Bugs and Enhancement Requests +************************************ + +Freeciv21 certainly contains some bugs and definitely needs improvements. Please report all you find or want +to report to https://github.com/longturn/freeciv21/issues/new/choose. + +The project team has implemented GitHub Issue Templates to make the process as easy as possible. We currently +have 3 different ones: Bug Report, Documentation Request, and Feature Request. Each template has prompts to +help you fill in the details. + +.. image:: ../_static/images/github_issue_templates.png + :align: center + :alt: GitHub Issue Templates + + + +Reporting an Issue +================== + +The Freeciv21 project uses GitHub issues to track bugs, enhancement requests and documentation requests. Take +note of the following when thinking of submitting an issue. + +* Check that it is not listed as a known issue. For a continuously updated list, see: + https://github.com/longturn/freeciv21/issues + +* Check the Freeciv21 Releases page at https://github.com/longturn/freeciv21/releases, to ensure you're + playing the latest version. We may have already fixed the problem. + +* If the first two items don't work, then feel free to submit a new issue. We have implemented GitHub issue + templates so they will walk you through the major aspects of a new issue. It is important to note that the + more details you can provide, the better. If a screen shot is available, then by all means supply it to us. + + * If you are an advanced hacker, you can also providde a core dump or stack trace to better help the + developers of Freeciv21 understand the nature of the issue. + + * If there is an issue in a translation, please report it. We are still getting organized with + internationalization (i18n) support for the client and server. The more we know the better. diff --git a/docs/Developing/hacking.rst b/docs/Developing/hacking.rst new file mode 100644 index 0000000000..877c669d66 --- /dev/null +++ b/docs/Developing/hacking.rst @@ -0,0 +1,927 @@ +Contributing to Freeciv21 +************************* + +This guide is intended to be a help for developers, wanting to mess with Freeciv21 programming. + + +Basic +===== + +Freeciv21 is a client/server civilization style of game. The client is pretty dumb. Almost all calculations +are performed on the server. + +The source code has the following important directories: + +* :file:`dependencies`: code from upstream projects +* :file:`utility`: utility functionality that is not freeciv-specific +* :file:`common`: data structures and code used by both the client and server. +* :file:`server`: (duh) +* :file:`client`: common client code +* :file:`client/gui-qt` Qt gui implementation of the client. +* :file:`data`: graphics, rulesets and stuff +* :file:`translations`: localization files +* :file:`ai`: the ai, later linked into the server +* :file:`tools`: Freeciv21 support executables + +Freeciv21 is written in C and C++. Header files should be compatible with C++ so that C++ add-ons are +possible. + +Server +====== + +General: + +The server main loop basically looks like: + +.. code-block:: rst + + while (server_state == RUN_GAME_STATE) { /* looped once per turn */ + do_ai_stuff(); /* do the ai controlled players */ + sniff_packets(); /* get player requests and handle them */ + end_turn(); /* main turn update */ + game_next_year(); + + +Most time is spend in the :code:`sniff_packets()` function, where a :code:`select()` call waits for packets or +input on stdin(server-op commands). + +Server Autogame Testing +----------------------- + +Code changes should always be tested before submission for inclusion into the GitHub source tree. It is +useful to run the client and server as autogames to verify either a particular savegame no longer shows a +fixed bug, or as a random sequence of games in a while loop overnight. + +To start a server game with all AI players, create a file (below named civ.serv) with lines such as the +following: + +.. code-block:: rst + + # set gameseed 42 # repeat a particular game (random) sequence + # set mapseed 42 # repeat a particular map generation sequence + # set timeout 3 # run a client/server autogame + set timeout -1 # run a server only autogame + set minplayers 0 # no human player needed + set ec_turns 0 # avoid timestamps in savegames + set aifill 7 # fill to 7 players + hard # make the AI do complex things + create Caesar # first player (with known name) created and + # toggled to AI mode + start # start game + + +.. note:: + The server prompt is unusable when game with :code:`timeout` set to -1 is running. You can stop such game + with single :code:`ctrl+c`, and continue by setting :code:`timeout` to -1 again. + + +The commandline to run server-only games can be typed as variations of: + +.. code-block:: rst + + $ while( time server/freeciv21-server -r civ.serv ); do date; done + --- or --- + $ server/freeciv21-server -r civ.serv -f buggy1534.sav.gz + +To attach one or more clients to an autogame, remove the :code:`start` command, start the server program and +attach clients to created AI players. Or type :code:`aitoggle ` at the server command prompt for each +player that connects. Finally, type :code:`start` when you are ready to watch the show. + +.. note:: + The server will eventually flood a client with updates faster than they can be drawn to the screen, + thus it should always be throttled by setting a timeout value high enough to allow processing of the large + update loads near the end of the game. + + +The autogame mode with :code:`timeout -1` is only available in DEBUG versions and should not be used with +clients as it removes virtually all the server gating controls. + +If you plan to compare results of autogames the following changes can be helpful: + +* :code:`define __FC_LINE__` to a constant value in :file:`./utility/log.h` +* :code:`undef LOG_TIMERS` in :file:`./utility/timing.h` +* deactivation of the event cache (:code:`set ec_turns 0`) + + +Data Structures +=============== + +For variable length list of fx units and cities Freeciv21 uses a :code:`genlist`, which is implemented in +:file:`utility/genlist.cpp`. By some macro magic type specific macros have been defined, avoiding much trouble. + +For example a tile struct (the pointer to it we call :code:`ptile`) has a unit list, :code:`ptile->units`; to +iterate though all the units on the tile you would do the following: + +.. code-block:: rst + + unit_list_iterate(ptile->units, punit) { + /* In here we could do something with punit, which is a pointer to a + unit struct */ + } unit_list_iterate_end; + +Note that the macro itself declares the variable :code:`punit`. Similarly there is a + +.. code-block:: rst + + city_list_iterate(pplayer->cities, pcity) { + /* Do something with pcity, the pointer to a city struct */ + } city_list_iterate_end; + +There are other operations than iterating that can be performed on a list; inserting, deleting, sorting etc. +See :file:`utility/speclist.h`. Note that the way the :code:`*_list_iterate macro` is implemented means you can +use "continue" and "break" in the usual manner. + +One thing you should keep in the back of your mind: Say you are iterating through a unit list, and then +somewhere inside the iteration decide to disband a unit. In the server you would do this by calling +:code:`wipe_unit(punit)`, which would then remove the unit node from all the relevant unit lists. But by the +way :code:`unit_list_iterate` works, if the removed unit was the following node :code:`unit_list_iterate` will +already have saved the pointer, and use it in a moment, with a segfault as the result. To avoid +this, use :code:`unit_list_iterate_safe` instead. + +You can also define your own lists with operations like iterating; read how in :file:`utility/speclist.h`. + +Network and Packets +=================== +The basic netcode is located in :file:`server/sernet.cpp` and :file:`client/clinet.cpp`. + +All information passed between the server and clients, must be sent through the network as serialized packet +structures. These are defined in :file:`common/packets.h`. + +For each 'foo' packet structure, there is one send and one receive function: + +.. code-block:: rst + + int send_packet_foo(struct connection *pc, struct packet_foo *packet); + struct packet_foo * receive_packet_foo(struct connection *pc); + + +The :code:`send_packet_foo()` function serializes a structure into a bytestream and adds this to the send +buffer in the connection struct. The :code:`receive_packet_foo()` function de-serializes a bytestream into a +structure and removes the bytestream from the input buffer in the connection struct. The connection struct is +defined in :file:`common/connection.h`. + +Each structure field in a structure is serialized using architecture independent functions such as +:code:`dio_put_uint32()` and de-serialized with functions like :code:`dio_get_uint32()`. + +A packet is constituted by header followed by the serialized structure data. The header contains the following +fields (the sizes are defined in :file:`common/packets.cpp`:code:`packet_header_set()`): + +.. code-block:: rst + + uint16 : length (the length of the entire packet) + uint16 : type (e.g. PACKET_TILE_INFO) + + +For backward compatibility reasons, packets used for the initial protocol (notably before checking the +capabilities) have different header fields sizes (defined in :file:`common/packets.c`:code:`packet_header_init()`): + +.. code-block:: rst + + uint16 : length (the length of the entire packet) + uint8 : type (e.g. PACKET_SERVER_JOIN_REQ) + + +To demonstrate the route for a packet through the system, here's how a unit disband is performed: + +#. A player disbands a unit. +#. The client initializes a packet_unit_request structure, and calls the packet layer function + :code:`send_packet_unit_request()` with this structure and packet type: :code:`PACKET_UNIT_DISBAND`. +#. The packet layer serializes the structure, wraps it up in a packet containing the packetlength, type and + the serialized data. Finally the data is send to the server. +#. On the server the packet is read. Based on the type, the corresponding de-serialize function is called is + called by :code:`get_packet_from_connection()`. +#. A :code:`packet_unit_request` is initialized with the bytestream. +#. Since the incoming packet is a request (a request in this context is every packet sent from the client to + the server) the server sends a :code:`PACKET_PROCESSING_STARTED` packet to the client. +#. Finally the corresponding packet-handler, :code:`handle_unit_disband()` function, is called with the newly + constructed structure. +#. The handler function checks if the disband request is legal (is the sender really the owner of the unit) etc. +#. The unit is disbanded => :code:`wipe_unit()` => :code:`send_remove_unit()`. +#. Now an integer, containing the id of the disbanded unit is wrapped into a packet along with the type + :code:`PACKET_REMOVE_UNIT`: :code:`send_packet_generic_integer()`. +#. The packet is serialized and send across the network. +#. The packet-handler returns and the end of the processing is announced to the client with a + :code:`PACKET_PROCESSING_FINISHED` packet. +#. On the client the :code:`PACKET_REMOVE_UNIT` packet is deserialized into a :code:`packet_generic_integer` + structure. +#. The corresponding client handler function is now called :code:`handle_remove_unit()`, and finally the unit + is disbanded. + +Notice that the two packets (:code:`PACKET_UNIT_DISBAND` and :code:`PACKET_REMOVE_UNIT`) were generic packets. +That means the packet structures involved, are used by various requests. The :code:`packet_unit_request()` is +for example also used for the packets :code:`PACKET_UNIT_BUILD_CITY` and :code:`PACKET_UNIT_CHANGE_HOMECITY`. + +When adding a new packet type, check to see if you can reuse some of the existing packet types. This saves you +the trouble of writing new serialize/deserialize functions. + +The :code:`PACKET_PROCESSING_STARTED` and :code:`PACKET_PROCESSING_FINISHED` packets from above serve two main +purposes: + +#. They allow the client to identify what causes a certain packet the client receives. If the packet is framed + by :code:`PACKET_PROCESSING_STARTED` and :code:`PACKET_PROCESSING_FINISHED` packets it is the causes of the + request. If not the received packet was not caused by this client (server operator, other clients, server + at a new turn) + +#. After a :code:`PACKET_PROCESSING_FINISHED` packet the client can test if the requested action was performed + by the server. If the server has sent some updates the client data structure will now hold other values. + +The :code:`PACKET_FREEZE_HINT` and :code:`PACKET_THAW_HINT` packets serve two purposes: + +#. Packets send between these two packets may contain multiple information packets which may cause multiple + updates of some GUI items. :code:`PACKET_FREEZE_HINT` and :code:`PACKET_THAW_HINT` can now be used to freeze + the GUI at the time :code:`PACKET_FREEZE_HINT` is received and only update the GUI after the + :code:`PACKET_THAW_HINT` packet is received. + +#. Packets send between these two packets may contain contradicting information which may confuse a + client-side AI (agents for example). So any updates send between these two packets are only processed after + the :code:`PACKET_THAW_HINT` packet is received. + +The following areas are wrapped by :code:`PACKET_FREEZE_HINT` and :code:`PACKET_THAW_HINT`: + +* the data send if a new game starts +* the data send to a reconnecting player +* the end turn activities + +Network Improvements +==================== + +In previous versions when a connection send buffer in the server got full we emptied the buffer contents and +continued processing. Unfortunately this caused incomplete packets to be sent to the client, which caused +crashes in either the client or the server, since the client cannot detect this situation. This has been fixed +by closing the client connection when the buffer is emptied. + +We also had (and still have) several problems related to flow control. Basically the problem is the server can +send packets much faster than the client can process them. This is especially true when in the end of the turn +the AIs move all their units. Unit moves in particular take a long time for the client to process since by +default smooth unit moves is on. + +There are 3 ways to solve this problem: +#. We wait for the send buffers to drain before continuing processing. +#. We cut the player's connection and empty the send buffer. +#. We lose packets (this is similar to 2) but can cause an incoherent state in the client). + +We mitigated the problem by increasing the send buffer size on the server and making it dynamic. We also added +in strategic places in the code calls to a new :code:`flush_packets()` function that makes the server stall for +some time draining the send buffers. Strategic places include whenever we send the whole map. The maximum +amount of time spent per :code:`flush_packets()` call is specified by the 'netwait' variable. + +To disconnect unreachable clients we added two other features: the server terminates a client connection if it +doesn't accept writes for a period of time (set using the :literal:`tcptimeout` variable). It also pings the +client after a certain time elapses (set using the :literal:`pingtimeout` variable). If the client doesn't +reply its connection is closed. + +Graphics +======== + +Currently the graphics is stored in the PNG file format. + +If you alter the graphics, then make sure that the background remains transparent. Failing to do this means +the mask-pixmaps will not be generated properly, which will certainly not give any good results. + +Each terrain tile is drawn in 16 versions, all the combinations with with a green border in one of the main +directions. Hills, mountains, forests and rivers are treated in special cases. + +Isometric tilesets are drawn in a similar way to how civ2 draws (that's why civ2 graphics are compatible). For +each base terrain type there exists one tile sprite for that terrain. The tile is blended with nearby tiles to +get a nice-looking boundary. This is erronously called "dither" in the code. + +Non-isometric tilesets draw the tiles in the "original" Freeciv21 way, which is both harder and less pretty. +There are multiple copies of each tile, so that a different copy can be drawn depending the terrain type of +the adjacent tiles. It may eventually be worthwhile to convert this to the civ2 system. + +Diplomacy +========= + +A few words about the diplomacy system. When a diplomacy meeting is established, a Treaty structure is created +on both of the clients and on the server. All these structures are updated concurrently as clauses are added +and removed. + +Map structure +============= + +The map is maintained in a pretty straightforward C array, containing X*Y tiles. You can use the function +:code:`struct tile *map_pos_to_tile(x, y)` to find a pointer to a specific tile. A tile has various fields; +see the struct in :file:`common/map.h`. + +You may iterate tiles, you may use the following methods: + +.. code-block:: rst + + whole_map_iterate(tile_itr) { + /* do something */ + } whole_map_iterate_end; + + +for iterating all tiles of the map; + +.. code-block:: rst + + adjc_iterate(center_tile, tile_itr) { + /* do something */ + } adjc_iterate_end; + + +for iterating all tiles close to 'center_tile', in all *valid* directions for the current topology (see +below); + +.. code-block:: rst + + cardinal_adjc_iterate(center_tile, tile_itr) { + /* do something */ + } cardinal_adjc_iterate_end; + + +for iterating all tiles close to 'center_tile', in all *cardinal* directions for the current topology (see +below); + +.. code-block:: rst + + square_iterate(center_tile, radius, tile_itr) { + /* do something */ + } square_iterate_end; + + +for iterating all tiles in the radius defined 'radius' (in real distance, see below), beginning by +'center_tile'; + +.. code-block:: rst + + circle_iterate(center_tile, radius, tile_itr) { + /* do something */ + } square_iterate_end; + + +for iterating all tiles in the radius defined 'radius' (in square distance, see below), beginning by +'center_tile'; + +.. code-block:: rst + + iterate_outward(center_tile, real_dist, tile_itr) { + /* do something */ + } iterate_outward_end; + + +for iterating all tiles in the radius defined 'radius' (in real distance, see below), beginning by +'center_tile'. (Actually, this is the duplicate of square_iterate); or various tricky ones defined in +:file:`common/map.h`, which automatically adjust the tile values. The defined macros should be used whenever +possible, the examples above were only included to give people the knowledge of how things work. + +Note that the following: + +.. code-block:: rst + + for (x1 = x-1; x1 <= x+1; x1++) { + for (y1 = y-1; y1 <= y+1; y1++) { + /* do something */ + } + } + + +is not a reliable way to iterate all adjacent tiles for all topologies, so such operations should be avoided. + + +Also available are the functions calculating distance between tiles. In Freeciv21, we are using 3 types of +distance between tiles: + +* :code:`map_distance(ptile0, ptile1)` returns the *Manhattan* distance between tiles, i.e. the distance from + :code:`ptile0` to :code:`ptile1`, only using cardinal directions, for example :code:`(abs(dx) + ads(dy))` for + non-hexagonal topologies. + +* :code:`real_map_distance(ptile0, ptile1)` returns the *normal* distance between tiles, i.e. the minimal + distance from :code:`ptile0` to :code:`ptile1` using all valid directions for the current topology. + +* :code:`sq_map_distance(ptile0, ptile1)` returns the *square* distance between tiles. This is a simple way to + make Pythagorean effects for making circles on the map for example. For non-hexagonal topologies, it would be + :code:`(dx * dx + dy * dy)`. Only useless square root is missing. + + +Different Types of Map Topology +------------------------------- + +Originally Freeciv21 supports only a simple rectangular map. For instance a 5x3 map would be conceptualized as + +.. code-block:: rst + + <- XXXXX -> + <- XXXXX -> + <- XXXXX -> + + +and it looks just like that under "overhead" (non-isometric) view (the arrows represent an east-west +wrapping). But under an isometric-view client, the same map will look like: + +.. code-block:: rst + + <- X -> + <- X X -> + <- X X X -> + <- X X X -> + <- X X X -> + <- X X -> + <- X -> + + +where "north" is to the upper-right and "south" to the lower-left. This makes for a mediocre interface. + +An isometric-view client will behave better with an isometric map. This is what Civ2, SMAC, Civ3, etc. all +use. A rectangular isometric map can be conceptualized as + +.. code-block:: rst + + <- X X X X X -> + <- X X X X X -> + <- X X X X X -> + <- X X X X X -> + + +(north is up) and it will look just like that under an isometric-view client. Of course under an overhead-view +client it will again turn out badly. + +Both types of maps can easily wrap in either direction: north-south or east-west. Thus there are four types +of wrapping: flat-earth, vertical cylinder, horizontal cylinder, and torus. Traditionally Freeciv only wraps +in the east-west direction. + + +Topology, Cardinal Directions and Valid Directions +-------------------------------------------------- + +A *cardinal* direction connects tiles per a *side*. Another *valid* direction connects tiles per a *corner*. + +In non-hexagonal topologies, there are 4 cardinal directions, and 4 other valid directions. In hexagonal +topologies, there are 6 cardinal directions, which matches exactly the 6 valid directions. + +Note that with isometric view, the direction named "North" (DIR8_NORTH) is actually not from the top to the +bottom of the screen view. All directions are turned a step on the left (:math:`pi/4` rotation with square +tiles, :math:`pi/3` rotation for hexagonal tiles). + + +Different Coordinate Systems +---------------------------- + +In Freeciv21, we have the general concept of a "position" or "tile". A tile can be referred to in any of +several coordinate systems. The distinction becomes important when we start to use non-standard maps (see +above). + +Here is a diagram of coordinate conversions for a classical map. + +.. code-block:: rst + + map natural native index + + ABCD ABCD ABCD + EFGH <=> EFGH <=> EFGH <=> ABCDEFGHIJKL + IJKL IJKL IJKL + + +Here is a diagram of coordinate conversions for an iso-map. + +.. code-block:: rst + + map natural native index + + CF A B C ABC + BEIL <=> D E F <=> DEF <=> ABCDEFGHIJKL + ADHK G H I GJI + GJ J K L JKL + + +Below each of the coordinate systems are explained in more detail. Note that hexagonal topologies are always +considered as isometric. + +Map (or "standard") coordinates + All of the code examples above are in map coordinates. These preserve the local geometry of square tiles, + but do not represent the global map geometry well. In map coordinates, you are guaranteed (so long as we use + square tiles) that the tile adjacency rules + +.. code-block:: rst + + | (map_x-1, map_y-1) (map_x, map_y-1) (map_x+1, map_y-1) + | (map_x-1, map_y) (map_x, map_y) (map_x+1, map_y) + | (map_x-1, map_y+1) (map_x, map_y+1) (map_x+1, map_y+1) + + +are preserved, regardless of what the underlying map or drawing code looks like. This is the definition of +the system. + +With an isometric view, this looks like: + +.. code-block:: rst + + | (map_x-1, map_y-1) + | (map_x-1, map_y) (map_x, map_y-1) + | (map_x-1, map_y+1) (map_x, map_y) (map_x+1, map_y-1) + | (map_x, map_y+1) (map_x+1, map_y) + | (map_x+1, map_y+1) + + +Map coordinates are easiest for local operations (like 'square_iterate' and friends, translations, rotations +and any other scalar operation) but unwieldy for global operations. + +When performing operations in map coordinates (like a translation of tile :code:`(x, y)` by :code:`(dx, dy)` +-> :code:`(x + dx, y + dy)`), the new map coordinates may be unsuitable for the current map. In case, you +should use one of the following functions/macros: + +* :code:`map_pos_to_tile()`: return NULL if normalization is not possible; + +* :code:`normalize_map_pos()`: return TRUE if normalization have been done (wrapping X and Y coordinates if + the current topology allows it); + +* :code:`is_normal_map_pos()`: return TRUE if the map coordinates exist for the map; + +* :code:`is_real_map_pos()`: return TRUE if the map coordinates may exist if we perform normalization. + +* :code:`CHECK_MAP_POS()`: assert whether the map coordinates exist for the map. + +Map coordinates are quite central in the coordinate system, and they may be easily converted to any other +coordinates: :code:`MAP_TO_NATURAL_POS()`, :code:`MAP_TO_NATIVE_POS()`, :code:`map_pos_to_index()`. + +Natural coordinates + Natural coordinates preserve the geometry of map coordinates, but also have the rectangular property of + native coordinates. They are unwieldy for most operations because of their sparseness - they may not have + the same scale as map coordinates and, in the iso case, there are gaps in the natural representation of a map. + + With classical view, this looks like: + +.. code-block:: rst + + (nat_x-1, nat_y-1) (nat_x, nat_y-1) (nat_x+1, nat_y-1) + (nat_x-1, nat_y) (nat_x, nat_y) (nat_x+1, nat_y) + (nat_x-1, nat_y+1) (nat_x, nat_y+1) (nat_x+1, nat_y+1) + + +With an isometric view, this looks like: + +.. code-block:: rst + + | (nat_x, nat_y-2) + | (nat_x-1, nat_y-1) (nat_x+1, nat_y-1) + | (nat_x-2, nat_y) (nat_x, nat_y) (nat_x+2, nat_y) + | (nat_x-1, nat_y+1) (nat_x+1, nat_y+1) + | (nat_x, nat_y+2) + + +Natural coordinates are mostly used for operations which concern the user view. It is the best way to +determine the horizontal and the vertical axis of the view. + +The only coordinates conversion is done using :code:`NATURAL_TO_MAP_POS()`. + +Native coordinates + With classical view, this looks like: + +.. code-block:: rst + + (nat_x-1, nat_y-1) (nat_x, nat_y-1) (nat_x+1, nat_y-1) + (nat_x-1, nat_y) (nat_x, nat_y) (nat_x+1, nat_y) + (nat_x-1, nat_y+1) (nat_x, nat_y+1) (nat_x+1, nat_y+1) + + +With an isometric view, this looks like: + +.. code-block:: rst + + | (nat_x, nat_y-2) + | (nat_x-1, nat_y-1) (nat_x, nat_y-1) + | (nat_x-1, nat_y) (nat_x, nat_y) (nat_x+1, nat_y) + | (nat_x-1, nat_y+1) (nat_x, nat_y+1) + | (nat_x, nat_y+2) + + +Neither is particularly good for a global map operation such as map wrapping or conversions to/from map +indexes, something better is needed. + +Native coordinates compress the map into a continuous rectangle; the dimensions are defined as +:code:`map.xsize x map.ysize`. For instance the above iso-rectangular map is represented in native +coordinates by compressing the natural representation in the X axis to get the 3x3 iso-rectangle of + +.. code-block:: rst + + ABC (0,0) (1,0) (2,0) + DEF <=> (0,1) (1,1) (2,1) + GHI (0,2) (1,2) (3,2) + + +The resulting coordinate system is much easier to use than map coordinates for some operations. These +include most internal topology operations (e.g., :code:`normalize_map_pos`, :code:`whole_map_iterate`) as +well as storage (in map.tiles and savegames, for instance). + +In general, native coordinates can be defined based on this property: the basic map becomes a continuous +(gap-free) cardinally-oriented rectangle when expressed in native coordinates. + +Native coordinates can be easily converted to map coordinates using :code:`NATIVE_TO_MAP_POS()`, to index +using: code:`native_pos_to_index()` and to tile (shortcut) using :code:`native_pos_to_tile()`. + +After operations, such as :code:`FC_WRAP(x, map.xsize)`, the result may be checked with +:code:`CHECK_NATIVE_POS()`. + +Index coordinates + Index coordinates simply reorder the map into a continuous (filled-in) one-dimensional system. This + coordinate system is closely tied to the ordering of the tiles in native coordinates, and is slightly + easier to use for some operations (like storage) because it is one-dimensional. In general you can't assume + anything about the ordering of the positions within the system. + + Indexes can be easily converted to native coordinates using :code:`index_to_native_pos()` or to map positions + (shortcut) using :code:`index_to_map_pos()`. + + An map index can tested using the :code:`CHECK_INDEX` macro. + +With a classical rectangular map, the first three coordinate systems are equivalent. When we introduce +isometric maps, the distinction becomes important, as demonstrated above. Many places in the code have +introduced :code:`map_x/map_y` or :code:`nat_x/nat_y` to help distinguish whether map or native coordinates are +being used. Other places are not yet rigorous in keeping them apart, and will often just name their variables +code:`x` and code:`y`. The latter can usually be assumed to be map coordinates. + +Note that if you don't need to do some abstract geometry exploit, you will mostly use tile pointers, and give +to map tools the ability to perform what you want. + +Note that :code:`map.xsize` and :code:`map.ysize` define the dimension of the map in :code:`_native_` coordinates. + +Of course, if a future topology does not fit these rules for coordinate systems, they will have to be refined. + +Native coordinates on an isometric map +-------------------------------------- + +An isometric map is defined by the operation that converts between map (user) coordinates and native +(internal) ones. In native coordinates, an isometric map behaves exactly the same way as a standard one. (See +"native coordinates", above. + +Converting from map to native coordinates involves a :math:`pi/2` rotation (which scales in each dimension by +:math:`sqrt(2)`) followed by a compression in the :code:`X` direction by a factor of 2. Then a translation is +required since the "normal set" of native coordinates is defined as +:code:`{(x, y) | x: [0..map.xsize) and y: [0..map.ysize)}` while the normal set of map coordinates must satisfy +:code:`x >= 0` and :code:`y >= 0`. + +Converting from native to map coordinates (a less cumbersome operation) is the opposite. + +.. code-block:: rst + + | EJ + | ABCDE A B C D E DIO + | (native) FGHIJ <=> F G H I J <=> CHN (map) + | KLMNO K L M N O BGM + | AFL + | K + +Note that: + +.. code-block:: rst + + native_to_map_pos(0, 0) == (0, map.xsize-1) + native_to_map_pos(map.xsize-1, 0) == (map.xsize-1, 0) + native_to_map_pos(x, y+2) = native_to_map_pos(x,y) + (1,1) + native_to_map_pos(x+1, y) = native_to_map_pos(x,y) + (1,-1) + + +The math then works out to: + +.. code-block:: rst + + map_x = ceiling(nat_y / 2) + nat_x + map_y = floor(nat_y / 2) - nat_x + map.xsize - 1 + + nat_y = map_x + map_y - map.xsize + nat_x = floor(map_x - map_y + map.xsize / 2) + + +which leads to the macros :code:`NATIVE_TO_MAP_POS()`, :code:`MAP_TO_NATIVE_POS()` that are defined in +:file:`map.h`. + +Unknown Tiles and Fog of War +---------------------------- + +In :file:`common/player.h`, there are several fields: + +.. code-block:: rst + + struct player { + ... + struct dbv tile_known; + + union { + struct { + ... + } server; + + struct { + struct dbv tile_vision[V_COUNT]; + } client; + }; + }; + + +While :code:`tile_get_known()` returns: + +.. code-block:: rst + + /* network, order dependent */ + enum known_type { + TILE_UNKNOWN = 0, + TILE_KNOWN_UNSEEN = 1, + TILE_KNOWN_SEEN = 2, + }; + + +The values :code:`TILE_UNKNOWN`, :code:`TILE_KNOWN_SEEN` are straightforward. :code:`TILE_KNOWN_UNSEEN` is a tile +of which the user knows the terrain, but not recent cities, roads, etc. + +:code:`TILE_UNKNOWN` tiles never are (nor should be) sent to the client. In the past, :code:`UNKNOWN` tiles that +were adjacent to :code:`UNSEEN` or :code:`SEEN` were sent to make the drawing process easier, but this has now +been removed. This means exploring new land may sometimes change the appearance of existing land (but this is +not fundamentally different from what might happen when you transform land). Sending the extra info, however, +not only confused the goto code but allowed cheating. + +Fog of war is the fact that even when you have seen a tile once you are not sent updates unless it is inside +the sight range of one of your units or cities. + +We keep track of fog of war by counting the number of units and cities (and nifty future things like radar +outposts) of each client that can see the tile. This requires a number per player, per tile, so each +:code:`player_tile` has a :code:`short[]`. Every time a unit/city/miscellaneous can observe a tile 1 is added to +its player's number at the tile, and when it can't observe any more (killed/moved/pillaged) 1 is subtracted. +In addition to the initialization/loading of a game this array is manipulated with the +:code:`void unfog_area(struct player *pplayer, int x, int y, int len)` and +:code:`void fog_area(struct player *pplayer, int x, int y, int len)` functions. :code:`int len` is the radius of +the area that should be fogged/unfogged, i.e. a len of 1 is a normal unit. In addition to keeping track of fog +of war, these functions also make sure to reveal :code:`TILE_UNKNOWN` tiles you get near, and send info about +:code:`TILE_UNKNOWN` tiles near that the client needs for drawing. They then send the tiles to +:code:`void send_tile_info(struct player *dest, int x, int y)`, which then sets the correct known_type and +sends the tile to the client. + +If you want to just show the terrain and cities of the square the function show_area does this. The tiles +remain fogged. If you play without fog of war all the values of the seen arrays are initialized to 1. So you +are using the exact same code, you just never get down to 0. As changes in the "fogginess" of the tiles are +only sent to the client when the value shifts between zero and non-zero, no redundant packages are sent. You +can even switch fog of war on/off in game just by adding/subtracting 1 to all the tiles. + +We only send city and terrain updates to the players who can see the tile. So a city (or improvement) can +exist in a square that is known and fogged and not be shown on the map. Likewise, you can see a city in a +fogged square even if the city doesn't exist (it will be removed when you see the tile again). This is done by +1) only sending info to players who can see a tile 2) keeping track of what info has been sent so the game can +be saved. For the purpose of 2) each player has a map on the server (consisting of player_tile's and +dumb_city's) where the relevant information is kept. + +The case where a player p1 gives map info to another player p2: This requires some extra info. Imagine a tile +that neither player sees, but which p1 have the most recent info on. In that case the age of the players' info +should be compared which is why the player tile has a last_updated field. This field is not kept up to date as +long as the player can see the tile and it is unfogged, but when the tile gets fogged the date is updated. + +There is now a shared vision feature, meaning that if p1 gives shared vision to p2, every time a function like +show_area, fog_area, unfog_area or give_tile_info_from_player_to_player is called on p1 p2 also gets the info. +Note that if p2 gives shared info to p3, p3 also gets the info. This is controlled by p1's really_gives_vision +bitvector, where the dependencies will be kept. + +National borders +---------------- + +For the display of national borders (similar to those used in Sid Meier's Alpha Centauri) each map tile also +has an "owner" field, to identify which nation lays claim to it. If :code:`game.borders` is non-zero, each city +claims a circle of tiles :code:`game.borders` in radius (in the case of neighbouring enemy cities, tiles are +divided equally, with the older city winning any ties). Cities claim all immediately adjacent tiles, plus any +other tiles within the border radius on the same continent. Land cities also claim ocean tiles if they are +surrounded by 5 land tiles on the same continent (this is a crude detection of inland seas or lakes, which +should be improved upon). + +Tile ownership is decided only by the server, and sent to the clients, which draw border lines between tiles +of differing ownership. Owner information is sent for all tiles that are known by a client, whether or not +they are fogged. + + + +Generalized actions +=================== + +An action is something a player can do to achieve something in the game. Not all actions are enabler +controlled yet. + + +Generalized action meaning +-------------------------- + +A design goal for the action sub system is to keep the meaning of action game rules clear. To achieve this +actions should keep having clear semantics. There should not be a bunch of exceptions to how for example an +action enabler is interpreted based on what action it enables. This keeps action related rules easy to +understand for ruleset authors and easy to automatically reason about - both for parts of Freeciv like menus, +help text generation and agents and for third party tools. + +Please don't make non actions actions because they are similar to actions or because some of the things +Freeciv automatically does for actions would be nice to have. Abstract out the stuff you want in stead. Make +it apply to both actions and to the thing you wanted. + +An action is something a player can order a game entity, the actor, to do. An action does something in the +game it self as defined by the game rules. It should not matter if those game rules run on the Freeciv server +or on a human umpire. An action can be controlled by game rules. That control can not be broken by a patched +client or by a quick player. An action is at the level where the rules apply. A sequence of actions isn't an +action. Parts of an action isn't an action. + +Putting a unit in a group so the quickly can select it with the rest of the units in the group and the server +can save what group a unit belongs to is server side client state, not an action. The rules don't care what +group a unit belongs to. Adding a unit to an army where the game rules treat units in armies different from +units outside an army - say by having them attack as one unit - would be an action. + +Putting a unit under the control of the autosettlers server side agent isn't an action. The player could +modify his client to automatically give the same orders as autosettlers would have given or even give those +orders by hand. + +Leaving a destroyed transport isn't an action. The player can't order a unit to perform this action. Having a +unit destroy his transport and then leave it is an action. Leaving a transport "mid flight" (no matter if it +was destroyed or not) and having a certain probability of surviving to show up somewhere else is an action. + +Please don't add action (result) specific interpretations of requirements in action enablers. If you need a +custom interpretation define a new actor kind or target kind. + +Connections +=========== + +The code is currently transitioning from 1 or 0 connections per player only, to allowing multiple connections +for each player (recall 'player' means a civilization, see above), where each connection may be either an +"observer" or "controller". + +This discussion is mostly about connection in the server. The client only has one real connection +(:code:`client.conn`) -- its connection to the server -- though it does use some other connection structs +(currently :code:`pplayer->conn`) to store information about other connected clients (eg, capability strings). + +In the old paradigm, server code would usually send information to a single player, or to all connected +players (usually represented by destination being a NULL player pointer). With multiple connections per +player things become more complicated. Sometimes information should be sent to a single connection, or to all +connections for a single player, or to all (established) connections, etc. To handle this, "destinations" +should now be specified as a pointer to a :code:`struct conn_list` (list of connections). For convenience the +following commonly applicable lists are maintained: + +* :code:`game.all_connections` - all connections +* :code:`game.est_connections` - established connections +* :code:`game.game_connections` - connections observing and/or involved in game +* :code:`pplayer->connections` - connections for specific player +* :code:`pconn->self` - single connection (as list) + +Connections can be classified as follows: (first match applies) + +#. (:code:`pconn->used == 0`) Not a real connection (closed/unused), should not exist in any list of have any + information sent to it. + +(All following cases exist in game.all_connections.) + +#. (:code:`pconn->established == 0`) TCP connection has been made, but initial Freeciv21 packets have not yet + been negotiated (join_game etc). Exists in :code:`game.all_connections` only. Should not be sent any + information except directly as result of :code:`join_game` etc packets, or server shutdown, or connection + close, etc. + +(All following cases exist in game.est_connections.) + +#. (:code:`pconn->player == NULL`) Connection has been established, but is not yet associated with a player. + Currently this is not possible, but the plan is to allow this in future, so clients can connect and then + see list of players to choose from, or just control the server or observe etc. Two subcases: + + #. (:code:`pconn->observer == 0`) Not observing the game. Should receive information about other clients, + game status etc, but not map, units, cities, etc. + +(All following cases exist in game.game_connections.) + + #. (:code:`pconn->observer == 1`) Observing the game. Exists in :code:`game.game_connections`. Should + receive game information about map, units, cities, etc. + +#. (:code:`pconn->player != NULL`) Connected to specific player, either as "observer" or "controller". Exists + in :code:`game.game_connections`, and in :code:`pconn->player->connections`. + + +Macros and inline functions +=========================== + +For a long time Freeciv21 had no inline functions, only macros. With the use of other C99 features and some +new requirements by the code, this has changed. Now both macros and inline functions are used. + +This causes problems because one coder may prefer to use a macro while another prefers an inline function. Of +course there was always some discretion to the author about whether to use a function or a macro; all we've +done is add even more choices. + +Therefore the following guidelines should be followed: + +* Functions should only be put into header files when doing so makes a measurable impact on speed. Functions + should not be turned into macros or inlined unless there is a reason to do so. + +* Macros that take function-like parameters should evaluate each parameter exactly once. Any macro that + doesn't follow this convention should be named in all upper-case letters as a MACRO. + +* Iterator macros should respect "break". + +* In header files macros are preferred to inline functions, but inline functions are better than MACROS. + +* Functions or macros that are currently in one form do not have to be changed to the other form. + +..note:: Many existing macros do not follow these guidelines. + + +Internationalization (I18N) +=========================== + +Messages and text in general which are shown in the GUI should be translated by using the :code:`_()` macro. +In addition :code:`qInfo()` and some :code:`qWarning()` messages should be translated. In most cases, the +other log levels (:code:`qFatal()`, :code:`qCritical()`, :code:`qDebug()`, :code:`log_debug()`) should NOT be +localised. + +See :file:`utility/fciconv.h` for details of how Freeciv21 handles character sets and encodings. Briefly: + +* The data_encoding is used in all data files and network transactions. This is UTF-8. + +* The internal_encoding is used internally within Freeciv21. This is always UTF-8 at the server, but can be + configured by the GUI client. When your charset is the same as your GUI library, GUI writing is easier. + +* The local_encoding is the one supported on the command line. This is not under our control, and all output + to the command line must be converted. diff --git a/docs/Developing/index.rst b/docs/Developing/index.rst index 2ec5030310..7c5596a880 100644 --- a/docs/Developing/index.rst +++ b/docs/Developing/index.rst @@ -7,5 +7,7 @@ Developing .. toctree:: + hacking.rst + bugs.rst style-guide.rst :maxdepth: 1 diff --git a/docs/_static/images/github_issue_templates.png b/docs/_static/images/github_issue_templates.png new file mode 100644 index 0000000000..43e7ff54f6 Binary files /dev/null and b/docs/_static/images/github_issue_templates.png differ