Manuals
Manuals




This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English

Рекомендации по портированию и выпуску

На этой странице собраны полезные рекомендации и чеклист того, что стоит учитывать при выпуске игры или при переносе её на новую платформу.

Портирование игры на Defold на новую платформу или первый релиз обычно представляет собой довольно простой процесс. Теоретически достаточно убедиться, что соответствующие разделы настроены в файле game.project, но чтобы максимально использовать возможности каждой платформы, рекомендуется адаптировать игру под её особенности.

Ввод

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

Локализация

Переведите весь текст в игре. Для релиза в Европе и Америке стоит как минимум поддержать EFIGS (английский, французский, итальянский, немецкий и испанский). Убедитесь, что в игре можно легко переключаться между разными языками, например через меню паузы.

Только для iOS: обязательно укажите Localizations в game.project, поскольку sys.get_info() никогда не вернёт язык, которого нет в этом списке.

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

Материалы для магазина

Иконка приложения

Позаботьтесь о том, чтобы игра выделялась среди конкурентов. Иконка часто становится первой точкой контакта с потенциальными игроками. Её должно быть легко заметить на странице, полной игровых иконок.

Баннеры и изображения для магазина

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

Сохранения

Сохранения на десктопе, мобильных устройствах и в вебе

Сохранения и другие данные состояния можно хранить с помощью функции API Defold sys.save(filename, data) и загружать через sys.load(filename). Для получения пути к специфичному для ОС месту хранения файлов, обычно в домашней директории текущего пользователя, можно использовать sys.get_save_file(application_id, name).

Сохранения на консолях

Использование sys.get_save_file() и sys.save() хорошо работает на большинстве платформ, но на консолях рекомендуется использовать другой подход. Консольные платформы обычно связывают пользователя с каждым подключённым контроллером, поэтому сохранения, достижения и другие возможности должны быть привязаны к соответствующему пользователю.

События ввода с геймпада содержат идентификатор пользователя, который можно использовать для связывания действий контроллера с пользователем на консоли.

Консольные платформы и их нативные расширения предоставляют специфичные для платформы функции API для сохранения и загрузки данных, связанных с конкретным пользователем. Используйте эти API для работы с сохранениями на консолях.

API файловых операций на консолях, как правило, асинхронны. При разработке кроссплатформенной игры с поддержкой консолей рекомендуется изначально проектировать её так, чтобы все файловые операции были асинхронными независимо от платформы. Например:

local function save_game(data, user_id, cb)
	if console then
		local filename = "savegame"
		consoleapi.save(user_id, filename, data, cb)
	else
		local filename = sys.get_save_file("mygame", "savegame" .. user_id)
		local success = sys.save(filename, data)
		cb(success)
	end
end

Артефакты сборки

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

Также обязательно сохраняйте файлы manifest.private.der и manifest.public.der, которые создаются в корне проекта при первой сборке. Это публичный и приватный ключи подписи для архива игры и манифеста архива. Эти файлы понадобятся, если вы захотите воссоздать предыдущую сборку игры.

Оптимизация приложения

Прочитайте руководство по оптимизации, чтобы узнать, как оптимизировать приложение по производительности, размеру, потреблению памяти и батареи.

Производительность

Всегда тестируйте на целевом железе. Проверьте производительность игры и при необходимости оптимизируйте её. Используйте профилировщик, чтобы находить узкие места в коде.

Разрешение экрана и частота обновления

Для платформ с фиксированной ориентацией и разрешением экрана: убедитесь, что игра корректно работает при целевом разрешении и соотношении сторон. Для платформ с переменным разрешением и соотношением сторон: убедитесь, что игра корректно работает при разных разрешениях и соотношениях сторон. Учитывайте, какой view projection используется в рендер-скрипте и камере.

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

  • Размеры экрана - Всё ли выглядит хорошо на большем или меньшем экране по сравнению со стандартной шириной и высотой, заданными в game.project?
    • Здесь будут играть роль проекция, используемая в рендер-скрипте, и макеты, используемые в GUI.
  • Соотношения сторон - Всё ли выглядит хорошо на экране с соотношением сторон, отличающимся от стандартного соотношения, полученного из ширины и высоты в game.project?
    • Здесь будут играть роль проекция, используемая в рендер-скрипте, и макеты, используемые в GUI.
  • Частота обновления - Хорошо ли игра работает на экране с частотой обновления выше 60 Гц?
    • Имеют значение vsync и swap interval в разделе Display файла game.project

Мобильные телефоны с вырезом и камерами в отверстии экрана

Использование небольших вырезов в экране для фронтальной камеры и датчиков (notch или hole punch) стало очень распространённым. При переносе игры на мобильные платформы рекомендуется убедиться, что никакая критически важная информация не находится там, где обычно располагаются такие области: вырез по центру верхнего края экрана или отверстие в верхней левой части. Также можно использовать расширение Safe Area, чтобы ограничить видимую область игры пространством вне вырезов и отверстий камеры.

Рекомендации для конкретных платформ

Android

Обязательно храните свой keystore в надёжном месте, чтобы вы могли обновлять игру.

Консоли

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

Nintendo Switch

Интегрируйте код, специфичный для платформы. Для Nintendo Switch существует отдельное расширение со вспомогательной функциональностью для выбора пользователя и т.д.

Defold для Nintendo Switch использует Vulkan в качестве графического бэкенда — обязательно протестируйте игру с графическим бэкендом Vulkan.

PlayStation®4

Интегрируйте код, специфичный для платформы. Для PlayStation®4 существует отдельное расширение со вспомогательной функциональностью для выбора пользователя и т.д.

HTML5

Популярность веб-игр на мобильных телефонах растёт, поэтому стоит постараться сделать игру хорошо работающей и в мобильном браузере. Также важно помнить, что веб-игры должны быстро загружаться. Обязательно оптимизируйте игру по размеру. Кроме того, продумайте процесс загрузки в целом, чтобы не терять игроков без необходимости.

В 2018 году браузеры ввели политику autoplay для звуков, которая запрещает играм и другому веб-контенту воспроизводить звук до первого пользовательского взаимодействия (касание, нажатие кнопки, действие с геймпада и т.д.). При переносе на HTML5 важно учитывать это и начинать воспроизведение звуков и музыки только после первого взаимодействия пользователя. Попытки воспроизводить звук до такого взаимодействия будут записываться как ошибка в консоли разработчика браузера, но не повлияют на работу игры.

Также обязательно ставьте на паузу все воспроизводимые звуки, если игра показывает рекламу.