Game Related Commands
- -- getmap -
diff --git a/docs/README.xml b/docs/README.xml index 6c7d2af7..a1eb8fd5 100644 --- a/docs/README.xml +++ b/docs/README.xml @@ -1,6 +1,6 @@ - +
+ The cube engine is simplicity itself. The whole map consists of a large 2D array of "cubes", + each with a floor and ceiling height, textures (for floor/ceiling/wall) and other properties. + These cubes are grouped 2x2 at a time recursively into a "quad tree", which is used hold bigger + cubes which can be rendered faster. For those who have edited doom, this is very similar to + having a lot of square sectors but at overlapping sizes. This is results in a map that can have + no room over room (yet), and is pretty cubic, except for the odd slope/slant here and there. +
++ The floor size of a single unit (single cube) is similar to about 16x16 units in games such as + doom & quake, so a staircase step is usually 1 unit, a wall 8 units high etc. +
++ Cube renders this world by first determining which cubes are visible using a "dynamic occlusion culling" + algorithm and frustrum culling. You can see the effect of this when you switch to edit mode (E), + and then fly out above a map: you'll see parts of the map dropping away as you move. The remaining + cubes are then rendered in their most efficient size (i.e. cube will render a mixture of 1x1 2x2 4x4 + etc. size cubes, depending on wether they have the same properties: height, texturing etc.). +
++ if you are on a fast machine, or you are playing a simple/small map, cube will simply render all + of these visible cubes (this is indicated by LOD at its maximum of 250 on the hud). Cube can however + make complex maps run fast even on slower computers by a technique called LOD: this will render cubes + that are further away using bigger approximations (2x2 and up), even the properties of the constituent + cubes don't match exactly. This reduces the amount of polys to be rendered tremendously, and thus allows + even slow machines to have a consistent frame rate (cube will adapt the LOD figure every frame to aim + for the fps you specify). The downside is of course that if the approximations are visible closeup, this + can lead to ugly graphical glitches (this is called "popup" because it changes as you move). So in the + end the choice is up to you: good fps or constant visual quality (most engines only cater for the latter). +
+ ++ You will notice that Sauerbraten plays better on a high ping connection than most games out there. + The reason for this is that just about everything in sauerbraten is done clientside, not just + movement (as is common in games today) but also aim (the fat client / thin server model). +
++ The benefits of this are that the effects of lag are minimised, and someone on a 200 ping can + compete on an almost even playing field with someone with a 20 ping, the disadvantages are mainly + in that its harder to combat cheating. Further advantages for server admins are that sauerbraten + servers use virtually no cpu, and very little bandwidth for a lot of clients + (you can host a 4 player game on a modem!). +
++ It is impossible to completely hide lag however, and these are some of the effects that can still + show lag if you or someone you play with has a high ping / bad connection: +
++ if the connection has packetloss. + There is no direct indicator of packetloss, instead the "packet jump" figure is provided on the hud (use "showscores"). + Packet jump says as much as the amount of milliseconds that pass between updates from the indicated player. + If it is extremely variable, or is high(>80) then your gameplay may be hampered (players jumping from place to place). + Ideally it is a steady 40 or lower. A consistent packet jump is more vital to gameplay than ping. +
++ Sauerbraten uses player prediction based on extrapolation using the physics model, + in an attempt to be both as up to date as possible w.r.t. to the game state, + and as realistic w.r.t. to physics. However, under packet loss this model breaks + down and player movement becomes choppy. +
++ if ping is high (either yours or someone you play with), some actions may appear lagged. + The effect of ping is generally that the players in a game are effectively playing more + and more seperate games, as someone with a high ping is "playing in the past". The local + effects of this are masked out by client side movement & aim, but may become noticable across players: +
++ you may get hit by someone even though you are already out of his view. This is because he is aiming at your movements of a while ago, and his hits take a while to arrive back at you. You may therefore be hit by gunfire up to his lag + your lag milliseconds after you leave his FOV. +
++ item pickup: you may be denied an item if you try to pick it up at virtually the same time as someone else (server decides who was "first"). Item pickup is server side, only when you hear the sound effect have you actually picked up the item. +
++ players dying appears lagged. This will improve. +
++ if a player is severely lagged (or you are) he temporarily becomes a "ghost" that cannot be hit (if >1sec packet jump). +
++ Cube's console language is similar to console languages of other games (e.g. Quake), but is a bit more powerful in + that it is almost a full programming language. +
+ ++ What is similar to quake is the basic command structure: commands consist of the command itself, followed by any + number of arguments seperated by whitespace. you can use "" to quote strings with whitespace in them (such as the + actions in bind/alias), and whereever a command is required you can also use ; to sequence multiple commands in one. +
++ What is new compared to quake is that you can evaluate aliases and expressions. You can substitute the value of an + alias as an argument by prefixing it with a "$" sign, i.e.: echo The current value of x is $x + You can even substitute + the values of console variables this way, i.e $fov gives the current fov. Some aliases are set automatically, for + example $arg1 to $argN are set if you supply arguments when you execute an alias. +
++ There are two alternative ways to "" to quote a string: () and []. They work in the same way as "", with the difference + that they can be nested infinitely, and that they may contain linefeeds (useful for larger scripts). () is different + from [] in that it evaluates the commands contained in it _before_ it evaluates the surrounding command, and substitutes + the results. () bracketed strings are called expressions, and combined with some commands made especially for + "programming", you have a minimal language. See the reference + for information about those commands. +
+ + \ No newline at end of file diff --git a/docs/docs.css b/docs/docs.css deleted file mode 100644 index 4189da89..00000000 --- a/docs/docs.css +++ /dev/null @@ -1,161 +0,0 @@ -/* (C) Adrian Henke 2007 - ZLIB License */ - -html -{ - background-color: #343434; /* blame firefox' buggy xslt support */ -} - -body -{ - font-family: Verdana, Sans-Serif; - margin: 0px; - padding: 10px 0 10px 0; - font-size: 12px; - color: Black; -} - -ul -{ - list-style-type:square; -} - -p -{ - margin-top: 0; - margin-bottom: 1em; -} - -img -{ - border-width: 0; -} - -pre -{ - margin: 0 0 1em 0; - padding: 0; - font-family: Courier New; - font-size: 12px; -} - -table -{ - margin-bottom: 1em; -} - -h1 -{ - font-size: 24px; - margin: 0 0 0.5em 0; -} - -h2 -{ - font-size: 18px; - margin: 0 0 0.5em 0; -} - -h3 -{ - font-size: 14px; - margin: 0 0 0.5em 0; -} - -#main -{ - background-color: #666666; - width: 650px; - margin: 0; - padding: 10px; - text-align: left; - border: solid 1px black; -} - -#header -{ - background-color: black; - width: 650px; - margin: 0px; - padding: 0; - height: 10px; - text-align: right; - font-size: 10px; - color: White; - font-family: Courier New, Sans-Serif; - line-height: 1em; -} - -#footer -{ - background-color: black; - width: 650px; - margin: 0; - padding: 0; - height: 10px; - text-align: right; - font-size: 10px; - color: White !important; - font-family: Courier New, Sans-Serif; - line-height: 1em; -} - -#footer a, #footer a:hover, #footer a:visited -{ - color: White; - text-decoration: none; -} - -a, a:hover, a:visited -{ - color: #333333; -} - -/* code */ - -div.code -{ - font-family: Courier New, Sans-Serif; - margin: 1em 0 1em 0; - padding: 0 0 0 1em; -} - -span.code -{ - font-family: Courier New, Sans-Serif; - margin: 0; - padding: 0; -} - - -/* guns */ - -table#guns td -{ - vertical-align: top; -} - -/* gunstats */ - -table#gunstats -{ - width: 100%; - border-collapse: collapse; -} - -table#gunstats thead td -{ - font-weight: bold; -} - -table#gunstats td -{ - border: solid 1px #777777; -} - - -/* items */ - -table.items td -{ - vertical-align: top; -} \ No newline at end of file diff --git a/docs/game.xml b/docs/game.xml index 56ac5dbb..01885dda 100644 --- a/docs/game.xml +++ b/docs/game.xml @@ -1,6 +1,6 @@ - ++ In the file actioncube_server.bat (or the respective .sh file in linux) you can add or + change command line options: +
+ +
+ -wX sets desired screen width to X, default is -w640
+
+ -hY sets desired screen height to Y, default is -h480
+
+ -t runs windowed
+
+ -uN sets the server upstream bandwidth to N bytes per second. only set + this parameter if you know what you are doing, specifying a wrong value is worse + than not specifying it at all. +
++ -nN sets the server description, for people pinging the server. usually + does not need to be set if you have a descriptive domain name already, but if you + set it, keep it short as it may otherwise be truncated, i.e. -nBobsInstagibServer + +
++ -iIP sets the server ip to IP. this option is only useful for people + running on machines with multiple network interfaces. +
++ -mM sets the master server to use for either server (registering) and + client (updating) to M. M is the base url of the master server and has to end in + a / and without a http:// prefix, the default is masterserver.cubers.net/cgi-bin/AssaultCube.pl/. + If you want your server to be private and not report to the masterserver, use -mlocalhost. +
++ -pPASS sets the server password to PASS. Only clients that use the command + "password PASS" will be able to connect. +
++ -cN sets the maximum number of players that can play on this server + to N (default 6). If more players try to connect they will get a "server full" message. +
+ ++ -xM sets the master password. +
++ -rC sets the maprotation file, e.g. -rconfig/maprot.cfg +
+ + \ No newline at end of file diff --git a/docs/ac.css b/docs/styles/ac.css similarity index 90% rename from docs/ac.css rename to docs/styles/ac.css index 13b179e2..2cb06e93 100644 --- a/docs/ac.css +++ b/docs/styles/ac.css @@ -75,6 +75,7 @@ div#main div#version padding: 0; margin: 0 auto 0 auto; width: 720px; + height: 55px; font-family: Courier New, Sans-Serif; font-size: 55px; @@ -124,4 +125,20 @@ p ul { list-style-type:square; +} + +/* code */ + +div.code +{ + font-family: Courier New, Sans-Serif; + margin: 1em 0 1em 0; + padding: 0 0 0 1em; +} + +span.code +{ + font-family: Courier New, Sans-Serif; + margin: 0; + padding: 0; } \ No newline at end of file diff --git a/docs/cubedoc.css b/docs/styles/cubedoc.css similarity index 89% rename from docs/cubedoc.css rename to docs/styles/cubedoc.css index 3e85a1d4..60a59e8a 100644 --- a/docs/cubedoc.css +++ b/docs/styles/cubedoc.css @@ -116,22 +116,6 @@ a, a:hover, a:visited */ -/* code */ - -div.code -{ - font-family: Courier New, Sans-Serif; - margin: 1em 0 1em 0; - padding: 0 0 0 1em; -} - -span.code -{ - font-family: Courier New, Sans-Serif; - margin: 0; - padding: 0; -} - /* guns */ diff --git a/docs/styles/cuberef.css b/docs/styles/cuberef.css new file mode 100644 index 00000000..7a57e9c3 --- /dev/null +++ b/docs/styles/cuberef.css @@ -0,0 +1,225 @@ +/* (C) 2007 Adrian 'driAn' Henke - http://www.sprintf.org - ZLIB licensed */ + +@import url(ac.css); + +/* side contentspanel */ + +div#contentspanel +{ + position: absolute; + float: right; + width: 150px; + right: -151px; + top: 85px; + font-family: Courier New, Sans-Serif; + font-size: 10px; + text-align: left; + background-color: #444444; + border-right: solid 1px black; + border-bottom: solid 1px black; +} + +div#contentspanel div.sectiontitle +{ + padding-left: 10px; + height: 20px; + background-color: Black; + color: White; + font-size: 14px; + font-weight: bold; + line-height: 20px; +} + +div#contentspanel ul +{ + list-style-type: none; + padding: 0; + margin: 10px; + +} + +div#contentspanel a +{ + text-decoration: none; + color: White; +} + +div#contentspanel div.identifiers a +{ + display: block; + position: relative; + width: 130px; +} + +div#contentspanel div.identifiers a:hover +{ + width: 120px; + border-right: solid 10px #777777; + background-color: #666666; + +} + +/* contents */ + +div#contents +{ + +} + +/* identifier */ + +div.section div.identifier +{ + padding: 0 0 10px 0; + margin: 0 0 0 20px; +} + +/* display name */ + +div.section div.identifier div.displayname +{ + font-family: Courier New, Sans-Serif; + margin: 1em 0 1em -20px; +} + +div.section div.identifier div.displayname a +{ + color: Black; + text-decoration: none; +} + +/* command arguments */ + +div.section div.identifier div.argumentDescriptions +{ + margin: 10px 0 0 0; + padding: 0; +} + +div.section div.identifier div.argumentDescriptions table +{ + margin: 0; + padding: 0; + border-collapse: collapse; + width: 100%; +} + +div.section div.identifier div.argumentDescriptions table td +{ + border: solid 1px #777777; +} + +div.section div.identifier div.argumentDescriptions table th +{ + font-weight: normal; + color: #333333; + background-color: #777777; + border: solid 1px #777777; +} + +div.section div.identifier div.argumentDescriptions table tr td.token +{ + font-style: italic; + width: 65px; +} + +div.section div.identifier div.argumentDescriptions table tr td.description +{ + width: 300px; +} + +div.section div.identifier div.argumentDescriptions table tr td.values +{ + +} + +/* variable value */ + +div.section div.identifier div.valueDescription +{ + margin: 10px 0 0 0; + padding: 0; +} + +div.section div.identifier div.valueDescription table +{ + margin: 0; + padding: 0; + border-collapse: collapse; + width: 100%; +} + +div.section div.identifier div.valueDescription table td +{ + border: solid 1px #777777; +} + +div.section div.identifier div.valueDescription table th +{ + font-weight: normal; + color: #333333; + background-color: #777777; + border: solid 1px #777777; +} + +div.section div.identifier div.valueDescription table tr td.token +{ + font-style: italic; + width: 65px; +} + +div.section div.identifier div.valueDescription table tr td.description +{ +} + +div.section div.identifier div.valueDescription table tr td.values +{ + width: 200px; +} + +div.section div.identifier div.valueDescription table tr td.range +{ + width: 50px; +} + +div.section div.identifier div.valueDescription table tr td.defaultValue +{ + text-align: right; + width: 50px; +} + +/* remarks */ + +div.section div.identifier div.remarks +{ + margin: 10px 0 0 0; + padding: 0; +} + +div.section div.identifier div.remarks div.remark +{ + margin: 10px 0 0 0; +} + +/* references */ + +div.section div.identifier div.references +{ + text-align: right; +} + +div.section div.identifier div.references a.internal +{ + font-family: Courier New, Sans-Serif; + text-decoration: none; +} + +div.section div.identifier div.references a.external +{ + +} + +div.section div.identifier div.references span.none +{ + +} \ No newline at end of file diff --git a/docs/cubedoc2xhtml.xslt b/docs/transformations/cubedoc2xhtml.xslt similarity index 95% rename from docs/cubedoc2xhtml.xslt rename to docs/transformations/cubedoc2xhtml.xslt index 6f52aa59..7814ffdf 100644 --- a/docs/cubedoc2xhtml.xslt +++ b/docs/transformations/cubedoc2xhtml.xslt @@ -12,7 +12,7 @@ AssaultCube Readme - +