Несколько типичных проблем которые игроки испытывают с Habitica могут быть вызваны ошибками синхронизации. Эта страница объясняет что такое синхронизация, как возникают ошибки синхронизации, и как их избежать или минимизировать. Если вы не хотите читать всю страницу, начните с раздела Как минимизировать ошибки синхронизации.
Синхронизация браузера с сервером[]
У Habitica есть сервер, который хранит все данные всех игроков и выполняет большую часть работы, требующейся для поддержания сайта.
Однако, также есть некоторый код сайта, который запускается в браузере игрока, что обеспечивает более быстрый отклик на действия игрока. Когда игрок совершает действие (например, отмечает задание), браузер сразу вычисляет последствия этого действия (например, выдачу опыта и золота), и отображает этот результат пользователю. Затем он отправляет серверу сообщение с описанием, какое действие совершил пользователь.
Сервер получает это сообщение и обновляет хранимые данные этого игрока. Затем сервер отправляет обратно браузеру полную копию хранимых данных игрока, так чтобы браузер всегда имел актуальную информацию. В неё также входят недавние события, о которых браузер ранее не знал (например, применение умений игроком на членов команды), так чтобы браузер отобразил эти события игроку. Когда браузер получает полную копию данных игрока, он удаляет свою собственную, устаревшую копию, и заменяет её свежими данными с сервера.
Ошибки синхронизации[]
Иногда, когда игрок совершает действие и браузер пытается отправить это действие серверу, сообщение может не дойти, и возникнет ошибка синхронизации. Игрок увидит, что действие произошло, в своём браузере, но сервер никогда не узнает об этом, и действие не будет добавлено к хранимым данным сервера.
Когда игрок выполнит следующее действие, браузер отправит новое действие серверу, сервер получит это действие и отправит полную копию хранимых данных игрока обратно браузеру. В этих данных ничего не будет сказано о предыдущем, несинхронизированном действии, о котором сервер ничего не знает. Как описано выше, когда браузер получает данные с сервера, он работает только с ними, и поэтому все последствия несинхронизированного действия путаются (например, если игрок получил опыт и золото за такое действия, то этот опыт и золото будут удалены). На первый взгляд эта идея может показаться неудачной, но это необходимо, чтобы браузер брал все хранимые данные с сервера, в противном случае сервер никогда не сможет рассказать браузеру о таких событиях, как применение умений игроком.
Как минимизировать ошибки синхронизации[]
Ошибки синхронизации часто случаются, когда игрок выполняет сразу несколько действий подряд (например, отмечает несколько ежедневных заданий за пару секунд). Это перезагружает браузер, не давая ему отправить несколько или все действия на сервер. Хотя ошибки в расчете золота или опыта должны соответствовать нескольким задачам, которые неправильно синхронизировались, ошибки синхронизации могут привести к лишним, противоречивым результатам.
Чтобы предотвратить это, после совершения действия, обратите внимание на тонкую голубую линию, которая появляется в верху экрана. Она движется слева направо показывая прогресс синхронизации вашего браузера с сервером и наоборот. Когда линия исчезает, синхронизация завершена, и можно спокойно выполнять другие действия. (Если голубая линия не появляется после вашего действия, это означает, что это действие не требует синхронизации.)
Зачастую вы можете успешно выполнить несколько действий не дожидаясь завершения синхронизации, но если вы хотите быть уверены, что не произойдёт ошибок синхронизации, вы должны дождаться пока голубая линия исчезнет после каждого действия.
Это особенно важно при критических действиях, таких как отмечание ежедневных заданий в конце дня или отдых в гостинице. Если вы отметите несколько ежедневных заданий за раз, велика вероятность того, что какие-то из них не будут синхронизированы с сервером, и затем, когда ваш крон запустится, сервер не будет знать об этих ежедневных заданиях и вычтет ваше здоровье за них. Если вы поселитесь в гостинице и произойдёт ошибка синхронизации, вы на самом деле не отдохнёте в гостинице и не будете защищены от урона полученного за незавершенные ежедневные задания.
Чтобы проверить, произошла ли ошибка синхронизации, нажмите на кнопку синхронизации в правом верхнем углу окна (она выглядит как круг сделанный из двух изогнутых стрелок). Это заставит ваш браузер забрать с сервера ваши хранимые данные. После завершения синхронизации (например, когда тонкая голубая линия исчезнет) проверьте ваши ежедневные задания, или ваше состояние отдыха в гостинице, или любую другую важную для вас информацию. Если вы обнаружили, что какие-то действия, которые вы совершили, не синхронизировались, повторите эти действия снова, а затем выполните повторную синхронизацию.
Вы также можете использовать User Data Display для проверки ошибок синхронизации, т.к. он читает ваши хранимые данные напрямую с сервера. Он покажет вам какие ежедневные задания ещё не были отмечены, и отдыхали ли вы в гостинице (на панели появится "ZzzZzzzz", если это так).
Ошибки синхронизации также могут быть вызваны ненадёжным интернет-соединением, т.ч. если вы заметили, что у вас возникли проблемы с сетевым подключением, будьте более внимательнее, чем обычно, при проверке на ошибки синхронизации.
Типичные примеры ошибок[]
Ошибки синхронизации могут случится с любым видом действий в Habitica, но здесь перечислены наиболее частые.
Большинство/все ежедневные задания выполнены, но здоровье и серии всё ещё теряются[]
Как описано выше, отмечание нескольких ежедневных заданий подряд (например, в конце дня) часто приводит к ошибкам синхронизации. Сервер никогда не узнает о том, что вы отметили их, и поэтому ночью вы потеряете здоровье, а серии за эти ежедневные задания сбросятся в ноль. Вы также нанесете урон вашей команде, если выполняете квесты с боссом. Непосредственно перед тем, как вы закончите работу с Habitica, используйте кнопку синхронизации или User Data Display, чтобы проверить, действительно ли ваши ежедневные задания были отмечены как выполненные. Для компенсации потерянного здоровье из-за ошибки синхронизации, используйте правку данных персонажа в настройках, чтобы восстановить ваше здоровье, а также добавить один уровень, если вы умерли из-за ошибки синхронизации. Вы можете восстановить ваши серии ежедневных заданий в продвинутых параметрах.
Потеря опыта или золота или маны по непонятной причине[]
Если вы отметили задание, ваш браузер начислит вам опыт и золото (и ману за задачи), но если при этом возникла ошибка синхронизации, то в следующий раз, когда браузер синхронизируется с сервером, вы потеряете эти награды и задание станет не отмеченным. Вы увидите оповещение с отрицательными значениями, и о том, что награды удаляются. Вы можете вернуть их отыскав не отмеченную задачу и отметить её заново (хотя, если это была несинхронизированная привычка, определить её будет довольно сложно).
Снаряжение, которое вы недавно купили, исчезло[]
Если при покупке какого-то снаряжения произошла ошибки синхронизации, то когда ваш бразуер синхронизируется с сервером вновь, это снаряжение исчезнет из вашего инвентаря и станет снова доступно для покупки. Вам может потребоваться перезагрузить браузер или очистить кэш перед тем, как посмотреть в колонку наград. Золото, которое вы потратили на снаряжение должно вернуться к вам автоматически, но если этого не случилось, вы можете воспользоваться правкой данных персонажа в настройках для его восстановления.
Питомцы, которых вы поймали или откормили до скакунов, исчезли[]
Если при поимке питомца произошла ошибки синхронизации, то когда ваш бразуер синхронизируется с сервером вновь, этот питомец исчезнет. Яйцо и зелье ловли, которое вы использовали, вернётся к вам. Вам может потребоваться перезагрузить браузер или очистить кэш перед тем, как посмотреть в свой инвентарь. Затем вы можете поймать питомца ещё раз.
Подобное может произойти и с превращением питомца в скакуна. В этом случае скакун исчезнет. Вам может потребоваться проделать те же действия, прежде чем заглядывать в свой инвентарь. После этого вы можете снова откормить своего питомца.
Слишком быстрое произношение навыков может вызвать ошибку[]
Если вы слишком быстро произносите несколько навыков подряд, может возникнуть ошибка синхронизации. Это иногда может вызвать красное уведомление об ошибке, содержащей сообщение вроде "Please reload. Error No matching document found." Любое количество маны, которое вы потратили на несинхронизированные навыки, вернётся к вам. Вы можете произнести навыки ещё раз, только более медленно.