Обычно интервью — это разговор на много часов. Раз уж встретились, нужно обсудить все подряд, да так, что после такой беседы в течение года нет смысла встречаться. Но что если изменить формат и поговорить на одну, зато актуальную тему? Встречайте новый формат интервью от ММОзговеда: «Блиц». Наш собеседник — Джорб — автор лидера недели, проекта Haven and Hearth.
mmozg: Привет, Джорб. Тема сегодняшнего блица — «координаты с плавающей точкой».
Jorb: Я буду рад ответить на любые вопросы.
mmozg: Отлично! Расскажи, пожалуйста, почему это настолько важная тема, зачем нужно переделывать весь код для работы с такими координатами?
Jorb: Числа с плавающей точкой обеспечивают лучшую точность в позиционировании объектов. Это важно во многих случаях, например, при повороте объектов и любых взаимодействиях, затрагивающих такие понятия как расположение объектов, расстояния, относительные углы поворота и так далее, и в подавляющем большинстве случаев такое изменение оказывает сугубо положительное влияние.
mmozg: Это более или менее общие слова. А что конкретно вы собираетесь реализовывать на базе этого изменения в координатах?
Jorb: Начать мы планируем с переработки системы «столкновений» (например, когда игрок упирается в какой-то объект). Хочется добиться того, чтобы объект в случае столкновения не останавливался напрочь, а аккуратно сдвигался в сторону. Особенно в случае, когда столкновение произошло по самому краю объекта. Это должно существенно упростить жизнь в «захламлённых» поселениях, потому что вместо того, чтобы полностью остановиться об краешек, к примеру, корзинки (так происходит сейчас), ваш персонаж «отскочит» от неё и продолжит свой путь.
Этот этап далеко не маленький, но, по крайней мере, хорошо сформулированный и имеющий четкие границы. Именно поэтому мы хотим реализовывать его в первую очередь. И только после него планируем заняться следующим этапом, связанным с изменением системы координат. Речь про то, что мы называем словосочетанием «объекты, контролируемые другими объектами».
mmozg: Речь про неинстанцированные дома и прочие замечательные вещи? Почему для всего этого так важны нецелые координаты?
Jorb: Да, именно так. Собственно, это основной проект, ради которого мы изначально начали заниматься изменениями в системе координат. Суть идеи заключается в том, что некоторый внутриигровой объект (например, дом) может управлять другими объектами (например, игрок или зверь), определяя области внутри себя, в которых разрешено находиться. Или, скажем, мост сможет определять, в каких его частях игрок может ходить.
Это позволит реализовать такие вещи, как, собственно, мосты, понтоны, или стены, по которым можно прогуливаться, неинстанцированные дома и так далее. Этот проект обширный, потому что предполагает не только реализацию самого принципа, но и, например, необходимость ввести в игру сами мосты, или систему, которая позволит создавать действительно разнообразные дома.
Что же касается связи с новой системой координат, то дело в том, что подобный контроль одних объектов над другими предполагает множество преобразований координат, например между областью моста, где можно ходить и общемировыми координатами. И без увеличения точности с большой вероятностью это бы означало множество неприятных проблем с округлением, ошибками преобразований и прочим, что в свою очередь привело бы к очень странному поведению. То есть нельзя сказать, что координаты с плавающей точкой именно необходимы, но позитивное их влияние достаточно большое, чтобы начать именно с них.
mmozg: Кастомизируемые дома — замечательно! Но вообще, про все эти потенциальные нововведения ты так или иначе уже упоминал раньше. А есть что-то такое же крутое, но о чём вы ещё не рассказывали?
Jorb: Наибольший потенциал, скорее всего, как раз у системы контроля объектов, но об этом нам ещё только предстоит подумать. Например, приходит в голову возможность ходить по кораблям. Но я бы не занимался сейчас спекуляциями на эту тему. По крайней мере до тех пор, пока сама система не будет реализована и мы не увидим её потенциал на деле.
mmozg: Ну и последний вопрос. Как успехи в реализации?
Jorb: Ну, это вотчина Лофтара. Могу лишь сказать, что последний раз, когда мы с ним это обсуждали, он был близок к состоянию, когда и сервер и клиент, по крайней мере, компилируются без ошибок.
mmozg: Понятно, значит это займёт ещё какое-то время. Спасибо за ответы!
Jorb: Всегда пожалуйста.
2 комментария