Первые проблемы
Первые проблемы проявились достаточно быстро, что в целом хорошо, лучше, чем когда игра была бы полностью закончена. И так по пунктам:
1. В 4 версии движка есть проблема запуска веб-сборок на MacOS и iOS (игра запускается, но очень долго, до 1-3 минут, в официальной документации вообще написано, что пока веб не будет работать и вовсе для данных платформ).
2. Наша целевая площадка на первых порах - Яндекс Игры, и тут всплывает вторая проблема 4 версии движка. Объект SharedArrayBuffer подобен ArrayBuffer, то есть это буфер фиксированной длины, используемый для хранения любых бинарных данных. Главное отличие SharedArrayBuffer от ArrayBuffer заключается в том, что он используется для создания разделяемой области памяти. В отличие от ArrayBufferSharedArrayBuffer не может быть откреплен от соответствующей ему области памяти. Наша версия движка SharedArrayBuffer используется без возможности его отключения, так как это влияет напрямую на оптимизацию работы игры в браузере. В 2018 году разделяемая память была отключена в браузерах по соображениям безопасности после атаки Spectre. В 2020 году был стандартизирован новый, безопасный подход, чтобы включить разделяемую память обратно. И для его работы нужно специфическим образом отдавать контент со стороны сервера, включив определенные CORS заголовки. Проблема Яндекс Игр в том, что данные заголовки они сами не отдают и не дают возможности включить их в личном кабинете при загрузке игры.
3. GDScript - несмотря на то, что у меня нет никаких нареканий к Python и его синтаксису, GDScript все же отличается не в лучшую сторону от питона. Также, мягко говоря, редактор кода, встроенный в Godot, чуточку умнее блокнота, что не добавляет ему плюсов. Я привык к более продвинутым инструментам. Да, можно взять VSCode (еще один блокнот "на максималках") и подключить его как внешний редактор для Godot, но как оказалось, с 4 версией движка это не работает (возможно, плагин еще не адаптировали под нее, ну или у меня кривые руки, чего исключать тоже нельзя).
godot
gamedev
2d игры
яндекс.игры
gdscript
troubleshooting