Истребители багов - проблемы с корабельным креслом

Истребители багов - проблемы с корабельным креслом

Истребители багов - проблемы с корабельным креслом

Истребители багов! от 3 августа 2017г.

Проблемы с корабельным креслом

Перевод от H_Rush

В этом выпуске "Истребителей багов!" Марк Эйбент устраняет баг, который возникает во время появления игрока внутри корабля в мультиплеере.

Проблема в том, что игрок физически связывается с креслом корабля, но также он физически связывается с самим кораблем. Это делается, чтобы точно знать, когда игрок находится внутри корабля, и когда он садится в кресло на корабле.

Когда игрок садится в кресло, код должен определять, что игрок и кресло физически корректно объединены. Но, к сожалению, этого не происходит.

Для примера Марк создает Cutlass, и все идет хорошо до тех пор, пока клиент не доходит до этого состояния объединения и не пытается присоединить кресло к соответствующему порту на корабле. Из-за наличия в кресле игрока клиент не понимает, что происходит, и все ломается. В итоге персонаж умирает и оказывается выброшенным в космос.

Что происходит на самом деле: когда кресло появляется, система заключает, что к нему должен быть прикреплен игрок. Поэтому она прикрепляет игрока к креслу до того, как кресло окажется прикреплено к кораблю. Из-за всяких странностей в работе системы порой получается так, что прикрепленный к креслу игрок не прикрепляется к кораблю.

Для решения проблемы нужно наладить корректное взаимодействие между тремя сущностями: кораблем, креслом и игроком. Необходимо, чтобы игрок в кресле оказывался соединен с кораблем.

Марк добавил в код флаг, который определяет, находится ли в кресле появившегося корабля игрок. Если да, то система сначала прикрепляет персонажа к креслу, затем прикрепляет кресло к кораблю и создает между ними связь.

Admin administrator