Рафаил Агаев
Рафаил Агаев
для
Лого Tproger
0
Обложка: Выиграть $30 000 за 13 килобайт кода на JS: в августе стартует конкурс js13kGames

Выиграть $30 000 за 13 килобайт кода на JS: в августе стартует конкурс js13kGames

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

js13kGames в 2022 году исполняется 10 лет. Согласно правилам, участники должны написать мини-игру на HTML5 и JavaScript, а код должен весить не больше 13 килобайт. Почему 13 килобайт, а не 15 или 10? Веселья ради!

Ежегодное состязание длится месяц: с 13 августа по 13 сентября. Организатор конкурса — Andrzej Mazur, разработчик мобильных игр из Польши и фаундер студии Enclave Games.

Подать работу можно в шести номинациях:

  • Десктопные игры на JS
  • Мобильные игры с использованием сенсорного экрана
  • Мультиплеерные игры на сервере с Node.js
  • Игры на JS с использованием VR (да-да, игры на JavaScript весом в 13 килобайт для VR, вы верно поняли)
  • Игры с использованием блокчейна (sic!)
  • Игры с монетизацией

Правила js13kGames

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

Организаторы настаивают, что js13kGames — это соревнование для кодеров, и главный фокус — код. Архив позволяет легко отправить игру и проверять размер файла.

Flash использовать запрещено. Он проприетарный, а в js13kGames используют только открытые технологии вроде JavaScript, HTML и CSS.

Использовать WebGL разрешается, хотя его и сложно уместить в 13 килобайт. Также разрешены WebAssembly и ⁄ или Rust — они неплохо работают с играми на JavaScript.

Конкурс не запрещает использовать CoffeeScript или TypeScript при написании кода, но отправить на js13kGames нужно только чистейший JavaScript. Здесь организаторы иронично напоминают, что игры отправляются в виде реальной HTML-страницы, а не двоичного кода.

Разрешено сжимать файлы при помощи PNG, хотя это и бессмысленно: .zip лучше с точки зрения сжатия.

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

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

Это требование ввели, чтобы разработчики не писали игру целый год, а потом заявляли, что она была сделана за месяц. Напоминаем, конкурс длится месяц: с 13 августа по 13 сентября.

Инструменты

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

Ниже — часть таких инструментов, которые показались редакции любопытными:

  • LittleJS — Лёгкий 2D-движок для игр на JavaScript с WebGL-рендерингом. Он рендерит 10 тысяч объектов в 60 FPS, позволяет прописывать физику объектов, включает в себя 40 тысяч спрайтов и музыку в mp3
  • ox — Игровой 2D-движок для онлайн-игр, который весит всего 4 килобайта, но позволяет прописывать скриптовые сценарии и поддерживает анимации спрайтов
  • Ocelot — Минималистичный 2D-движок для игр на HTML5, который был создан специально для конкурса. Идеален, если нужно написать бродилку с динамичной камерой
  • js13k-toolkit — Стартер-пак для разработки js13kGames. Набор инструментов разработки, который позволит не превысить ограничение веса в 13 килобайт. Когда код становится слишком большим, предупреждает разработчика, чтобы тому не пришлось проверять всё вручную
  • Kontra — Легковесная библиотека для игр на JavaScript, специально оптимизированная для js13kGames. Есть готовые функции, поддержка анимаций, ивентов, сцен, геймпадов, мыши, клавиатуры — в общем, всего на свете, что понадобится в игре
  • Ga — Крошечная и милая система для разработки игр на HTML5. Заточена под создание jRPG-like игр, в которых нужно взаимодействовать с окружением
  • Mini2Dphysics — 1.5kb 2D-движок с физикой весом всего 1.5 килобайта. Позволяет прописывать, как объекты в игре могут реагировать друг на друга
  • Packer — JavaScript-компрессор
  • Video Game Name Generator — Генератор олдскульного названия для игры. Нам он предложил «Everybody Loves the Raccoon EX», «Rad Jetpack Palace» и «It’s a Mad, Mad WWII Demolition»

Как написать игру, которая может выиграть

Посмотрите на список из 20 лучших игр в 2021 году. Каждая выполнена в космической тематике, но топ-3 явно отличают:

  • наличие чего-то похожего на открытый мир
  • разнообразие объектов
  • геометрическая прогрессия в физических процессах: плавные и усиливающиеся торможение, притяжение планет, и так далее
  • наличие нестандартных анимаций
  • сценарии движения NPC
  • интерактивное окружение
  • кастомные спрайты

Используйте это, чтобы выбиться в топ. Тогда, мы верим, $30.000 станут вашими.

Игры для js13kGames, в которые мы влюбились

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

js13kgames underrun

https://phoboslab.org/

OnOff: Чёрно-белая головоломка, в которой нужно найти выход из локации, переключаясь между двумя картами. Что-то уж очень сильно напоминает, не так ли? Только этот Quantum Break весит всего лишь 13 кБ, помните об этом!

js13kgames onoff

GitHub / starzonmyarmz

The Matr13k: Wake up, Neo! Это — beat ’em up игра, которая могла бы продаваться в виде картриджа в далёких 90-х. Совсем простая, но вызывает такое чувство ностальгии, что не включить её в подборку было бы преступлением.

js13kgames the matr13k

js13kgames / the matr13k

Exo: Защищайте Землю от инопланетных захватчиков, окружая планету спутниками и защитными системами. Добывайте ресурсы и боритесь за выживание. В этой игре удивляет наличие какого-никакого сценария. И это — в 13 килобайтах.

Everyone’s Sky: Очень минималистичная No Man’s Sky. Управляйте космическим кораблем-треугольником, укрывайтесь от метеоритов, добывайте полезные ресурсы, открывайте новые планеты и сражайтесь с другими пионерами космоса. Прекрасно расслабляет, когда нужно, например, дописать статью, но ты немного устал. 😉

js13kgames / Everyone's Sky

js13kgames / Everyone’s Sky

Приняли бы участие?