Index: ps/trunk/LICENSE.txt =================================================================== --- ps/trunk/LICENSE.txt (revision 21907) +++ ps/trunk/LICENSE.txt (revision 21908) @@ -1,85 +1,92 @@ 0 A.D. Licensing Details ========================== 0 A.D. is released as open source: you can freely use, copy, modify and distribute the game's source code and data files, as long as you include attribution to Wildfire Games and let anyone freely modify and distribute any of your own modifications to the game's files. The distribution includes several different types of files, and a number of third-party components. The details are described here, based on the directory structure. For any file, see the longest path name below which is a prefix of the file's path. Some files don't yet have licensing details specified - if you care about any in particular, let us know and we can try to clarify it. /binaries/data GPL version 2 (or later) - see license_gpl-2.0.txt /binaries/data/mods/*/art /binaries/data/mods/*/audio Creative Commons Attribution-Share Alike 3.0 - see http://creativecommons.org/licenses/by-sa/3.0/ and also see LICENSE.txt within those directories /binaries/data/mods/*/maps/ see LICENSE.txt within those directories /binaries/system Various (unspecified) /binaries/system/dbghelp.dll Proprietary - see license_dbghelp.txt for restrictions you must agree to before distributing this particular file /build Various (unspecified) /build/premake/premake4 /build/premake/premake5 BSD /build/premake/*.lua MIT - see license_mit.txt /docs Various (unspecified) /libraries Various - see LICENSE.txt within that directory /source GPL version 2 (or later) - see license_gpl-2.0.txt /source/lib MIT - see license_mit.txt /source/scriptinterface/third_party MPL 2.0 /source/third_party/cppformat BSD /source/third_party/encryption GPL version 2 (or later) ISC (pkcs5_pbkdf2.cpp) MIT (pkcs5_pbkdf2.h) - see license_mit.txt /source/third-party/jsonspirit MIT - see license_mit.txt /source/third_party/mikktspace zlib /source/third_party/mongoose MIT - see license_mit.txt /source/third_party/tinygettext zlib /source/tools Various - see LICENSE.txt within that directory /source/tools/atlas GPL version 2 (or later) - see license_gpl-2.0.txt + + /binaries/data/mods/public/gui/prelobby/common/terms + /binaries/data/mods/public/gui/userreport/Terms_and_Conditions.txt + /binaries/data/mods/mod/gui/modio/Disclaimer.txt + Redistributing modified Terms and Conditions of online services may be within the licensing, + but may not change the legality or enforceability of the terms of the service provider. + It may be against the terms of the service provider to use online services with modified terms. Index: ps/trunk/binaries/data/config/default.cfg =================================================================== --- ps/trunk/binaries/data/config/default.cfg (revision 21907) +++ ps/trunk/binaries/data/config/default.cfg (revision 21908) @@ -1,509 +1,510 @@ ; Global Configuration Settings ; ; ************************************************************** ; * DO NOT EDIT THIS FILE if you want personal customisations: * ; * create a text file called "local.cfg" instead, and copy * ; * the lines from this file that you want to change. * ; * * ; * If a setting is part of a section (for instance [hotkey]) * ; * you need to append the section name at the beginning of * ; * your custom line (for instance you need to write * ; * "hotkey.pause = Space" if you want to change the pausing * ; * hotkey to the spacebar). * ; * * ; * On Linux, create: * ; * $XDG_CONFIG_HOME/0ad/config/local.cfg * ; * (Note: $XDG_CONFIG_HOME defaults to ~/.config) * ; * * ; * On OS X, create: * ; * ~/Library/Application\ Support/0ad/config/local.cfg * ; * * ; * On Windows, create: * ; * %appdata%\0ad\config\local.cfg * ; * * ; ************************************************************** ; Enable/disable windowed mode by default. (Use Alt+Enter to toggle in the game.) windowed = false ; Show detailed tooltips (Unit stats) showdetailedtooltips = false ; Pause the game on window focus loss (Only applicable to single player mode) pauseonfocusloss = true ; Persist settings after leaving the game setup screen persistmatchsettings = true ; Default player name to use in multiplayer ; playername = "anonymous" ; Default server name or IP to use in multiplayer multiplayerserver = "127.0.0.1" ; Force a particular resolution. (If these are 0, the default is ; to keep the current desktop resolution in fullscreen mode or to ; use 1024x768 in windowed mode.) xres = 0 yres = 0 ; Force a non-standard bit depth (if 0 then use the current desktop bit depth) bpp = 0 ; Preferred display (for multidisplay setups, only works with SDL 2.0) display = 0 ; Emulate right-click with Ctrl+Click on Mac mice macmouse = false ; System settings: ; if false, actors won't be rendered but anything entity will be. renderactors = true watereffects=true ; When disabled, force usage of the fixed pipeline water. This is faster, but really, really ugly. waterfancyeffects = false waterrealdepth = true waterrefraction = true waterreflection = true shadowsonwater = false shadows = true shadowquality = 0 ; Shadow map resolution. (-2 - Very Low, -1 - Low, 0 - Medium, 1 - High, 2 - Very High) ; High values can crash the game when using a graphics card with low memory! shadowpcf = true vsync = false particles = true fog = true silhouettes = true showsky = true nos3tc = false noautomipmap = true novbo = false noframebufferobject = false ; Disable hardware cursors nohwcursor = false ; Linux only: Set the driconf force_s3tc_enable option at startup, ; for compressed texture support force_s3tc_enable = true ; Specify the render path. This can be one of: ; default Automatically select one of the below, depending on system capabilities ; fixed Only use OpenGL fixed function pipeline ; shader Use vertex/fragment shaders for transform and lighting where possible ; Using 'fixed' instead of 'default' may work around some graphics-related problems, ; but will reduce performance and features when a modern graphics card is available. renderpath = default ;;;;; EXPERIMENTAL ;;;;; ; Prefer GLSL shaders over ARB shaders. Allows fancier graphical effects. preferglsl = false ; Experimental probably-non-working GPU skinning support; requires preferglsl; use at own risk gpuskinning = false ; Use smooth LOS interpolation smoothlos = false ; Use screen-space postprocessing filters (HDR, bloom, DOF, etc). Incompatible with fixed renderpath. postproc = false ; Quality level of shader effects (set to 10 to display all effects) materialmgr.quality = 2.0 ; Maximum distance to display parallax effect. Set to 0 to disable parallax. materialmgr.PARALLAX_DIST.max = 150 ; Maximum distance to display high quality parallax effect. materialmgr.PARALLAX_HQ_DIST.max = 75 ; Maximum distance to display very high quality parallax effect. Set to 30 to enable. materialmgr.PARALLAX_VHQ_DIST.max = 0 ;;;;;;;;;;;;;;;;;;;;;;;; ; Replace alpha-blending with alpha-testing, for performance experiments forcealphatest = false ; Color of the sky (in "r g b" format) skycolor = "0 0 0" [adaptivefps] session = 60 ; Throttle FPS in running games (prevents 100% CPU workload). menu = 30 ; Throttle FPS in menus only. [hotkey] ; Each one of the specified keys will trigger the action on the left ; for multiple-key combinations, separate keys with '+'. ; See keys.txt for the list of key names. ; > SYSTEM SETTINGS exit = "Ctrl+Break", "Super+Q" ; Exit to desktop cancel = Escape ; Close or cancel the current dialog box/popup leave = Escape ; End current game or Exit confirm = Return ; Confirm the current command pause = Pause ; Pause/unpause game screenshot = F2 ; Take PNG screenshot bigscreenshot = "Shift+F2" ; Take large BMP screenshot togglefullscreen = "Alt+Return" ; Toggle fullscreen/windowed mode screenshot.watermark = "Alt+K" ; Toggle product/company watermark for official screenshots wireframe = "Alt+Shift+W" ; Toggle wireframe mode silhouettes = "Alt+Shift+S" ; Toggle unit silhouettes showsky = "Alt+Z" ; Toggle sky ; > DIALOG HOTKEYS summary = "Ctrl+Tab" ; Toggle in-game summary lobby = "Alt+L" ; Show the multiplayer lobby in a dialog window. structree = "Alt+Shift+T" ; Show structure tree civinfo = "Alt+Shift+H" ; Show civilization info ; > CLIPBOARD CONTROLS copy = "Ctrl+C" ; Copy to clipboard paste = "Ctrl+V" ; Paste from clipboard cut = "Ctrl+X" ; Cut selected text and copy to the clipboard ; > CONSOLE SETTINGS console.toggle = BackQuote, F9 ; Open/close console ; > OVERLAY KEYS fps.toggle = "Alt+F" ; Toggle frame counter realtime.toggle = "Alt+T" ; Toggle current display of computer time session.devcommands.toggle = "Alt+D" ; Toggle developer commands panel timeelapsedcounter.toggle = "F12" ; Toggle time elapsed counter session.showstatusbars = Tab ; Toggle display of status bars session.highlightguarding = PgDn ; Toggle highlight of guarding units session.highlightguarded = PgUp ; Toggle highlight of guarded units session.toggleattackrange = "Alt+C" ; Toggle display of attack range overlays of selected defensive structures session.toggleaurasrange = "Alt+V" ; Toggle display of aura range overlays of selected units and structures session.togglehealrange = "Alt+B" ; Toggle display of heal range overlays of selected units session.diplomacycolors = "Alt+X" ; Toggle diplomacy colors ; > HOTKEYS ONLY chat = Return ; Toggle chat window teamchat = "T" ; Toggle chat window in team chat mode privatechat = "L" ; Toggle chat window and select the previous private chat partner ; > QUICKSAVE quicksave = "Shift+F5" quickload = "Shift+F8" [hotkey.camera] reset = "R" ; Reset camera rotation to default. follow = "F" ; Follow the first unit in the selection rallypointfocus = unused ; Focus the camera on the rally point of the selected building zoom.in = Plus, Equals, NumPlus ; Zoom camera in (continuous control) zoom.out = Minus, NumMinus ; Zoom camera out (continuous control) zoom.wheel.in = WheelUp ; Zoom camera in (stepped control) zoom.wheel.out = WheelDown ; Zoom camera out (stepped control) rotate.up = "Ctrl+UpArrow", "Ctrl+W" ; Rotate camera to look upwards rotate.down = "Ctrl+DownArrow", "Ctrl+S" ; Rotate camera to look downwards rotate.cw = "Ctrl+LeftArrow", "Ctrl+A", Q ; Rotate camera clockwise around terrain rotate.ccw = "Ctrl+RightArrow", "Ctrl+D", E ; Rotate camera anticlockwise around terrain rotate.wheel.cw = "Shift+WheelUp", MouseX1 ; Rotate camera clockwise around terrain (stepped control) rotate.wheel.ccw = "Shift+WheelDown", MouseX2 ; Rotate camera anticlockwise around terrain (stepped control) pan = MouseMiddle ; Enable scrolling by moving mouse left = A, LeftArrow ; Scroll or rotate left right = D, RightArrow ; Scroll or rotate right up = W, UpArrow ; Scroll or rotate up/forwards down = S, DownArrow ; Scroll or rotate down/backwards scroll.speed.increase = "Ctrl+Shift+S" ; Increase scroll speed scroll.speed.decrease = "Ctrl+Alt+S" ; Decrease scroll speed rotate.speed.increase = "Ctrl+Shift+R" ; Increase rotation speed rotate.speed.decrease = "Ctrl+Alt+R" ; Decrease rotation speed zoom.speed.increase = "Ctrl+Shift+Z" ; Increase zoom speed zoom.speed.decrease = "Ctrl+Alt+Z" ; Decrease zoom speed [hotkey.camera.jump] 1 = F5 ; Jump to position N 2 = F6 3 = F7 4 = F8 ;5 = ;6 = ;7 = ;8 = ;9 = ;10 = [hotkey.camera.jump.set] 1 = "Ctrl+F5" ; Set jump position N 2 = "Ctrl+F6" 3 = "Ctrl+F7" 4 = "Ctrl+F8" ;5 = ;6 = ;7 = ;8 = ;9 = ;10 = [hotkey.profile] toggle = "F11" ; Enable/disable real-time profiler save = "Shift+F11" ; Save current profiler data to logs/profile.txt [hotkey.profile2] toggle = "Ctrl+F11" ; Enable/disable HTTP/GPU modes for new profiler [hotkey.selection] add = Shift ; Add units to selection militaryonly = Alt ; Add only military units to the selection nonmilitaryonly = "Alt+Y" ; Add only non-military units to the selection idleonly = "I" ; Select only idle units woundedonly = "O" ; Select only wounded units remove = Ctrl ; Remove units from selection cancel = Esc ; Un-select all units and cancel building placement idleworker = Period ; Select next idle worker idlewarrior = ForwardSlash ; Select next idle warrior idleunit = BackSlash ; Select next idle unit offscreen = Alt ; Include offscreen units in selection [hotkey.selection.group.add] 0 = "Shift+0" 1 = "Shift+1" 2 = "Shift+2" 3 = "Shift+3" 4 = "Shift+4" 5 = "Shift+5" 6 = "Shift+6" 7 = "Shift+7" 8 = "Shift+8" 9 = "Shift+9" [hotkey.selection.group.save] 0 = "Ctrl+0" 1 = "Ctrl+1" 2 = "Ctrl+2" 3 = "Ctrl+3" 4 = "Ctrl+4" 5 = "Ctrl+5" 6 = "Ctrl+6" 7 = "Ctrl+7" 8 = "Ctrl+8" 9 = "Ctrl+9" [hotkey.selection.group.select] 0 = 0 1 = 1 2 = 2 3 = 3 4 = 4 5 = 5 6 = 6 7 = 7 8 = 8 9 = 9 [hotkey.session] kill = Delete ; Destroy selected units stop = "H" ; Stop the current action backtowork = "Y" ; The unit will go back to work unload = "U" ; Unload garrisoned units when a building/mechanical unit is selected move = unused ; Modifier to move to a point instead of another action (e.g. gather) attack = Ctrl ; Modifier to attack instead of another action (e.g. capture) attackmove = Ctrl ; Modifier to attackmove when clicking on a point attackmoveUnit = "Ctrl+Q" ; Modifier to attackmove targeting only units when clicking on a point (should contain the attackmove keys) garrison = Ctrl ; Modifier to garrison when clicking on building autorallypoint = Ctrl ; Modifier to set the rally point on the building itself guard = "G" ; Modifier to escort/guard when clicking on unit/building patrol = "P" ; Modifier to patrol a unit repair = "J" ; Modifier to repair when clicking on building/mechanical unit queue = Shift ; Modifier to queue unit orders instead of replacing orderone = Alt ; Modifier to order only one entity in selection. batchtrain = Shift ; Modifier to train units in batches massbarter = Shift ; Modifier to barter bunch of resources masstribute = Shift ; Modifier to tribute bunch of resources noconfirmation = Shift ; Do not ask confirmation when deleting a building/unit fulltradeswap = Shift ; Modifier to put the desired trade resource to 100% unloadtype = Shift ; Modifier to unload all units of type deselectgroup = Ctrl ; Modifier to deselect units when clicking group icon, instead of selecting rotate.cw = RightBracket ; Rotate building placement preview clockwise rotate.ccw = LeftBracket ; Rotate building placement preview anticlockwise [hotkey.session.gui] toggle = "Alt+G" ; Toggle visibility of session GUI menu.toggle = "F10" ; Toggle in-game menu barter.toggle = "Ctrl+B" ; Toggle in-game barter/trade page tutorial.toggle = "Ctrl+P" ; Toggle in-game tutorial panel [hotkey.session.savedgames] delete = Delete ; Delete the selected saved game asking confirmation noconfirmation = Shift ; Do not ask confirmation when deleting a game [hotkey.session.queueunit] ; > UNIT TRAINING 1 = "Z" ; add first unit type to queue 2 = "X" ; add second unit type to queue 3 = "C" ; add third unit type to queue 4 = "V" ; add fourth unit type to queue 5 = "B" ; add fivth unit type to queue 6 = "N" ; add sixth unit type to queue 7 = "M" ; add seventh unit type to queue 8 = Comma ; add eighth unit type to queue [hotkey.session.timewarp] fastforward = Space ; If timewarp mode enabled, speed up the game rewind = Backspace ; If timewarp mode enabled, go back to earlier point in the game [hotkey.tab] next = "Tab", "Alt+S" ; Show the next tab prev = "Shift+Tab", "Alt+W" ; Show the previous tab [hotkey.text] ; > GUI TEXTBOX HOTKEYS delete.left = "Ctrl+Backspace" ; Delete word to the left of cursor delete.right = "Ctrl+Del" ; Delete word to the right of cursor move.left = "Ctrl+LeftArrow" ; Move cursor to start of word to the left of cursor move.right = "Ctrl+RightArrow" ; Move cursor to start of word to the right of cursor [gui] cursorblinkrate = 0.5 ; Cursor blink rate in seconds (0.0 to disable blinking) scale = 1.0 ; GUI scaling factor, for improved compatibility with 4K displays [gui.gamesetup] enabletips = true ; Enable/Disable tips during gamesetup (for newcomers) assignplayers = everyone ; Whether to assign joining clients to free playerslots. Possible values: everyone, buddies, disabled. aidifficulty = 3 ; Difficulty level, from 0 (easiest) to 5 (hardest) aibehavior = "random" ; Default behavior of the AI (random, balanced, aggressive or defensive) settingsslide = true ; Enable/Disable settings panel slide [gui.session] camerajump.threshold = 40 ; How close do we have to be to the actual location in order to jump back to the previous one? timeelapsedcounter = false ; Show the game duration in the top right corner ceasefirecounter = false ; Show the remaining ceasefire time in the top right corner batchtrainingsize = 5 ; Number of units to be trained per batch by default (when pressing the hotkey) scrollbatchratio = 1 ; Number of times you have to scroll to increase/decrease the batchsize by 1 woundedunithotkeythreshold = 33 ; The wounded unit hotkey considers the selected units as wounded if their health percentage falls below this number attackrange = true ; Display attack range overlays of selected defensive structures aurasrange = true ; Display aura range overlays of selected units and structures healrange = true ; Display heal range overlays of selected units rankabovestatusbar = true ; Show rank icons above status bars respoptooltipsort = 0 ; Sorting players in the resources and population tooltip by value (0 - no sort, -1 - ascending, 1 - descending) [gui.session.minimap] blinkduration = 1.7 ; The blink duration while pinging pingduration = 50.0 ; The duration for which an entity will be pinged after an attack notification [gui.session.notifications] attack = true ; Show a chat notification if you are attacked by another player tribute = true ; Show a chat notification if an ally tributes resources to another team member if teams are locked, and all tributes in observer mode barter = true ; Show a chat notification to observers when a player bartered resources phase = completed ; Show a chat notification if you or an ally have started, aborted or completed a new phase, and phases of all players in observer mode. Possible values: none, completed, all. [gui.splashscreen] enable = true ; Enable/disable the splashscreen version = 0 ; Splashscreen version (date of last modification). By default, 0 to force splashscreen to appear at first launch [gui.session.diplomacycolors] self = "21 55 149" ; Color of your units when diplomacy colors are enabled ally = "86 180 31" ; Color of allies when diplomacy colors are enabled neutral = "231 200 5" ; Color of neutral players when diplomacy colors are enabled enemy = "150 20 20" ; Color of enemies when diplomacy colors are enabled [joystick] ; EXPERIMENTAL: joystick/gamepad settings enable = false deadzone = 8192 [joystick.camera] pan.x = 0 pan.y = 1 rotate.x = 3 rotate.y = 2 zoom.in = 5 zoom.out = 4 [chat] timestamp = true ; Show at which time chat messages have been sent [chat.session] extended = true ; Whether to display the chat history [lobby] history = 0 ; Number of past messages to display on join room = "arena23" ; Default MUC room to join server = "lobby.wildfiregames.com" ; Address of lobby server require_tls = true ; Whether to reject connecting to the lobby if TLS encryption is unavailable. verify_certificate = false ; Whether to reject connecting to the lobby if the TLS certificate is invalid (TODO: wait for Gloox GnuTLS trust implementation to be fixed) terms_of_service = "0" ; Version (hash) of the Terms of Service that the user has accepted terms_of_use = "0" ; Version (hash) of the Terms of Use that the user has accepted +privacy_policy = "0" ; Version (hash) of the Privacy Policy that the user has accepted xpartamupp = "wfgbot23" ; Name of the server-side XMPP-account that manage games echelon = "echelon23" ; Name of the server-side XMPP-account that manages ratings buddies = "," ; Comma separated list of playernames that the current user has marked as buddies rememberpassword = true ; Whether to store the encrypted password in the user config [lobby.columns] gamerating = false ; Show the average rating of the participating players in a column of the gamelist [lobby.stun] enabled = true ; The STUN protocol allows hosting games without configuring the firewall and router. ; If STUN is disabled, the game relies on direct connection, UPnP and port forwarding. server = "lobby.wildfiregames.com" ; Address of the STUN server. port = 3478 ; Port of the STUN server. delay = 200 ; Duration in milliseconds that is waited between STUN messages. ; Smaller numbers speed up joins but also become less stable. [mod] enabledmods = "mod public" [modio] public_key = "RWQBhIRg+dOifTWlwgYHe8RfD8bqoDh1cCvygboAl3GOUKiCo0NlF4fw" ; Public key corresponding to the private key valid mods are signed with disclaimer = "0" ; Version (hash) of the Disclaimer that the user has accepted [modio.v1] baseurl = "https://api.mod.io/v1" api_key = "23df258a71711ea6e4b50893acc1ba55" name_id = "0ad" [network] duplicateplayernames = false ; Rename joining player to "User (2)" if "User" is already connected, otherwise prohibit join. lateobservers = everyone ; Allow observers to join the game after it started. Possible values: everyone, buddies, disabled. observerlimit = 8 ; Prevent further observer joins in running games if this limit is reached gamestarttimeout = 60000 ; Don't disconnect clients timing out in the loading screen and rejoin process before exceeding this timeout. [overlay] fps = "false" ; Show frames per second in top right corner realtime = "false" ; Show current system time in top right corner netwarnings = "true" ; Show warnings if the network connection is bad [profiler2] autoenable = false ; Enable HTTP server output at startup (default off for security/performance) gpu.arb.enable = true ; Allow GL_ARB_timer_query timing mode when available gpu.ext.enable = true ; Allow GL_EXT_timer_query timing mode when available gpu.intel.enable = true ; Allow GL_INTEL_performance_queries timing mode when available [sound] mastergain = 0.9 musicgain = 0.2 ambientgain = 0.6 actiongain = 0.7 uigain = 0.7 [sound.notify] nick = true ; Play a sound when someone mentions your name in the lobby or game [tinygettext] debug = false ; Print error messages each time a translation for an English string is not found. [userreport] ; Opt-in online user reporting system url_upload = "https://feedback.wildfiregames.com/report/upload/v1/" ; URL where UserReports are uploaded to url_publication = "http://feedback.wildfiregames.com/" ; URL where UserReports were analyzed and published terms = "0" ; Version (hash) of the UserReporter Terms that the user has accepted [view] ; Camera control settings scroll.speed = 120.0 scroll.speed.modifier = 1.05 ; Multiplier for changing scroll speed rotate.x.speed = 1.2 rotate.x.min = 28.0 rotate.x.max = 60.0 rotate.x.default = 35.0 rotate.y.speed = 2.0 rotate.y.speed.wheel = 0.45 rotate.y.default = 0.0 rotate.speed.modifier = 1.05 ; Multiplier for changing rotation speed drag.speed = 0.5 zoom.speed = 256.0 zoom.speed.wheel = 32.0 zoom.min = 50.0 zoom.max = 200.0 zoom.default = 120.0 zoom.speed.modifier = 1.05 ; Multiplier for changing zoom speed pos.smoothness = 0.1 zoom.smoothness = 0.4 rotate.x.smoothness = 0.5 rotate.y.smoothness = 0.3 near = 2.0 ; Near plane distance far = 4096.0 ; Far plane distance fov = 45.0 ; Field of view (degrees), lower is narrow, higher is wide height.smoothness = 0.5 height.min = 16 Index: ps/trunk/binaries/data/mods/public/gui/prelobby/common/feedback/feedback.xml =================================================================== --- ps/trunk/binaries/data/mods/public/gui/prelobby/common/feedback/feedback.xml (revision 21907) +++ ps/trunk/binaries/data/mods/public/gui/prelobby/common/feedback/feedback.xml (revision 21908) @@ -1,18 +1,18 @@ onTick(); - + - + Cancel cancelButton(); continueButton(); Index: ps/trunk/binaries/data/mods/public/gui/prelobby/common/terms/Privacy_Policy.txt =================================================================== --- ps/trunk/binaries/data/mods/public/gui/prelobby/common/terms/Privacy_Policy.txt (nonexistent) +++ ps/trunk/binaries/data/mods/public/gui/prelobby/common/terms/Privacy_Policy.txt (revision 21908) @@ -0,0 +1,79 @@ +[font="sans-bold-18"]0 A.D. Empires Ascendant Multiplayer Lobby Privacy Policy[/font] + +[font="sans-bold-14"]Document Date:[/font] 2018-10-16 + +[font="sans-bold-16"]Personal data processed by Wildfire Games and purposes of processing:[/font] +[font="sans-bold-14"]1. Playername[/font] +The player is identified by a name that the player chooses at the time of registration. +Having a unique playername is a requirement to gain a rating, to allow players, moderators and developers to identify players they met before, communicate about the game, coordinate matches and enables moderators to enforce the Terms of Use. +The playername serves as a pseudoynm. The identity (natural person) of players is not known to Wildfire Games, except where personally identifiable information (such as the realname) was disclosed on the Lobby Chat, other services of Wildfire Games or elsewhere in the public, or when the IP address is used to bring criminal proceedings. + +[font="sans-bold-14"]2. Password[/font] +A player is authenticated using a password that the player chooses at the time of registration. +Wildfire Games only receives an encrypted version of the password, so that the password chosen by the user is not revealed to Wildfire Games or others in case of a breach. + +[font="sans-bold-14"]3. IP address[/font] +When a player hosts a match in the Multiplayer Lobby, the IP address of that player is sent to every player who is online, so that other players can join that game. +Wildfire Games stores players IP addresses and may infer publicly available geolocation and internet service provider data (for example "geolite2") from the IP address in order to: + 1. Enforce the Terms of Use where persons create multiple accounts without Wildfire Games permission, in particular after having been banned from the service for violating the Terms of Use. + IP addresses will not be saved for longer than two years for this purpose. + 2. Make it possible to bring criminal proceedings in case of a cyberattack (EU Court of Justice Press Release No 112/16). +Wildfire Games will not use the IP address logs for any other purpose, in particular not for marketing, not otherwise disclose IP addresses to the public or third parties and erase IP addresses if they are not relevant for the stated purposes anymore. + +[font="sans-bold-14"]4. Online presence[/font] +Which players are currently connected to the Multiplayer Lobby and which match they joined is shown to all online players. + +[font="sans-bold-14"]5. Chat messages[/font] +The Multiplayer Lobby features a public chat room that enables players to discuss the game and organize multiplayer matches. +Wildfire Games stores a log of the public chat messages and online presence to meet the following purposes: + 1. Moderators may screen chat messages to enforce the Terms of Use. + 2. Wildfire Games may address or resolve bug reports, balancing issues or feature proposals indicated by players in the chat room. + 3. Wildfire Games may assess trends amongst discussed topics, the growth of the active community and use these indicators as feedback to assess, improve and direct development of the game and the service. + +[font="sans-bold-14"]6. Match statistics[/font] +Players can gain a rating on the Multiplayer Lobby that reflects their skill at the game. +The rating of all players is published by Wildfire Games and allows players to focus on competitive or balanced matchmaking if they wish to. +During a rated match, players send data relating to the game (such as the number of units trained, resources gathered and the winner of the match) to Wildfire Games, so that Wildfire Games can adapt the players ratings based on these statistics. +Wildfire Games stores match statistics to: + 1. Verify the accuracy of the rating score and identify and enforce Terms of Use violations relating to that. + 2. Compute and publish community statistics to improve the game and the service, for example to improve the balancing of the game or to make certain aspects of the game more appealing. + +[font="sans-bold-14"]Security of processing:[/font] +The transmission of personal data is secured using TLS encryption (GDPR 32). +Personal data is protected against unintentional loss in encrypted backups for additional time (GDPR 30.1.g, GDPR 32). + +Wildfire Games obtains all personal data from the user (GDPR 14). +Wildfire Games reserves the right to delete any service data (including personal data) at any time, except where a user has objected to the erasure of his or her personal data for performance of a legal claim. + +[font="sans-bold-16"]Legal basis for the processing:[/font] +1. The processing is necessary for the performance of the service defined in the terms (GDPR 6.1.b). +2. Wildfire Games has legitimate interests in providing the Multiplayer Lobby, in the development and improvement of 0 A.D. and the Multiplayer Lobby, in enforcing the Terms of Use and in the protection against cyberattacks (GDPR 6.1.f). +3. Wildfire Games does not process any further data for the Multiplayer Lobby and does not ask for consent to process data (GDPR 6.1.a, GDPR 7, GDPR 8, GDPR 13.2.c). + +[font="sans-bold-16"]User rights:[/font] +1. Contact Wildfire Games, by sending an email to webmaster at wildfiregames dot com (GDPR 13.1.a, GDPR 13.1.b). +2. Right of access to personal data concerning him or her (GDPR 15). +3. Right to obtain personal data in a machine-readable format (GDPR 20). +4. Right to rectification of inaccurate personal data (GDPR 16). +5. Right to erasure of personal data where it is not relevant to the stated purposes, if the data was processed unlawfully or if the user objects to the processing and has overriding legitimate grounds (GDPR 17). +6. Right to restriction of personal data processing where the accuracy of the data is contested by the user, if the data was processed unlawfully or if the user requires the data for a legal claim (GDPR 18). +7. Right to object to the processing of personal data concerning him or her on grounds relating to their particular situation (GDPR 21). +8. Right to lodge a complaint with a supervisory authority (GDPR 13.2.d, GDPR 77). +Requests that are manifestly unfounded or excessive are not responded to or may be charged (GDPR 12.4, GDPR 12.5). + +[font="sans-bold-16"]Wildfire Games obligations:[/font] + 1. Wildfire Games demonstrates compliance with GDPR (GDPR 5.2 'accountability'). + 2. Wildfire Games documents their processing activities appropriately, in particular the categories of processed personal data and security measures to protect it (GDPR 30). + 3. Wildfire Games processes personal data lawfully, fairly and transparently (GDPR 5.1.a, GDPR 12.1). + 4. Wildfire Games informs users of the purposes, legal grounds, legitimate interests and retention periods of personal data processing at the time it is processed, recipients of personal data and where applicable, transfer of personal data to third countries and automated decision-making (GDPR 13.1.c-f, GDPR 13.2.a, GDPR 13.2.e-f, GDPR 15.1, GDPR 15.4). + 5. Wildfire Games does not processes personal data for purposes other than the specified ones (GDPR 5.1.b, 'purpose limitation', GDPR 13.3). + 6. Wildfire Games does not process personal data that is not needed for the specified purposes (GDPR 5.1.c, 'data minimization'). + 7. Wildfire Games uses a storage form that does not allow identification of natural persons for longer than necessary (GDPR 5.1.e 'storage limitation'). + 8. Wildfire Games secures personal data processing to prevent unauthorised or unlawful processing and accidental loss (GDPR 5.1.f. 'integrity and confidentiality'). + 9. Wildfire Games informs users of their right to access, to rectify, to erase personal data and the right to restrict, to withdraw consent to, to object to personal data processing and to complain at a supervisory authority (GDPR 13.2.b, GDPR 13.2.c, GDPR 13.2.d). +10. Wildfire Games facilitates the exercise of user rights where possible (GDPR 12.2), without undue delay (GDPR 12.3). +12. Wildfire Games informs the users that to exercise their rights, users might need to provide additional information to identify the natural person or the data (GDPR 12.6, GDPR 13.2.e). +13. Wildfire Games will not knowingly collect personal data from children under the age of 13 (Children's Online Privacy Protection Act). If you believe Wildfire Games received any personal data from or about a child under 13, please contact Wildfire Games. +14. Where Wildfire Games processes sensitive personal data based on legitimate interests, Wildfire Games considers performing, recording and periodically reviewing Legitimate Interests Assessments and Data Protection Impact Assessments (GDPR 35) to become confident that the individual's interests do not override Wildfire Games legitimate interests, and that Wildfire Games is not using personal data in intrusive ways unless there is a very good reason to. + +For further information on Wildfire Games Privacy Policies, visit https://trac.wildfiregames.com/wiki/UserDataProtection Property changes on: ps/trunk/binaries/data/mods/public/gui/prelobby/common/terms/Privacy_Policy.txt ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Index: ps/trunk/binaries/data/mods/public/gui/prelobby/common/terms/Terms_of_Service.txt =================================================================== --- ps/trunk/binaries/data/mods/public/gui/prelobby/common/terms/Terms_of_Service.txt (revision 21907) +++ ps/trunk/binaries/data/mods/public/gui/prelobby/common/terms/Terms_of_Service.txt (revision 21908) @@ -1,21 +1,22 @@ [font="sans-bold-18"]0 A.D. Empires Ascendant Multiplayer Lobby Terms of Service[/font] -[font="sans-bold-14"]Document Date:[/font] 2018-10-13 +[font="sans-bold-14"]Document Date:[/font] 2018-10-16 The 0 A.D. Empires Ascendant Multiplayer Lobby is an online service provided by Wildfire Games that allows players to setup online multiplayer matches, discuss the game in a public chat room and gain a rating that reflects their skill. +Due to the subject matter of historic warfare, description and depcition of violence and the language on the Multiplayer Lobby, 0 A.D. and the Multiplayer Lobby are not directed to young children (COPPA §312.2). +The minimum age to use the Multiplayer Lobby is 13. + [font="sans-bold-14"]By using the 0 A.D. Multiplayer Lobby, you agree to:[/font] 1. Follow all usage policies. - 2. Allow user identifiable statistics to be gathered for the purposes of rating, user profiles, and community statistics. + 2. Not use the service with third-party software or mods that prevents the user from being informed of updated Terms and Conditions, unless authorized by a Wildfire Games team member. 3. Use the service at your own risk. Wildfire Games does not take responsibility for the content posted by users or damages resulting from this service. - 4. Not use the service with third-party software or mods that prevents the user from being informed of updated Terms and Conditions, unless authorized by a Wildfire Games team member. [font="sans-bold-14"]Wildfire Games reserves the right to:[/font] 1. Moderate the service, i.e. to enforce the Terms of Use by restricting, suspending or terminating user accounts. 2. Appoint others to moderate the service. 3. Discontinue or interrupt any part of the service at any time. - 4. Change the service or its terms. The document date of the terms indicate its version, and the user is informed of the new terms before being able to use the service again. - 5. Delete any and all service data at any time with or without announcement. - 6. Collect any or all user identifiable statistics at any time without consent for: - a. Private analysis by Wildfire Games (WFG) team members and their affiliates. - b. Anonymized public release by Wildfire Games (WFG) team members. + 4. Change the service or the terms. The document date of the terms indicate its version, and the user is informed of the new terms before being able to use the service again. + 5. Process personal data in accordance with the Lobby Privacy Policy, the General Data Protection Regulation (GDPR) and the Children's Online Privacy Protection Act (COPPA) where applicable. + +If parts of the terms are held to be illegal or otherwise unenforceable, the remainder of the terms shall still apply ('severability'). Index: ps/trunk/binaries/data/mods/public/gui/prelobby/common/terms/termslobby.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/prelobby/common/terms/termslobby.js (revision 21907) +++ ps/trunk/binaries/data/mods/public/gui/prelobby/common/terms/termslobby.js (revision 21908) @@ -1,44 +1,53 @@ var g_TermsButtonHeight = 40; function initLobbyTerms() { let terms = { "Service": { "title": translate("Terms of Service"), "instruction": translate("Please read and accept the Terms of Service."), "file": "gui/prelobby/common/terms/Terms_of_Service.txt", "config": "lobby.terms_of_service", "salt": () => Engine.GetGUIObjectByName("username").caption, "accepted": false, "callback": updateFeedback }, "Use": { "title": translate("Terms of Use"), "instruction": translate("Please read and accept the Terms of Use."), "file": "gui/prelobby/common/terms/Terms_of_Use.txt", "config": "lobby.terms_of_use", "salt": () => Engine.GetGUIObjectByName("username").caption, "accepted": false, "callback": updateFeedback + }, + "Privacy": { + "title": translate("Privacy Policy"), + "instruction": translate("Please read and accept the Privacy Policy."), + "file": "gui/prelobby/common/terms/Privacy_Policy.txt", + "config": "lobby.privacy_policy", + "salt": () => Engine.GetGUIObjectByName("username").caption, + "accepted": false, + "callback": updateFeedback } }; Object.keys(terms).forEach((page, i) => { let button = Engine.GetGUIObjectByName("termsButton[" + i + "]"); button.caption = terms[page].title; button.onPress = () => { openTerms(page); }; let size = button.size; size.top = i * g_TermsButtonHeight; size.bottom = i * g_TermsButtonHeight + 28; button.size = size; }); initTerms(terms); loadTermsAcceptance(); } Index: ps/trunk/binaries/data/mods/public/gui/prelobby/common/terms/termslobby.xml =================================================================== --- ps/trunk/binaries/data/mods/public/gui/prelobby/common/terms/termslobby.xml (revision 21907) +++ ps/trunk/binaries/data/mods/public/gui/prelobby/common/terms/termslobby.xml (revision 21908) @@ -1,8 +1,8 @@ - + Index: ps/trunk/binaries/data/mods/public/gui/prelobby/login/login.xml =================================================================== --- ps/trunk/binaries/data/mods/public/gui/prelobby/login/login.xml (revision 21907) +++ ps/trunk/binaries/data/mods/public/gui/prelobby/login/login.xml (revision 21908) @@ -1,34 +1,34 @@