- PVSM.RU - https://www.pvsm.ru -

Конкурс js13kGames или как написать игру объёмом 13 Кбайт

13 августа стартовал [1]13-й игровой джем js13kGames (JS13K) для разработчиков веб-игр на JavaScript. За месяц участникам предстоит написать браузерные игры, размер которых не должен превышать 13 килобайт при сжатии до формата ZIP. Темой JS13K этого года выбрали «Трискайдекафобию» — боязнь числа «13».

Path to Glory — победительница прошлогоднего JS13K

Path to Glory — победительница прошлогоднего JS13K

Организаторами джема выступают разработчик веб-игр Анджей Мазур [2] и студия по созданию инди- и мобильных веб-игр Enclave Games [3].

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

WebXR-игры создают [4]с использованием веб-фреймворков с открытым исходным кодом A-Frame, Babylon.js, Three.js или PlayCanvas. Запущенная в 2021 году категория Decentralized направлена [5]на изучение аспекта децентрализации веб-игр. Участникам предстоит соревноваться в четырёх конкурсах: OP Guild [6] , Avalanche [7], Thirdweb [8] и Arcadia [9]. Этот год станет первым для категории Unfinished, в рамках которой разработчики смогут поделиться [10] ходом создания своих проектов.

Победители получат различные призы, включая фирменные футболки, магнитные и лазерные диски, книги, игры и другие атрибуты, посвящённые прошедшим JS13K, а также ряд сертификатов. 

Правила

Как следует из названия джема, размер кода и игровых ресурсов проекта должен быть меньше или равен 13 Кбайтам в сжатом виде. ZIP-файл должен содержать файл index.html в структуре папок верхнего уровня. После распаковки он должен запускаться в браузере. Организаторы призывают не усложнять сборку ZIP-файла, чтобы он распаковывался на любой платформе. Разработчики могут использовать инструменты, которые минимизируют исходный код JavaScript.

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

Разработчикам JS13K запрещено использовать библиотеки, изображения и файлы данных, размещённых на сервере или сервисах, которые предоставляют любые типы данных. Например, шрифты Google Fonts использовать нельзя. Также запрещена аналитика и другие скрипты сбора статистики. Все игровые ресурсы должны соответствовать ограничению размера пакета, но перечисленные фреймворки для WebXR-игр не учитываются.

13 сентября после 14:00 МСК конкурс завершается. С этого момента организаторы перестанут принимать заявки, но могут быть исключения.

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

Проекты должны работать и воспроизводиться минимум в двух браузерах: Firefox и Chrome. Однако чем больше совместимых браузеров, тем лучше. Игру могут разрабатывать как один человек, так и целая команда. Отправить заявку на участие можно по ссылке [11]. Участникам разрешено отправлять на конкурс более одной игры. Обработка заявок занимает примерно два дня.

Голосование среди участников продлится три недели с 15 сентября по 4 октября, а победителей объявят 5 октября. Более 20 профильных экспертов предоставят отзывы об играх в течение тех же трёх недель. Их комментарии также опубликуют 5 октября.

Конкурсы прошлых лет

JS13K прошлого года был посвящён [12] теме «XIII век». Первое место получила игра Реми Ванстиландта под названием Path Glory [13]. В этом средневековом битемапе игрокам предстоит сражаться с волнами врагов по пути к финальному боссу.

Dante

Dante

Годом ранее конкурс посвятили теме «Смерти». Победу одержала головоломка Dante [14]от Сальваторе Превити. Соревнование JS13K 2021 года сосредоточилось на теме «Космос». Его победителем стал Райан Малм со своим симулятором ходьбы в космосе Space Garden [15].

Space Garden

Space Garden

Со всеми работами, удостоившимися наград с 2012 года, можно ознакомиться по ссылкам 2023 [16], 2022 [17], 2021 [18], 2020 [19], 2019 [20], 2018 [21], 2017 [22], 2016 [23], 2015 [24], 2014 [25], 2013 [26], 2012 [27].

Один из участников JS13K за 2021 год Фрэнк Форс рассказал [28]больше про свой проект Space Huggers [29], который удостоился восьмого места в рейтинге лучших работ года. Всего в тот год подали заявки на 223 игры. Для Форса конкурс 2021 года стал уже третьим.

Space Huggers — это платформер в жанре «беги и стреляй» с процедурно генерируемым окружением и пиксельной графикой. Проект вдохновлён такими играми, как Broforce, Metal Slug и Contra. Форс рассказал, что создал игровой движок LiitleJS [30]с нуля на чистом JavaScript. Рассматривый проект использует именно LittleJS.

Перед созданием Space Huggers и других проектов для JS13K разработчик сделал более тысячи маленьких программ. В 2018 году Форс занял второе место конкурса с игрой Bounce Back [31]. Через два года его проект NoteCraft [32] победил в категориях Audio и Innovation. Позже Форс представил операционную систему OS13k [33], которая удостоилась специальной премии JS13K. В последний раз Форс заявлялся на JS13k в 2022 году с Egg Time Rewind [34].

Форс старался создать движок LittleJS максимально компактным, но высокопроизводительным. Решение использует объектно-ориентированную архитектуру, с которой легко создавать игры. Для рендеринга огромного количества спрайтов со скоростью 60 кадров в секунду LittleJS применяет WebGL. За создание звуковых эффектов отвечает инструмент ZzFX. Система ввода поддерживает клавиатуру, мышь, сенсорный экран и геймпад.

Broforce

Broforce

Space Huggers действительно очень похожа на Broforce от Free Lives. Оригинал вышел в 2015 году, а его прототип Rambros сделали за одни выходные для игрового джема Ludum Dare, отмечает Форс. Он добавил, что в рамках исследования для своей игры провёл несколько часов, играя как в Broforce, так и в его прототип, делая заметки.

Разработчик решил использовать процедурно-генерируемые уровни, чтобы сэкономить место и обеспечить реиграбельность. Вместо добавления множества дополнительного контента Форм сосредоточился на создании весёлого и отполированного основного игрового процесса. Для усложнения задачи автор решил добавить в Space Huggers мультиплеер на четырёх игроков — это первый такой проект на JS13K.

Для своего проекта Форс имитировал внешний вид классических 16-битных игр, поэтому Space Huggers использует спрайт-лист в стиле пиксельной графики. Большинство плиток имеют размер 16х16 пикселей, а несколько тайлов меньшего размера — 8х8. Весь спрайт-лист игры — это 16-битное изображение размером 128х48.

Спрайт-лист Space Huggers

Спрайт-лист Space Huggers

При разработке спрайтов для Space Huggers Форс ориентировался на таблицу спрайтов для Broforce, чтобы понять дизайн персонажей. Однако в своей игре он сократил кадры анимации персонажей до двух. Протагонист Space Huggers вдохновлён Гридо из «Звёздных войн».

Конкурс js13kGames или как написать игру объёмом 13 Кбайт - 6

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

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

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

Конкурс js13kGames или как написать игру объёмом 13 Кбайт - 7

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

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

Конкурс js13kGames или как написать игру объёмом 13 Кбайт - 8

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

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

Конкурс js13kGames или как написать игру объёмом 13 Кбайт - 9

Чтобы придать структуру дизайну уровня, на них есть базы врагов, которые состоят из разных комнат и следуют определённому набору правил. Это включает как геометрию уровня, так и размещение врагов и объектов. Форс назвал этот момент, вероятно, самой сложной частью игры.

Конкурс js13kGames или как написать игру объёмом 13 Кбайт - 10

В качестве заднего фона Space Huggers использует многослойную систему неба. Параллакс горного пейзажа генерирует алгоритм, который создаёт ландшафт при помощи крошечного фрагмента кода. Градиент с движущимися звёздами по небу подчёркивает ощущения пребывания на другой планете.

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

За звук отвечает инструмент с открытым исходным кодом ZzFX. Он представляет собой маленький автономный проигрыватель звуковых эффектов, который генерирует аудиосэмплы из 20 параметров. В общей сложности Space Huggers использует 11 различных звуковых эффектов, а правильность их воспроизведения потребовала множества настроек.

Форс поделился, что с Space Huggers он полностью автоматизировал процесс сборки. Разработчик создал BAT-файл для Windows, который объединяет все JS-файлы вместе и запускает Google Closure, Uglife и Roadroller для преобразования кода. Также скрипт объединяет минифицированный код в один HTML-файл и архивирует html при помощи Efficient Compression Tool.

В разные годы Фрэнк Форс работал [35]над играми Psi-Ops: The Mindgate Conspiracy, Red Faction: Guerrilla, Starhawk, Doom (2016) и Mafia III.

Автор: Travis_Macrif

Источник [36]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/395184

Ссылки в тексте:

[1] стартовал : https://js13kgames.com/

[2] Анджей Мазур: https://end3r.com/

[3] Enclave Games: https://enclavegames.com/

[4] создают : https://js13kgames.com/webxr

[5] направлена : https://js13kgames.com/decentralized

[6] OP Guild: https://js13kgames.com/decentralized#challenge-opguild

[7] Avalanche: https://js13kgames.com/decentralized#challenge-avalanche

[8] Thirdweb: https://js13kgames.com/decentralized#challenge-thirdweb

[9] Arcadia: https://js13kgames.com/decentralized#challenge-arcadia

[10] смогут поделиться: https://medium.com/js13kgames/submit-your-game-even-if-its-unfinished-dbf2b6e2905c

[11] ссылке: https://dev.js13kgames.com/submit

[12] был посвящён: https://habr.com/ru/news/768078/

[13] Path Glory: https://js13kgames.com/entries/path-to-glory

[14] Dante : https://js13kgames.com/entries/dante

[15] Space Garden: https://js13kgames.com/entries/space-garden

[16] 2023: https://2023.js13kgames.com/

[17] 2022: https://2022.js13kgames.com/

[18] 2021: https://2021.js13kgames.com/

[19] 2020: https://2020.js13kgames.com/

[20] 2019: https://2019.js13kgames.com/

[21] 2018: https://2018.js13kgames.com/

[22] 2017: https://2017.js13kgames.com/

[23] 2016: https://2016.js13kgames.com/

[24] 2015: https://2015.js13kgames.com/

[25] 2014: https://2014.js13kgames.com/

[26] 2013: https://2013.js13kgames.com/

[27] 2012: https://2012.js13kgames.com/

[28] рассказал : https://frankforce.com/space-huggers-how-i-made-a-game-in-13-kilobytes/

[29] Space Huggers: https://js13kgames.com/entries/space-huggers

[30] LiitleJS : https://github.com/KilledByAPixel/LittleJS

[31] Bounce Back: https://js13kgames.com/entries/bounce-back

[32] NoteCraft: https://js13kgames.com/entries/notecraft

[33] OS13k: https://killedbyapixel.github.io/OS13k/

[34] Egg Time Rewind: https://js13kgames.com/entries/egg-time-rewind

[35] работал : https://www.linkedin.com/in/frank-force-1305b11/details/experience/

[36] Источник: https://habr.com/ru/articles/840006/?utm_campaign=840006&utm_source=habrahabr&utm_medium=rss