<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="be">
	<id>https://be.doc.boardgamearena.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=KuWizard</id>
	<title>Board Game Arena - Уклад удзельніка [be]</title>
	<link rel="self" type="application/atom+xml" href="https://be.doc.boardgamearena.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=KuWizard"/>
	<link rel="alternate" type="text/html" href="https://be.doc.boardgamearena.com/%D0%90%D0%B4%D0%BC%D1%8B%D1%81%D0%BB%D0%BE%D0%B2%D0%B0%D0%B5:Contributions/KuWizard"/>
	<updated>2026-09-30T19:07:36Z</updated>
	<subtitle>Уклад удзельніка</subtitle>
	<generator>MediaWiki 1.39.0</generator>
	<entry>
		<id>https://be.doc.boardgamearena.com/index.php?title=Help&amp;diff=5187</id>
		<title>Help</title>
		<link rel="alternate" type="text/html" href="https://be.doc.boardgamearena.com/index.php?title=Help&amp;diff=5187"/>
		<updated>2020-08-04T19:30:35Z</updated>

		<summary type="html">&lt;p&gt;KuWizard: /* Games */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An issue? A question?&lt;br /&gt;
&lt;br /&gt;
* [https://boardgamearena.com/#!faq Frequently asked questions] is the most complete source of help for BGA.&lt;br /&gt;
&lt;br /&gt;
* [https://forum.boardgamearena.com Forums] are also helpful to get information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
Game names which are displayed in red still need game help/summaries written for them. So help out and write one for them by creating a new page for these games. To do so simply click on them below, this will direct you to a page creation page.&lt;br /&gt;
&amp;lt;table cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;5&amp;quot; border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=&amp;quot;5&amp;quot;&amp;gt;&#039;&#039;&#039;Available on BGA&#039;&#039;&#039;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&#039;&#039;&#039;Under development&#039;&#039;&#039;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&#039;&#039;&#039;Removed from BGA&#039;&#039;&#039;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
* [[Gamehelpsechsnimmt|6 Nimmt!]]&lt;br /&gt;
* [[Gamehelpsevenwonders|7 Wonders]]&lt;br /&gt;
* [[Gamehelpeightmastersrevenge|8 Master&#039;s Revenge]]&lt;br /&gt;
* [[Gamehelpamyitis|Amyitis]]&lt;br /&gt;
* [[Gamehelpapocalypse|Apocalypse at the Zoo of Carson City]]&lt;br /&gt;
* [[Gamehelparmadora|Armadöra]]&lt;br /&gt;
* [[Gamehelpassyria|Assyria]]&lt;br /&gt;
* [[Gamehelpalveole|Alveole]]&lt;br /&gt;
* [[Gamehelpbackgammon|Backgammon]]&lt;br /&gt;
* [[Gamehelpbarbu|Barbu]]&lt;br /&gt;
* [[Gamehelpbattleoflits|Battle of LITS]]&lt;br /&gt;
* [[Gamehelpbattlesheep|Battle Sheep]]&lt;br /&gt;
* [[Gamehelpbattleship|Battleship]]&lt;br /&gt;
* [[Gamehelpbelote|Belote]]&lt;br /&gt;
* [[Gamehelpblooms|Blooms]]&lt;br /&gt;
* [[Gamehelpbombay|Bombay]]&lt;br /&gt;
* [[Gamehelpbriscola|Briscola]]&lt;br /&gt;
* [[Gamehelpbubbleepop|Bubblee Pop]]&lt;br /&gt;
* [[Gamehelpthebuilders|The Builders:Middle Ages]]&lt;br /&gt;
* [[Gamehelpbuttons|Buttons]]&lt;br /&gt;
* [[Gamehelpcantstop|Can&#039;t Stop]]&lt;br /&gt;
* [[Gamehelpcarcassonne|Carcassonne]]&lt;br /&gt;
* [[Gamehelpcaribbeanallfours|Caribbean All Fours]]&lt;br /&gt;
* [[Gamehelpcaylus|Caylus]]&lt;br /&gt;
* [[Gamehelpcelestia|Celestia]]&lt;br /&gt;
* [[Gamehelpcheckers|Checkers]]&lt;br /&gt;
* [[Gamehelpchess|Chess]]&lt;br /&gt;
* [[Gamehelpchinagold|China Gold]]&lt;br /&gt;
* [[Gamehelpcinco|Cinco]]&lt;br /&gt;
* [[Gamehelpcircleoflife|Circle of Life]]&lt;br /&gt;
* [[Gamehelpclansofcaledonia|Clans of Caledonia]]&lt;br /&gt;
* [[Gamehelpcoinche|Coinche]]&lt;br /&gt;
* [[Gamehelpcolorpop|Color Pop]]&lt;br /&gt;
* [[Gamehelpcoloretto|Coloretto]]&lt;br /&gt;
* [[Gamehelpcoltexpress|Colt Express]]&lt;br /&gt;
* [[Gamehelpconnectfour|Connect Four]]&lt;br /&gt;
* [[Gamehelpcoupcitystate|Coup]]&lt;br /&gt;
* [[Gamehelpcrazyfarmers|Crazy Farmers]]&lt;br /&gt;
* [[Gamehelpdarkagent|Dark Agent]]&lt;br /&gt;
* [[Gamehelpdiams|Diam&#039;s]]&lt;br /&gt;
* [[Gamehelpdiceforge|Dice Forge]]&lt;br /&gt;
* [[Gamehelpdjambi|Djambi]]&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
* [[Gamehelpdownforce|Downforce]]&lt;br /&gt;
* [[Gamehelpdragoncastle|Dragon Castle]]&lt;br /&gt;
* [[Gamehelpdragonline|Dragon Line]]&lt;br /&gt;
* [[Gamehelpdragonkeeper|Dragon Keeper: The Dungeon]]&lt;br /&gt;
* [[Gamehelpdragonheart|Dragonheart]]&lt;br /&gt;
* [[Gamehelpdungeontwister|Dungeon Twister]]&lt;br /&gt;
* [[Gamehelpelfenland|Elfenland]]&lt;br /&gt;
* [[Gamehelpeminentdomain|Eminent Domain]]&lt;br /&gt;
* [[Gamehelpakeruption|Eruption]]&lt;br /&gt;
* [[Gamehelpevo|Evo: The &amp;quot;Game no Name&amp;quot;]]&lt;br /&gt;
* [[Gamehelpnorthwestpassage|Expedition: Northwest Passage]]&lt;br /&gt;
* [[Gamehelpflorenzacardgame|Florenza: The Card Game]]&lt;br /&gt;
* [[Gamehelpforsale|For Sale]]&lt;br /&gt;
* [[Gamehelpfourcolorcards|Four Color Cards]]&lt;br /&gt;
* [[Gamehelpfrenchtarot|French Tarot]]&lt;br /&gt;
* [[Gamehelpgaia|Gaia]]&lt;br /&gt;
* [[Gamehelpgearnpiston|Gear &amp;amp; Piston]]&lt;br /&gt;
* [[Gamehelpgo|Go]]&lt;br /&gt;
* [[Gamehelpgomoku|Gomoku]]&lt;br /&gt;
* [[Gamehelpgorami|GORami]]&lt;br /&gt;
* [[Gamehelpgosu|Gosu]]&lt;br /&gt;
* [[Gamehelpguildes|Guildes]]&lt;br /&gt;
* [[Gamehelpgyges|Gygès]]&lt;br /&gt;
* [[Gamehelphacktrick|Hack Trick]]&lt;br /&gt;
* [[Gamehelphaggis|Haggis]]&lt;br /&gt;
* [[Gamehelphawaii|Hawaii]]&lt;br /&gt;
* [[Gamehelphanabi|Hanabi]]&lt;br /&gt;
* [[Gamehelphearts|Hearts]]&lt;br /&gt;
* [[Gamehelphex|Hex]]&lt;br /&gt;
* [[Gamehelphive|Hive]]&lt;br /&gt;
* [[Gamehelphypnosia|Hypnosia]]&lt;br /&gt;
* [[Gamehelpicecoldicehockey|Ice Cold Ice Hockey]]&lt;br /&gt;
* [[Gamehelpincangold|Incan Gold]]&lt;br /&gt;
* [[Gamehelpintheyearofthedragon|In the Year of the Dragon]]&lt;br /&gt;
* [[Gamehelpinjawara|Injawara]]&lt;br /&gt;
* [[Gamehelpinnovation|Innovation]]&lt;br /&gt;
* [[Gamehelpissac|Isaac]]&lt;br /&gt;
* [[Gamehelpjaipur|Jaipur]]&lt;br /&gt;
* [[Gamehelpjumpgate|Jump Gate]]&lt;br /&gt;
* [[Gamehelpk2|K2]]&lt;br /&gt;
* [[Gamehelpkabaleo|Kabaleo]]&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
* [[Gamehelpkahuna|Kahuna]]&lt;br /&gt;
* [[Gamehelpkalah|Kalah]]&lt;br /&gt;
* [[Gamehelpkeyflower|Keyflower]]&lt;br /&gt;
* [[Gamehelpkhronos|Khronos]]&lt;br /&gt;
* [[Gamehelpkingdomino|Kingdomino]]&lt;br /&gt;
* [[Gamehelpkoikoi|Koi-koi]]&lt;br /&gt;
* [[Gamehelpkrosmasterarena|Krosmaster Arena]]&lt;br /&gt;
* [[Gamehelpkoryo|Koryŏ]]&lt;br /&gt;
* [[Gamehelpkqj|KQJ]]&lt;br /&gt;
* [[Gamehelplagranja|La Granja]]&lt;br /&gt;
* [[Gamehelpledernierpeuple|Le Dernier Peuple]]&lt;br /&gt;
* [[Gamehelplegendaryinventors|Legendary Inventors]]&lt;br /&gt;
* [[Gamehelplewisandclark|Lewis and Clark]]&lt;br /&gt;
* [[Gamehelplibertalia|Libertalia]]&lt;br /&gt;
* [[Gamehelplinesofaction|Lines of Action]]&lt;br /&gt;
* [[Gamehelplogger|Logger]]&lt;br /&gt;
* [[Gamehelplordsofxidit|Lords of Xidit]]&lt;br /&gt;
* [[Gamehelplostcities|Lost Cities]]&lt;br /&gt;
* [[Gamehelploveletter|Love Letter]]&lt;br /&gt;
* [[Gamehelpmachiavelli|Machiavelli]]&lt;br /&gt;
* [[Gamehelpmammalath|Mammalath]]&lt;br /&gt;
* [[Gamehelpmarram|Marram]]&lt;br /&gt;
* [[Gamehelpmetromania|Metromania]]&lt;br /&gt;
* [[Gamehelpmadeira|Madeira]]&lt;br /&gt;
* [[Gamehelpnautilus|Nautilus]]&lt;br /&gt;
* [[Gamehelpneutreeko|Neutreeko]]&lt;br /&gt;
* [[Gamehelpniagara|Niagara]]&lt;br /&gt;
* [[Gamehelpnile|Nile]]&lt;br /&gt;
* [[Gamehelpninemensmorris|Nine Men&#039;s Morris]]&lt;br /&gt;
* [[Gamehelpnippon|Nippon]]&lt;br /&gt;
* [[Gamehelpnoirkvi|Noir: Killer versus Inspector]]&lt;br /&gt;
* [[Gamehelpnotalone|Not Alone]]&lt;br /&gt;
* [[Gamehelpnxs|NXS]]&lt;br /&gt;
* [[Gamehelpohhell|Oh Hell!]]&lt;br /&gt;
* [[Gamehelporigin|Origin]]&lt;br /&gt;
* [[Gamehelpoutlaws|Outlaws:Last Man Standing]]&lt;br /&gt;
* [[Gamehelppalace|Palace]]&lt;br /&gt;
* [[Gamehelppennypress|Penny Press]]&lt;br /&gt;
* [[Gamehelpdudo|Perudo]]&lt;br /&gt;
* [[Gamehelppi|P.I.]]&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
* [[Gamehelppolis|Polis:Fight for Hegemony]]&lt;br /&gt;
* [[Gamehelpponte|Ponte del Diavolo]]&lt;br /&gt;
* [[Gamehelppotionexplosion|Potion Explosion]]&lt;br /&gt;
* [[Gamehelppresident|President]]&lt;br /&gt;
* [[Gamehelppuertorico|Puerto Rico]]&lt;br /&gt;
* [[Gamehelppylos|Pylos]]&lt;br /&gt;
* [[Gamehelpquarto|Quarto]]&lt;br /&gt;
* [[Gamehelpquantum|Quantum]]&lt;br /&gt;
* [[Gamehelpquoridor|Quoridor]]&lt;br /&gt;
* [[Gamehelpraceforthegalaxy|Race for the Galaxy]]&lt;br /&gt;
* [[Gamehelprallymangt|Rallyman: GT]]&lt;br /&gt;
* [[Gamehelpredseven|Red 7]]&lt;br /&gt;
* [[Gamehelprememberwhen|Remember When]]&lt;br /&gt;
* [[Gamehelpreversi|Reversi]]&lt;br /&gt;
* [[Gamehelprollforthegalaxy|Roll for the Galaxy]]&lt;br /&gt;
* [[Gamehelprussianrailroads|Russian Railroads]]&lt;br /&gt;
* [[Gamehelpsaboteur|Saboteur]]&lt;br /&gt;
* [[Gamehelpsaintpoker|Saint Poker]]&lt;br /&gt;
* [[Gamehelpsapiens|Sapiens]]&lt;br /&gt;
* [[Gamehelpseasons|Seasons]]&lt;br /&gt;
* [[Gamehelpsecretmoon|Secret Moon]]&lt;br /&gt;
* [[Gamehelpsenet|Senet]]&lt;br /&gt;
* [[Gamehelpsiam|Siam]]&lt;br /&gt;
* [[Gamehelpsignorie|Signorie]]&lt;br /&gt;
* [[Gamehelpskat|Skat]]&lt;br /&gt;
* [[Gamehelpsobek|Sobek]]&lt;br /&gt;
* [[Gamehelpsolo|Solo]]&lt;br /&gt;
* [[Gamehelpspyrium|Spyrium]]&lt;br /&gt;
* [[Gamehelpstirfryeighteen|Stir Fry Eighteen]]&lt;br /&gt;
* [[Gamehelpstoneage|Stone Age]]&lt;br /&gt;
* [[Gamehelpsushigo|Sushi Go]]&lt;br /&gt;
* [[Gamehelptabult|Tabult]]&lt;br /&gt;
* [[Gamehelptakaraisland|Takara Island]]&lt;br /&gt;
* [[Gamehelptakenoko|Takenoko]]&lt;br /&gt;
* [[Gamehelptaluva|Taluva]]&lt;br /&gt;
* [[Gamehelptargi|Targi]]&lt;br /&gt;
* [[Gamehelptashkalar|Tash-Kalar]]&lt;br /&gt;
* [[Gamehelpteatime|Tea Time]]&lt;br /&gt;
* [[Gamehelpteotihuacan|Teotihuacan: City of Gods]]&lt;br /&gt;
* [[Gamehelpterramystica|Terra Mystica]]&lt;br /&gt;
* [[Gamehelpbattleforhill|The Battle for Hill 218]]&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
* [[Gamehelptheboss|The Boss]]&lt;br /&gt;
* [[Gamehelpthebuilders|The Builders:Antiquity]]&lt;br /&gt;
* [[Gamehelpthejellymonsterlab|The Jelly Monster Lab]]&lt;br /&gt;
* [[Gamehelpthekingsguild|The King&#039;s Guild]]&lt;br /&gt;
* [[Gamehelpcarrara|The Palaces of Carrara]]&lt;br /&gt;
* [[Gamehelptheruhr|The Ruhr:A Story of Coal Trade]]&lt;br /&gt;
* [[Gamehelpmarcopolo|The Voyages of Marco Polo]]&lt;br /&gt;
* [[Gamehelpwerewolves|The Werewolves of Miller&#039;s Hollow]]&lt;br /&gt;
* [[Gamehelpthermopyles|Thermopyles]]&lt;br /&gt;
* [[Gamehelpthroughtheages|Through the Ages]]&lt;br /&gt;
* [[Gamehelptiki|Tiki]]&lt;br /&gt;
* [[Gamehelptimemasters|Time Masters]]&lt;br /&gt;
* [[Gamehelptabago|Tobago]]&lt;br /&gt;
* [[Gamehelptock|Tock]]&lt;br /&gt;
* [[Gamehelptoeshambo|Toe Sham Bo]]&lt;br /&gt;
* [[Gamehelptokaido|Tokaido]]&lt;br /&gt;
* [[Gamehelptournay|Tournay]]&lt;br /&gt;
* [[Gamehelptroyes|Troyes]]&lt;br /&gt;
* [[Gamehelptwintinbots|Twin Tin Bots]]&lt;br /&gt;
* [[Gamehelptzolkin|Tzolk&#039;in]]&lt;br /&gt;
* [[Gamehelpunclechestnuttablegype|Uncle Chesnut&#039;s Table Gype]]&lt;br /&gt;
* [[Gamehelpunitedsquare|United Square]]&lt;br /&gt;
* [[Gamehelpveggiegarden|Veggie Garden]]&lt;br /&gt;
* [[Gamehelpveletas|Veletas]]&lt;br /&gt;
* [[Gamehelpwhist22|Whist 22]]&lt;br /&gt;
* [[Gamehelpxiangqi|Xiangqi]]&lt;br /&gt;
* [[Gamehelpyatzy|Yahtzee]]&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
* [[Gamehelpbigtimesoccer|Big Time Soccer]]&lt;br /&gt;
* [[Gamehelpbobail|Bobail]]&lt;br /&gt;
* [[Gamehelpbutterfly|Butterfly]]&lt;br /&gt;
* [[Gamehelpcharka|Charka]]&lt;br /&gt;
* [[Gamehelpcitybigshoulders|City of the Big Shoulders]]&lt;br /&gt;
* [[Gamehelpconsonar|Con Sonar!]]&lt;br /&gt;
* [[Gamehelpconnect6|Connect 6]]&lt;br /&gt;
* [[Gamehelpfinity|Finity]]&lt;br /&gt;
* [[Gamehelpflamingpyramids|Flaming Pyramids]]&lt;br /&gt;
* [[Gamehelphungariantarokk|Hungarian Tarokk]]&lt;br /&gt;
* [[Gamehelpmartiandice|Martian Dice]]&lt;br /&gt;
* [[Gamehelpninetynine|Ninety-Nine]]&lt;br /&gt;
* [[Gamehelpofftherails|Off the Rails]]&lt;br /&gt;
* [[Gamehelpohseven|Oh-Seven]]&lt;br /&gt;
* [[Gamehelppapayoo|Papayoo]]&lt;br /&gt;
* [[Gamehelppresident|President]]&lt;br /&gt;
* [[Gamehelproomtwentyfive|Room 25]]&lt;br /&gt;
* [[Gamehelpsantorini|Santorini]]&lt;br /&gt;
* [[Gamehelpsoluna|Soluna]]&lt;br /&gt;
* [[Gamehelpvoyages|The Voyages of Marco Polo]]&lt;br /&gt;
* [[Gamehelpxanadu|Xanadu]]&lt;br /&gt;
* [[Gamehelpyokohama|Yokohama]]&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
* [[Gamehelpdominion|Dominion]]&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>KuWizard</name></author>
	</entry>
	<entry>
		<id>https://be.doc.boardgamearena.com/index.php?title=Gamehelpmartiandice&amp;diff=5186</id>
		<title>Gamehelpmartiandice</title>
		<link rel="alternate" type="text/html" href="https://be.doc.boardgamearena.com/index.php?title=Gamehelpmartiandice&amp;diff=5186"/>
		<updated>2020-08-04T19:28:22Z</updated>

		<summary type="html">&lt;p&gt;KuWizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Your mission, Martians, is to swoop down on the pathetic denizens of the primitive planet “Earth”, and to scoop up as many of the inhabitants as you can manage. We are interested in samples of the Chicken, Cow, and Human populations, so that we can determine which of them is actually in charge. The Earthlings might manage to put up a feeble defense, but surely nothing that a small taste of your Death Rays can’t handle. Make Mars proud... be the first Martian to fill your abduction quota!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== How to play ==&lt;br /&gt;
&lt;br /&gt;
# Roll all of the available dice. If there are no available dice, proceed to Scoring.&lt;br /&gt;
# Set aside all Tanks, adding them to any Tanks set aside earlier this turn.&lt;br /&gt;
# From the remaining dice, choose one type (Chickens, Cows, Humans, or Death Rays) and set aside all dice of that type. Chickens, Cows, or Humans may not be chosen if you have already set that type aside this turn. Death Rays may always be chosen, and are added to any Death Rays set aside earlier this turn. If you cannot set aside any dice based on these restrictions, your turn is over; proceed to Scoring.&lt;br /&gt;
# You may choose to end your turn and proceed to Scoring, or return to step 1 to continue rolling.&lt;br /&gt;
&lt;br /&gt;
== Scoring ==&lt;br /&gt;
&lt;br /&gt;
First, compare the number of Tanks set aside to the number of Death Rays set aside. If there are more Tanks than Death Rays, you must flee without any abductees; you score zero points for the round, regardless of how many other dice you set aside. If you set aside at least as many Death Rays as Tanks, then you have successfully fended off the Earthling military and will score points for your abductees as follows:&lt;br /&gt;
* 1 Point for each Human, each Cow, and each Chicken that you set aside.&lt;br /&gt;
* 3 bonus points if you set aside at least one of all three Earthling types.&lt;br /&gt;
Record your score and pass the dice to the next player.&lt;br /&gt;
&lt;br /&gt;
== Game End ==&lt;br /&gt;
&lt;br /&gt;
The game end is triggered when one player reaches a total score of 25 points or more. Once this&lt;br /&gt;
happens, the round is completed so that all players have had the same number of turns. At the end&lt;br /&gt;
of that round, the player with the most points wins the game! In the case of a tie, each tied player&lt;br /&gt;
rolls 6 of the Martian Dice, and the player who rolls more Death Rays wins!&lt;/div&gt;</summary>
		<author><name>KuWizard</name></author>
	</entry>
	<entry>
		<id>https://be.doc.boardgamearena.com/index.php?title=Gamehelpmartiandice&amp;diff=5185</id>
		<title>Gamehelpmartiandice</title>
		<link rel="alternate" type="text/html" href="https://be.doc.boardgamearena.com/index.php?title=Gamehelpmartiandice&amp;diff=5185"/>
		<updated>2020-08-04T19:27:50Z</updated>

		<summary type="html">&lt;p&gt;KuWizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Your mission, Martians, is to swoop down on the pathetic denizens of the primitive planet “Earth”, and to scoop up as many of the inhabitants as you can manage. We are interested in samples of the Chicken, Cow, and Human populations, so that we can determine which of them is actually in charge. The Earthlings might manage to put up a feeble defense, but surely nothing that a small taste of your Death Rays can’t handle. Make Mars proud... be the first Martian to fill your abduction quota!&lt;br /&gt;
&lt;br /&gt;
== How to play ==&lt;br /&gt;
&lt;br /&gt;
# Roll all of the available dice. If there are no available dice, proceed to Scoring.&lt;br /&gt;
# Set aside all Tanks, adding them to any Tanks set aside earlier this turn.&lt;br /&gt;
# From the remaining dice, choose one type (Chickens, Cows, Humans, or Death Rays) and set aside all dice of that type. Chickens, Cows, or Humans may not be chosen if you have already set that type aside this turn. Death Rays may always be chosen, and are added to any Death Rays set aside earlier this turn. If you cannot set aside any dice based on these restrictions, your turn is over; proceed to Scoring.&lt;br /&gt;
# You may choose to end your turn and proceed to Scoring, or return to step 1 to continue rolling.&lt;br /&gt;
&lt;br /&gt;
== Scoring ==&lt;br /&gt;
&lt;br /&gt;
First, compare the number of Tanks set aside to the number of Death Rays set aside. If there are more Tanks than Death Rays, you must flee without any abductees; you score zero points for the round, regardless of how many other dice you set aside. If you set aside at least as many Death Rays as Tanks, then you have successfully fended off the Earthling military and will score points for your abductees as follows:&lt;br /&gt;
* 1 Point for each Human, each Cow, and each Chicken that you set aside.&lt;br /&gt;
* 3 bonus points if you set aside at least one of all three Earthling types.&lt;br /&gt;
Record your score and pass the dice to the next player.&lt;br /&gt;
&lt;br /&gt;
== Game End ==&lt;br /&gt;
&lt;br /&gt;
The game end is triggered when one player reaches a total score of 25 points or more. Once this&lt;br /&gt;
happens, the round is completed so that all players have had the same number of turns. At the end&lt;br /&gt;
of that round, the player with the most points wins the game! In the case of a tie, each tied player&lt;br /&gt;
rolls 6 of the Martian Dice, and the player who rolls more Death Rays wins!&lt;/div&gt;</summary>
		<author><name>KuWizard</name></author>
	</entry>
	<entry>
		<id>https://be.doc.boardgamearena.com/index.php?title=Gamehelpmartiandice&amp;diff=5184</id>
		<title>Gamehelpmartiandice</title>
		<link rel="alternate" type="text/html" href="https://be.doc.boardgamearena.com/index.php?title=Gamehelpmartiandice&amp;diff=5184"/>
		<updated>2020-08-04T19:26:09Z</updated>

		<summary type="html">&lt;p&gt;KuWizard: /* How to play */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Your mission, Martians, is to swoop down on the pathetic denizens of the primitive planet “Earth”, and to scoop up as many of the inhabitants as you can manage. We are interested in samples of the Chicken, Cow, and Human populations, so that we can determine which of them is actually in charge. The Earthlings might manage to put up a feeble defense, but surely nothing that a small taste of your Death Rays can’t handle. Make Mars proud... be the first Martian to fill your abduction quota!&lt;br /&gt;
&lt;br /&gt;
== How to play ==&lt;br /&gt;
&lt;br /&gt;
# Roll all of the available dice. If there are no available dice, proceed to Scoring.&lt;br /&gt;
# Set aside all Tanks, adding them to any Tanks set aside earlier this turn.&lt;br /&gt;
# From the remaining dice, choose one type (Chickens, Cows, Humans, or Death Rays) and set aside all dice of that type. Chickens, Cows, or Humans may not be chosen if you have already set that type aside this turn. Death Rays may always be chosen, and are added to any Death Rays set aside earlier this turn. If you cannot set aside any dice based on these restrictions, your turn is over; proceed to Scoring.&lt;br /&gt;
# You may choose to end your turn and proceed to Scoring, or return to step 1 to continue rolling.&lt;/div&gt;</summary>
		<author><name>KuWizard</name></author>
	</entry>
	<entry>
		<id>https://be.doc.boardgamearena.com/index.php?title=Gamehelpmartiandice&amp;diff=5183</id>
		<title>Gamehelpmartiandice</title>
		<link rel="alternate" type="text/html" href="https://be.doc.boardgamearena.com/index.php?title=Gamehelpmartiandice&amp;diff=5183"/>
		<updated>2020-08-04T19:25:31Z</updated>

		<summary type="html">&lt;p&gt;KuWizard: Created page with &amp;quot;Your mission, Martians, is to swoop down on the pathetic denizens of the primitive planet “Earth”, and to scoop up as many of the inhabitants as you can manage. We are int...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Your mission, Martians, is to swoop down on the pathetic denizens of the primitive planet “Earth”, and to scoop up as many of the inhabitants as you can manage. We are interested in samples of the Chicken, Cow, and Human populations, so that we can determine which of them is actually in charge. The Earthlings might manage to put up a feeble defense, but surely nothing that a small taste of your Death Rays can’t handle. Make Mars proud... be the first Martian to fill your abduction quota!&lt;br /&gt;
&lt;br /&gt;
== How to play ==&lt;br /&gt;
&lt;br /&gt;
# Roll all of the available dice. If there are no available dice, proceed to Scoring.&lt;br /&gt;
# Set aside all Tanks, adding them to any Tanks set aside earlier this turn.&lt;br /&gt;
# From the remaining dice, choose one type (Chickens, Cows, Humans, or Death Rays) and set aside all dice of that type. Chickens, Cows, or Humans may not be chosen if you have already set that type aside&lt;br /&gt;
this turn. Death Rays may always be chosen, and are added to any Death Rays set aside earlier this turn. If you cannot set aside any dice based on these restrictions, your turn is over; proceed to Scoring.&lt;br /&gt;
# You may choose to end your turn and proceed to Scoring, or return to step 1 to continue rolling.&lt;/div&gt;</summary>
		<author><name>KuWizard</name></author>
	</entry>
	<entry>
		<id>https://be.doc.boardgamearena.com/index.php?title=Troubleshooting&amp;diff=5009</id>
		<title>Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://be.doc.boardgamearena.com/index.php?title=Troubleshooting&amp;diff=5009"/>
		<updated>2020-07-17T15:32:40Z</updated>

		<summary type="html">&lt;p&gt;KuWizard: /* Undefined offset: 0 in table/table.game.php on line 830 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Studio_Framework_Navigation}}&lt;br /&gt;
&lt;br /&gt;
Describing common errors which is hard to understand and debug &lt;br /&gt;
&lt;br /&gt;
== Game does not start at all ==&lt;br /&gt;
&lt;br /&gt;
=== Undefined offset: 0 in table/table.game.php on line 830 ===&lt;br /&gt;
&lt;br /&gt;
Check if you&#039;re calling self::getActivePlayerName () during setupNewGame()&lt;br /&gt;
&lt;br /&gt;
Check if you&#039;re NOT calling self::activeNextPlayer() at the end of your game setup. You must always have at least one active player.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Wrong formatted data from BGA gameserver 1 (method: createGame): ... ===&lt;br /&gt;
&lt;br /&gt;
This is generic message usually followed by exact position in your source code, and usually its syntax error in one of yours php script&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Propagating error from GS 1 (method: createGame): Fatal error during yourgame setup: Not logged ===&lt;br /&gt;
&lt;br /&gt;
Calling self::getCurrentPlayerId () or using $g_user from &#039;args&#039; state function, see also below&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Propagating error from GS 1 (method: createGame): Fatal error during yourgame setup: Unknow player statistic: ===&lt;br /&gt;
&lt;br /&gt;
Calling self::incStat() with second parameter which is an empty string&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error:  Propagating error from GS 1 (method: createGame): Fatal error during yourgame setup: Error while processing SQL request: INSERT INTO stats ... ===&lt;br /&gt;
&lt;br /&gt;
Fatal error during yourgame setup: Error while processing SQL request: INSERT INTO stats (stats_type, stats_player_id, stats_value) VALUES (&#039;10&#039;,&#039;2300663&#039;,&#039;0&#039;),(&#039;10&#039;,&#039;2300662&#039;,&#039;0&#039;)&lt;br /&gt;
Duplicate entry &#039;10-2300663&#039; for key &#039;stats_table_id&#039;&lt;br /&gt;
&lt;br /&gt;
Why? In the stats.inc.php you declared two keys with the same integer &amp;quot;id&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Fatal error during creation of database ebd_quoridor_389 Not logged ===&lt;br /&gt;
&lt;br /&gt;
Check that you didn&#039;t use $g_user or getCurrentPlayerId() in setupNewGame() function or in an &#039;args&#039; function of your state.&lt;br /&gt;
&lt;br /&gt;
As these functions are not consequences of a user action, there is no current player defined.&lt;br /&gt;
&lt;br /&gt;
As a general rule, you should use getActivePlayerId() and not getCurrentPlayerId(). See the [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine presentation on the game state machine] for more information.&lt;br /&gt;
&lt;br /&gt;
=== Warning: Invalid argument supplied for foreach() in table.game.php ===&lt;br /&gt;
&lt;br /&gt;
   Warning: Invalid argument supplied for foreach() in /var/tournoi/release/tournoi-151226-1240-gs/www/game/module/table/table.game.php on line 129 &lt;br /&gt;
   Fatal error: Cannot unset string offsets in /var/tournoi/release/tournoi-151226-1240-gs/www/game/module/table/table.game.php on line 143&lt;br /&gt;
&lt;br /&gt;
That appears when your arg* function that suppose to return array of state arguments returns a scalar (a non-array) value&lt;br /&gt;
&lt;br /&gt;
=== The server reported an error ===&lt;br /&gt;
&lt;br /&gt;
During table creation: &amp;quot;The server reported an error&amp;quot; error shown and nothing else.&lt;br /&gt;
&lt;br /&gt;
If you cannot even create a table - there is syntax error in gameinfos.php, check it, reload it from management panel.&lt;br /&gt;
If still no luck copy clean version from template https://github.com/elaskavaia/bga-sharedcode/blob/master/gameinfos.inc.php&lt;br /&gt;
&lt;br /&gt;
== Game starts but I can&#039;t make a move ==&lt;br /&gt;
&lt;br /&gt;
=== When I do a move, I got &amp;quot;Move recorded, waiting for update ...&amp;quot; forever ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Move recorded&amp;quot; means that your ajaxcall request has been sent to the server and returned normally.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Waiting for update&amp;quot; means that your client interface is waiting for some notifications from the server that correspond to the move we just did.&lt;br /&gt;
&lt;br /&gt;
If this message stays forever, it is probably that your PHP code does not send any notification when the move happens, which is abnormal. To fix this: add a notifyAllPlayers or a notifyPlayer call in your PHP code.&lt;br /&gt;
&lt;br /&gt;
=== When I do a move, I get &amp;quot;Sending move to server...&amp;quot; the nothing and game resets to state before the move ===&lt;br /&gt;
&lt;br /&gt;
Its possible that server code get into infinite loops or thinks too much, in which case it will timeout and will be aborted without any extra logs (and any db transaction you saw in the log won&#039;t be committed). You will usually see &amp;quot;Unable to connect to server&amp;quot; message on console in this case. You have to put more logging into server&lt;br /&gt;
to trace where it hangs.&lt;br /&gt;
&lt;br /&gt;
=== Some player action is triggered randomly when I click somewhere on the game area ===&lt;br /&gt;
&lt;br /&gt;
You probably used &amp;quot;dojo.connect&amp;quot; on a null object. In this case, dojo.connect associate the event (ex: &amp;quot;onclick&amp;quot;) to the whole game area.&lt;br /&gt;
&lt;br /&gt;
Most of the time it happens in this situation, when my_object element does not exists:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   dojo.connect( $(&amp;quot;my_object&amp;quot;), &amp;quot;onclick&amp;quot;, this, function() {&lt;br /&gt;
     ...&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To determine if this is the case, place &amp;quot;alert( $(&amp;quot;my_object&amp;quot;) )&amp;quot; before the dojo.connect to check if the object exists or not.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;This is not your turn&amp;quot; error when I click on a possible move ===&lt;br /&gt;
&lt;br /&gt;
You need to change to the active player by clicking the red arrow next to their name in the player panel (right side of the page).&lt;br /&gt;
&lt;br /&gt;
[[File:Change_active_player.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Predefined server errors ==&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Unexpected final game state (XX) ===&lt;br /&gt;
&lt;br /&gt;
The action function does not transition to any state, i.e.&lt;br /&gt;
  function selectField($field) {&lt;br /&gt;
    self::checkAction ( &#039;selectField&#039; );&lt;br /&gt;
    if ($field!=0) $this-&amp;gt;gamestate-&amp;gt;nextState ( &#039;next&#039; );&lt;br /&gt;
  }&lt;br /&gt;
Here if $field is 0 there is no transition&lt;br /&gt;
&lt;br /&gt;
=== This game action is impossible right now ===&lt;br /&gt;
&lt;br /&gt;
Check the game log. Usually your state does not define the action you trying to perform in &#039;possibeactions&#039; array.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: This transition (playerTurn) is impossible at this state (42) ===&lt;br /&gt;
&lt;br /&gt;
This is pretty self explanatory. Function nextState() takes transition name not a state name, so you probably did not&lt;br /&gt;
define this transition that the given state&lt;br /&gt;
&lt;br /&gt;
== Game interface hangs during reload or on start ==&lt;br /&gt;
&lt;br /&gt;
Showing &amp;quot;Application Loading...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Javascript error: During pageload undefined no_stack_avail Script: ===&lt;br /&gt;
&lt;br /&gt;
This error usually has no useful data, but it means you called somes API that require a callback and did not define callback function, i.e&lt;br /&gt;
in dojo.connect, this.connectClass, dojo.subscribe, etc&lt;br /&gt;
   &lt;br /&gt;
      this.connectClass(&#039;field&#039;, &#039;onclick&#039;, &#039;onField&#039;); // &amp;lt;-- onField is not defined&lt;br /&gt;
&lt;br /&gt;
=== Other errors with &amp;quot;Application loading...&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
You probably have a syntax error in your Javascript code, and the interface refuses to load.&lt;br /&gt;
&lt;br /&gt;
To find this error, check if there is an error message in the Javascript console (F12).&lt;br /&gt;
&lt;br /&gt;
If there is really nothing on the log, it&#039;s probably that the system was unable to load your Javascript because of an syntax error that affect the structure of the Javascript file, typically a missing &amp;quot;}&amp;quot; or a missing &amp;quot;,&amp;quot; after a method definition.&lt;br /&gt;
&lt;br /&gt;
If you have &amp;quot;Uncaught ReferenceError: bgagame is not defined&amp;quot; you have major syntax error in your js file, you should see some other clues in the log where the errors is.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected Syntax Error: ===&lt;br /&gt;
&lt;br /&gt;
No further details in the log. When log is filling with some social connect errors.&lt;br /&gt;
&lt;br /&gt;
Possible Reason: Syntax error in of the php script which is loaded before the start, such as gameoptions.inc.php, gameinfos.inc.php and such.&lt;br /&gt;
&lt;br /&gt;
=== Game interface spins in a loop throwing error ===&lt;br /&gt;
&lt;br /&gt;
Errors is something like &amp;quot;Cannot read property &#039;is_ai&#039; of undefined&amp;quot;. Cannot restart the game because cannot access UI to stop.&lt;br /&gt;
Likely you get in actplayer state with player id == 0. The only way to fix it is to edit database, globals index == 2 set player id to one of your test dudes&lt;br /&gt;
(can copy from row 5 for example).&lt;br /&gt;
&lt;br /&gt;
== Type conversion / juggling errors ==&lt;br /&gt;
&lt;br /&gt;
=== On php side I get a number instead of string I expect ===&lt;br /&gt;
&lt;br /&gt;
 $num = 3;&lt;br /&gt;
 $meeple = &amp;quot;meeple_&amp;quot; + $num; // &amp;lt;-- suppose to be &amp;quot;meeple_3&amp;quot;!&lt;br /&gt;
&lt;br /&gt;
When you switch between JS and PHP it easy to type this and not notice the +. Plus sign (+) in php does not mean string concatenation (in javascript does!),&lt;br /&gt;
in php + means integer arithmetic. So change + to . (dot)&lt;br /&gt;
&lt;br /&gt;
=== On php side my string comparison does not work ===&lt;br /&gt;
&lt;br /&gt;
   if ($color == &#039;4baae2&#039; || $color == &#039;000000&#039;) { &lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Apparently you should not be using &#039;==&#039; in php to compare strings! You should use &#039;===&#039;. The (==) operator will typecast the strings &lt;br /&gt;
to numbers then do comparison!&lt;br /&gt;
Its not very apparent because usually you can get away with it, but not when strings resemble numbers like hex &#039;colors&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Integer columns in the database are returned as strings ===&lt;br /&gt;
&lt;br /&gt;
This is normal PHP behavior. All fields are returned as string type, regardless of their actual type in the database. This also applies to global variables accessed via getGameStateValue(), since they are stored in a database table.&lt;br /&gt;
&lt;br /&gt;
You can use type-casting to convert them to the correct type after they come out of the database.&lt;br /&gt;
&lt;br /&gt;
   $myValueInt = (int)self::getGameStateValue(GLOBAL_ROUND_NUMBER);&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
   $sql = &amp;quot;SELECT my_int_column FROM my_table WHERE my_condition&amp;quot;;&lt;br /&gt;
   $myResult = self::getUniqueValueFromDB($sql); &amp;lt;-- this is a string&lt;br /&gt;
   $myResultAsInt = (int)$myResult;&lt;br /&gt;
&lt;br /&gt;
https://stackoverflow.com/questions/5323146/mysql-integer-field-is-returned-as-string-in-php&lt;br /&gt;
&lt;br /&gt;
== Zombie mode ==&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Propagating error from GS 1 (method: zombie): Not logged ===&lt;br /&gt;
&lt;br /&gt;
You are probably calling getCurrentPlayerId() or getCurrentPlayerName() in your zombieTurn method or any of the methods it uses. Instead, use the $active_player_id provided as parameter to zombieTurn().&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Can&#039;t manage zombie player in this game state ===&lt;br /&gt;
&lt;br /&gt;
Despite what the message suggests, this error has nothing to do with your state machine. It is caused by an exception in the zombie code. It could be an undefined value sent to a database query. Check the unexpected exceptions log. It could also be the same problem as above, so look for getCurrentPlayerId() or getCurrentPlayerName() in your zombieTurn method.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Wrong formatted data from BGA gameserver 1 (method: zombie): ===&lt;br /&gt;
&lt;br /&gt;
This is almost certainly an undefined value in PHP code. Look for a warning or error message in the game replay log on the right side of the table UI.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: BGA gameserver 1 do not respond (method: zombie) (timeout: cluster) ===&lt;br /&gt;
&lt;br /&gt;
You are trying to end the game from a zombie method. This is not allowed. The zombie logic must continue the game as best it can. See [[Main_game_logic:_yourgamename.game.php#Zombie_mode|Zombie mode]] for more info.&lt;br /&gt;
&lt;br /&gt;
== Other errors ==&lt;br /&gt;
&lt;br /&gt;
=== Javascript does not know how to sum two numbers ===&lt;br /&gt;
&lt;br /&gt;
Be careful when you manipulate integers returned by notifications: most of the time, Javascript considers they are Strings and not Integers.&lt;br /&gt;
&lt;br /&gt;
As a result:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    var i=1;&lt;br /&gt;
    i += notif.args.increment;  // With notif.args.increment=&#039;1&#039;&lt;br /&gt;
    alert( i );                 // i=11 instead of 2 !! Javascript concatenate 2 strings !&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To solve this, you should use the &amp;quot;toint&amp;quot; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    var i=1;&lt;br /&gt;
    i += toint( notif.args.increment );  // With notif.args.increment=&#039;1&#039;&lt;br /&gt;
    alert( i );                 // i=2 :)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Javascript: do not use substr with negative numbers ===&lt;br /&gt;
&lt;br /&gt;
To get the last characters of a string, use &amp;quot;slice&amp;quot; instead of &amp;quot;substr&amp;quot; which has a bug on IE:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    var three_last_characters = string.substr( -3 );   // Wrong&lt;br /&gt;
    var three_last_characters = string.slice( -3 );    // Correct&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Game &amp;quot;spontaneously&amp;quot; transition to a new state without user input ===&lt;br /&gt;
&lt;br /&gt;
Make sure on php side you have no code after   $this-&amp;gt;gamestate-&amp;gt;nextState(...) code.&lt;br /&gt;
Because if you do accidentally have code that goes to another state it will cause another state transition without user interaction.&lt;br /&gt;
&lt;br /&gt;
 function selectField($field) {&lt;br /&gt;
   self::checkAction ( &#039;selectField&#039; );&lt;br /&gt;
   if ($field!=0) $this-&amp;gt;gamestate-&amp;gt;nextState ( &#039;next&#039; );&lt;br /&gt;
   $this-&amp;gt;gamestate-&amp;gt;nextState ( &#039;last&#039; ); // &amp;lt;-- here is missing else, so it will cause double state transition&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>KuWizard</name></author>
	</entry>
	<entry>
		<id>https://be.doc.boardgamearena.com/index.php?title=Troubleshooting&amp;diff=5008</id>
		<title>Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://be.doc.boardgamearena.com/index.php?title=Troubleshooting&amp;diff=5008"/>
		<updated>2020-07-17T15:32:24Z</updated>

		<summary type="html">&lt;p&gt;KuWizard: /* Undefined offset: 0 in table/table.game.php on line 830 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Studio_Framework_Navigation}}&lt;br /&gt;
&lt;br /&gt;
Describing common errors which is hard to understand and debug &lt;br /&gt;
&lt;br /&gt;
== Game does not start at all ==&lt;br /&gt;
&lt;br /&gt;
=== Undefined offset: 0 in table/table.game.php on line 830 ===&lt;br /&gt;
&lt;br /&gt;
Check if you&#039;re calling self::getActivePlayerName () during setupNewGame()&lt;br /&gt;
Check if you&#039;re NOT calling self::activeNextPlayer() at the end of your game setup. You must always have at least one active player.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Wrong formatted data from BGA gameserver 1 (method: createGame): ... ===&lt;br /&gt;
&lt;br /&gt;
This is generic message usually followed by exact position in your source code, and usually its syntax error in one of yours php script&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Propagating error from GS 1 (method: createGame): Fatal error during yourgame setup: Not logged ===&lt;br /&gt;
&lt;br /&gt;
Calling self::getCurrentPlayerId () or using $g_user from &#039;args&#039; state function, see also below&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Propagating error from GS 1 (method: createGame): Fatal error during yourgame setup: Unknow player statistic: ===&lt;br /&gt;
&lt;br /&gt;
Calling self::incStat() with second parameter which is an empty string&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error:  Propagating error from GS 1 (method: createGame): Fatal error during yourgame setup: Error while processing SQL request: INSERT INTO stats ... ===&lt;br /&gt;
&lt;br /&gt;
Fatal error during yourgame setup: Error while processing SQL request: INSERT INTO stats (stats_type, stats_player_id, stats_value) VALUES (&#039;10&#039;,&#039;2300663&#039;,&#039;0&#039;),(&#039;10&#039;,&#039;2300662&#039;,&#039;0&#039;)&lt;br /&gt;
Duplicate entry &#039;10-2300663&#039; for key &#039;stats_table_id&#039;&lt;br /&gt;
&lt;br /&gt;
Why? In the stats.inc.php you declared two keys with the same integer &amp;quot;id&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Fatal error during creation of database ebd_quoridor_389 Not logged ===&lt;br /&gt;
&lt;br /&gt;
Check that you didn&#039;t use $g_user or getCurrentPlayerId() in setupNewGame() function or in an &#039;args&#039; function of your state.&lt;br /&gt;
&lt;br /&gt;
As these functions are not consequences of a user action, there is no current player defined.&lt;br /&gt;
&lt;br /&gt;
As a general rule, you should use getActivePlayerId() and not getCurrentPlayerId(). See the [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine presentation on the game state machine] for more information.&lt;br /&gt;
&lt;br /&gt;
=== Warning: Invalid argument supplied for foreach() in table.game.php ===&lt;br /&gt;
&lt;br /&gt;
   Warning: Invalid argument supplied for foreach() in /var/tournoi/release/tournoi-151226-1240-gs/www/game/module/table/table.game.php on line 129 &lt;br /&gt;
   Fatal error: Cannot unset string offsets in /var/tournoi/release/tournoi-151226-1240-gs/www/game/module/table/table.game.php on line 143&lt;br /&gt;
&lt;br /&gt;
That appears when your arg* function that suppose to return array of state arguments returns a scalar (a non-array) value&lt;br /&gt;
&lt;br /&gt;
=== The server reported an error ===&lt;br /&gt;
&lt;br /&gt;
During table creation: &amp;quot;The server reported an error&amp;quot; error shown and nothing else.&lt;br /&gt;
&lt;br /&gt;
If you cannot even create a table - there is syntax error in gameinfos.php, check it, reload it from management panel.&lt;br /&gt;
If still no luck copy clean version from template https://github.com/elaskavaia/bga-sharedcode/blob/master/gameinfos.inc.php&lt;br /&gt;
&lt;br /&gt;
== Game starts but I can&#039;t make a move ==&lt;br /&gt;
&lt;br /&gt;
=== When I do a move, I got &amp;quot;Move recorded, waiting for update ...&amp;quot; forever ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Move recorded&amp;quot; means that your ajaxcall request has been sent to the server and returned normally.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Waiting for update&amp;quot; means that your client interface is waiting for some notifications from the server that correspond to the move we just did.&lt;br /&gt;
&lt;br /&gt;
If this message stays forever, it is probably that your PHP code does not send any notification when the move happens, which is abnormal. To fix this: add a notifyAllPlayers or a notifyPlayer call in your PHP code.&lt;br /&gt;
&lt;br /&gt;
=== When I do a move, I get &amp;quot;Sending move to server...&amp;quot; the nothing and game resets to state before the move ===&lt;br /&gt;
&lt;br /&gt;
Its possible that server code get into infinite loops or thinks too much, in which case it will timeout and will be aborted without any extra logs (and any db transaction you saw in the log won&#039;t be committed). You will usually see &amp;quot;Unable to connect to server&amp;quot; message on console in this case. You have to put more logging into server&lt;br /&gt;
to trace where it hangs.&lt;br /&gt;
&lt;br /&gt;
=== Some player action is triggered randomly when I click somewhere on the game area ===&lt;br /&gt;
&lt;br /&gt;
You probably used &amp;quot;dojo.connect&amp;quot; on a null object. In this case, dojo.connect associate the event (ex: &amp;quot;onclick&amp;quot;) to the whole game area.&lt;br /&gt;
&lt;br /&gt;
Most of the time it happens in this situation, when my_object element does not exists:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   dojo.connect( $(&amp;quot;my_object&amp;quot;), &amp;quot;onclick&amp;quot;, this, function() {&lt;br /&gt;
     ...&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To determine if this is the case, place &amp;quot;alert( $(&amp;quot;my_object&amp;quot;) )&amp;quot; before the dojo.connect to check if the object exists or not.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;This is not your turn&amp;quot; error when I click on a possible move ===&lt;br /&gt;
&lt;br /&gt;
You need to change to the active player by clicking the red arrow next to their name in the player panel (right side of the page).&lt;br /&gt;
&lt;br /&gt;
[[File:Change_active_player.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Predefined server errors ==&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Unexpected final game state (XX) ===&lt;br /&gt;
&lt;br /&gt;
The action function does not transition to any state, i.e.&lt;br /&gt;
  function selectField($field) {&lt;br /&gt;
    self::checkAction ( &#039;selectField&#039; );&lt;br /&gt;
    if ($field!=0) $this-&amp;gt;gamestate-&amp;gt;nextState ( &#039;next&#039; );&lt;br /&gt;
  }&lt;br /&gt;
Here if $field is 0 there is no transition&lt;br /&gt;
&lt;br /&gt;
=== This game action is impossible right now ===&lt;br /&gt;
&lt;br /&gt;
Check the game log. Usually your state does not define the action you trying to perform in &#039;possibeactions&#039; array.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: This transition (playerTurn) is impossible at this state (42) ===&lt;br /&gt;
&lt;br /&gt;
This is pretty self explanatory. Function nextState() takes transition name not a state name, so you probably did not&lt;br /&gt;
define this transition that the given state&lt;br /&gt;
&lt;br /&gt;
== Game interface hangs during reload or on start ==&lt;br /&gt;
&lt;br /&gt;
Showing &amp;quot;Application Loading...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Javascript error: During pageload undefined no_stack_avail Script: ===&lt;br /&gt;
&lt;br /&gt;
This error usually has no useful data, but it means you called somes API that require a callback and did not define callback function, i.e&lt;br /&gt;
in dojo.connect, this.connectClass, dojo.subscribe, etc&lt;br /&gt;
   &lt;br /&gt;
      this.connectClass(&#039;field&#039;, &#039;onclick&#039;, &#039;onField&#039;); // &amp;lt;-- onField is not defined&lt;br /&gt;
&lt;br /&gt;
=== Other errors with &amp;quot;Application loading...&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
You probably have a syntax error in your Javascript code, and the interface refuses to load.&lt;br /&gt;
&lt;br /&gt;
To find this error, check if there is an error message in the Javascript console (F12).&lt;br /&gt;
&lt;br /&gt;
If there is really nothing on the log, it&#039;s probably that the system was unable to load your Javascript because of an syntax error that affect the structure of the Javascript file, typically a missing &amp;quot;}&amp;quot; or a missing &amp;quot;,&amp;quot; after a method definition.&lt;br /&gt;
&lt;br /&gt;
If you have &amp;quot;Uncaught ReferenceError: bgagame is not defined&amp;quot; you have major syntax error in your js file, you should see some other clues in the log where the errors is.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected Syntax Error: ===&lt;br /&gt;
&lt;br /&gt;
No further details in the log. When log is filling with some social connect errors.&lt;br /&gt;
&lt;br /&gt;
Possible Reason: Syntax error in of the php script which is loaded before the start, such as gameoptions.inc.php, gameinfos.inc.php and such.&lt;br /&gt;
&lt;br /&gt;
=== Game interface spins in a loop throwing error ===&lt;br /&gt;
&lt;br /&gt;
Errors is something like &amp;quot;Cannot read property &#039;is_ai&#039; of undefined&amp;quot;. Cannot restart the game because cannot access UI to stop.&lt;br /&gt;
Likely you get in actplayer state with player id == 0. The only way to fix it is to edit database, globals index == 2 set player id to one of your test dudes&lt;br /&gt;
(can copy from row 5 for example).&lt;br /&gt;
&lt;br /&gt;
== Type conversion / juggling errors ==&lt;br /&gt;
&lt;br /&gt;
=== On php side I get a number instead of string I expect ===&lt;br /&gt;
&lt;br /&gt;
 $num = 3;&lt;br /&gt;
 $meeple = &amp;quot;meeple_&amp;quot; + $num; // &amp;lt;-- suppose to be &amp;quot;meeple_3&amp;quot;!&lt;br /&gt;
&lt;br /&gt;
When you switch between JS and PHP it easy to type this and not notice the +. Plus sign (+) in php does not mean string concatenation (in javascript does!),&lt;br /&gt;
in php + means integer arithmetic. So change + to . (dot)&lt;br /&gt;
&lt;br /&gt;
=== On php side my string comparison does not work ===&lt;br /&gt;
&lt;br /&gt;
   if ($color == &#039;4baae2&#039; || $color == &#039;000000&#039;) { &lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Apparently you should not be using &#039;==&#039; in php to compare strings! You should use &#039;===&#039;. The (==) operator will typecast the strings &lt;br /&gt;
to numbers then do comparison!&lt;br /&gt;
Its not very apparent because usually you can get away with it, but not when strings resemble numbers like hex &#039;colors&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Integer columns in the database are returned as strings ===&lt;br /&gt;
&lt;br /&gt;
This is normal PHP behavior. All fields are returned as string type, regardless of their actual type in the database. This also applies to global variables accessed via getGameStateValue(), since they are stored in a database table.&lt;br /&gt;
&lt;br /&gt;
You can use type-casting to convert them to the correct type after they come out of the database.&lt;br /&gt;
&lt;br /&gt;
   $myValueInt = (int)self::getGameStateValue(GLOBAL_ROUND_NUMBER);&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
   $sql = &amp;quot;SELECT my_int_column FROM my_table WHERE my_condition&amp;quot;;&lt;br /&gt;
   $myResult = self::getUniqueValueFromDB($sql); &amp;lt;-- this is a string&lt;br /&gt;
   $myResultAsInt = (int)$myResult;&lt;br /&gt;
&lt;br /&gt;
https://stackoverflow.com/questions/5323146/mysql-integer-field-is-returned-as-string-in-php&lt;br /&gt;
&lt;br /&gt;
== Zombie mode ==&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Propagating error from GS 1 (method: zombie): Not logged ===&lt;br /&gt;
&lt;br /&gt;
You are probably calling getCurrentPlayerId() or getCurrentPlayerName() in your zombieTurn method or any of the methods it uses. Instead, use the $active_player_id provided as parameter to zombieTurn().&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Can&#039;t manage zombie player in this game state ===&lt;br /&gt;
&lt;br /&gt;
Despite what the message suggests, this error has nothing to do with your state machine. It is caused by an exception in the zombie code. It could be an undefined value sent to a database query. Check the unexpected exceptions log. It could also be the same problem as above, so look for getCurrentPlayerId() or getCurrentPlayerName() in your zombieTurn method.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Wrong formatted data from BGA gameserver 1 (method: zombie): ===&lt;br /&gt;
&lt;br /&gt;
This is almost certainly an undefined value in PHP code. Look for a warning or error message in the game replay log on the right side of the table UI.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: BGA gameserver 1 do not respond (method: zombie) (timeout: cluster) ===&lt;br /&gt;
&lt;br /&gt;
You are trying to end the game from a zombie method. This is not allowed. The zombie logic must continue the game as best it can. See [[Main_game_logic:_yourgamename.game.php#Zombie_mode|Zombie mode]] for more info.&lt;br /&gt;
&lt;br /&gt;
== Other errors ==&lt;br /&gt;
&lt;br /&gt;
=== Javascript does not know how to sum two numbers ===&lt;br /&gt;
&lt;br /&gt;
Be careful when you manipulate integers returned by notifications: most of the time, Javascript considers they are Strings and not Integers.&lt;br /&gt;
&lt;br /&gt;
As a result:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    var i=1;&lt;br /&gt;
    i += notif.args.increment;  // With notif.args.increment=&#039;1&#039;&lt;br /&gt;
    alert( i );                 // i=11 instead of 2 !! Javascript concatenate 2 strings !&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To solve this, you should use the &amp;quot;toint&amp;quot; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    var i=1;&lt;br /&gt;
    i += toint( notif.args.increment );  // With notif.args.increment=&#039;1&#039;&lt;br /&gt;
    alert( i );                 // i=2 :)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Javascript: do not use substr with negative numbers ===&lt;br /&gt;
&lt;br /&gt;
To get the last characters of a string, use &amp;quot;slice&amp;quot; instead of &amp;quot;substr&amp;quot; which has a bug on IE:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    var three_last_characters = string.substr( -3 );   // Wrong&lt;br /&gt;
    var three_last_characters = string.slice( -3 );    // Correct&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Game &amp;quot;spontaneously&amp;quot; transition to a new state without user input ===&lt;br /&gt;
&lt;br /&gt;
Make sure on php side you have no code after   $this-&amp;gt;gamestate-&amp;gt;nextState(...) code.&lt;br /&gt;
Because if you do accidentally have code that goes to another state it will cause another state transition without user interaction.&lt;br /&gt;
&lt;br /&gt;
 function selectField($field) {&lt;br /&gt;
   self::checkAction ( &#039;selectField&#039; );&lt;br /&gt;
   if ($field!=0) $this-&amp;gt;gamestate-&amp;gt;nextState ( &#039;next&#039; );&lt;br /&gt;
   $this-&amp;gt;gamestate-&amp;gt;nextState ( &#039;last&#039; ); // &amp;lt;-- here is missing else, so it will cause double state transition&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>KuWizard</name></author>
	</entry>
</feed>