Возможность играть в игры в Интернете привела к появлению многих интернет-гигантов стоимостью в миллионы долларов, таких как Addictinggames.com, Miniclip.com, Kongregate.com и многих других. Традиционно многие из этих игр написаны на ActionScript и Adobe Flash. Однако программирование игр на HTML5 и JavaScript набирает обороты благодаря расширенным возможностям рендеринга. Эти библиотеки рендеринга упрощены для новичков с помощью библиотек Facebook React и Google Angular JavaScript.

Еще одна причина, по которой написание веб-игр на JavaScript становится настолько популярным, заключается в том, что он предоставляет отличный интерфейс для визуализации алгоритмов обучения с подкреплением. В настоящее время стандартом тестирования обучения с подкреплением является тренажерный зал Илона Маска OpenAI.

Если вы хотите начать с разработки игр на JavaScript, ознакомьтесь с этим руководством:

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

Сжатие данных для браузерных игр

Существует много способов улучшения методов сжатия данных для использования Интернета в качестве среды для обслуживания графических видеоигр следующего поколения. В браузерах все чаще используются два интересных метода сжатия данных: использование альтернативных систем счисления для кодирования игровой информации и использование автокодировщиков для нелинейного кодирования данных.

Если вы когда-либо играли в популярную MMORPG на основе Java, runescape, вы, возможно, задавались вопросом, почему максимальный денежный стек ограничен 2147b. Это связано с системой счисления, которую они используют для ускорения игры.

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

Другой популярной системой счисления является двоичная система счисления, 0 и 1. Заполняя матрицы нулями и единицами, мы можем выполнять очень быстрые операции cmp (одна из основных подпрограмм в языках программирования ассемблера). Мы можем использовать это для движков столкновений в играх.

Этот открытый исходный код - отличный пример того, как эти системы счисления используются для создания тетриса в браузере с помощью JavaScript и HTML5:



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



Размер изображения - особенно сложная проблема. Это связано с огромным размером изображений с высоким разрешением. Например, посмотрите на это удивительное изображение Парижа:

Это изображение закодировано в разрешении 4K с 3 цветовыми каналами, что приводит к:

4096 x 2160 x 3 = 26 542 080 пикселей. (Кроме того, каждый пиксель кодируется как 8-битное целое число)

В результате получается 26 КБ на такое изображение.

Пожалуйста, ознакомьтесь с этой статьей о том, насколько массивны данные изображений:



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

/* A typical React class has state */
class HeroCharacter extends Component {
  constructor(props) {
    this.state = { health: 100; }
  }

В приведенном выше примере мы устанавливаем свойство health в состояние компонента HeroCharacter. Каждый раз, когда наш персонаж-герой взаимодействует с игрой и теряет или набирает здоровье, мы можем изменить это состояние, и библиотека React JS будет обрабатывать повторную визуализацию этой информации для пользователя.

Заключительные слова

Возможность запускать в браузере потрясающие игры с высокой графикой может полностью изменить ландшафт видеоигр. В области сжатия данных для видеоигр проводится много отличных исследований, особенно в отношении компаний, занимающихся виртуальной реальностью. Нейронные сети и прорывы в области искусственного интеллекта также могут быть очень полезны для сжатия данных. Я надеюсь, что эта статья вдохновила вас попробовать написать несколько игр на JavaScript и придумать способы улучшить подключение и время загрузки в браузерных играх.

CShorten

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

Подробнее откуда это взялось

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

Следите за нашей публикацией, чтобы увидеть больше историй о продуктах и ​​дизайне, представленных командой Журнала.