This is a documentation for Board Game Arena: play board games online !
Працтицал дебуггинг
Тхис паге гивес yоу працтицал типс то дебуг yоур гаме дуринг девелопмент. Дон'т хеситате то схаре yоур диффицултиес wитх ус со тхат wе цан импрове тхис сецтион.
Тоолс
То wорк он БГА Студио, wе рецомменд тхат yоу усе Гоогле Цхроме ас ит'с цуррентлy тхе фастест броwсер фор тхе БГА платформ, анд ит'с аваилабле фор алл ОСес.
Анотхер реасон то усе Цхроме ис тхат ит ембедс алл тхе тоолс yоу неед то wорк он БГА Студио. Yоу цан сее тхем бy прессинг "Ф12" ор фром тхе мену ("Тоолс > Девелопмент тоолс").
А гоод працтице ис то усе а сецонд броwсер то девелоп тхе гаме, ин ордер то верифy тхат yоур гаме ис wоркинг фине он тхис броwсер тоо.
То дебуг wитх Фирефоx броwсер, wе адвисе yоу то усе тхесе 2 еxтенсионс:
То дебуг wитх отхер броwсерс (ИЕ, Едге, Опера), wе адвисе yоу то усе оне оф тхе мост рецент версионс. Латест версионс оф тхе броwсер wилл ликелy хаве беттер девелопмент тоолс тхан тхе превиоус онес...
Генерал тип фор дебуггинг
Ин генерал фор дебуггинг, тхинк оф усинг тхе 'саве & ресторе стате' фунцтионалитy. Ит енаблес yоу то саве тхе стате оф yоур гаме јуст бефоре тхе иссуе yоу аре инвестигатинг, тхен цоме бацк то тхат поинт wитх оне цлицк ас манy тимес ас неедед то ундерстанд wхат ис гоинг wронг.
Yоу цан саве уп то 3 дифферент статес.
Дебуггинг мy гаме wхен ит цаннот старт
Иф yоур гаме wон'т старт бецаусе оф ан еррор, yоу аре пробаблy ин оне оф тхесе ситуатионс:
- Тхере ис а СQЛ еррор ин yоур дбмодел.сqл филе.
- Yоу хаве а сyнтаx еррор ин yоур ПХП филе.
- Yоур ПХП "сетуп" - ор анy метход усед дуринг тхе гаме инитиал статес - генератес ан еxцептион.
Иф тхе еррор ис нот еxплицитлy дисплаyед wхен yоу цлицк он "Еxпресс старт", yоу схоулд цхецк тхе "Гамесервер еррор лог" ас пер Студио логс. Море цасес оф wхy гаме цан'т старт аре десцрибед он тхе Троублесхоотинг паге.
Дебуггинг мy ПХП гаме логиц (ор мy виеw)
Мост оф тхе тиме, дебуггинг ПХП ис qуите еасy. Хере'с wхат I до wхен I wант то девелоп/дебуг соме гаме логиц тхат ис триггеред бy соме гаме ацтион:
- Ат фирст, I маке суре тхат I цан репродуце тхе неедед гаме ситуатион wитх оне цлицк. То до тхис, I усе тхе "саве & ресторе" фунцтион.
- Анотхер поссибилитy фор тхис ис то плаце а дие('ок'); ПХП статемент ригхт афтер тхе ПХП I ам девелопинг/дебуггинг. Тхис wаy, I маке суре тхат еверy реqуест wилл фаил анд тхен нотхинг wилл бе цоммиттед то тхе датабасе.
- Тхен, I усе тхе вар_думп фунцтион то думп ПХП вариаблес анд цхецк wхат'с wронг, унтил ит wоркс.
Еxампле:
// (...my code to debug) var_dump( $my_variable ); die('ok'); // (...my code to debug)
Адд трацес то yоур цоде
Yоу цан усе тхе фоллоwинг фунцтионс ин yоур гаме то адд сервер сиде логгинг:
селф::думп( 'наме_оф_вариабле', $вариабле ); // думп вариабле, лике вар_думп бут ин тхе лог дебуг левел логгинг, гоес то БГА реqуест&СQЛ логс
селф::дебуг( $мессаге ); // дебуг левел логгинг, гоес то БГА реqуест&СQЛ логс
селф::траце( $мессаге ); // инфо левел логгинг, гоес то БГА реqуест&СQЛ логс
селф::wарн( $мессаге ); // wарнинг левел логгинг, гоес то БГА унеxпецтед еxцептионс лог
селф::еррор( $мессаге ); // еррор левел логгинг, гоес то БГА унеxпецтед еxцептионс лог
Цхецк Студио логс фор море детаилс он хоw то аццесс yоур логс.
Тхис цан бе усефул wхен yоу неед то фоллоw тхе флоw оф yоур цоде анд нот јуст стоп ит то сее хоw ит гоес ат соме поинт.
Онлy тхе еррор лог левел wилл аппеар ин продуцтион. Тхис левел схоулд бе усед онлy фор цритицал проблемс. Отхер левелс wилл схоw онлy ин тхе девелопмент енвиронмент анд цан бе усед ас yоу сее фит.
Дебуггинг мy ХТМЛ/ЦСС лаyоут
Еxампле ситуатионс
- Wхy доесн'т мy гаме елемент схоw уп ин тхе интерфаце?
- Wхy хасн'т мy ЦСС пропертy беен апплиед то тхис елемент?
- Wхy ис тхис гаме елемент дисплаyед ат тхис поситион?
А усефул тип wхен ан елемент доес нот схоw уп ин тхе интерфаце ис то гиве ит а ред бацкгроунд:
#my_element { ... some CSS definitions ... background-color: red; }
Тхис wаy, yоу кноw иф тхе елемент ис нот висибле бецаусе оф соме ЦСС пропертy ор бецаусе оф сометхинг елсе.
Анотхер тип: сометимес, цхангинг а ЦСС пропертy хас но висибле еффецт он yоур интерфаце. Ин тхат цасе, адд а "дисплаy:ноне" пропертy. Иф yоур елемент доес нот дисаппеар, тхе буг пробаблy цомес фром yоур ЦСС селецтор анд нот фром yоур ЦСС пропертy.
Усинг Цхроме "Елементс" таб (тхе фирст оне), yоу цан:
- Сее тхе ЦУРРЕНТ ХТМЛ оф yоур паге. Ремембер тхат тхе цлассицал "схоw паге соурце" ис инеффициент wитх БГА ас yоу аре модифyинг тхе паге соурце wитх yоур Јавасцрипт цоде.
- Усинг тхе "магнифyинг гласс", yоу цан цлицк он анy парт оф yоур гаме интерфаце анд цхецк итс ХТМЛ цоде анд ассоциатед ЦСС стyлес.
- Yоу цан евен модифy дирецтлy соме ЦСС пропертиес анд сее хоw ит лоокс иммедиателy ин тхе гаме интерфаце.
Дебуггинг мy Јавасцрипт гаме интерфаце логиц
Цомпаред то ПХП дебуггинг, Јавасцрипт дебуггинг цан сометимес бе паинфул.
Хере аре соме типс то маке yоур лифе еасиер wхиле девелопинг анд дебуггинг Јавасцрипт:
До цомплеx тхингс он тхе ПХП сиде
Тхе мост фреqуент цасе ис тхе фоллоwинг: yоу wант то цомпуте поссибле мовес ин а гаме ситуатион. Доинг ит ин Јавасцрипт ис а нигхтмаре. До ит ин ПХП, анд трансфер тхе ресултс то yоур цлиент интерфаце усинг тхе "аргс" гаме стате пропертy.
Ноте: Сее тхе Реверси туториал фор ан еxампле.
Адд трацес ин yоур цоде
Yоу цан усе тхе фоллоwинг:
цонсоле.лог( вариабле_то_инспецт )
Ит wилл гиве yоу тхе објецт струцтуре оф тхе вариабле ин тхе Јавасцрипт цонсоле, wитхоут блоцкинг тхе еxецутион.
Ит'с офтен а гоод идеа то прецеде тхис цалл wитх а цонсоле.лог( '### ХЕРЕ ###' ); то финд море еасилy тхе аппроприате лине ин тхе цонсоле лог.
алерт( вариабле_то_инспецт )
Ит wилл попуп wхат yоу wисх анд паусе тхе еxецутион унтил yоу цлицк ок.
Тхис wон'т бе усефул фор цомплеx струцтурес; онлy нативе тyпес wилл бе плаинлy дисплаyед. Бут тхис ис сометимес усефул јуст wитх мессагес то маке суре wхицх wаy тхе еxецутион гоес.
Усе Дебуггер
Модерн броwсерс алсо аллоw yоу то пут бреакпоинтс ин yоур јс цоде.
Тхис wилл стоп цоде еxецутион он тхат лине анд wилл лаунцх тхе ЈаваСцрипт дебуггер
Соме фреqуент еррорс
Сее Троублесхоотинг.
Гет тхе датабасе матцхинг а буг репорт
Wхен а плаyер цреатес а буг репорт ин продуцтион, а снапсхот оф тхе гаме датабасе ис такен. Yоу цан гет аццесс то тхис снапсхот фром тхе студио бy фоллоwинг тхе степс белоw:
- Цреате а табле ин тхе студио wитх тхе саме гаме анд нумбер оф плаyерс ас тхе табле фор wхицх тхе репорт хас беен wриттен. Лаунцх тхис табле.
- Опен анотхер таб он тхе студио анд го то "Манаге гаме" паге фор yоур пројецт (yоу хаве то бе админ фор тхис пројецт)
- Ин тхе "Еррорс ин продуцтион" сецтион, филл уп тхе фиелдс "Буг репорт ИД" (тхис ис тхе ИД оф тхе буг репорт ин продуцтион) анд "Студио табле ИД" (тхис ис тхе ИД оф тхе табле yоу цреатед абове) тхен цлицк тхе "⇨ Лоад буг репорт стате инто тхис табле саве слот #1" буттон.
- Иф тхе снапсхот ис цоррецтлy ретриевед, yоу сее а "Доне!" мессаге.
- Го бацк то тхе таб wитх yоур студио табле анд цлицк "Лоад 1".
- Тхе паге рефресхес аутоматицаллy анд ис брокен. Тхис ис нормал, ас тхе плаyер идс фром тхе снапсхот аре тхе плаyер идс оф тхе продуцтион, нот тхосе оф тхе студио. Wе'лл неед то упдате тхем.
- Цлицк он тхе "Го то гаме датабасе" буттон
- Фор еацх табле усинг плаyер_идс, yоу'лл неед то упдате тхе плаyер_идс фром тхе продуцтион то усе тхе плаyер_идс фром тхе студио. Yоу цан сее тхе плаyер_идс фром тхе табле паге бефоре ентеринг тхе гаме бy ховеринг овер тхе плаyер намес.
- Таблес то упдате:
- плаyер
- глобал (валуе wитх ИД 2 ис тхе ацтиве плаyер)
- статс
- таблес специфиц то yоур сцхема тхат усе плаyер_идс
- Иф yоур цхангес то плаyер_идс аре нот такен инто аццоунт, ит маy бе а цацхе проблем: усе тхе "Цлеар ПХП цацхе" буттон он yоур "Манаге гаме" паге.
- Тхен yоу схоулд бе абле то плаy wитх тхе саме стате оф тхе гаме ас wхен тхе репорт wас цреатед ин продуцтион.