<br />
<b>Warning</b>:  Parameter 1 to ConfirmEditHooks::APIGetAllowedParams() expected to be a reference, value given in <b>/var/www/html/bluelinegamestudios.com/wiki/includes/Hooks.php</b> on line <b>201</b><br />
<br />
<b>Warning</b>:  Parameter 1 to ConfirmEditHooks::APIGetAllowedParams() expected to be a reference, value given in <b>/var/www/html/bluelinegamestudios.com/wiki/includes/Hooks.php</b> on line <b>201</b><br />
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://bluelinegamestudios.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sean+Colombo</id>
		<title>BlueLine Games Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://bluelinegamestudios.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sean+Colombo"/>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php/Special:Contributions/Sean_Colombo"/>
		<updated>2026-04-04T06:42:17Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=Main_Page&amp;diff=32</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=Main_Page&amp;diff=32"/>
				<updated>2016-05-26T14:10:04Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: /* Games */ we don't have many docs, so at least linked out to Steam pages for now.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to the BlueLine Games Wiki!'''&lt;br /&gt;
&lt;br /&gt;
This wiki is all about BlueLine Games, the games it makes, and the community that loves to play them!&lt;br /&gt;
&lt;br /&gt;
You can find out more about our titles, get in-depth help and strategy tips, and &lt;br /&gt;
interact with other members to find someone to play with online.&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
* [[Heximilate]] - HTML5, Pokki, Chrome App, Online&lt;br /&gt;
* [[Hive]] - Xbox 360, [http://store.steampowered.com/app/251210/ Steam] (PC: Windows/Mac/Linux)&lt;br /&gt;
* [[Khet]] - [http://store.steampowered.com/app/312720/ Steam] (PC: Windows/Mac/Linux)&lt;br /&gt;
* [[Reversi]] - [http://store.steampowered.com/app/307430 Steam] (PC: Windows/Mac/Linux)&lt;br /&gt;
* [[Chess|Simply Chess]] - [http://store.steampowered.com/app/312280/ Steam] (PC: Windows/Mac/Linux)&lt;br /&gt;
* [[Tatsu]] - [http://store.steampowered.com/app/445070/ Steam] (PC: Windows/Mac/Linux)&lt;br /&gt;
&lt;br /&gt;
=== In progress: Not released yet ===&lt;br /&gt;
* ''[[Elsewhere]] - Omniplatform, Not Announced ;)''&lt;br /&gt;
* '''TBA: Next board game titles!'''&lt;br /&gt;
&lt;br /&gt;
== Open Source ==&lt;br /&gt;
* [[Node Chat]]&lt;br /&gt;
* [http://bluelinegamestudios.com/posts/introducing-bluezebra-a-gpl-command-line-reversi-ai/ BlueZebra] - command-line Reversi AI.&lt;br /&gt;
&lt;br /&gt;
== Other Software ==&lt;br /&gt;
BlueLine Game Studios has made software other than games (in order to help us make games) and that has been released as well.&lt;br /&gt;
* [https://burndownfortrello.com Burndown for Trello] - Burndown Charts (and many other Scrum/Agile charts) that have become the most popular 3rd-party Trello app in the world!  We created this while making our first Xbox game, [[Hive]] and have been improving it for many years.  Free and Premium plans are available.&lt;br /&gt;
* [https://roksten.com Röksten] - Translation management system.  We created this system to help us translate our games (and keep those translations updated).&lt;br /&gt;
&lt;br /&gt;
== Game-Jam Games ==&lt;br /&gt;
* [[10sTD]] - HTML5&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=Main_Page&amp;diff=31</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=Main_Page&amp;diff=31"/>
				<updated>2016-05-26T14:05:06Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: +Tatsu, B4T, Röksten&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to the BlueLine Games Wiki!'''&lt;br /&gt;
&lt;br /&gt;
This wiki is all about BlueLine Games, the games it makes, and the community that loves to play them!&lt;br /&gt;
&lt;br /&gt;
You can find out more about our titles, get in-depth help and strategy tips, and &lt;br /&gt;
interact with other members to find someone to play with online.&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
* [[Heximilate]] - HTML5, Pokki, Chrome App, Online&lt;br /&gt;
* [[Hive]] - Xbox 360, Steam (PC: Windows/Mac/Linux)&lt;br /&gt;
* [[Khet]] - Steam (PC: Windows/Mac/Linux)&lt;br /&gt;
* [[Reversi]] - Steam (PC: Windows/Mac/Linux)&lt;br /&gt;
* [[Chess|Simply Chess]] - Steam (PC: Windows/Mac/Linux)&lt;br /&gt;
* [[Tatsu]] - Steam (PC: Windows/Mac/Linux)&lt;br /&gt;
&lt;br /&gt;
=== In progress: Not released yet ===&lt;br /&gt;
* ''[[Elsewhere]] - Omniplatform, Not Announced ;)''&lt;br /&gt;
* '''TBA: Next board game titles!'''&lt;br /&gt;
&lt;br /&gt;
== Open Source ==&lt;br /&gt;
* [[Node Chat]]&lt;br /&gt;
* [http://bluelinegamestudios.com/posts/introducing-bluezebra-a-gpl-command-line-reversi-ai/ BlueZebra] - command-line Reversi AI.&lt;br /&gt;
&lt;br /&gt;
== Other Software ==&lt;br /&gt;
BlueLine Game Studios has made software other than games (in order to help us make games) and that has been released as well.&lt;br /&gt;
* [https://burndownfortrello.com Burndown for Trello] - Burndown Charts (and many other Scrum/Agile charts) that have become the most popular 3rd-party Trello app in the world!  We created this while making our first Xbox game, [[Hive]] and have been improving it for many years.  Free and Premium plans are available.&lt;br /&gt;
* [https://roksten.com Röksten] - Translation management system.  We created this system to help us translate our games (and keep those translations updated).&lt;br /&gt;
&lt;br /&gt;
== Game-Jam Games ==&lt;br /&gt;
* [[10sTD]] - HTML5&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=Main_Page&amp;diff=30</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=Main_Page&amp;diff=30"/>
				<updated>2016-01-16T21:48:37Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to the BlueLine Games Wiki!'''&lt;br /&gt;
&lt;br /&gt;
This wiki is all about BlueLine Games, the games it makes, and the community that loves to play them!&lt;br /&gt;
&lt;br /&gt;
You can find out more about our titles, get in-depth help and strategy tips, and &lt;br /&gt;
interact with other members to find someone to play with online.&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
* [[Heximilate]] - HTML5, Pokki, Chrome App, Online&lt;br /&gt;
* [[Hive]] - Xbox 360, Steam (PC/Mac/Linux)&lt;br /&gt;
* [[Khet]] - Steam (PC/Mac/Linux)&lt;br /&gt;
* [[Reversi]] - Steam (PC/Mac/Linux)&lt;br /&gt;
* [[Chess|Simply Chess]] - Steam (PC/Mac/Linux)&lt;br /&gt;
&lt;br /&gt;
=== In progress: Not released yet ===&lt;br /&gt;
* ''[[Elsewhere]] - Omniplatform, Not Announced ;)''&lt;br /&gt;
* '''TBA: Announcing another board game in Feb 2016 probably... to launch ~Sep 2016'''&lt;br /&gt;
&lt;br /&gt;
== Open Source ==&lt;br /&gt;
* [[Node Chat]]&lt;br /&gt;
* [http://bluelinegamestudios.com/posts/introducing-bluezebra-a-gpl-command-line-reversi-ai/ BlueZebra] - command-line Reversi AI.&lt;br /&gt;
&lt;br /&gt;
== Game-Jam Games ==&lt;br /&gt;
* [[10sTD]] - HTML5&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=Main_Page&amp;diff=29</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=Main_Page&amp;diff=29"/>
				<updated>2016-01-16T21:48:27Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: Testing ConfirmEdit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to the BlueLine Games Wiki!'''&lt;br /&gt;
&lt;br /&gt;
This wiki is all about BlueLine Games, the games it makes, and the community that loves to play them!&lt;br /&gt;
&lt;br /&gt;
You can find out more about our titles, get in-depth help and strategy tips, and &lt;br /&gt;
interact with other members to find someone to play with online.&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
* [[Heximilate]] - HTML5, Pokki, Chrome App, Online&lt;br /&gt;
* [[Hive]] - Xbox 360, Steam (PC/Mac/Linux)&lt;br /&gt;
* [[Khet]] - Steam (PC/Mac/Linux)&lt;br /&gt;
* [[Reversi]] - Steam (PC/Mac/Linux)&lt;br /&gt;
* [[Chess|Simply Chess]] - Steam (PC/Mac/Linux)&lt;br /&gt;
&lt;br /&gt;
=== In progress: Not released yet ===&lt;br /&gt;
* ''[[Elsewhere]] - Omniplatform, Not Announced ;)''&lt;br /&gt;
* '''TBA: Announcing another board game in Feb 2016 probably... to launch ~Sep 2016'''&lt;br /&gt;
http://google.com&lt;br /&gt;
== Open Source ==&lt;br /&gt;
* [[Node Chat]]&lt;br /&gt;
* [http://bluelinegamestudios.com/posts/introducing-bluezebra-a-gpl-command-line-reversi-ai/ BlueZebra] - command-line Reversi AI.&lt;br /&gt;
&lt;br /&gt;
== Game-Jam Games ==&lt;br /&gt;
* [[10sTD]] - HTML5&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=Main_Page&amp;diff=28</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=Main_Page&amp;diff=28"/>
				<updated>2016-01-16T21:47:46Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to the BlueLine Games Wiki!'''&lt;br /&gt;
&lt;br /&gt;
This wiki is all about BlueLine Games, the games it makes, and the community that loves to play them!&lt;br /&gt;
&lt;br /&gt;
You can find out more about our titles, get in-depth help and strategy tips, and &lt;br /&gt;
interact with other members to find someone to play with online.&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
* [[Heximilate]] - HTML5, Pokki, Chrome App, Online&lt;br /&gt;
* [[Hive]] - Xbox 360, Steam (PC/Mac/Linux)&lt;br /&gt;
* [[Khet]] - Steam (PC/Mac/Linux)&lt;br /&gt;
* [[Reversi]] - Steam (PC/Mac/Linux)&lt;br /&gt;
* [[Chess|Simply Chess]] - Steam (PC/Mac/Linux)&lt;br /&gt;
&lt;br /&gt;
=== In progress: Not released yet ===&lt;br /&gt;
* ''[[Elsewhere]] - Omniplatform, Not Announced ;)''&lt;br /&gt;
* '''TBA: Announcing another board game in Feb 2016 probably... to launch ~Sep 2016'''&lt;br /&gt;
&lt;br /&gt;
== Open Source ==&lt;br /&gt;
* [[Node Chat]]&lt;br /&gt;
* [http://bluelinegamestudios.com/posts/introducing-bluezebra-a-gpl-command-line-reversi-ai/ BlueZebra] - command-line Reversi AI.&lt;br /&gt;
&lt;br /&gt;
== Game-Jam Games ==&lt;br /&gt;
* [[10sTD]] - HTML5&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=Node_Chat/Docs&amp;diff=27</id>
		<title>Node Chat/Docs</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=Node_Chat/Docs&amp;diff=27"/>
				<updated>2015-10-10T00:09:22Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''TODO: CONVERT THIS!!! This is copy/pasted from the Wikia docs &amp;amp; I just removed any private info... still need to update all of the paths, etc. to be for the new project.''&lt;br /&gt;
&lt;br /&gt;
== Where is the code ==&lt;br /&gt;
* Front-end: https://github.com/Wikia/app/tree/dev/extensions/wikia/Chat2&lt;br /&gt;
* Back-end: https://github.com/SeanColombo/chat&lt;br /&gt;
&lt;br /&gt;
== What is the chat's datastore? ==&lt;br /&gt;
The chat uses redis for a datastore. Currently, none of the data stored in redis DB is critical. Therefore it is not needed to provide replication or backup.&lt;br /&gt;
&lt;br /&gt;
==How I can change debugging level?==&lt;br /&gt;
You can you add commend line option loglevel=INFO and just start server with it. Or edit this file (/chat/server_config.js line 57), Possible levels of debugging: CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG. After you changed file you need to restart server. IDEA: it would be nice to keep debugging level in txt file. The file would be read every 1min by nodejs. So we wouldn't need to restart server when we want to change debugging level.&lt;br /&gt;
&lt;br /&gt;
==How to restart server==&lt;br /&gt;
&amp;quot;sudo killall node&amp;quot; Server will be started automatically by runit process or supervisor if it was started using either of those.&lt;br /&gt;
&lt;br /&gt;
==I don't see any problem in log but chat is broken where else to look==&lt;br /&gt;
You can try to use [http://en.wikipedia.org/wiki/Ngrep ngrep ]. Example of ngrep usage:&lt;br /&gt;
  sudo ngrep -d any port 80&lt;br /&gt;
&lt;br /&gt;
==What are the responsibilities of the Web-site stack==&lt;br /&gt;
PHP stack's responsibilities: rendering of the chat.php page, server and instance selection and authorization. All messages and status exchange is handled by node.js server.&lt;br /&gt;
&lt;br /&gt;
==Where are the chat configurations==&lt;br /&gt;
Chat is special case where configuration need to be shared between the web-app stack and the Chat server. In order to solve this problem we store configuration in a JSON file. JSON format is easy to ready by PHP and JaveScript. Github location of an example config file: https://github.com/SeanColombo/chat/ChatConfig_EXAMPLE.json&lt;br /&gt;
&lt;br /&gt;
==How do Chat and the main website exchange information and is it safe==&lt;br /&gt;
The site and Chat provides to each other API methods. In order to prevent users from injecting unwanted data to Chat or MediaWiki We use ChatCommunicationToken for signing requests. Each installation of the chat server needs to have its own ChatCommunicationToken.&lt;br /&gt;
https://github.com/SeanColombo/chat/ChatConfig_EXAMPLE.json#L2&lt;br /&gt;
&lt;br /&gt;
==How does authorization work==&lt;br /&gt;
[[file:Chat_author.png| thumb| 250px]]&lt;br /&gt;
* User accesses chat.php&lt;br /&gt;
* The site gets all needed user information and store them in object(user info object)&lt;br /&gt;
* The site generates KEY and stores &amp;quot;user info object&amp;quot; in memcached under the KEY&lt;br /&gt;
* The page is rendered with KEY(wgChatKey) as one of the JS vars.&lt;br /&gt;
* Client Java Script accesses node.js server with KEY.&lt;br /&gt;
* Node.js sends the query to the site with KEY through API protected with ChatCommunicationToken.&lt;br /&gt;
* If the KEY is correct media wiki answers with JSON containing &amp;quot;user object&amp;quot;.&lt;br /&gt;
* Now node.js server knows if user is authorized to connect and what his privileges are.&lt;br /&gt;
==What is the network protocol between node.js and browser==&lt;br /&gt;
For message transportation we use popular lib [http://socket.io/ socket.io] The     &lt;br /&gt;
library implements wrappers for 5 different underline technology: websocket, flashsocket, htmlfile, xhr-polling, jsonp-pollin. However for compatibility and simplification reasons we pick only one format: xhr-polling. You can find more information about this transportation technique http://en.wikipedia.org/wiki/Comet_(programming) search for: XMLHttpRequest long polling.&lt;br /&gt;
&lt;br /&gt;
== Can I test chat in my local development environment ==&lt;br /&gt;
Yes, simply follow the [[Node Chat/Docs/Dev Setup|Dev Setup Instructions]].&lt;br /&gt;
&lt;br /&gt;
== Chat-Bot ==&lt;br /&gt;
If you need a chat-bot to help you test some things, Wikia user Sactage made a ruby chat and put it on github: https://github.com/sactage/chatbot-rb&lt;br /&gt;
&lt;br /&gt;
==How do emoticons work==&lt;br /&gt;
Emoticons are added during message rendering. Any wiki can define there own emoticons by editing mediawiki:emoticons article. Default icons are defined in: https://github.com/Wikia/app/blob/dev/extensions/wikia/Chat2/ChatDefaultEmoticons.i18n.php&lt;br /&gt;
'''TODO: This needs to be ported to perhaps be not-mediawiki-specific anymore, but in a way that allows the Wikia instance to continue to work as-is.'''&lt;br /&gt;
&lt;br /&gt;
= Scaling =&lt;br /&gt;
== Failover ==&lt;br /&gt;
One way to allow for high-availability is to have a second stack (on a second machine) and failover to that second computer automatically.&lt;br /&gt;
&lt;br /&gt;
[[File:Chat_infrastructure_simple_view.png|thumb|150px]] In case of failure of active stack, traffic can be switched to other stack.&lt;br /&gt;
&lt;br /&gt;
==Why there are many instances of node.js on chat machines==&lt;br /&gt;
[[File:Chat_top_processes.png|thumb|150px]] One of the limitation of [http://nodejs.org/ node.js] is that its single threaded which means that we can't use the full power of modern multi core servers. In order to use the full advantage of multi-core CPUs we run more than one instance on each machine.&lt;br /&gt;
&lt;br /&gt;
==How the load is split between instances of node.js==&lt;br /&gt;
We use a simple modulo operation, &amp;lt;code&amp;gt;instance_id = chat_room_id % number_of_instances&amp;lt;/code&amp;gt;.  The chat_room_id could be based on some listing you have, or it could be the id for a subdomain of your site, depending on how you use the system.&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=File:Chat_top_processes.png&amp;diff=26</id>
		<title>File:Chat top processes.png</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=File:Chat_top_processes.png&amp;diff=26"/>
				<updated>2015-10-10T00:08:58Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=File:Chat_infrastructure_simple_view.png&amp;diff=25</id>
		<title>File:Chat infrastructure simple view.png</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=File:Chat_infrastructure_simple_view.png&amp;diff=25"/>
				<updated>2015-10-10T00:08:54Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=File:Chat_author.png&amp;diff=24</id>
		<title>File:Chat author.png</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=File:Chat_author.png&amp;diff=24"/>
				<updated>2015-10-10T00:08:50Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=Hive/Help/Steam&amp;diff=23</id>
		<title>Hive/Help/Steam</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=Hive/Help/Steam&amp;diff=23"/>
				<updated>2015-10-10T00:06:41Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: The referenced release has happened a LONG time ago (probably over a year ago at this point).&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant to provide additional help for the things that aren't covered in the Rules popup in-game.&lt;br /&gt;
&lt;br /&gt;
== Advanced Controls / Keyboard Shortcuts ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Keys &lt;br /&gt;
! Effect&lt;br /&gt;
|-&lt;br /&gt;
| '''Arrow keys''' or &amp;lt;br/&amp;gt;'''Middle click &amp;amp; drag'''&lt;br /&gt;
| Change camera angle. This angle will &amp;quot;stick&amp;quot; between games. If you prefer a 2D perspective, just shift the camera to be looking straight down and you shouldn't have to adjust it again.&lt;br /&gt;
|-&lt;br /&gt;
| '''Home'''&lt;br /&gt;
| Return the camera to its default position.&lt;br /&gt;
|-&lt;br /&gt;
| '''F1'''&lt;br /&gt;
| Open up Rules dialog during the game.&lt;br /&gt;
|-&lt;br /&gt;
| '''F2'''&lt;br /&gt;
| Cycles to the next tile-set. Tiles can either be 3D insects, Classic tiles, or Carbon tiles.&lt;br /&gt;
|-&lt;br /&gt;
| '''F11'''&lt;br /&gt;
| Toggle Full-screen mode.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Elo Ratings ==&lt;br /&gt;
&amp;quot;[http://en.wikipedia.org/wiki/Elo_rating_system Elo Ratings]&amp;quot; - the same rating system used to rate professional chess players - are now provided for players who play Hive online.  Everyone starts out with an initial rating of 1200.  As you beat players your rating goes up, if you lose it goes down. In the case of a draw, the higher-rated player will have their rating decrease and the lower rated player will increase their rating.&lt;br /&gt;
&lt;br /&gt;
Players with a &amp;quot;P&amp;quot; suffix are still starting out, so they are &amp;quot;Provisionally&amp;quot; rated. Once a player has played '''15 games'''*or more, they are no-longer provisionally rated, and their scores are submitted to the [http://steamcommunity.com/stats/251210/leaderboards/323561 Steam Leaderboard].&lt;br /&gt;
&lt;br /&gt;
Normally, some highly-rated players might be weary of playing against new players since a new player could show up with the default rating of 1200, but actually be a Hive Master.  This is the whole point of having Provisional Ratings.  All new players start out provisionally rated and these provisionally rated players will NOT affect your rating if you are done being provisionally rated.  This should help make it easier for new players to get into the system because nobody has any risk from playing them.&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=Hive/Help/Steam&amp;diff=22</id>
		<title>Hive/Help/Steam</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=Hive/Help/Steam&amp;diff=22"/>
				<updated>2015-10-10T00:06:03Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: Created page with &amp;quot;This page is meant to provide additional help for the things that aren't covered in the Rules popup in-game.  == Advanced Controls / Keyboard Shortcuts == {| class=&amp;quot;wikitable&amp;quot;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant to provide additional help for the things that aren't covered in the Rules popup in-game.&lt;br /&gt;
&lt;br /&gt;
== Advanced Controls / Keyboard Shortcuts ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Keys &lt;br /&gt;
! Effect&lt;br /&gt;
|-&lt;br /&gt;
| '''Arrow keys''' or &amp;lt;br/&amp;gt;'''Middle click &amp;amp; drag'''&lt;br /&gt;
| Change camera angle. This angle will &amp;quot;stick&amp;quot; between games. If you prefer a 2D perspective, just shift the camera to be looking straight down and you shouldn't have to adjust it again.&lt;br /&gt;
|-&lt;br /&gt;
| '''Home'''&lt;br /&gt;
| Return the camera to its default position.&lt;br /&gt;
|-&lt;br /&gt;
| '''F1'''&lt;br /&gt;
| Open up Rules dialog during the game.&lt;br /&gt;
|-&lt;br /&gt;
| '''F2'''&lt;br /&gt;
| Cycles to the next tile-set. Tiles can either be 3D insects, Classic tiles, or Carbon tiles.&lt;br /&gt;
|-&lt;br /&gt;
| '''F11'''&lt;br /&gt;
| Toggle Full-screen mode.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Elo Ratings ==&lt;br /&gt;
&amp;quot;[http://en.wikipedia.org/wiki/Elo_rating_system Elo Ratings]&amp;quot; - the same rating system used to rate professional chess players - are now provided for players who play Hive online.  Everyone starts out with an initial rating of 1200.  As you beat players your rating goes up, if you lose it goes down. In the case of a draw, the higher-rated player will have their rating decrease and the lower rated player will increase their rating.&lt;br /&gt;
&lt;br /&gt;
Players with a &amp;quot;P&amp;quot; suffix are still starting out, so they are &amp;quot;Provisionally&amp;quot; rated. Once a player has played '''30 games'''*or more, they are no-longer provisionally rated, and their scores are submitted to the [http://steamcommunity.com/stats/251210/leaderboards/323561 Steam Leaderboard].&lt;br /&gt;
&lt;br /&gt;
Normally, some highly-rated players might be weary of playing against new players since a new player could show up with the default rating of 1200, but actually be a Hive Master.  This is the whole point of having Provisional Ratings.  All new players start out provisionally rated and these provisionally rated players will NOT affect your rating if you are done being provisionally rated.  This should help make it easier for new players to get into the system because nobody has any risk from playing them.&lt;br /&gt;
&lt;br /&gt;
*''Note: as of 6/14/2014, our next release will include a change to revise this to 15 games.''&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=Hive&amp;diff=21</id>
		<title>Hive</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=Hive&amp;diff=21"/>
				<updated>2015-10-10T00:05:44Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: Created page with &amp;quot;'''TODO: This page needs work... lots and lots of work!'''  == Further Reading == * 'Help' for Steam version&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''TODO: This page needs work... lots and lots of work!'''&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* [[Hive/Help/Steam|'Help' for Steam version]]&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=File:KingMovement.png&amp;diff=20</id>
		<title>File:KingMovement.png</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=File:KingMovement.png&amp;diff=20"/>
				<updated>2015-10-10T00:05:08Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=File:Castling.png&amp;diff=19</id>
		<title>File:Castling.png</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=File:Castling.png&amp;diff=19"/>
				<updated>2015-10-10T00:04:59Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=File:QueenMovement.png&amp;diff=18</id>
		<title>File:QueenMovement.png</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=File:QueenMovement.png&amp;diff=18"/>
				<updated>2015-10-10T00:04:51Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=File:RookMovement.png&amp;diff=17</id>
		<title>File:RookMovement.png</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=File:RookMovement.png&amp;diff=17"/>
				<updated>2015-10-10T00:04:47Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=File:BishopMovement.png&amp;diff=16</id>
		<title>File:BishopMovement.png</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=File:BishopMovement.png&amp;diff=16"/>
				<updated>2015-10-10T00:04:42Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=File:KnightMovement.png&amp;diff=15</id>
		<title>File:KnightMovement.png</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=File:KnightMovement.png&amp;diff=15"/>
				<updated>2015-10-10T00:04:36Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=File:EnPassant.png&amp;diff=14</id>
		<title>File:EnPassant.png</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=File:EnPassant.png&amp;diff=14"/>
				<updated>2015-10-10T00:04:20Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=File:PawnMovementAndCapturing.png&amp;diff=13</id>
		<title>File:PawnMovementAndCapturing.png</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=File:PawnMovementAndCapturing.png&amp;diff=13"/>
				<updated>2015-10-10T00:04:16Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=File:PawnMovement_Opening.png&amp;diff=12</id>
		<title>File:PawnMovement Opening.png</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=File:PawnMovement_Opening.png&amp;diff=12"/>
				<updated>2015-10-10T00:04:04Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=File:InitialSetup.png&amp;diff=11</id>
		<title>File:InitialSetup.png</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=File:InitialSetup.png&amp;diff=11"/>
				<updated>2015-10-10T00:03:54Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=Chess/Rules&amp;diff=10</id>
		<title>Chess/Rules</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=Chess/Rules&amp;diff=10"/>
				<updated>2015-10-10T00:01:18Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: /* Translations */ reparse&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Preamble ==&lt;br /&gt;
These rules are meant to be short and simple. Long-form rules can be found other places such as [https://en.wikipedia.org/wiki/Rules_of_chess Wikipedia] or [https://www.fide.com/component/handbook/?id=171&amp;amp;view=article FIDE]. These rules are also meant to be short enough to easily embed in our version of [http://store.steampowered.com/app/312280/ Chess on Steam].&lt;br /&gt;
=== License: Public Domain ===&lt;br /&gt;
'''NOTE: BlueLine Games is releasing these rules (including accompanying images) to the Public Domain so you can use them however you see fit! Print them out for a Chess club, include them in an insert with a Chess set you're selling on Etsy, put them in a computer game, whatever!'''&lt;br /&gt;
&lt;br /&gt;
=== Translations ===&lt;br /&gt;
We appreciate any help we can get translating these into other languages, but please note that all translations here must be released to the Public Domain also, for consistency.&lt;br /&gt;
 &lt;br /&gt;
{{:Chess/Rules/Translations}}&lt;br /&gt;
&lt;br /&gt;
= Rules =&lt;br /&gt;
&lt;br /&gt;
== Object of Chess ==&lt;br /&gt;
The object of Chess is to put the opponent's King in &amp;quot;[[#Checkmate|checkmate]]&amp;quot;. This means that you have a piece that can move to capture the King, and the opponent has no single move that can stop that threat.&lt;br /&gt;
&lt;br /&gt;
== Basics ==&lt;br /&gt;
[[Image:InitialSetup.png|right]]&lt;br /&gt;
The game starts off with the pieces set up as in the picture. White moves first and may make any legal move (see [[#Movement|movement]] section below). Then Black moves, and the players alternate back and forth until the game is ended.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style='clear:both'&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Capturing ==&lt;br /&gt;
If a piece is able to move in such a way that it can end up on an opponent's space, the player may make this move and the opponent's piece is &amp;quot;captured&amp;quot; (removed from the game). While it is often helpful to capture the opponent's pieces to make it easier to win, there are no specific points for capturing pieces and the ultimate goal is still to put the opponent's King in [[#checkmate|checkmate]].&lt;br /&gt;
&lt;br /&gt;
== Movement ==&lt;br /&gt;
Each piece type has different movement abilities. In most cases, a piece can only move in a direct path and is blocked by other pieces in its way. The exception to this is the Knight which hops to its final position regardless of the pieces in the middle.  No piece is allowed to move in such a way that it puts its own King into &amp;quot;Check&amp;quot;, and if a player is in Check, they must make a move which gets them out of Check if that is possible (if it's not possible then the Check was actually [[#Checkmate|Checkmate]]).&lt;br /&gt;
&lt;br /&gt;
You may not move through your own pieces.&lt;br /&gt;
&lt;br /&gt;
=== Pawn ===&lt;br /&gt;
[[Image:PawnMovement_Opening.png|right]]&lt;br /&gt;
[[Image:PawnMovementAndCapturing.png|right]]&lt;br /&gt;
The pawn is the only piece whose Movement and Capturing are different from each other.&lt;br /&gt;
&lt;br /&gt;
==== Pawn Movement ====&lt;br /&gt;
On each pawn's first move, it has the choice to move either 1 space forward or 2 spaces forward (but cannot jump over or attack other pieces if there is something in the way).  After its first move, each pawn may only advance one square forward at a time. The pawn is NOT allowed to capture pieces that are directly in front of it.&lt;br /&gt;
==== Pawn Capturing ====&lt;br /&gt;
A pawn can capture only by moving one space forward and to the left, or one space forward and to the right.&lt;br /&gt;
&amp;lt;div style='clear:both'&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Pawn: En Passant ====&lt;br /&gt;
[[Image:EnPassant.png|right]]&lt;br /&gt;
There is a special case where pawns may capture even if there is no piece on the space they're attacking. This is to simulate a pawn attacking the opponent while it was &amp;quot;in passing&amp;quot; going by. This case only applies when all of these conditions are met:&lt;br /&gt;
# On the move right before this, the other player moved their pawn forward two spaces.&lt;br /&gt;
# The pawn that just moved and the pawn that are about to attack must now be in the same row, and must be next to each other.&lt;br /&gt;
If these conditions are met, the attacking pawn can now move diagonally forward and towards the side of the victim (leaving it on the spot behind the victim, which it just passed) and then the victim piece is captured.&lt;br /&gt;
==== Pawn Promotion ====&lt;br /&gt;
If a pawn advances all the way to the other side of the board, as soon as it reaches the last row its player upgrades it to any of the four following pieces: Queen, Knight, Rook, Bishop. It is entirely up to the player that will get the new piece, so people usually choose a Queen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style='clear:both'&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Knight ===&lt;br /&gt;
[[Image:KnightMovement.png|right]]&lt;br /&gt;
Knights move and capture by going exactly two spaces in any direction, then one space at a right angle from that (making an &amp;quot;L&amp;quot; shape). This can be done regardless of whether there are pieces in between its original location and its destination. This gives the Knight the privilege of being the only piece that can &amp;quot;jump over&amp;quot; other pieces.  If there is an enemy piece at its destination, the Knight captures that piece.&lt;br /&gt;
&amp;lt;div style='clear:both'&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bishop ===&lt;br /&gt;
[[Image:BishopMovement.png|right]]&lt;br /&gt;
The Bishop can move diagonally as many spaces as desired until it runs into another piece or the edge of the board. If it can move to a space occupied by an enemy piece, it can capture that piece.&lt;br /&gt;
&amp;lt;div style='clear:both'&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rook ===&lt;br /&gt;
[[Image:RookMovement.png|right]]&lt;br /&gt;
The Rook can move in a straight line (not diagonally) as many spaces as desired until it runs into another piece or the edge of the board. If it can move to a space occupied by an enemy piece, it can capture that piece.&lt;br /&gt;
&amp;lt;div style='clear:both'&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Queen ===&lt;br /&gt;
[[Image:QueenMovement.png|right]]&lt;br /&gt;
The Queen can move diagonally or in a straight line as many spaces as desired until it runs into another piece or the edge of the board. If it can move to a space occupied by an enemy piece, it can capture that piece.&lt;br /&gt;
&amp;lt;div style='clear:both'&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== King ===&lt;br /&gt;
[[Image:KingMovement.png|right]]&lt;br /&gt;
The King can move exactly one space in any direction and similarly, captures an enemy piece if there is one at its destination. The only exception to the King moving one space is when it &amp;quot;[[#Castling|Castles]]&amp;quot;.&lt;br /&gt;
&amp;lt;div style='clear:both'&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Castling ===&lt;br /&gt;
[[Image:Castling.png|right]]&lt;br /&gt;
There is a special move called Castling which allows the King to move two spaces towards a Rook and for the Rook to swap to the other side of the King, all in the same move. This is only allowed if all of the following conditions are met:&lt;br /&gt;
* Neither the King nor this Rook have moved during this game.&lt;br /&gt;
* There are no pieces between the King and the Rook&lt;br /&gt;
* The King may not Castle out of check, it may not move past a space that would put it in Check, and it cannot move to a destination that would put it in Check (the Rook is allowed to be in danger at any point).&lt;br /&gt;
&amp;lt;div style='clear:both'&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== End Game ==&lt;br /&gt;
There are several ways to end a game. By far the most common are Checkmate and Stalemate. Some of these definitions rely on the term &amp;quot;Check&amp;quot;: A King is said to be in Check when there is an opposing piece which would be able to capture the King on its next move if nothing was done to prevent that.&lt;br /&gt;
=== Checkmate ===&lt;br /&gt;
If a King is in Check and there are no moves for that King or any of his army to get him out of Check (even by capturing the threatening piece or putting themselves in danger) then this is a Checkmate and the player whose turn it is (who is unable to protect their King) loses.&lt;br /&gt;
&lt;br /&gt;
=== Stalemate ===&lt;br /&gt;
If a King is NOT in Check and there are no moves for the King or any of his army that do not put him INTO Check, then this is a Stalemate (which is a type of Draw).&lt;br /&gt;
&lt;br /&gt;
=== Threefold Repetition ===&lt;br /&gt;
If the same board position is repeated three times, then either player may declare the game a Draw before the next turn happens. If another move is made without either player declaring a Draw, and the game is no longer in a position that has been repeated three or more times, then the opportunity has passed. The opportunity can come up again if the game yet-again goes into a position that has occurred three or more times (even if it's the same position where nobody declared a Draw previously).&lt;br /&gt;
&lt;br /&gt;
=== Insufficient Material ===&lt;br /&gt;
As pieces get captured and there are less and less pieces on the board, it is possible to get to a state where the remaining pieces are insufficient to allow either player to force the other one into Checkmate. In this case, the game is automatically declared a draw.&lt;br /&gt;
&lt;br /&gt;
=== 50 Move Rule ===&lt;br /&gt;
If players make 50 different turns (25 each) without any pawn being moved or any piece being captured, then the game isn't making progress. In this case either player is allowed to call a Draw.&lt;br /&gt;
&lt;br /&gt;
=== Resignation ===&lt;br /&gt;
Either player is allowed to Resign at any point. This counts as a Loss for that player.&lt;br /&gt;
&lt;br /&gt;
=== Draw by Agreement ===&lt;br /&gt;
At any point, one player can propose a Draw. If the other player agrees, the game is counted as a Draw.&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=Chess/Rules/Translations&amp;diff=9</id>
		<title>Chess/Rules/Translations</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=Chess/Rules/Translations&amp;diff=9"/>
				<updated>2015-10-09T23:57:11Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: Created page with &amp;quot;&amp;lt;noinclude&amp;gt; '''&amp;amp;larr; back to Chess/Rules'''&amp;lt;br/&amp;gt;  This page will be transcluded onto each translation (so it will only need to be updated in one spot... here).  Rules: *...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
'''&amp;amp;larr; back to [[Chess/Rules]]'''&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page will be transcluded onto each translation (so it will only need to be updated in one spot... here).&lt;br /&gt;
&lt;br /&gt;
Rules:&lt;br /&gt;
* The name of the language should be in THAT language (eg: &amp;quot;English&amp;quot; for English, &amp;quot;Deutch&amp;quot; for German).&lt;br /&gt;
* The languages should be listed alphabetically by their name.&lt;br /&gt;
* The actual page-name in the link should be the two-letter '''[https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes ISO-639-1 language code]'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;[[Chess/Rules/de|Deutch (de)]], [[Chess/Rules|English (en)]], [[Chess/Rules/es|Español (es)]], [[Chess/Rules/fr|Français (fr)]], [[Chess/Rules/sv|Svenska (sv)]] (''[[Chess/Rules/Translations|add more]]'')&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=Chess/Rules&amp;diff=8</id>
		<title>Chess/Rules</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=Chess/Rules&amp;diff=8"/>
				<updated>2015-10-09T23:56:26Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: Created page with &amp;quot;== Preamble == These rules are meant to be short and simple. Long-form rules can be found other places such as [https://en.wikipedia.org/wiki/Rules_of_chess Wikipedia] or [htt...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Preamble ==&lt;br /&gt;
These rules are meant to be short and simple. Long-form rules can be found other places such as [https://en.wikipedia.org/wiki/Rules_of_chess Wikipedia] or [https://www.fide.com/component/handbook/?id=171&amp;amp;view=article FIDE]. These rules are also meant to be short enough to easily embed in our version of [http://store.steampowered.com/app/312280/ Chess on Steam].&lt;br /&gt;
=== License: Public Domain ===&lt;br /&gt;
'''NOTE: BlueLine Games is releasing these rules (including accompanying images) to the Public Domain so you can use them however you see fit! Print them out for a Chess club, include them in an insert with a Chess set you're selling on Etsy, put them in a computer game, whatever!'''&lt;br /&gt;
&lt;br /&gt;
=== Translations ===&lt;br /&gt;
We appreciate any help we can get translating these into other languages, but please note that all translations here must be released to the Public Domain also, for consistency.&lt;br /&gt;
&lt;br /&gt;
{{:Chess/Rules/Translations}}&lt;br /&gt;
&lt;br /&gt;
= Rules =&lt;br /&gt;
&lt;br /&gt;
== Object of Chess ==&lt;br /&gt;
The object of Chess is to put the opponent's King in &amp;quot;[[#Checkmate|checkmate]]&amp;quot;. This means that you have a piece that can move to capture the King, and the opponent has no single move that can stop that threat.&lt;br /&gt;
&lt;br /&gt;
== Basics ==&lt;br /&gt;
[[Image:InitialSetup.png|right]]&lt;br /&gt;
The game starts off with the pieces set up as in the picture. White moves first and may make any legal move (see [[#Movement|movement]] section below). Then Black moves, and the players alternate back and forth until the game is ended.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style='clear:both'&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Capturing ==&lt;br /&gt;
If a piece is able to move in such a way that it can end up on an opponent's space, the player may make this move and the opponent's piece is &amp;quot;captured&amp;quot; (removed from the game). While it is often helpful to capture the opponent's pieces to make it easier to win, there are no specific points for capturing pieces and the ultimate goal is still to put the opponent's King in [[#checkmate|checkmate]].&lt;br /&gt;
&lt;br /&gt;
== Movement ==&lt;br /&gt;
Each piece type has different movement abilities. In most cases, a piece can only move in a direct path and is blocked by other pieces in its way. The exception to this is the Knight which hops to its final position regardless of the pieces in the middle.  No piece is allowed to move in such a way that it puts its own King into &amp;quot;Check&amp;quot;, and if a player is in Check, they must make a move which gets them out of Check if that is possible (if it's not possible then the Check was actually [[#Checkmate|Checkmate]]).&lt;br /&gt;
&lt;br /&gt;
You may not move through your own pieces.&lt;br /&gt;
&lt;br /&gt;
=== Pawn ===&lt;br /&gt;
[[Image:PawnMovement_Opening.png|right]]&lt;br /&gt;
[[Image:PawnMovementAndCapturing.png|right]]&lt;br /&gt;
The pawn is the only piece whose Movement and Capturing are different from each other.&lt;br /&gt;
&lt;br /&gt;
==== Pawn Movement ====&lt;br /&gt;
On each pawn's first move, it has the choice to move either 1 space forward or 2 spaces forward (but cannot jump over or attack other pieces if there is something in the way).  After its first move, each pawn may only advance one square forward at a time. The pawn is NOT allowed to capture pieces that are directly in front of it.&lt;br /&gt;
==== Pawn Capturing ====&lt;br /&gt;
A pawn can capture only by moving one space forward and to the left, or one space forward and to the right.&lt;br /&gt;
&amp;lt;div style='clear:both'&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Pawn: En Passant ====&lt;br /&gt;
[[Image:EnPassant.png|right]]&lt;br /&gt;
There is a special case where pawns may capture even if there is no piece on the space they're attacking. This is to simulate a pawn attacking the opponent while it was &amp;quot;in passing&amp;quot; going by. This case only applies when all of these conditions are met:&lt;br /&gt;
# On the move right before this, the other player moved their pawn forward two spaces.&lt;br /&gt;
# The pawn that just moved and the pawn that are about to attack must now be in the same row, and must be next to each other.&lt;br /&gt;
If these conditions are met, the attacking pawn can now move diagonally forward and towards the side of the victim (leaving it on the spot behind the victim, which it just passed) and then the victim piece is captured.&lt;br /&gt;
==== Pawn Promotion ====&lt;br /&gt;
If a pawn advances all the way to the other side of the board, as soon as it reaches the last row its player upgrades it to any of the four following pieces: Queen, Knight, Rook, Bishop. It is entirely up to the player that will get the new piece, so people usually choose a Queen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style='clear:both'&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Knight ===&lt;br /&gt;
[[Image:KnightMovement.png|right]]&lt;br /&gt;
Knights move and capture by going exactly two spaces in any direction, then one space at a right angle from that (making an &amp;quot;L&amp;quot; shape). This can be done regardless of whether there are pieces in between its original location and its destination. This gives the Knight the privilege of being the only piece that can &amp;quot;jump over&amp;quot; other pieces.  If there is an enemy piece at its destination, the Knight captures that piece.&lt;br /&gt;
&amp;lt;div style='clear:both'&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bishop ===&lt;br /&gt;
[[Image:BishopMovement.png|right]]&lt;br /&gt;
The Bishop can move diagonally as many spaces as desired until it runs into another piece or the edge of the board. If it can move to a space occupied by an enemy piece, it can capture that piece.&lt;br /&gt;
&amp;lt;div style='clear:both'&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rook ===&lt;br /&gt;
[[Image:RookMovement.png|right]]&lt;br /&gt;
The Rook can move in a straight line (not diagonally) as many spaces as desired until it runs into another piece or the edge of the board. If it can move to a space occupied by an enemy piece, it can capture that piece.&lt;br /&gt;
&amp;lt;div style='clear:both'&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Queen ===&lt;br /&gt;
[[Image:QueenMovement.png|right]]&lt;br /&gt;
The Queen can move diagonally or in a straight line as many spaces as desired until it runs into another piece or the edge of the board. If it can move to a space occupied by an enemy piece, it can capture that piece.&lt;br /&gt;
&amp;lt;div style='clear:both'&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== King ===&lt;br /&gt;
[[Image:KingMovement.png|right]]&lt;br /&gt;
The King can move exactly one space in any direction and similarly, captures an enemy piece if there is one at its destination. The only exception to the King moving one space is when it &amp;quot;[[#Castling|Castles]]&amp;quot;.&lt;br /&gt;
&amp;lt;div style='clear:both'&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Castling ===&lt;br /&gt;
[[Image:Castling.png|right]]&lt;br /&gt;
There is a special move called Castling which allows the King to move two spaces towards a Rook and for the Rook to swap to the other side of the King, all in the same move. This is only allowed if all of the following conditions are met:&lt;br /&gt;
* Neither the King nor this Rook have moved during this game.&lt;br /&gt;
* There are no pieces between the King and the Rook&lt;br /&gt;
* The King may not Castle out of check, it may not move past a space that would put it in Check, and it cannot move to a destination that would put it in Check (the Rook is allowed to be in danger at any point).&lt;br /&gt;
&amp;lt;div style='clear:both'&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== End Game ==&lt;br /&gt;
There are several ways to end a game. By far the most common are Checkmate and Stalemate. Some of these definitions rely on the term &amp;quot;Check&amp;quot;: A King is said to be in Check when there is an opposing piece which would be able to capture the King on its next move if nothing was done to prevent that.&lt;br /&gt;
=== Checkmate ===&lt;br /&gt;
If a King is in Check and there are no moves for that King or any of his army to get him out of Check (even by capturing the threatening piece or putting themselves in danger) then this is a Checkmate and the player whose turn it is (who is unable to protect their King) loses.&lt;br /&gt;
&lt;br /&gt;
=== Stalemate ===&lt;br /&gt;
If a King is NOT in Check and there are no moves for the King or any of his army that do not put him INTO Check, then this is a Stalemate (which is a type of Draw).&lt;br /&gt;
&lt;br /&gt;
=== Threefold Repetition ===&lt;br /&gt;
If the same board position is repeated three times, then either player may declare the game a Draw before the next turn happens. If another move is made without either player declaring a Draw, and the game is no longer in a position that has been repeated three or more times, then the opportunity has passed. The opportunity can come up again if the game yet-again goes into a position that has occurred three or more times (even if it's the same position where nobody declared a Draw previously).&lt;br /&gt;
&lt;br /&gt;
=== Insufficient Material ===&lt;br /&gt;
As pieces get captured and there are less and less pieces on the board, it is possible to get to a state where the remaining pieces are insufficient to allow either player to force the other one into Checkmate. In this case, the game is automatically declared a draw.&lt;br /&gt;
&lt;br /&gt;
=== 50 Move Rule ===&lt;br /&gt;
If players make 50 different turns (25 each) without any pawn being moved or any piece being captured, then the game isn't making progress. In this case either player is allowed to call a Draw.&lt;br /&gt;
&lt;br /&gt;
=== Resignation ===&lt;br /&gt;
Either player is allowed to Resign at any point. This counts as a Loss for that player.&lt;br /&gt;
&lt;br /&gt;
=== Draw by Agreement ===&lt;br /&gt;
At any point, one player can propose a Draw. If the other player agrees, the game is counted as a Draw.&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=Chess&amp;diff=7</id>
		<title>Chess</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=Chess&amp;diff=7"/>
				<updated>2015-10-09T23:55:31Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: Created page with &amp;quot; * Chess/Rules&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* [[Chess/Rules]]&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=Node_Chat/Docs/Dev_Setup&amp;diff=6</id>
		<title>Node Chat/Docs/Dev Setup</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=Node_Chat/Docs/Dev_Setup&amp;diff=6"/>
				<updated>2015-10-09T23:54:45Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: Pulled over from prior version of wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;larr; [[Node Chat]] / [[Node Chat/Docs|Docs]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The full stack of chat will run on the devboxes if you enable the extension.&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
To set it up:&lt;br /&gt;
&lt;br /&gt;
* Check out the chat repo to &amp;lt;code&amp;gt;/usr/wikia/source/chat&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/SeanColombo/chat&lt;br /&gt;
&lt;br /&gt;
* Edit config/ChatConfig_EXAMPLE.json (and rename it not to have _EXAMPLE in it)) and&lt;br /&gt;
** update &amp;lt;code&amp;gt;&amp;quot;ChatHost&amp;quot;: &amp;quot;dev-chat:8080&amp;quot;&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;&amp;quot;ChatHost&amp;quot;: &amp;quot;dev-chat:9002&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
** change all instances of &amp;lt;code&amp;gt;dev-chat&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;dev-YOURDEVBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
* Add to &amp;lt;code&amp;gt;DevBoxSettings.php&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;$wgEnableChat = true;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install Redis if not already on your dev-box:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install redis-server&lt;br /&gt;
&lt;br /&gt;
* Make sure redis-server is running locally&lt;br /&gt;
&lt;br /&gt;
  service redis-server start&lt;br /&gt;
&lt;br /&gt;
* run npm install inside the chat main directory&lt;br /&gt;
&lt;br /&gt;
 npm install&lt;br /&gt;
&lt;br /&gt;
== Running Chat ==&lt;br /&gt;
&lt;br /&gt;
* start the chat service&lt;br /&gt;
  cd [PATH TO THE github CHECKOUT]&lt;br /&gt;
  /usr/bin/node server.js loglevel=debug mode=dev basket=1 instance=2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running Chat with multiple baskets ==&lt;br /&gt;
If you need to test failover between the multiple baskets, then you can make that happen on dev:&lt;br /&gt;
* Modify &amp;lt;tt&amp;gt;[github clone location]/ChatConfig.json&amp;lt;/tt&amp;gt; to have multiple buckets for dev. For example, change the code to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;dev&amp;quot;:{&lt;br /&gt;
                &amp;quot;ChatHost&amp;quot;: &amp;quot;dev-chat:9000&amp;quot;,&lt;br /&gt;
                &amp;quot;MainChatServers&amp;quot;: {&lt;br /&gt;
                        &amp;quot;1&amp;quot;:[ &amp;quot;dev-chat:9001&amp;quot; , &amp;quot;dev-chat:9002&amp;quot; ],&lt;br /&gt;
                        &amp;quot;2&amp;quot;:[ &amp;quot;dev-chat:9003&amp;quot; , &amp;quot;dev-chat:9004&amp;quot; ] &lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;ApiChatServers&amp;quot;: {&lt;br /&gt;
                        &amp;quot;1&amp;quot;:[ &amp;quot;dev-chat:9101&amp;quot;, &amp;quot;dev-chat:9102&amp;quot; ],&lt;br /&gt;
                        &amp;quot;2&amp;quot;:[ &amp;quot;dev-chat:9103&amp;quot;, &amp;quot;dev-chat:9104&amp;quot; ] &lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;RedisServer&amp;quot;: {&lt;br /&gt;
                        &amp;quot;1&amp;quot;: &amp;quot;127.0.0.1:6379&amp;quot;,&lt;br /&gt;
                        &amp;quot;2&amp;quot;: &amp;quot;127.0.0.1:6379&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;ProxyServer&amp;quot;: &amp;quot;127.0.0.1:6081&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
But with your whatever your chat server box is, instead of dev-chat.&lt;br /&gt;
  cd /usr/wikia/source/chat&lt;br /&gt;
  /usr/bin/node server.js loglevel=debug mode=dev basket=1 instance=2&lt;br /&gt;
  /usr/bin/node server.js loglevel=debug mode=dev basket=2 instance=2&lt;br /&gt;
&lt;br /&gt;
* You can move all wikis over to use a different basket by changing wgChatServerBasket in WikiFactory for community.wikia.com to put it in a different basket (all wikis share the setting from Community). - '''TODO:Update this'''&lt;br /&gt;
&lt;br /&gt;
== Testing multiple instances ==&lt;br /&gt;
''' TODO: CHAT PROXY NOTES HERE... need to make some general-purpose proxy rules to keep Chat servers only internally accessible.'''&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If you get an error on the AJAX request that says:&lt;br /&gt;
&lt;br /&gt;
 io.j[0](new Error(&amp;quot;handshake unauthorized&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
It means that the chat server has probably allocated an instance of the chat for that wiki on somebody else's devbox.  Try using a different test wiki.  If that doesn't work, flush redis cache to reset all chat rooms, then try again:&lt;br /&gt;
&lt;br /&gt;
 $ redis-cli&lt;br /&gt;
 &amp;gt; flushall&lt;br /&gt;
&lt;br /&gt;
== Additional Help ==&lt;br /&gt;
&lt;br /&gt;
* Contact the Social Team to debug if anything goes wrong (it probably will)&lt;br /&gt;
* If the client can't connect, double check the instance number in the http request, it might be 1&lt;br /&gt;
* Contact Owen if you want to set up a full hproxy config for this to run both instances.&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=Node_Chat/Docs&amp;diff=5</id>
		<title>Node Chat/Docs</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=Node_Chat/Docs&amp;diff=5"/>
				<updated>2015-10-09T23:54:14Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: Pulling over page from prior version of wiki (which got spammed)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''TODO: CONVERT THIS!!! This is copy/pasted from the Wikia docs &amp;amp; I just removed any private info... still need to update all of the paths, etc. to be for the new project.''&lt;br /&gt;
&lt;br /&gt;
== Where is the code ==&lt;br /&gt;
* Front-end: https://github.com/Wikia/app/tree/dev/extensions/wikia/Chat2&lt;br /&gt;
* Back-end: https://github.com/SeanColombo/chat&lt;br /&gt;
&lt;br /&gt;
== What is the chat's datastore? ==&lt;br /&gt;
The chat uses redis for a datastore. Currently, none of the data stored in redis DB is critical. Therefore it is not needed to provide replication or backup.&lt;br /&gt;
&lt;br /&gt;
==How I can change debugging level?==&lt;br /&gt;
You can you add commend line option loglevel=INFO and just start server with it. Or edit this file (/chat/server_config.js line 57), Possible levels of debugging: CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG. After you changed file you need to restart server. IDEA: it would be nice to keep debugging level in txt file. The file would be read every 1min by nodejs. So we wouldn't need to restart server when we want to change debugging level.&lt;br /&gt;
&lt;br /&gt;
==How to restart server==&lt;br /&gt;
&amp;quot;sudo killall node&amp;quot; Server will be started automatically by runit process or supervisor if it was started using either of those.&lt;br /&gt;
&lt;br /&gt;
==I don't see any problem in log but chat is broken where else to look==&lt;br /&gt;
You can try to use [http://en.wikipedia.org/wiki/Ngrep ngrep ]. Example of ngrep usage:&lt;br /&gt;
  sudo ngrep -d any port 80&lt;br /&gt;
&lt;br /&gt;
==What are the responsibilities of the Web-site stack==&lt;br /&gt;
PHP stack's responsibilities: rendering of the chat.php page, server and instance selection and authorization. All messages and status exchange is handled by node.js server.&lt;br /&gt;
&lt;br /&gt;
==Where are the chat configurations==&lt;br /&gt;
Chat is special case where configuration need to be shared between the web-app stack and the Chat server. In order to solve this problem we store configuration in a JSON file. JSON format is easy to ready by PHP and JaveScript. Github location of an example config file: https://github.com/SeanColombo/chat/ChatConfig_EXAMPLE.json&lt;br /&gt;
&lt;br /&gt;
==How do Chat and the main website exchange information and is it safe==&lt;br /&gt;
The site and Chat provides to each other API methods. In order to prevent users from injecting unwanted data to Chat or MediaWiki We use ChatCommunicationToken for signing requests. Each installation of the chat server needs to have its own ChatCommunicationToken.&lt;br /&gt;
https://github.com/SeanColombo/chat/ChatConfig_EXAMPLE.json#L2&lt;br /&gt;
&lt;br /&gt;
==How does authorization work==&lt;br /&gt;
[[file:Chat_author.png| thumb| 250px]]&lt;br /&gt;
* User accesses chat.php&lt;br /&gt;
* The site gets all needed user information and store them in object(user info object)&lt;br /&gt;
* The site generates KEY and stores &amp;quot;user info object&amp;quot; in memcached under the KEY&lt;br /&gt;
* The page is rendered with KEY(wgChatKey) as one of the JS vars.&lt;br /&gt;
* Client Java Script accesses node.js server with KEY.&lt;br /&gt;
* Node.js sends the query to the site with KEY through API protected with ChatCommunicationToken.&lt;br /&gt;
* If the KEY is correct media wiki answers with JSON containing &amp;quot;user object&amp;quot;.&lt;br /&gt;
* Now node.js server knows if user is authorized to connect and what his privileges are.&lt;br /&gt;
==What is the network protocol between node.js and browser==&lt;br /&gt;
For message transportation we use popular lib [http://socket.io/ socket.io] The     &lt;br /&gt;
library implements wrappers for 5 different underline technology: websocket, flashsocket, htmlfile, xhr-polling, jsonp-pollin. However for compatibility and simplification reasons we pick only one format: xhr-polling. You can find more information about this transportation technique http://en.wikipedia.org/wiki/Comet_(programming) search for: XMLHttpRequest long polling.&lt;br /&gt;
&lt;br /&gt;
== Can I test chat in my local development environment ==&lt;br /&gt;
Yes, simply follow the [[Node Chat/Docs/Dev Setup|Dev Setup Instructions]].&lt;br /&gt;
&lt;br /&gt;
== Chat-Bot ==&lt;br /&gt;
If you need a chat-bot to help you test some things, Wikia user Sactage made a ruby chat and put it on github: https://github.com/sactage/chatbot-rb&lt;br /&gt;
&lt;br /&gt;
==How do emoticons work==&lt;br /&gt;
Emoticons are added during message rendering. Any wiki can define there own emoticons by editing mediawiki:emoticons article. Default icons are defined in: https://github.com/Wikia/app/blob/dev/extensions/wikia/Chat2/ChatDefaultEmoticons.i18n.php&lt;br /&gt;
'''TODO: This needs to be ported to perhaps be not-mediawiki-specific anymore, but in a way that allows the Wikia instance to continue to work as-is.'''&lt;br /&gt;
&lt;br /&gt;
= Scaling =&lt;br /&gt;
== Failover ==&lt;br /&gt;
One way to allow for high-availability is to have a second stack (on a second machine) and failover to that second computer automatically.&lt;br /&gt;
&lt;br /&gt;
[[File:Chat_infrastructure_simple_view.png|thumb|150px]] In case of failure of active stack, traffic can be switched to other stack.&lt;br /&gt;
&lt;br /&gt;
==Why there are many instances of node.js on chat machines==&lt;br /&gt;
[[File:Chat_top_processes.png|thumb|150px]] One of the limitation of [http://nodejs.org/ node.js] is that its single threaded which means that we can't use the full power of modern multi core servers. In order to use the full advantage of multi-core CPUs we run more than one instance on each machine.&lt;br /&gt;
&lt;br /&gt;
==How the load is split between instances of node.js==&lt;br /&gt;
We use a simple modulo operation, &amp;lt;code&amp;gt;instance_id = chat_room_id % number_of_instances&amp;lt;/code&amp;gt;.  The chat_room_id could be based on some listing you have, or it could be the id for a subdomain of your site, depending on how you use the system.&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=Node_Chat&amp;diff=4</id>
		<title>Node Chat</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=Node_Chat&amp;diff=4"/>
				<updated>2015-10-09T23:52:44Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: Created page with &amp;quot;TODO: THINK OF A NAME FOR THE PROJECT! Maybe even get a logo. That'd be cool.  == History == While working at Wikia, I made a node.js Chat server that integrated with Wikia (M...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO: THINK OF A NAME FOR THE PROJECT! Maybe even get a logo. That'd be cool.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
While working at Wikia, I made a node.js Chat server that integrated with Wikia (MediaWiki) accounts.  Since [http://wikia.com Wikia] code is open source, I forked the [https://github.com/Wikia/chat original code] and (keeping the same MIT license) started making the chat-code general purpose while building [[Elsewhere]].&lt;br /&gt;
&lt;br /&gt;
Wikia is one of the most popular sites in the United States ([https://www.quantcast.com/top-sites currently #16], right below Wikipedia) so the server has already had the chance to be put under serious stress-testing and has been incrementally improved over the years since it was released.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
* Make a highly scalable node chat server that can be plugged into existing sites.&lt;br /&gt;
* Continue using each site's authentication systems so that the users don't have to log in to chat separately.&lt;br /&gt;
* Make it easy to configure a new site to use this server (1 hour setup maximum).&lt;br /&gt;
* Reorganize the code so that everything site-specific can be easily configured &amp;amp; get both Wikia and [[Elsewhere]] to run on this.&lt;br /&gt;
* Keep the latest stable version of the project running on both Wikia and Elsewhere.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
These might need to be merged. These are the docs from Wikia:&lt;br /&gt;
[[Node Chat/Docs]]&lt;br /&gt;
&lt;br /&gt;
== Code &amp;amp; License ==&lt;br /&gt;
The code on Github and is [https://github.com/SeanColombo/chat/blob/master/LICENSE licensed under the MIT License].&lt;br /&gt;
&lt;br /&gt;
=== Backend ===&lt;br /&gt;
* GITHUB REPO: https://github.com/SeanColombo/chat&lt;br /&gt;
* To run the server: &amp;lt;tt&amp;gt;node server.js mode=dev basket=1 instance=1 loglevel=debug&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Frontend ===&lt;br /&gt;
When you have the node.js server running, you will probably want need some front-end website code to put widgets on your site which point your users to the chat, and you'll need some code to let the chat server authenticate the user using your site's auth system.&lt;br /&gt;
&lt;br /&gt;
We don't have a good generalized front-end example yet... but here's the front-end Wikia code for reference:&amp;lt;br/&amp;gt;&lt;br /&gt;
https://github.com/Wikia/app/tree/dev/extensions/wikia/Chat2&lt;br /&gt;
&lt;br /&gt;
'''TODO: Add some default front-end code in a directory in the main github repo. This will be unused by most actual installations, but they can copy/paste it to the right spot in their own projects.'''&lt;br /&gt;
&lt;br /&gt;
=== Integration ===&lt;br /&gt;
'''TODO: Instructions on how to check this project out in a way that you can use the same Model javascript between your site and node servers.'''&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
THESE INSTRUCTIONS WILL NEED A LOT OF WORK!&lt;br /&gt;
# git clone the [https://github.com/SeanColombo/chat Respository] to where you want the code to go (and create a branch if you want to modify the code... you can always do that later if you are unsure).&lt;br /&gt;
# OPTIONAL: set the WIKIA_CONFIG_ROOT environment variable to a directory where your config will be (by default, the config is in the root directory).&lt;br /&gt;
# Copy the ChatConfig_EXAMPLE.json to ChatConfig.json and update it with reasonable settings (eg: everything localhost to start with).&lt;br /&gt;
# &lt;br /&gt;
# run &amp;quot;node server.js&amp;quot; and fix bugs until it works ;) as I'm doing that I'll be filling in this &amp;quot;Setup&amp;quot; list and making Cleanup tasks below.&lt;br /&gt;
&lt;br /&gt;
== Refactoring Needed ==&lt;br /&gt;
This section will be for tracking the changes needed to make the Wikia/MediaWiki system able to be used generally on other sites (while still running cleanly on Wikia).&lt;br /&gt;
# Make the process.env.WIKIA_CONFIG_ROOT not have the word Wikia in it (maybe fall back to the Wikia version so that we don't have to update the env on the Wikia chat servers to work with the new code).&lt;br /&gt;
# Make installer-script which will create the default ChatConfig.json and if someone tries to run the server when that json file doesn't exist, instruct them to run the install script. Install script should ask for settings (but have defaults for all of them) and do a reasonably cryptographically-secure job of generating the secret code (otherwise someone can attack the server based on knowing what day the chat server went live &amp;amp; trying all of the seconds).&lt;br /&gt;
# Add some project-branding somewhere which is on by default (but probably set it to be turned off on Wikia... ask them about that).&lt;br /&gt;
# In Wikia, delete Chat2/docs/chat.sql for cleanliness (it's just the schema for the little PHP prototype we made)&lt;br /&gt;
# Refactor WMBridge to be SiteBridge and mwBridge to be siteBridge in Chat (WMBridge sounds like some dyslexia anyway).  For Wikia's distribution, have it be MwSiteBridge (and just a swapped require() call to get that instead of the default SiteBridge).&lt;br /&gt;
# Need to make the NodeApiClient more general (eg: not MediaWiki specific) and should make the name of that and the nodeInterface more obvious so it's clear that the client talks to the node server's API where as the nodeInterface answers questions FROM the server.&lt;br /&gt;
# ChatConfig.json is duplicated! We have one in /node/ChatConfig.json and one in /public_html/NodeChat/ChatConfig.json... make one of these able to be read by both node and PHP. When there are two, they have to be kept in sync which is bad bad bad.&lt;br /&gt;
# ChatHost&lt;br /&gt;
## Right now, it's not documented, but the frontend ALWAYS connects to ChatHost. This is a security feature so that only 1 port has to be open on the chat servers &amp;amp; we can easily add chat instances without reconfiguring the firewall. There is some haproxy config on the ChatHost that redirects to the appropriate ports based on rules. Document this. Example dev-box rules are in &amp;lt;tt&amp;gt;PRIVATE/Cloud Servers/chat_haproxy_example.txt&amp;lt;/tt&amp;gt;&lt;br /&gt;
## haproxy isn't easy in Windows, so I just set the ChatHost port to be the same as Instance 1, so there really is only 1 working instance possible on Windows devboxes right now.&lt;br /&gt;
## Ideally, we could make a way to do the rewriting on windows devboxes also... in the meantime we need to make it clear that Windows devboxes only do one instance.&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=Main_Page&amp;diff=3</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=Main_Page&amp;diff=3"/>
				<updated>2015-10-09T23:52:26Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: Pulling pages over from the prior wiki (which had gotten spammed beyond repair).&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to the BlueLine Games Wiki!'''&lt;br /&gt;
&lt;br /&gt;
This wiki is all about BlueLine Games, the games it makes, and the community that loves to play them!&lt;br /&gt;
&lt;br /&gt;
You can find out more about our titles, get in-depth help and strategy tips, and &lt;br /&gt;
interact with other members to find someone to play with online.&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
* [[Heximilate]] - HTML5, Pokki, Chrome App, Online&lt;br /&gt;
* [[Hive]] - Xbox 360, Steam (PC/Mac/Linux)&lt;br /&gt;
* [[Khet]] - Steam (PC/Mac/Linux)&lt;br /&gt;
* [[Reversi]] - Steam (PC/Mac/Linux)&lt;br /&gt;
* [[Chess|Simply Chess]] - Steam (PC/Mac/Linux)&lt;br /&gt;
&lt;br /&gt;
=== In progress: Not released yet ===&lt;br /&gt;
* ''[[Elsewhere]] - Omniplatform, Not Announced ;)''&lt;br /&gt;
* '''TBA: Announcing another board game in Oct/Nov 2015 probably... to launch ~Sep 2016'''&lt;br /&gt;
&lt;br /&gt;
== Open Source ==&lt;br /&gt;
* [[Node Chat]]&lt;br /&gt;
* [http://bluelinegamestudios.com/posts/introducing-bluezebra-a-gpl-command-line-reversi-ai/ BlueZebra] - command-line Reversi AI.&lt;br /&gt;
&lt;br /&gt;
== Game-Jam Games ==&lt;br /&gt;
* [[10sTD]] - HTML5&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	<entry>
		<id>http://bluelinegamestudios.com/wiki/index.php?title=User:Sean_Colombo&amp;diff=2</id>
		<title>User:Sean Colombo</title>
		<link rel="alternate" type="text/html" href="http://bluelinegamestudios.com/wiki/index.php?title=User:Sean_Colombo&amp;diff=2"/>
				<updated>2015-10-09T23:52:02Z</updated>
		
		<summary type="html">&lt;p&gt;Sean Colombo: Created page with &amp;quot;== About Me == I founded BlueLine Games in 2011 and we have been bringing digital versions of award-winning table top games to several platforms - Xbox 360,...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About Me ==&lt;br /&gt;
I founded [[BlueLine:About|BlueLine Games]] in 2011 and we have been bringing digital versions of award-winning table top games to several platforms - Xbox 360, HTML5, Steam (PC/Mac/Linux) - since then! :D&lt;br /&gt;
&lt;br /&gt;
== Find Me, Elsewhere ==&lt;br /&gt;
* [https://twitter.com/seancolombo @seancolombo] on twitter&lt;br /&gt;
* [https://twitter.com/bluelinegames @bluelinegames] on twitter&lt;/div&gt;</summary>
		<author><name>Sean Colombo</name></author>	</entry>

	</feed><br />
<b>Warning</b>:  Parameter 1 to ConfirmEditHooks::APIGetAllowedParams() expected to be a reference, value given in <b>/var/www/html/bluelinegamestudios.com/wiki/includes/Hooks.php</b> on line <b>201</b><br />
