"Спроси меня" с Вадимом Дяченко (YellowAfterlife)

Дяченко Вадим или YellowAfterlife
Я работаю преимущественно с Haxe, GameMaker, и JavaScript.
Для Haxe мной были созданы openfl-bitfive (позволяет создавать компактные и быстрые приложения на OpenFL) и HaxMin (помогает сжимать генерируемые Haxe файлы .js без вреда функционалу).

Также держу блог (рус., англ.), который периодически пополняю статьями и примерами, и страницу на Patreon (что служит эдаким "ранним доступом" к статьям/примерам/играм, которые я делаю). Есть и отдельный список проектов (англ.)
В общем-то, могу ответить на вопросы, связанные с Haxe, GameMaker, и веб-разработкой в целом или связанной с ними.

Комментарии

Онлайн мультиплеер

В своём посте про SpelunkySD, вы писали, что перед этим экспериментировали с онлайн мультиплеерными играми. Не могли бы вы дать советов/литературы, на эту тематику?

Re: Онлайн мультиплеер

Хороший вопрос.

Посоветовать какую-то конкретную литературу сложно - для разработки нужно знать принципы работы сетей (преимущества & недостатки протоколов или используемых надстроек над ними), а дальше пути расходятся в зависимости от нужд.

К примеру,

Для пошаговых игр все довольно мило и просто - клиенты отправляют серверу данные о своих новых ходах, и сервер отвечает обновленным игровым состоянием или ответом рода "никуда ты не ходишь, сейчас не твой ход". Во многих случаях такие игры даже могут быть реализованы на HTTP/HTTPS протоколе, без использования сокетов.

Для большинства разновидностей RTS постоянно передавать координаты движущихся объектов непрактично, а порой и вовсе невозможно (если объектов слишком много). Решение этому - синхронный мультиплеер, что заключается в передаче действий игроков и сохранении идентичного "состояния" игры у каждого из них. Но поддержка (и проверка) соответствия игрового состояния - дело непростое. На эту тему была довольно занимательная статья (англ.) от одного из разработчиков игры Supreme Commander.

Для других жанров игр в реальном времени все обычно несколько сложнее. Есть довольно длинный доклад (англ.) о мультиплеере в Halo Reach. Доклад интересный и включает в себя пояснение работы (и причин такой работы) различных систем и событий в игре.
Так же для игр в реальном времени используется интерполяция и экстраполяция для обработки "промежуточных" состояний объектов между присылаемыми обновлениями.

В прочие интересные темы для рассмотрения можно включить P2P и UDP hole-punching.
При желании можно найти публикации или доклады о большинстве "отдельных случаев" организации архитектуры в играх - поскольку сетевые игры существуют уже довольно продолжительное время, объем информации о различных подходах и "трюках" так же внушителен.

bitfive на мобильных

Вадим, привет. Есть ли опыт и примеры использования bitfive для создания небольших игрушек, которые работают в мобильном браузере и/или в WebView на мобильных (iOS, Android)?
И уже конкретно по WebView внутри нативного приложения, будут ли там какие-то нюансы или проблемы в плане запуска игрушек собранных с использованием bitfive?

Re: bitfive на мобильных

Работать в мобильных браузерах собранные на bitfive игры должны вполне исправно. Библиотека изначально и создавалась отчасти от того факта, что jeash/nme-html5/openfl-html5 с мобильными браузерами совсем не дружил на тот момент.
Ozdy (@ozdygames на Твиттере) разработал немалое количество мобильных веб-игр с bitfive. Не уверен, есть ли в открытом доступе ссылки на HTML5 версии, так как они для лицензирования делаются. Такое, скорее всего, нужно лично спрашивать.
Разработка с WebView аналогична разработке под стандартный браузер устройства (за исключением недавних версий Android 4 - там WebView использует Chrome, что несколько уменьшает количество проблем); если страницы хранятся локально, то к ним применяются правила безопасности file:// - BitmapData.getPixel/setPixel делать нельзя, и текстовые\бинарные ассеты нужно @:embed*ить (или инлайнить макросом).

локальное хранение

Спасибо за ответ! Вот, кстати, по локальному хранению HTML5 игрушек тема тоже интересна.
Все ли их ограничения ты перечислил или есть ещё какие-то?
И ещё один вопрос в том можно ли (и если да то каким способом лучше) реализовать примерно такую схему:
приложение под iOS или Android показывает внутри себя простые HTML5-игрушки. При этом первый раз оно берет их с сервера в сети, а в дальнейшем есть задача иметь возможность запустить их и если девайс в оффлайн. Т.е. нужно либо как-то кэшировать обычную игру, доступную в сети, либо, если это невозможно, идти другим путём - специально подготавливать игры таким образом, чтобы их можно было скачать, развернуть где-то в локальном пространстве приложения и потом запускать оттуда.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <blockcode> <dd>
  • Строки и параграфы переносятся автоматически.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. The supported tag styles are: <foo>, [foo].
  • Use [gist:####] where #### is your gist number to embed the gist.

Подробнее о форматировании

CAPTCHA
Для отсева спамеров)
X
t
g
1
w
s
Enter the code without spaces and pay attention to upper/lower case.