├── build.py ├── client_commands.md ├── client_config.md ├── client_settings.md ├── compiling_everything.md ├── compiling_everything_linux.md ├── compiling_everything_mac.md ├── compiling_everything_windows.md ├── ctf_scoring.md ├── demo_player.md ├── hacking.md ├── help.md ├── licensing_misc.md ├── map_editor_reference.md ├── nomenclature.md ├── reset_config.md ├── rules ├── discord_rules.md ├── forum_rules.md ├── irc_rules.md ├── server_rules.md └── support_rules.md ├── server_commands.md ├── server_settings.md ├── server_setup.md ├── server_tuning.md └── support ├── faq.md └── support_and_contact.md /build.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # Requires Python 3.5+ and misaka 4 | 5 | import misaka as m 6 | import sys 7 | from os.path import normpath 8 | import re 9 | from pathlib import Path 10 | import shutil 11 | from argparse import ArgumentParser 12 | from enum import Enum 13 | 14 | 15 | def main(): 16 | p = ArgumentParser() 17 | p.add_argument('-t', '--build-type', type=BuildType, 18 | choices=tuple(BuildType), default=BuildType.LOCAL.value) 19 | p.add_argument('source', type=Path) 20 | p.add_argument('target', type=Path) 21 | args = p.parse_args() 22 | 23 | target = args.target.with_suffix('.new') 24 | compile_docs(args.source, target, args.build_type) 25 | shutil.rmtree(str(args.target), ignore_errors=True) 26 | target.replace(args.target) 27 | 28 | 29 | class BuildType(Enum): 30 | LOCAL = 'local' 31 | TEEWORLDS_COM = 'teeworlds.com' 32 | 33 | 34 | def compile_docs(source, target, build_type): 35 | for input_path in source.glob('**/*.md'): 36 | output_dir = (target / input_path.relative_to(source)).parent 37 | output_dir.mkdir(exist_ok=True, parents=True) 38 | output_path = output_dir / (input_path.with_suffix('.html').name) 39 | print("Processing {}...".format(input_path), file=sys.stderr) 40 | 41 | def link_patcher(match): 42 | if build_type == BuildType.TEEWORLDS_COM: 43 | path = normpath(str(input_path.parent.relative_to(source) / match.group(2))) 44 | return "[{}]({})".format(match.group(1), '/?page=docs&wiki=' + path) 45 | elif build_type == BuildType.LOCAL: 46 | return "[{}]({})".format(match.group(1), match.group(2) + '.html') 47 | else: 48 | raise ValueError("Unsupported BuildType") 49 | 50 | with input_path.open() as inp, output_path.open('w') as out: 51 | data = inp.read() 52 | data = re.sub(r'\[([^\]]+)]\(\s*([^\)]+)\.md\s*\)', link_patcher, data) 53 | html = m.html(data, extensions=m.EXT_TABLES | m.EXT_FENCED_CODE, 54 | render_flags=m.HTML_USE_XHTML) 55 | out.write(html) 56 | 57 | 58 | if __name__ == '__main__': 59 | main() 60 | -------------------------------------------------------------------------------- /client_commands.md: -------------------------------------------------------------------------------- 1 | # Client Commands 2 | 3 | There are lots of client commands that can be executed in the console, or in the configuration file. This doc shows them all. If you look for client settings, read the [Client Settings](client_settings.md) doc. To find out how to find the config file, read the [Client Config](client_config.md) doc. 4 | 5 | ## Console 6 | 7 | All these commands can be executed in the console. To open the console, press the console-key (f1 is default). 8 | 9 | ## Engine 10 | 11 | |Command | Syntax | Description| 12 | | ------ | ------- | ---------- | 13 | |`echo`|`echo text`|Print out the text to the console| 14 | |`exec`|`exec file`|Execute the commands in the specified file| 15 | |`eval_if`|`eval_if config comparison value command else command`|Execute command if condition is true| 16 | |`quit`|`quit`|Quit Teeworlds| 17 | |`exit`|`exit`|Quit Teeworlds| 18 | |`minimize`|`minimize`|Minimize Teeworlds| 19 | |`screenshot`|`screenshot`|Take a screenshot| 20 | |`save_config`|`save_config [file]`|Save config to file (or default file if none)| 21 | |`toggle`|`toggle config_option value1 value2`|Toggle config value| 22 | |`+toggle`|`+toggle config_option value1 value2`|Toggle config value via keypress| 23 | |`snd_toggle`|`snd_toggle`|Toggle sounds on and off| 24 | 25 | ## Servers 26 | 27 | |Command | Syntax | Description| 28 | | ------ | ------- | ---------- | 29 | |`connect`|`connect host:port`|Connect to the specified server| 30 | |`disconnect`|`disconnect`|Disconnect from the server| 31 | |`ping`|`ping`|Ping the server| 32 | |`rcon`|`rcon command`|Execute the command in rcon| 33 | |`rcon_auth`|`rcon_auth password`|Authenticate with rcon| 34 | |`add_favorite`|`add_favorite host:port [password]`|Add the server as a favorite, optionally saving the password| 35 | |`remove_favorite`|`remove_favorite host:port`|Remove the server from your favorites| 36 | 37 | ## Gameplay 38 | 39 | |Command | Syntax | Description| 40 | | ------ | ------- | ---------- | 41 | |`+left`|`+left`|Move left| 42 | |`+right`|`+right`|Move right| 43 | |`+jump`|`+jump`|Jump| 44 | |`+hook`|`+hook`|Fire hook| 45 | |`+fire`|`+fire`|Fire a shot| 46 | |`+weapon1`|`+weapon1`|Switch to weapon 1 (hammer)| 47 | |`+weapon2`|`+weapon2`|Switch to weapon 2 (gun)| 48 | |`+weapon3`|`+weapon3`|Switch to weapon 3 (shotgun)| 49 | |`+weapon4`|`+weapon4`|Switch to weapon 4 (grenade launcher)| 50 | |`+weapon5`|`+weapon5`|Switch to weapon 5 (rifle)| 51 | |`+nextweapon`|`+nextweapon`|Switch to the next weapon| 52 | |`+prevweapon`|`+prevweapon`|Switch to the previous weapon| 53 | |`+scoreboard`|`+scoreboard`|Show the scoreboard| 54 | |`+stats`|`+stats`|Show stats| 55 | |`team`|`team team_id`|Switch to the specified team (0 = red, 1 = blue, -1 = spectators)| 56 | |`ready_change`|`ready_change`|Change ready state| 57 | |`kill`|`kill`|Respawn| 58 | 59 | ## Social 60 | 61 | |Command | Syntax | Description| 62 | | ------ | ------- | ---------- | 63 | |`say`|`say message`|Send a global chat message| 64 | |`say_self`|`say_self message`|Send a chat message just to yourself| 65 | |`say_team`|`say_team message`|Send a chat message to your team| 66 | |`chat`|`chat all/team`|Enable chat in the chosen mode| 67 | |`+show_chat`|`+show_chat`|Show more chat messages| 68 | |`chat_command`|`chat_command command arguments`|Execute a chat command with arguments| 69 | |`+emote`|`+emote`|Open emote selector| 70 | |`emote`|`emote number`|Send a specific emote| 71 | |`callvote`|`callvote type value`|Call a vote| 72 | |`vote`|`vote yes/no`|Vote yes or no| 73 | |`add_friend`|`add_friend name clan`|Add the player to your friendlist| 74 | |`remove_friend`|`remove_friend name clan`|Remove the player from your friendlist| 75 | |`add_ignore`|`add_ignore name clan`|Add the player to your ignorelist| 76 | |`remove_ignore`|`remove_ignore name clan`|Remove the player from your ignorelist| 77 | 78 | ## Key binds 79 | 80 | |Command | Syntax | Description| 81 | | ------ | ------- | ---------- | 82 | |`bind`|`bind key command`|Bind the command to the key| 83 | |`unbind`|`unbind key`|Unbind the key| 84 | |`unbindall`|`unbindall`|Unbind all the keys| 85 | |`binds`|`binds`|List all key binds| 86 | 87 | ## Spectating 88 | |Command | Syntax | Description| 89 | | ------ | ------- | ---------- | 90 | |`+spectate`|`+spectate`|Show the spectator mode selector| 91 | |`spectate`|`spectate client_id`|Spectate the player corresponding to `client_id` (-1 = freeview)| 92 | |`spectate_next`|`spectate_next`|Spectate the next player| 93 | |`spectate_previous`|`spectate_previous`|Spectate the previous player| 94 | |`set_position`|`set_position index x y`|Set saved camera position at index to be the position (x, y)| 95 | 96 | ## Console 97 | 98 | |Command | Syntax | Description| 99 | | ------ | ------- | ---------- | 100 | |`toggle_local_console`|`toggle_local_console`|Toggle the local console| 101 | |`clear_local_console`|`clear_local_console`|Clear the local console| 102 | |`dump_local_console`|`dump_local_console`|Write local console contents to a text file| 103 | |`toggle_remote_console`|`toggle_remote_console`|Toggle the remote console| 104 | |`clear_remote_console`|`clear_remote_console`|Clear the remote console| 105 | |`dump_remote_console`|`dump_remote_console`|Write remote console contents to a text file| 106 | 107 | ## Demo recorder/player 108 | 109 | |Command | Syntax | Description| 110 | | ------ | ------- | ---------- | 111 | |`play`|`play filename`|Play the file in the demo player| 112 | |`record`|`record filename`|Start a recording to the specified file (omit filename to use timestamp)| 113 | |`stoprecord`|`stoprecord`|Stop the recording| 114 | |`add_demomarker`|`add_demomarker`|Add a demo marker at the current time (while recording a demo)| 115 | 116 | ## Startup commands 117 | 118 | To start Teeworlds on Windows with the debug console open, use `teeworlds.exe -c` or `teeworlds.exe --console`. 119 | It is also possible to add the parameter to a windows shortcut. 120 | -------------------------------------------------------------------------------- /client_config.md: -------------------------------------------------------------------------------- 1 | # Client Configuration 2 | 3 | To find the configuration file for Teeworlds, you can read this guide. If you want to configure the client, check out [Client Settings](client_settings.md). If you want to find the client commands available, see [Client Commands](client_commands.md). The client configuration file is always called `settings07.cfg` but located in different locations depending on the operating system. 4 | 5 | ## Windows 6 | 7 | Run the file called `config_directory.bat`, that can be find in the Teeworlds directory, or enter `%APPDATA%\Teeworlds` in an Explorer window. 8 | 9 | ## Linux 10 | 11 | The config file is located in `~/.local/share/teeworlds/`. 12 | 13 | ## Mac OSX 14 | 15 | The config file is located in `~/Library/Application Support/Teeworlds/`. 16 | -------------------------------------------------------------------------------- /client_settings.md: -------------------------------------------------------------------------------- 1 | # Client Settings 2 | 3 | There are lots of client settings available, and this doc will guide you through them. If you are looking for client commands, read the [Client Commands](client_commands.md) doc. To find out how to find the config file, read the [Client Config](client_config.md) doc. 4 | 5 | ## Engine 6 | 7 | | Setting | Description | Default value | 8 | | ------------- | ------------- | -------------- | 9 | |`bindaddr`|Address to bind the client to|`""`| 10 | |`password`|Password to the server you want to join|`""`| 11 | |`logfile`|Filename to log all output to|`""`| 12 | |`logfile_timestamp`|Add a time stamp to the log file's name|0| 13 | |`console_output_level`|Adjust the amount of messages in the console |0| 14 | |`show_console_window`|Show console window (0 = never, 1 = debug, 2 = release, 3 = always|1| 15 | |`cl_auto_demo_max`|Maximum number of automatically recorded demos (0 = no limit)|10| 16 | |`cl_auto_demo_record`|Automatically record demos|0| 17 | |`cl_auto_screenshot`|Automatically take game over screenshot|0| 18 | |`cl_auto_screenshot_max`|Maximum number of automatically created screenshots (0 = no limit)|10| 19 | |`cl_auto_statscreenshot`|Automatically take screenshot of game statistics|0| 20 | |`cl_cpu_throttle`|Throttles the main thread (sleep specified number of ms each tick)|0| 21 | |`cl_editor`|View the editor|0| 22 | |`cl_languagefile`|What language file to use|`""`| 23 | |`cl_load_country_flags`|Load and show country flags|1| 24 | |`cl_save_server_passwords`|Save server passwords (0 = never, 1 = only favorites, 2 = all servers)|1| 25 | |`cl_show_welcome`|Show initial set-up dialog|1| 26 | |`cl_version_server`|Server to use to check for new versions|`"version.teeworlds.com"`| 27 | 28 | ## Player 29 | 30 | | Setting | Description | Default value | 31 | | ------------- | ------------- | -------------- | 32 | |`player_clan`|Clan of the player|`""`| 33 | |`player_color_body`|Player body color|0x1B6F74| 34 | |`player_color_decoration`|Player decoration color|0x1B6F74| 35 | |`player_color_eyes`|Player eyes color|0x0000FF| 36 | |`player_color_feet`|Player feet color|0x1C873E| 37 | |`player_color_hands`|Player hands color|0x1B759E| 38 | |`player_color_marking`|Player marking color|0xFF0000FF| 39 | |`player_country`|Country of the player|-1| 40 | |`player_name`|Name of the player|`"nameless tee"`| 41 | |`player_skin`|Player skin|`"default"`| 42 | |`player_skin_body`|Player skin body|`"standard"`| 43 | |`player_skin_decoration`|Player skin decoration|`""`| 44 | |`player_skin_eyes`|Player skin eyes|`"standard"`| 45 | |`player_skin_feet`|Player skin feet|`"standard"`| 46 | |`player_skin_hands`|Player skin hands|`"standard"`| 47 | |`player_skin_marking`|Player skin marking|`""`| 48 | |`player_use_custom_color_body`|Toggles usage of custom colors for body|1| 49 | |`player_use_custom_color_decoration`|Toggles usage of custom colors for decoration|1| 50 | |`player_use_custom_color_eyes`|Toggles usage of custom colors for eyes|1| 51 | |`player_use_custom_color_feet`|Toggles usage of custom colors for feet|1| 52 | |`player_use_custom_color_hands`|Toggles usage of custom colors for hands|1| 53 | |`player_use_custom_color_marking`|Toggles usage of custom colors for marking|1| 54 | 55 | ## Ingame 56 | 57 | |Settings | Description | Default value | 58 | | ------------- | ------------- | -------------- | 59 | |`cl_airjumpindicator`|Show double jump indicator|1| 60 | |`cl_autoswitch_weapons`|Auto switch weapon on pickup|0| 61 | |`cl_colored_broadcast`|Enable colored server broadcasts|1| 62 | |`cl_customize_skin`|Use a customized skin|0| 63 | |`cl_disable_whisper`|Disable completely the whisper feature.|0| 64 | |`cl_filterchat`|Show chat messages from: 0=all, 1=friends only, 2=no one|0| 65 | |`cl_motd_time`|How long to show the server message of the day|10| 66 | |`cl_nameplates`|Show name plates|1| 67 | |`cl_nameplates_always`|Always show name plates disregarding of distance|1| 68 | |`cl_nameplates_size`|Size of the name plates from 0 to 100%|50| 69 | |`cl_nameplates_teamcolors`|Use team colors for name plates|1| 70 | |`cl_predict`|Use prediction for objects in the game world|1| 71 | |`cl_predict_players`|Predict movements of other players|0| 72 | |`cl_predict_projectiles`|Predict position of projectiles|0| 73 | |`cl_show_easter_eggs`|0=never, 1=during easter, 2=always|1| 74 | |`cl_show_local_time_always`|Always show local time|0| 75 | |`cl_show_server_broadcast`|Show server broadcast|1| 76 | |`cl_show_user_id`|Show the ID for every user|0| 77 | |`cl_show_xmas_hats`|0=never, 1=during christmas, 2=always|1| 78 | |`cl_showchat`|Show chat|1| 79 | |`cl_showfps`|Show ingame FPS counter|0| 80 | |`cl_showhud`|Show ingame HUD|1| 81 | |`cl_showsocial`|Show social data like names, clans, chat etc.|1| 82 | |`cl_statboard_infos`|Mask of info to display on the global statboard|1259| 83 | |`cl_warning_teambalance`|Warn about team balance|1| 84 | 85 | ### Camera 86 | 87 | |Settings | Description | Default value | 88 | | ------------- | ------------- | -------------- | 89 | |`cl_camera_smoothness`|Camera movement speed. 0=instant, 100=slow and smooth|0| 90 | |`cl_camera_stabilizing`|Amount of camera slowdown during cursor movement|0| 91 | |`cl_dynamic_camera`|Switches camera mode. 0=static camera, 1=dynamic camera|0| 92 | |`cl_mouse_deadzone`|Zone that doesn't trigger the dynamic camera|300| 93 | |`cl_mouse_followfactor`|Trigger amount for the dynamic camera|60| 94 | |`cl_mouse_max_distance_dynamic`|Mouse max distance, in dynamic camera mode|1000| 95 | |`cl_mouse_max_distance_static`|Mouse max distance, in static camera mode|400| 96 | 97 | ## Input 98 | 99 | |Settings | Description | Default value | 100 | | ------------- | ------------- | -------------- | 101 | |`inp_grab`|Disable OS mouse settings such as mouse acceleration, use raw mouse input mode|0| 102 | |`inp_mousesens`|Ingame mouse sensitivity|100| 103 | |`joystick_absolute`|Enable absolute joystick aiming ingame|0| 104 | |`joystick_enable`|Enable joystick|0| 105 | |`joystick_guid`|Joystick GUID which uniquely identifies the active joystick|`""`| 106 | |`joystick_sens`|Ingame joystick sensitivity|100| 107 | |`joystick_tolerance`|Joystick Axis tolerance to account for jitter|5| 108 | |`joystick_x`|Joystick axis that controls X axis of cursor|0| 109 | |`joystick_y`|Joystick axis that controls Y axis of cursor|1| 110 | |`ui_mousesens`|Mouse sensitivity for menus/editor|100| 111 | |`ui_joystick_sens`|Joystick sensitivity for menus/editor|100| 112 | 113 | ## Graphics 114 | 115 | |Settings | Description | Default value | 116 | | ------------- | ------------- | -------------- | 117 | |`gfx_asyncrender`|Do rendering asynchronously|0| 118 | |`gfx_borderless`|Borderless window (not to be used with fullscreen)|0| 119 | |`gfx_clear`|Clear screen before rendering|0| 120 | |`gfx_display_all_modes`|Show all screen resolutions in graphics settings|0| 121 | |`gfx_finish`|Wait for OpenGL to finish|1| 122 | |`gfx_fsaa_samples`|Number of Full-Scene Antialiasing samples|0| 123 | |`gfx_fullscreen`|Activate fullscreen|1| 124 | |`gfx_high_detail`|Activate high details|1| 125 | |`gfx_highdpi`|Use high dpi mode if available|1| 126 | |`gfx_limitfps`|Limit fps|0| 127 | |`gfx_maxfps`|Maximum fps (when limit fps is enabled)|144| 128 | |`gfx_noclip`|Disable clipping|0| 129 | |`gfx_screen`|Screen index|0| 130 | |`gfx_screen_height`|Screen resolution height|600| 131 | |`gfx_screen_width`|Screen resolution width|800| 132 | |`gfx_texture_compression`|Activate texture compression|0| 133 | |`gfx_texture_quality`|Use quality textures|1| 134 | |`gfx_use_x11xrandr_wm`|Let SDL use the X11 XRandR window manager|1| 135 | |`gfx_vsync`|Activate VSync|1| 136 | 137 | ## Sounds 138 | 139 | |Settings | Description | Default value | 140 | | ------------- | ------------- | -------------- | 141 | |`snd_async_loading`|Load sound files threaded|1| 142 | |`snd_buffer_size`|Sound buffer size|512| 143 | |`snd_enable`|Enable sounds|1| 144 | |`snd_enable_music`|Play background music|1| 145 | |`snd_init`|Initialize sound systems|1| 146 | |`snd_nonactive_mute`|Mute Teewolds when inactive|0| 147 | |`snd_rate`|Sound mixing rate|48000| 148 | |`snd_volume`|Sound volume|100| 149 | 150 | ## Menu 151 | 152 | |Settings | Description | Default value | 153 | | ------------- | ------------- | -------------- | 154 | |`cl_menu_alpha`|Transparency of the menu background|25| 155 | |`cl_menu_map`|Background map in the menu, auto = automatic based on season|`"auto"`| 156 | |`cl_show_menu_map`|Display background map in the menu|1| 157 | |`cl_show_start_menu_images`|Show start menu images|1| 158 | |`cl_skip_start_menu`|Skip the start menu|0| 159 | 160 | ### Camera 161 | 162 | |Settings | Description | Default value | 163 | | ------------- | ------------- | -------------- | 164 | |`cl_camera_speed`|Menu camera speed|5| 165 | |`cl_rotation_radius`|Menu camera rotation radius|30| 166 | |`cl_rotation_speed`|Menu camera rotations in seconds|40| 167 | 168 | ## User interface 169 | 170 | |Settings | Description | Default value | 171 | | ------------- | ------------- | -------------- | 172 | |`ui_autoswitch_infotab`|Switch to the info tab when clicking on a server|1| 173 | |`ui_browser_page`|Interface serverbrowser page|5| 174 | |`ui_joystick_sens`|Joystick sensitivity for menus/editor|100| 175 | |`ui_mousesens`|Mouse sensitivity for menus/editor|100| 176 | |`ui_server_address`|Interface server address (Internet page)|`"localhost:8303"`| 177 | |`ui_server_address_lan`|Interface server address (LAN page)|`"localhost:8303"`| 178 | |`ui_settings_page`|Interface settings page|0| 179 | |`ui_wideview`|Extended menus GUI|0| 180 | 181 | ## Server & Demo browser 182 | 183 | The individual server browser filter settings are store separately in the file `ui_settings.json` in the same folder as the config file. 184 | 185 | |Settings | Description | Default value | 186 | | ------------- | ------------- | -------------- | 187 | |`br_filter_string`|Server browser filter string|`""`| 188 | |`br_sort`|Id of the column to sort after in the server browser|4| 189 | |`br_sort_order`|Sort order (0 is ascending and 1 is descending) in the server browser|1| 190 | |`br_demo_sort`|Id of the column to sort after in the demo browser|0| 191 | |`br_demo_sort_order`|Sort order (0 is ascending and 1 is descending) in the demo browser|0| 192 | |`br_max_requests`|Number of requests to use when refreshing server browser|25| 193 | 194 | ## Editor 195 | 196 | | Setting | Description | Default value | 197 | | ------------- | ------------- | -------------- | 198 | |`ed_color_grid_inner`|Color inner grid|0xFFFFFF26| 199 | |`ed_color_grid_outer`|Color outer grid|0xFF4C4C4C| 200 | |`ed_color_quad_pivot`|Color of the quad pivot|0x00FF00FF| 201 | |`ed_color_quad_pivot_active`|Color of the active quad pivot|0xFFFFFFFF| 202 | |`ed_color_quad_pivot_hover`|Color of the quad pivot when hovering over with the mouse cursor|0xFFFFFFFF| 203 | |`ed_color_quad_point`|Color of quad points|0x00FF00FF| 204 | |`ed_color_quad_point_active`|Color of active quad points|0xFFFFFFFF| 205 | |`ed_color_quad_point_hover`|Color of quad points when hovering over with the mouse cursor|0xFFFFFFFF| 206 | |`ed_color_selection_quad`|Color of the selection area for a quad|0xFFFFFFFF| 207 | |`ed_color_selection_tile`|Color of the selection area for a tile|0xFFFFFF66| 208 | |`ed_showkeys`|Editor shows which keys are pressed|0| 209 | |`ed_zoom_target`|Zoom to the current mouse target|1| 210 | -------------------------------------------------------------------------------- /compiling_everything.md: -------------------------------------------------------------------------------- 1 | # Compiling Teeworlds 2 | 3 | **IMPORTANT NOTE:** SDL and Freetype libs are not shipped with Teeworlds 0.7.x. You must download them separately and place them in the other/ folder. 4 | 5 | **Also:** Teeworlds 0.5.2 and earlier requires python 2.x to compile. Python 3.x will not work. Python 3.x support is introduced with Teeworlds 0.6.0. 6 | 7 | **Also:** If you are using bam 0.2.0 (needed for Teeworlds 0.5.2 and earlier) the bam binary will not be in the bam directory, but in bam/src. You will need to change the paths accordingly to that or copy/move the bam executable to the bam directory. 8 | 9 | ### FAQ 10 | 11 | **Q: How do I get rid of these errors?** 12 | 13 | ``` 14 | undefined reference to `__stack_chk_guard' 15 | ``` 16 | 17 | Remove `-fstack-protector -fstack-protector-all` from bam.lua (in 0.5.2 and earlier default.bam) in Teeworlds root directory and then run 18 | 19 | ``` 20 | ../bam/bam -c all 21 | ``` 22 | 23 | **Q: What is BAM?** 24 | 25 | Bam is the [build system made by matricks](http://matricks.github.io/bam/) used in Teeworlds. 26 | 27 | 28 | # Windows 29 | 30 | 1. Download and unzip bam 31 | - [v0.2.0](http://github.com/downloads/matricks/bam/bam-0.2.0.zip) for Teeworlds 0.5.2 and earlier 32 | - [v0.4.0](http://github.com/downloads/matricks/bam/bam-0.4.0.zip) for Teeworlds 0.6.x 33 | - [v0.5.0](https://github.com/matricks/bam/archive/v0.5.0.zip) for Teeworlds 0.7.0 and later 34 | 2. Download and install [Python](https://www.python.org/download/) (for Teeworlds 0.5.2 and earlier the 2.x version, not 3.x). 35 | 4. Download and unzip [Teeworlds](https://www.teeworlds.com/?page=downloads). 36 | 37 | ### Setup (Using GNU Tools) 38 | 39 | 1. Download and install [MinGW](http://sourceforge.net/projects/mingw/files/latest/download?source=files). Select 'mingw32-gcc-g++' package inside MinGW installer. 40 | 2. Download and install [ZLib](http://gnuwin32.sourceforge.net/downlinks/zlib.php). 41 | 42 | #### Compiling BAM 43 | 44 | 1. Update 'PATH' windows environment variable including MinGW and zlib bin folders. 45 | - Run in cmd (start>run>cmd): 46 | 47 | ``` 48 | setx PATH "%PATH%;C:\MinGW\bin;C:\Program Files (x86)\GnuWin32\bin;" 49 | ``` 50 | 2. Launch `make_win32_mingw.bat` script to compile bam. 51 | - Run in cmd (start>run>cmd): 52 | 53 | ``` 54 | cd 55 | make_win32_mingw.bat 56 | ``` 57 | 58 | #### Compiling Teeworlds 59 | 60 | Run in cmd (start->run->cmd): 61 | 62 | ``` 63 | cd teeworlds-version-src 64 | ..\bam\bam 65 | ``` 66 | 67 | This will build the client and server. 68 | 69 | Bam parameters are described in a later section. 70 | 71 | ### Setup (Using Microsoft Tools) 72 | 73 | 1. Download and install [Visual C/C++ Express](https://www.visualstudio.com/post-download-vs/?sku=xdesk&clcid=0x409&telem=ga). 74 | 75 | #### Compiling bam 76 | 77 | 1. Launch `make_win32_msvc.bat` script to compile bam. 78 | - Run in cmd (start>run>cmd): 79 | ``` 80 | cd 81 | make_win32_msvc.bat 82 | ``` 83 | 84 | #### Compiling Teeworlds 85 | 86 | Run the `x86 Native Tools Command Prompt` (32Bit) or the `x64 Native Tools Command Prompt` (64Bit) from the start menu. 87 | 88 | Or 89 | 90 | Run in cmd (start->run->cmd): 91 | 92 | ``` 93 | %comspec% /k ""C:\Program Files\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"" x86 94 | 95 | cd teeworlds-version-src 96 | ..\bam\bam 97 | ``` 98 | 99 | For 64-bit, use `amd64` instead: 100 | 101 | ``` 102 | %comspec% /k ""C:\Program Files\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"" amd64 103 | ``` 104 | 105 | This will build the client and server. 106 | 107 | Bam parameters are described in a later section. 108 | 109 | 110 | # Linux / Mac 111 | 112 | ## Setup 113 | 114 | #### On Linux 115 | 116 | Use your package manager (apt-get, emerge or whatever is used on your distribution) to install the following (you will need the header files): 117 | 118 | - python 119 | - alsa (asound) 120 | - gl 121 | - glu 122 | - x11 123 | - libsdl 124 | - freetype 125 | 126 | (python is the only one which is required to build server) 127 | 128 | #### On Mac OS X 129 | 130 | Install the XCode tools from apple. Download libsdl from the http://libsdl.org and put SDL.framework in /Library/Frameworks 131 | 132 | #### Getting the source 133 | 134 | Run the following commands to download and unzip bam and teeworlds: 135 | **Replace VERSION in teeworlds-VERSION-src.zip with the version you want (probably the latest, 0.7.0)** 136 | 137 | Using `wget`: 138 | 139 | ``` 140 | $ wget -qO- https://github.com/matricks/bam/archive/v0.5.0.tar.gz | tar xj 141 | $ wget -qO- https://downloads.teeworlds.com/teeworlds/teeworlds-VERSION-src.zip | tar xj 142 | ``` 143 | 144 | Alternatively, using `fetch`: 145 | 146 | ``` 147 | $ fetch https://github.com/matricks/bam/archive/v0.5.0.tar.gz 148 | $ unzip bam.zip 149 | $ rm bam.zip 150 | $ fetch https://downloads.teeworlds.com/teeworlds/teeworlds-VERSION-src.zip 151 | $ unzip teeworlds-VERSION-src.zip 152 | $ rm teeworlds-VERSION-src.zip 153 | ``` 154 | 155 | #### Compiling bam 156 | 157 | ``` 158 | $ cd bam 159 | $ ./make_unix.sh 160 | $ cd .. 161 | ``` 162 | 163 | #### Compiling teeworlds 164 | 165 | This will build the client and server. 166 | 167 | ``` 168 | $ cd teeworlds-VERSION-src 169 | $ ../bam/bam 170 | ``` 171 | 172 | For 0.7.0 and later, you will find the binaries in the `build` folder. 173 | 174 | # Bam parameters 175 | 176 | For more advanced options check the [bam documentation](http://matricks.github.io/bam/bam.html#5). 177 | 178 | 179 | 180 | #### For Teeworlds v0.7.0 and later 181 | 182 | By default, Teeworlds compiles in debug mode. To compile in release mode, add `conf=release` to the bam arguments. E.g.: 183 | 184 | `$ ../bam/bam conf=release` 185 | 186 | By default, Teeworlds compiles the `game` target, i.e. the client and server. Available targets are: 187 | 188 | + game (client and server) 189 | + client 190 | + server 191 | + tools 192 | + masterserver 193 | 194 | E.g. to build the tools and master server in release mode use the following arguments: 195 | 196 | `$ ../bam/bam conf=release tools masterserver` 197 | 198 | 199 | You may specify the architecture using `arch`, e.g. `arch=X86` or `arch=x64`. 200 | 201 | #### For Teeworlds v0.6.x and earlier 202 | 203 | Available targets are: 204 | 205 | + release (for all in release mode) 206 | + debug (for all in debug mode) 207 | + server_release 208 | + server_debug 209 | + client_release 210 | + client_debug 211 | 212 | E.g. to build server debug use the following arguments: 213 | 214 | `$ ../bam/bam server_debug` 215 | -------------------------------------------------------------------------------- /compiling_everything_linux.md: -------------------------------------------------------------------------------- 1 | # Compiling Teeworlds on Linux 2 | 3 | **IMPORTANT NOTE:** SDL and Freetype libs are not shipped with Teeworlds 0.7.x. You must download them separately. 4 | 5 | **Q: What is bam?** 6 | 7 | Bam is the [build system made by matricks](http://matricks.github.io/bam/) used in Teeworlds. 8 | 9 | ## Setup 10 | 1. Use your package manager (apt-get, emerge or whatever is used on your distribution) to install the following (you will need the header files): 11 | - gcc 12 | - g++ 13 | - python 14 | - alsa (asound) 15 | - gl 16 | - glu 17 | - x11 18 | - libsdl2 19 | - freetype 20 | 2. Download and unzip [Teeworlds source](https://github.com/teeworlds/teeworlds/releases) or [Teeworlds latest source](https://github.com/teeworlds/teeworlds/archive/master.zip) 21 | 3. Download and unzip [bam](https://github.com/matricks/bam/archive/v0.5.1.tar.gz) to `teeworlds-version/bam` 22 | 4. Compiling bam 23 | - `$ cd bam` 24 | - `$ ./make_unix.sh` 25 | - `$ cd ..` 26 | 27 | 28 | ## Compiling Teeworlds v0.7.x 29 | 1. `cd teeworlds-version` 30 | - Changes to the teeworlds source directory 31 | 2. `./bam/bam config` 32 | - Runs bam configuration 33 | 3. `./bam/bam conf=release` 34 | - Compiles teeworlds (Client and Server) 35 | - `conf=debug` will build the debug version 36 | - Available targets for release and debug: 37 | - `game`(default) 38 | - `server` 39 | - `client` 40 | - `content` 41 | - `masterserver` 42 | - `tools` 43 | - To build the tools and master server in release mode use the following arguments: 44 | - `conf=release tools masterserver` 45 | - Flag `-f` will force a recompile 46 | - You may specify the architecture using `arch`, e.g. `arch=x86` or `arch=x86_64`. 47 | 4. The compiled game is located at `teeworlds-version/build/` 48 | 49 | 50 | ## Compiling Teeworlds v0.6.x and earlier 51 | 52 | 1. `cd teeworlds-version` 53 | - Changes to the teeworlds source directory 54 | 2. `./bam/bam release` 55 | - Compiles teeworlds (Client and Server) 56 | - Available targets for release and debug: 57 | - `release` (for all in release mode) 58 | - `debug` (for all in debug mode) 59 | - `server_release` 60 | - `server_debug` 61 | - `client_release` 62 | - `client_debug` 63 | 3. The compiled game is located in `teeworlds-version` 64 | 65 | **Note:** Teeworlds 0.5.2 and earlier requires python 2.x to compile. Python 3.x will not work. Python 3.x support is introduced with Teeworlds 0.6.0. 66 | 67 | **Note:** If you are using bam 0.2.0 (needed for Teeworlds 0.5.2 and earlier) the bam binary will not be in the bam directory, but in bam/src. You will need to change the paths accordingly to that or copy/move the bam executable to the bam directory. 68 | -------------------------------------------------------------------------------- /compiling_everything_mac.md: -------------------------------------------------------------------------------- 1 | # Compiling Teeworlds on Mac 2 | 3 | **IMPORTANT NOTE:** SDL and Freetype libs are not shipped with Teeworlds 0.7.x. You must download them separately. 4 | 5 | **Q: What is bam?** 6 | 7 | Bam is the [build system made by matricks](http://matricks.github.io/bam/) used in Teeworlds. 8 | 9 | ## Setup 10 | 1. Install Xcode from the Appstore or install Xcode Command Line Tools `xcode-select --install`. 11 | 2. Install libsdl using [brew](https://brew.sh/) `brew install sdl2` 12 | 3. Install Freetype using [brew](https://brew.sh/) `brew install freetype` 13 | 4. Download and unzip [Teeworlds source](https://github.com/teeworlds/teeworlds/releases) or [Teeworlds latest source](https://github.com/teeworlds/teeworlds/archive/master.zip) 14 | 5. Download and unzip [bam](https://github.com/matricks/bam/archive/v0.5.1.zip) to `teeworlds-version/bam` 15 | 6. Compiling bam 16 | - `$ cd bam` 17 | - `$ ./make_unix.sh` 18 | - `$ cd ..` 19 | 20 | 21 | ## Compiling Teeworlds v0.7.x 22 | 1. `cd teeworlds-version` 23 | - Changes to the teeworlds source directory 24 | 2. `./bam/bam config` 25 | - Runs bam configuration 26 | 3. `./bam/bam conf=release` 27 | - Compiles teeworlds (Client and Server) 28 | - `conf=debug` will build the debug version 29 | - Available targets for release and debug: 30 | - `game`(default) 31 | - `server` 32 | - `client` 33 | - `content` 34 | - `masterserver` 35 | - `tools` 36 | - To build the tools and master server in release mode use the following arguments: 37 | - `conf=release tools masterserver` 38 | - Flag `-f` will force a recompile 39 | 4. The compiled game is located at `teeworlds-version/build/` 40 | 41 | 42 | ## Compiling Teeworlds v0.6.x and earlier 43 | 44 | 1. `cd teeworlds-version` 45 | - Changes to the teeworlds source directory 46 | 2. `./bam/bam release` 47 | - Compiles teeworlds (Client and Server) 48 | - Available targets for release and debug: 49 | - `release` (for all in release mode) 50 | - `debug` (for all in debug mode) 51 | - `server_release` 52 | - `server_debug` 53 | - `client_release` 54 | - `client_debug` 55 | 3. The compiled game is located in `teeworlds-version` 56 | 57 | **Note:** Teeworlds 0.5.2 and earlier requires python 2.x to compile. Python 3.x will not work. Python 3.x support is introduced with Teeworlds 0.6.0. 58 | 59 | **Note:** If you are using bam 0.2.0 (needed for Teeworlds 0.5.2 and earlier) the bam binary will not be in the bam directory, but in bam/src. You will need to change the paths accordingly to that or copy/move the bam executable to the bam directory. -------------------------------------------------------------------------------- /compiling_everything_windows.md: -------------------------------------------------------------------------------- 1 | # Compiling Teeworlds on Windows 2 | 3 | **Q: What is bam?** 4 | 5 | Bam is the [build system made by matricks](http://matricks.github.io/bam/) used in Teeworlds. 6 | 7 | ## Setup (Using Microsoft Tools) 8 | 9 | 1. Download and install [Visual Studio 2017 Community](https://visualstudio.microsoft.com/de/downloads/). 10 | 2. Download and unzip [Teeworlds source](https://github.com/teeworlds/teeworlds/releases) or [Teeworlds latest source](https://github.com/teeworlds/teeworlds/archive/master.zip) 11 | 3. Download and install [Python 3.x](https://www.python.org/download/) 12 | 4. Download and unzip [bam](https://github.com/teeworlds/bam/archive/master.zip) to `teeworlds-version\bam` 13 | - Run `make_win64_msvc.bat` (or `make_win32_msvc.bat` for x86) to compile bam 14 | - **Note:** Bam does not recognise Visual Studio 2017. As a workaround, to compile bam, run the aforementioned batch script from the `x64 Native Tools Command Prompt` (or `x86 Native Tools Command Prompt` for x86) 15 | 16 | ## Compiling Teeworlds v0.7.x 17 | 18 | 1. Run the `x64 Native Tools Command Prompt` (or `x86 Native Tools Command Prompt` for x86) from the start menu. 19 | 2. `cd teeworlds-version` 20 | - Changes to the teeworlds source directory 21 | 3. `.\bam\bam config` 22 | - Runs bam configuration 23 | 4. `.\bam\bam conf=release` 24 | - Compiles teeworlds (Client and Server) 25 | - `conf=debug` will build the debug version instead 26 | - You can also provide a target: 27 | - `game`(default) 28 | - `server` 29 | - `client` 30 | - `content` 31 | - `masterserver` 32 | - `tools` 33 | - For example, to build the tools and master server in release mode use the following arguments: 34 | - `.\bam\bam conf=release tools masterserver` 35 | - Flag `-f` will force a recompile 36 | 5. The compiled game is located at `teeworlds-version\build\x86_64\` (or `teeworlds-version\build\x86\` for x86) 37 | 38 | ## Compiling Teeworlds v0.6.x and earlier 39 | 40 | 1. Run the `x64 Native Tools Command Prompt` (or `x86 Native Tools Command Prompt` for x86) from the start menu. 41 | 2. `cd teeworlds-version` 42 | - Changes to the teeworlds source directory 43 | 3. `.\bam\bam release` 44 | - Compiles teeworlds (Client and Server) 45 | - Available targets for release and debug are: 46 | - `release` (for all in release mode) 47 | - `debug` (for all in debug mode) 48 | - `server_release` 49 | - `server_debug` 50 | - `client_release` 51 | - `client_debug` 52 | 4. The compiled game is located in `teeworlds-version` 53 | 54 | **Note:** Teeworlds 0.5.2 and earlier requires Python 2.x to compile. Python 3.x will not work. Python 3.x support is introduced with Teeworlds 0.6.0. 55 | 56 | **Note:** Teeworlds 0.5.2 and earlier requires bam 0.2.0. The bam binary will not be in the bam directory, but in `bam\src`. You will need to change the paths accordingly to that or copy/move the bam executable to the bam directory. 57 | -------------------------------------------------------------------------------- /ctf_scoring.md: -------------------------------------------------------------------------------- 1 | # Capture the Flag (CTF) scoring 2 | 3 | ## Team score 4 | 5 | - +1 for taking the flag from the flag stand 6 | - +100 for capture 7 | 8 | ## Player score 9 | 10 | - +1 for taking the flag from the flag stand 11 | - +1 for returning the flag 12 | - +1 for fragging the enemy flag carrier 13 | - +5 for capturing the flag 14 | - +1 for fragging an enemy 15 | - -1 for killing a teammate or yourself 16 | -------------------------------------------------------------------------------- /demo_player.md: -------------------------------------------------------------------------------- 1 | # Demo Player 2 | 3 | ## Hotkeys 4 | 5 | | Hotkey | Description| 6 | | ------ | ---------- | 7 | |Esc|Show/hide the demo player menu| 8 | |Ctrl|Show/hide the seek bar| 9 | |Space|Pause/Resume playback| 10 | |`+`/`-`|Increase/Decrease playback speed| 11 | |Left/Right arrow|Skip backwards/forwards 5 seconds| 12 | |Shift+Left/Right arrow|Skip backwards/forwards 30 seconds| 13 | |Ctrl+Left/Right arrow|Skip to the previous/next timeline marker (or the beginning/end of the demo if no more markers)| 14 | |`,`/`.`|Skip backwards/forwards a single game tick| 15 | -------------------------------------------------------------------------------- /hacking.md: -------------------------------------------------------------------------------- 1 | # Hacking on source 2 | 3 | ## Basic Info 4 | 5 | - [Compiling on Windows](compiling_everything_windows.md) 6 | - [Compiling on Linux](compiling_everything_linux.md) 7 | - [Compiling on Mac](compiling_everything_mac.md) 8 | - [Github](https://github.com/teeworlds/teeworlds) (Issue, task tracing, sending in of patches and much much more) 9 | 10 | ## Communication 11 | 12 | #### IRC 13 | 14 | We have one development channel on [QuakeNET](http://www.quakenet.org/) called #teeworlds where a lot of chatter is going on. 15 | -------------------------------------------------------------------------------- /help.md: -------------------------------------------------------------------------------- 1 | # Getting help 2 | 3 | ## 1. Search the [FAQ](support/faq.md) 4 | Your question might already been asked by others. Try searching though the [FAQ](support/faq.md) for information on your problem. 5 | 6 | ## 2. Go through the Documentation 7 | 8 | ### Rules 9 | 10 | [Support Rules](rules/support_rules.md) 11 | 12 | [IRC Rules](rules/irc_rules.md) 13 | 14 | [Forum Rules](rules/forum_rules.md) 15 | 16 | [Server Hosting Rules](rules/server_rules.md) 17 | 18 | ### Game Information 19 | 20 | [CTF Scoring](ctf_scoring.md) 21 | 22 | ### Client 23 | 24 | [Client Settings](client_settings.md) 25 | 26 | [Client Commands](client_commands.md) 27 | 28 | [Client Config](client_config.md) 29 | 30 | [Demo Player](demo_player.md) 31 | 32 | ### Server 33 | 34 | [Server Setup](server_setup.md) 35 | 36 | [Server Settings](server_settings.md) 37 | 38 | [Server Commands](server_commands.md) 39 | 40 | [Server Tuning](server_tuning.md) 41 | 42 | 43 | ### Hacking and Development 44 | 45 | [Hacking on source](hacking.md) 46 | 47 | [Map Editor Reference](map_editor_reference.md) 48 | 49 | [Source Formatting](nomenclature.md) 50 | 51 | 52 | ### Other 53 | 54 | [Licensing, Modifications and Donations](licensing_misc.md) 55 | 56 | 57 | ## 3. Ask in the [Forum](https://www.teeworlds.com/forum/) 58 | There are loads of people willing to help you with your problem on the forum. Just register and create a thread with your question and detailed information about your specific problem. Remember to read the [forum rules](rules/forum_rules.md) before posting anything. 59 | -------------------------------------------------------------------------------- /licensing_misc.md: -------------------------------------------------------------------------------- 1 | # Licensing, Modifications and Donations 2 | 3 | ## The License 4 | 5 | - It complies to the OSI definition: http://www.opensource.org/docs/definition.php 6 | - It complies with Debian Free Software Guidelines: http://www.debian.org/doc/debian-policy/ch-archive.html#s-dfsg 7 | - The license is the result of a week long discussion with input from a license expert at Fedora. 8 | - The whole OSS thing have started to take more time then it's actually worth. 9 | - No, it will not get changed because you complain. 10 | 11 | ## Modifications 12 | 13 | Modifications are not our responsibility. 14 | 15 | Modified servers, however, must not broadcast themselves under the name of one of the official gametypes, and abide by other common-sense [Server Rules](rules/server_rules.md). 16 | 17 | Has to be done in 3rd person :) 18 | 19 | ## Donations 20 | 21 | Thanks to your generosity, we have enough resources to keep the current infrastructure (website, masterservers) running for long, and have stopped accepting donations. 22 | -------------------------------------------------------------------------------- /map_editor_reference.md: -------------------------------------------------------------------------------- 1 | # Map Editor Reference 2 | 3 | ## Controls 4 | 5 | Mouse means hold and drag, click is just a simple click. 6 | 7 | ### Main view 8 | 9 | | Command | Description | 10 | | ------------- | ------------- | 11 | | Alt + Mouse| Move around the map| 12 | | Ctrl + O| Open map| 13 | | Ctrl + S| Save map| 14 | | Ctrl + H| Toggle high detail| 15 | | Ctrl + M| Toggle animation| 16 | | Ctrl + P| Toggle proof| 17 | | - | Zoom out| 18 | | * | Zoom to normal and remove editor offset| 19 | | + | Zoom in| 20 | | N | Flip brush horizontal| 21 | | M | Flip brush vertical| 22 | | R | Rotate the brush counter clockwise| 23 | | T | Rotate the brush clockwise| 24 | | Space| Shows the tileset of the current layer| 25 | | Mouse without brush| Drag and select a brush| 26 | | Click with brush| Draw the brush| 27 | | Right click with brush| Clean the brush| 28 | | Tab| Hide/show the menu and sidebar| 29 | | F10| Take a screenshot| 30 | 31 | ### Quads 32 | 33 | | Command | Description | 34 | | ------------- | ------------- | 35 | | Mouse| Move quad| 36 | | Shift + Mouse| Move pivot| 37 | | Shift + Click| Select multiple pivots| 38 | | Ctrl + Mouse| Rotate quad| 39 | 40 | ### Envelopes 41 | 42 | | Command | Description | 43 | | ------------- | ------------- | 44 | | Mouse| Move the Y axis| 45 | | Shift + Mouse| Move the X and Y axis| 46 | -------------------------------------------------------------------------------- /nomenclature.md: -------------------------------------------------------------------------------- 1 | # All code in teeworlds should match this code guidelines. 2 | 3 | ## Brackets and Such 4 | 5 | Hardtabs, tabsize 4. 6 | 7 | Use Allman style brackets like this: 8 | 9 | ``` 10 | if(MyInt != 5) 11 | { 12 | while(MyInt) 13 | { 14 | MyFunction(&MyInt); 15 | } 16 | } 17 | ContinueMyStuff(); 18 | ``` 19 | 20 | ## Comments 21 | 22 | Use `//` style comments for most things. Larger blocks of comments can use `/* */` style but shouldn't be used inside function bodies. 23 | 24 | ## Identifiers 25 | 26 | Use [CamelCase](http://en.wikipedia.org/wiki/CamelCase) with upper case on the first letter as well. 27 | 28 | ## Variable Prefixes 29 | 30 | `m_` 31 | 32 | Class member 33 | 34 | `g_` 35 | 36 | Global variable 37 | 38 | `s_` 39 | 40 | Static variable 41 | 42 | `_p` 43 | 44 | Pointer 45 | 46 | `_a` 47 | 48 | Fixed array 49 | 50 | Combine them appropriately. 51 | 52 | ## Class Prefixes 53 | 54 | `C` 55 | 56 | Class, CMyClass, This goes for structures as well. 57 | 58 | `I` 59 | 60 | Interface, IMyClass 61 | 62 | ## Null pointers 63 | 64 | Use `0` or `0x0` instead of `NULL`. Because Teeworlds uses C++03, `nullptr` does not work either. 65 | 66 | ## Passing Variables 67 | 68 | Pass by value for smaller things, const reference for larger objects. By pointer if the function needs to modify the object. Don't cast values as just a reference. If the function needs to modify it, use a pointer to show it as well. 69 | 70 | ``` 71 | void MyFunction(int MyVar); 72 | void MyFunction(const CMyClass &MyVar); 73 | void MyFunction(int *pMyVar); 74 | 75 | void MyFunction(int &pMyVar); // Never do this! 76 | ``` 77 | 78 | ## Examples 79 | 80 | ``` 81 | class IMyInterface 82 | { 83 | public: 84 | virtual void MyFunction(int InputVar) = 0; 85 | }; 86 | 87 | class CMyImplementation : public IMyInterface 88 | { 89 | static int ms_StaticCounter; 90 | int m_aSomeData[16]; 91 | public: 92 | void *m_pMyData; 93 | 94 | virtual void MyFunction(int InputVar) 95 | { 96 | // ... 97 | } 98 | }; 99 | ``` 100 | -------------------------------------------------------------------------------- /reset_config.md: -------------------------------------------------------------------------------- 1 | # Resetting the configuration 2 | 3 | This is done by deleting the configuration file called settings.cfg. This will force the game to use the predefined defaults within the executables. 4 | 5 | ## Windows 6 | 7 | Double click on the config_directory.bat. This will take you to the directory where the config-file is stored. Delete the settings.cfg file. 8 | 9 | ## Linux/\*nix 10 | 11 | The config-file is stored at `~/.teeworlds/settings.cfg`. Just run this command from a terminal to delete it. 12 | 13 | `# rm ~/.teeworlds/settings.cfg` 14 | 15 | ## OSX 16 | 17 | Delete `settings.cfg` in `~/Library/Application Support/Teeworlds`. 18 | -------------------------------------------------------------------------------- /rules/discord_rules.md: -------------------------------------------------------------------------------- 1 | # Discord Rules 2 | 3 | These are the rules for [Teeworlds Discord Server](https://discord.com/invite/teeworlds): 4 | 5 | - **Be nice and respectful**. No aggressivity, toxicity, putting down others or their work. 6 | - **Speak english**, so everyone can understand what you say. 7 | - **Be relevant**. This is about Teeworlds. 8 | - **Don't advertise**. Unless it is related to the discussion. 9 | 10 | Punishments start with a kick and can lead to a temporary ban. If the offense is severe, there will be a permanent ban. -------------------------------------------------------------------------------- /rules/forum_rules.md: -------------------------------------------------------------------------------- 1 | # Forum Rules 2 | 3 | These are the rules and the moderation guidelines for the forum. Note that moderators may always take any action they deem necessary, considering the circumstances. Breaking a rule is always a bannable offense. 4 | 5 | --- 6 | 7 | ### Before posting 8 | 9 | 1. **Use the search function** 10 | * Chances are your issue has already been addressed. 11 | 2. **Never post the same topic in two or more forums** 12 | 13 | The thread in the least relevant forum will be deleted. 14 | ### When posting 15 | 16 | Breaking these rules will most likely result in a warning. 17 | 18 | 1. **Write in English -- No exceptions!** 19 | * Non-english posts will be deleted. 20 | 2. **Post in the correct forum** 21 | * Threads will be moved to an appropriate forum. 22 | 3. **Write clear and concise topics** 23 | * Moderators may edit topics to clarify questions or delete them entirely. 24 | 4. **Don't post or link to offensive/pornographic/illegal material, or cheats** 25 | * Threads and posts will be immediately closed. Breaking this rule will very likely result in a ban. 26 | 5. **Respect the other forum members, moderators and developers** 27 | * Moderators may delete offensive posts and ban users at their leisure. 28 | 6. **Stay on topic** 29 | * Spam, "me too"-posts and similar content of low information value may be deleted. *This includes memes*. 30 | 31 | ### Forum Moderation 32 | 33 | 1. **Use the report function** 34 | * Do NOT add to the fire by commenting on the offending post. You're just adding to the problem, and you'll risk a warning or a ban. 35 | 2. **Do not discuss moderation publicly** 36 | * Any issues with moderation should be resolved by PM:ing the moderator, or contacting him / her on IRC. Posts concerning moderation will be removed. 37 | 3. **Moderators have final say in all matters** 38 | * Remember the golden rule: Moderators are always right, even when they're wrong. 39 | -------------------------------------------------------------------------------- /rules/irc_rules.md: -------------------------------------------------------------------------------- 1 | # IRC Rules 2 | 3 | These are the rules for #teeworlds on Quakenet: 4 | 5 | - **Follow quakenet rules**, you can find them at http://www.quakenet.org/faq/faq.php?c=136 6 | - **Speak english**, so everyone can understand what you say. 7 | - **Be relevant**, this is not a a channel about anything, it's about teeworlds. 8 | - **Don't priv msg**, if anyone knows and have time, they will answer any question posted in the channel, so everyone can see it. 9 | - **Don't advertise** about other channels/goods/websites except if it's relevant to the discussion. 10 | - **No away msg**, we don't care where you went. 11 | - **(No away nicks)**, not a hard rule, but it's just unnecessary with away nicks. 12 | - **No auto-rejoin**, it's just rude. It's punishable with a swift new kick and ban. 13 | - **No begging**, don't beg for voice, op etc, it's just rude and counter productive. 14 | - **Ops are never wrong**, if they are, they are still right. 15 | 16 | 17 | Punishments starts with a kick and can lead to a temporary ban. If the offense is severe, there will be a permanent ban. 18 | -------------------------------------------------------------------------------- /rules/server_rules.md: -------------------------------------------------------------------------------- 1 | # Server Rules 2 | 3 | After some issues with mods, this ruleset has been established for servers in the server list: 4 | 5 | - A modified Teeworlds server must not use a standard gametype (dm, tdm, ctf, lms, lts) 6 | - _0.6.x and previous_: The player count shown must resemble the amount of human players. The maximum player count must be the maximum number of human players. 7 | - _0.7.x and later_: You can also include non-human players using a special bot flag. This allows client-side filtering. 8 | - Do not host an excessive amount of servers. There is no fixed limit but try to not overdo it. (i.e. there should be people playing on them eventually) 9 | - Do not host servers purely for advertising purposes (e.g. passworded & having only an advertisement as name; having sponsoring info or the likes in the server name is perfectly fine). 10 | 11 | Servers violating this ruleset will be banned. 12 | 13 | You can check out the list of masterserver bans at [https://teeworlds.com/master-bans.cfg](https://teeworlds.com/master-bans.cfg) if you have any doubt. 14 | 15 | If you wish to be notified about problems with your server(s) you may provide a contact email address in your MOTD. 16 | -------------------------------------------------------------------------------- /rules/support_rules.md: -------------------------------------------------------------------------------- 1 | # Support Rules 2 | 3 | First of all, you need to determine where to go. These are all the various ways of getting support. 4 | 5 | ### The Forum 6 | 7 | The Forum is to be used for all and any issues related to installing, building, setting up or playing the game. The support sub-forum is primarily run by the community, but a developer might answer your question if there is no prior information on the subject. Search properly before you ask! If no-one responds to your post, it's very likely that your issue has been addressed before, and that you just suck at searching. Also read the Forum rules. 8 | 9 | ### The IRC channel 10 | 11 | This is the preferred way for asking about minor issues, or general game information. You will under no circumstance be given "personal" support from any of the developers -- all questions are to be made in the public channel, so that all can help out. For further information, see the IRC rules. 12 | 13 | ### Contacting the developers 14 | 15 | The contact e-mail is not intended for support of any kind. It is very unlikely you will get a reply. 16 | 17 | ### Things you'll never get help with 18 | 19 | - Server hosting 20 | - Security issues 21 | - Compiling / porting the game to unsupported platforms 22 | - Settling player disputes ("abuse") 23 | - Anything not written in English 24 | 25 | ### Things you'll get limited help with 26 | 27 | - Unofficial modifications of the game, or custom servers (in the Mods subforum) -------------------------------------------------------------------------------- /server_commands.md: -------------------------------------------------------------------------------- 1 | # Server Commands 2 | 3 | To kick players from the server and to do other similar things, you have to use the server commands. This doc will show you these. If you want to know how to set up a server, read the [Server Setup](server_setup.md) doc. For server settings, see the [Server Settings](server_settings.md) doc. 4 | 5 | ## Engine 6 | 7 | | Command | Syntax | Description | 8 | | ------- | ---------- | ----------- | 9 | |`broadcast`|`broadcast text`|Broadcast the text| 10 | |`echo`|`echo text`|Print a text in console| 11 | |`eval_if`|`eval_if config comparison value command else command`|Execute command if condition is true| 12 | |`exec`|`exec file`|Execute the commands in the file| 13 | |`logout`|`logout`|Logout of rcon| 14 | |`mod_command`|`mod_command command (access-level)`|Specify command accessibility for moderators| 15 | |`mod_status`|`mod_status`|List all commands which are accessible for moderators| 16 | |`record`|`record filename`|Start a recording to the specified file (omit filename to use timestamp)| 17 | |`save_config`|`save_config [file]`|Save config to file (or default file if none)| 18 | |`say`|`say text`|Send a chat message| 19 | |`shutdown`|`shutdown [reason]`|Shut the server down| 20 | |`stoprecord`|`stoprecord`|Stop the recording| 21 | |`toggle`|`toggle config_option value1 value2`|Toggle config value| 22 | |`tune`|`tune variable [value]`|Tune the variable or show its current value. See the [Server Tuning](server_tuning.md) doc| 23 | |`tune_reset`|`tune_reset [variable]`|Reset all or one tuning variable to default| 24 | |`tunes`|`tunes`|List all tuning variables and their values| 25 | 26 | ## Game 27 | 28 | | Command | Syntax | Description | 29 | | ------- | ---------- | ----------- | 30 | |`change_map`|`change_map mapname`|Change to the specified map| 31 | |`force_teambalance`|`force_teambalance`|Force team balance| 32 | |`lock_teams`|`lock_teams`|Lock/unlock teams| 33 | |`paused`|`paused`|Pause/unpause game| 34 | |`reload`|`reload`|Reload the map| 35 | |`restart`|`restart [time]`|Restart the round (-1 = abort)| 36 | |`set_team`|`set_team client_id team_id`|Move a player to a specific team (0 = red, 1 = blue, -1 = spectators)| 37 | |`set_team_all`|`set_team_all team_id`|Move all players to a specific team| 38 | |`shuffle_teams`|`shuffle_teams`|Shuffle the current teams| 39 | |`swap_teams`|`swap_teams`|Swap the current teams| 40 | 41 | ## Players 42 | 43 | | Command | Syntax | Description | 44 | | ------- | ---------- | ----------- | 45 | |`ban`|`ban ip/id minutes`|Ban the ip from the server for the given time| 46 | |`bans`|`bans`|Show a list of bans| 47 | |`bans_save`|`bans_save file`|Save banlist in a file| 48 | |`kick`|`kick id`|Kick the user with the specified id directly| 49 | |`status`|`status`|List the player's id, ip, name and score| 50 | |`unban`|`unban ip`|Unban the ip| 51 | 52 | ## Votes 53 | 54 | | Command | Syntax | Description | 55 | | ------- | ---------- | ----------- | 56 | |`add_vote`|`add_vote description command`|Add a vote option for the provided command with the provided description ( description is optional)| 57 | |`clear_votes`|`clear votes`|remove all vote options| 58 | |`force_vote`|`force_vote type option/player_id reason`|Force a certain vote to be executed immediately (type can be "option", "kick" or "spectate")| 59 | |`remove_vote`|`remove_vote command`|remove a vote option| 60 | |`vote`|`vote yes/no`|Force the end result of the vote to yes/no| 61 | -------------------------------------------------------------------------------- /server_settings.md: -------------------------------------------------------------------------------- 1 | # Server Settings 2 | 3 | There are lots of server settings to change all from the score limit, to the speed of the shotgun. This doc will show you what those are, not how to set up a server. Read the [Server Setup](server_setup.md) doc to learn that. For server commands, see the [Server Commands](server_commands.md) doc. 4 | 5 | ## Physics 6 | 7 | To change the game's physics, read the [Server Tuning](server_tuning.md) doc. 8 | 9 | ## Engine 10 | 11 | `*` means it can't be changed while running the server. 12 | 13 | | Settings | Description | Default | 14 | | -------- | ----------- | ------- | 15 | |`bindaddr` *|Address to bind|`""`| 16 | |`console_output_level`|Adjust the amount of messages in the console|0| 17 | |`logfile`|Filename to log all output to|`""`| 18 | |`logfile_timestamp`|Add a time stamp to the log file's name|0| 19 | |`net_tcp_abort_on_close`|Aborts tcp connection on close|0| 20 | |`password`|Password to connect to the server|`""`| 21 | |`sv_auto_demo_max`|Maximum number of automatically recorded demos (0 = no limit)|10| 22 | |`sv_auto_demo_record`|Automatically record demos|0| 23 | |`sv_external_port` *|Port to report to the master servers (e.g. in case of a firewall rename)|0| 24 | |`sv_high_bandwidth` *|Use high bandwidth mode. Doubles the bandwidth required for the server. LAN use only|0| 25 | |`sv_hostname`|Server hostname|`""`| 26 | |`sv_inactivekick`|How to deal with inactive clients (1=move player to spectator, 2=move to free spectator slot/kick, 3=kick)|2| 27 | |`sv_inactivekick_spec`|Kick inactive spectators|0| 28 | |`sv_inactivekick_time`|How many minutes to wait before taking care of inactive clients|3| 29 | |`sv_map_download_speed`|Number of map data packages a client gets on each request|8| 30 | |`sv_max_clients` *|Number of clients that can be connected to the server at the same time|12| 31 | |`sv_max_clients_per_ip`|Maximum number of clients with the same IP that can connect to the server|12| 32 | |`sv_motd`|Message of the day, shown in server info and when joining a server|`""`| 33 | |`sv_name`|Name of the server|`"unnamed server"`| 34 | |`sv_port` *|Port the server will listen on|8303| 35 | |`sv_rcon_bantime`|The time a client gets banned if remote console authentication fails. 0 makes it just use kick|5| 36 | |`sv_rcon_max_tries`|Maximum number of tries for remote console authentication|3| 37 | |`sv_rcon_mod_password`|Remote console password for moderators (limited access)|`""`| 38 | |`sv_rcon_password`|Password to access the remote console (if not set, rcon is disabled)|`""`| 39 | |`sv_register`|Register server with master server for public listing|1| 40 | |`sv_silent_spectator_mode`|Mute join/leave message of spectator|1| 41 | |`sv_skill_level`|Skill level shown in serverbrowser (0 = casual, 1 = normal, 2 = competitive)|1| 42 | |`sv_spamprotection`|Spam protection|1| 43 | 44 | ## Game 45 | 46 | | Settings | Description | Default | 47 | | -------- | ----------- | ------- | 48 | |`sv_countdown`|Number of seconds to freeze the game in a countdown before match starts (0 enables only for survival gamemodes, -1 disables)|0| 49 | |`sv_gametype`|Game type (dm, tdm, ctf, lms, lts) (This setting needs the map to be reloaded in order to take effect)|`dm`| 50 | |`sv_map`|Map to use on the server|`dm1`| 51 | |`sv_maprotation`|Maps to rotate between|`""`| 52 | |`sv_match_swap`|Swap teams between matches|1| 53 | |`sv_matches_per_map`|Number of matches on each map before rotating|1| 54 | |`sv_player_ready_mode`|When enabled, players can pause/unpause the game and start the game on warmup via their ready state|0| 55 | |`sv_player_slots`|Number of slots to reserve for players. Replaces `sv_spectator_slots`|8| 56 | |`sv_powerups`|Allow powerups like ninja|1| 57 | |`sv_respawn_delay_tdm`|Time needed to respawn after death in tdm gametype|3| 58 | |`sv_scorelimit`|Score limit of the game (0 disables it)|20| 59 | |`sv_strict_spectate_mode`|Restricts information like health, ammo and armour in spectator mode|0| 60 | |`sv_teambalance_time`|How many minutes to wait before autobalancing teams|1| 61 | |`sv_teamdamage`|Team damage|0| 62 | |`sv_timelimit`|Time limit of the game (in case of equal points there will be sudden death) (0 disables)|0| 63 | |`sv_tournament_mode`|Tournament mode. When enabled, players joins the server as spectator (2=additional restricted spectator chat)|0| 64 | |`sv_vote_kick`|Allow voting to kick players|1| 65 | |`sv_vote_kick_bantime`|The time to ban a player if kicked by vote. 0 makes it just use kick|5| 66 | |`sv_vote_kick_min`|Minimum number of players required to start a kick vote|0| 67 | |`sv_vote_spectate`|Allow voting to move players to spectators|1| 68 | |`sv_vote_spectate_rejoindelay`|How many minutes to wait before a player can rejoin after being moved to spectators by vote|3| 69 | |`sv_warmup`|Number of seconds to do warmup before match starts (0 disables, -1 all players ready)|0| 70 | 71 | ## External console 72 | 73 | | Settings | Description | Default | 74 | | -------- | ----------- | ------- | 75 | |`ec_bindaddr`|Address to bind the external console to. Anything but 'localhost' is dangerous!|`localhost`| 76 | |`ec_port`|Port to use for the external console|| 77 | |`ec_password`|External console password|| 78 | |`ec_bantime`|The time a client gets banned if econ authentication fails. 0 just closes the connection|0| 79 | |`ec_auth_timeout`|Time in seconds before the the econ authentication times out|30| 80 | |`ec_output_level`|Adjusts the amount of information in the external console|1| 81 | -------------------------------------------------------------------------------- /server_setup.md: -------------------------------------------------------------------------------- 1 | # Server Setup 2 | 3 | This doc will guide you through the basics of setting up a server on Linux and Windows. 4 | 5 | ## Port forwarding 6 | 7 | If you want other players to be able to play on the server via internet, you have to forward a port to the server (default is 8303). http://portforward.com/ has a lot information on how to do this. 8 | 9 | The master server will warn if players can't connect. 10 | 11 | ## Configuring the server 12 | 13 | To configure the server you need to create a .cfg-file so that the server knows what to do. Use your favorite text editor to create a config that uses the following syntax: 14 | 15 | ``` 16 | setting value 17 | setting2 value2 18 | ``` 19 | 20 | To find the available settings, read the [Server Settings](server_settings.md) doc. You may also be interested in [Server Commands](server_commands.md). 21 | 22 | You can find example configurations below. 23 | 24 | ## Starting the server 25 | 26 | To start the server you must specify a config for it to load. This is done by adding the flag `-f` to the server start command, like this: 27 | `teeworlds_srv -f serverconfig.cfg` 28 | 29 | ### Windows 30 | 31 | Start the command tool by pressing `Win`+`R` write `cmd` followed by enter, and use the command `cd` to navigate to the teeworlds directory. 32 | 33 | When you get there, start the server by typing `teeworlds_srv.exe -f serverconfig.cfg` 34 | where you replace `serverconfig.cfg` with the name of your config file. 35 | 36 | ### Linux 37 | 38 | Open up a terminal and use the command `cd` to enter the teeworlds directory. 39 | 40 | To start the server, type 41 | `teeworlds_srv -f serverconfig.cfg` 42 | where you replace `serverconfig.cfg` with the name of your config file. 43 | 44 | ## Remote console 45 | 46 | To be able to execute server commands while playing, there is a remote console. To open it, press `F2` (or the key you have chosen). You will now be asked to enter a password. If you did not set up a password in your config, a random one will have been generated: check the server log. 47 | 48 | To find out what commands that are available on the server, read the [Server Commands](server_commands.md) doc. 49 | 50 | ## Support 51 | 52 | If you have any questions, read the [FAQ](support/faq.md). If you can't find an answer, please use the support forum. 53 | 54 | 55 | ## Example configurations 56 | 57 | ### Sample DM config 58 | ``` 59 | sv_name Teeworlds sample dm 60 | sv_map dm1 61 | sv_scorelimit 20 62 | sv_timelimit 10 63 | sv_gametype dm 64 | sv_motd Teeworlds sample deathmatch configuration 65 | sv_max_clients 12 66 | sv_spectator_slots 10 67 | ``` 68 | 69 | ### Sample CTF config 70 | ``` 71 | sv_name Teeworlds sample ctf 72 | sv_map ctf2 73 | sv_scorelimit 400 74 | sv_gametype ctf 75 | sv_motd Teeworlds sample capture the flag configuration 76 | ``` 77 | 78 | ### Sample LTS config 79 | ``` 80 | sv_name Teeworlds sample LTS 81 | sv_map lms1 82 | sv_scorelimit 10 83 | sv_gametype lts 84 | sv_motd Teeworlds sample team survival configuration 85 | ``` 86 | 87 | ## FAQ 88 | 89 | **Q: How do I setup a LAN server?** 90 | 91 | Set `sv_register` to 0. This will make sure that it doesn't show up on the internet tab. 92 | 93 | **Q: Why doesn't my server show up in the server browser?** 94 | 95 | You have probably not setup your router correctly. See http://portforward.com for help. 96 | -------------------------------------------------------------------------------- /server_tuning.md: -------------------------------------------------------------------------------- 1 | # Tuning reference 2 | 3 | Tuning is a way to edit physics and weapon settings so that the server is more customizable. Tuning can only be used on non-pure gametypes. Set the gametype to `mod` using `sv_gametype mod` and execute the following in rcon or config to tune a variable: 4 | 5 | `tune gravity 1.0` 6 | where you replace `gravity 1.0` with the variable and value you want. 7 | 8 | ## Physics tuning 9 | 10 | |Tuning| Description| Default| Unit| 11 | | ------ | ---------- | -------- | ----- | 12 | |`ground_control_speed`| Max speed the tee can get on ground| 10.0| 13 | |`ground_control_accel`| Acceleration speed on the ground| 2.0| 14 | |`ground_friction`| Friction on the ground| 0.5| 15 | |`ground_jump_impulse`| Impulse when jumping on ground| 13.2| 16 | |`air_jump_impulse`| Impulse when jumping in air| 12.0| 17 | |`air_control_speed`| Max speed the tee can get in the air| 5.0| 18 | |`air_control_accel`| Acceleration speed in air| 1.5| 19 | |`air_friction`| Friction in the air| 0.95| 20 | |`hook_length`| Length of the hook| 380.0|pixels 21 | |`hook_fire_speed`| How fast the hook is fired| 80.0| 22 | |`hook_drag_accel`| Acceleration when hook is stuck| 3.0| 23 | |`hook_drag_speed`| Drag speed of the hook| 15.0| 24 | |`gravity`| Gravity of the teeworld| 0.5| 25 | |`velramp_start`| Velocity ramp start| 550.0| 26 | |`velramp_range`| Velocity ramp range| 2000.0| 27 | |`velramp_curvature`| Velocity ramp curvature| 1.4| 28 | |`player_collision`| Enable player collisions| 1| 29 | |`player_hooking`| Enable player vs player hooking| 1| 30 | 31 | ## Weapon tuning 32 | 33 | |Tuning |Description| Default| Unit| 34 | | ------ | ---------- | -------- | ----- | 35 | |`gun_curvature`| Gun curvature| 1.25| 36 | |`gun_speed`| Gun speed| 2200.0|pixels / sec 37 | |`gun_lifetime`| Gun lifetime| 2.0|sec 38 | |`shotgun_curvature`| Shotgun curvature| 1.25| 39 | |`shotgun_speed`| Shotgun speed| 2750.0|pixels / sec 40 | |`shotgun_speeddiff`| Speed difference between shotgun bullets| 0.8| 41 | |`shotgun_lifetime`| Shotgun lifetime| 0.20|sec 42 | |`grenade_curvature`| Grenade curvature| 7.0| 43 | |`grenade_speed`| Grenade speed| 1000.0|pixels / sec 44 | |`grenade_lifetime`| Grenade lifetime| 2.0|sec 45 | |`laser_reach`| How long the laser can reach| 800.0|pixels 46 | |`laser_bounce_delay`| When bouncing, stop the laser this long| 150.0|ms 47 | |`laser_bounce_num`| How many times the laser can bounce| 1.0| 48 | |`laser_bounce_cost`| Remove this much from reach when laser is bouncing| 0.0|pixels 49 | |`laser_damage`| Laser damage| 5.0|damage 50 | -------------------------------------------------------------------------------- /support/faq.md: -------------------------------------------------------------------------------- 1 | # FAQ 2 | 3 | ## Running the game 4 | 5 | **Q: The game does not start on Windows, I get a "VCRUNTIME140.dll was not found" error** 6 | 7 | Please download and install [Microsoft Visual C++ 2015 Redistributable](https://www.microsoft.com/en-us/download/details.aspx?id=52685). 8 | 9 | **Q: The game does not start on Windows, application was unable to start correctly (0xc000007b)** 10 | 11 | You are running a 64-bit application on a 32-bit system. [Download Teeworlds for Windows 32bit](https://teeworlds.com/?page=downloads). 12 | 13 | **Q: The game does not start, this is the first time I run it.** 14 | 15 | **A:** The game uses OpenGL to do the acceleration. Make sure that you have installed the latest drivers for you graphics card. 16 | 17 | **Q: The game stopped working, how do I fix it?** 18 | 19 | **A:** Probably something has gone wrong with the config. The easiest thing to try is deleting the `settings.cfg`. See [Client Config](../client_config.md) to find the configuration file. 20 | 21 | **Q: I have Graphical errors, white and rainbow textures, low FPS, etc.** 22 | 23 | **A:** Try these following solutions: 24 | 25 | - Open the user console (`f1` by default) and write `gfx_use_x11xrandr_wm 0`. 26 | - Delete the settings file. See [Client Config](../client_config.md) to find the configuration file. 27 | - Make sure that you have the latest drivers for your graphics card installed. 28 | - Make sure that you have unpacked everything. 29 | - Make sure that you start the game from it's own directory. 30 | 31 | **Q: I have issues with mouse input, mouse is stuck in a corner, stutters, etc.** 32 | 33 | **A:** You may want to enable raw mouse input. Open the user console (`f1` by default) and write `inp_grab 1`. 34 | 35 | 36 | ## Server related 37 | 38 | **Q: How do I setup a server?** 39 | 40 | **A:** Take a look at the [Setting up a server page](../server_setup.md). 41 | 42 | **Q: How do I setup a server on Mac OS X?** 43 | 44 | **A:** Just click on the "Teeworlds Server" application bundle, you will then be prompted for a configuration file to use for the server. 45 | 46 | **Q: Why isn't my server listed?** 47 | 48 | **A:** The server or router isn't configured correctly. 49 | 50 | - Make sure that you have the line `sv_register 1` in your configuration file. 51 | - Make sure that you have forwarded ports from your router. http://portforward.com/ has a lot information on how to do this. 52 | - Make sure that your router supports internal connections to the external ip, to be able to see a local server in the Internet tab. 53 | 54 | **Q: Why doesn't my server start?** 55 | 56 | **A:** You probably configured something wrong. 57 | 58 | - Make sure you use a map that is in the data/maps-folder in the teeworlds directory, otherwise it wont work. 59 | - Make sure the port isn't used. 60 | 61 | ## Hacking the source 62 | 63 | **Q: How do I compile the source?** 64 | 65 | **A:** There is a separate document for this located [here](../hacking.md). 66 | -------------------------------------------------------------------------------- /support/support_and_contact.md: -------------------------------------------------------------------------------- 1 | # Support and Contact 2 | 3 | When using the forum, be sure to read the [Forum Rules](../rules/forum_rules.md). 4 | 5 | When any of the IRC channels, be sure to read the [IRC Channel Rules](../rules/irc_rules.md). 6 | 7 | When participating in any of the Discord servers, be sure to read the [Discord Server Rules](../rules/discord_rules.md). 8 | 9 | ### Support 10 | 11 | If you run into troubles with running Teeworlds, there is a section in the forum called [Support](http://www.teeworlds.com/forum/viewforum.php?id=4) where you can get help from other players and from the developers. There is also an IRC channel on the Quakenet network called #teeworlds for general chatter and support. 12 | 13 | ### Development and supplying patches 14 | 15 | If you want to help with the development, we suggest that you start at [Hacking](../hacking.md). 16 | 17 | ## Contact 18 | 19 | These are the ways you can contact us for different topics of concern: 20 | 21 | - General questions and chatting should take place on [forum](https://www.teeworlds.com/forum/), [IRC](../rules/irc_rules.md), or on [discord](https://discord.com/invite/teeworlds). 22 | - Issues with registering at the forum or found a bug on the website? Send a mail to forum@teeworlds.com 23 | - Important inquiries or legal stuff? Use this email address: info@teeworlds.com, which is intended for serious business only. We will not give support related to running the game, server hosting, compiling the game, etc. Take those questions in the forum. Keep in mind when using this address that we only can speak English (preferred) and Swedish. 24 | --------------------------------------------------------------------------------