16–08–2020

В прошлом месяце я решил принять участие в своем первом GameJam — Gamemaker’s Toolkit Game Jam 2020, организованном itch.io. Если вы не знакомы с GMTK, это канал на Youtube, созданный (в основном) одним парнем, у которого есть интересные идеи о том, как создаются игры. Вы можете найти его канал на YouTube здесь. Оказывается, у него есть совсем следующее; Игровой джем GMTK — крупнейший из когда-либо организованных itch.io, и он продолжает расти из года в год.

Когда мне было около 18 лет, я действительно видел себя в разработке игр. На самом деле этого никогда не было! Я написал пару небольших игр, но мои интересы и обязательства всегда вели меня куда-то еще. Как и большинство других людей, которых я знаю, я был заблокирован из-за глобальной пандемии 2020 года, и поэтому мне пришлось найти несколько проектов в помещении, чтобы заполнить свое время. Я подумал, если не сейчас, то когда. Итак, как и в случае с моей первой записью в демосцене, я взял на себя обязательство войти и пройти игру в течение 48 часов!

Правила игры

Большинство игровых джемов имеют ограничение по времени. Этот джем начался в пятницу в 8 вечера и закончился в воскресенье в 8 вечера. Ожидается, что вы напишете большую часть своего кода во время джема, хотя это довольно сложно обеспечить. Рекомендуется ряд инструментов, таких как Unity (конечно же!), Gamemaker Studio и Stencyl и другие. Также принимаются игры на основе WebGL и HTML. Пока игра работает на Windows, это считается — так что никаких игр для мобильных устройств, виртуальной реальности или Linux (Бу-у!).

Хорошо работать одному или в команде. На ранних этапах мне помогал мой партнер (см. следующий раздел), но я был один для кодирования и любых необходимых мне ресурсов.

Также есть тема, которая объявляется в самом начале джема. Обычно GMTK придумывает интересные темы, простые, но заставляющие задуматься о дизайне. Обычно это всего несколько слов. В этом году это был «Выход из-под контроля». Как по-вашему, вполне уместно?

За каждую игру голосует общественность. Хозяин GMTK играет в 100 лучших из этих игр, выбирая 20 из них для индивидуальной похвалы. Игры оцениваются по представлению, веселью и тому, насколько хорошо они соответствуют теме.

Мой подход

Я решил, что буду работать с pygame для своей работы. Я был почти уверен, что смогу разрабатывать на своем ноутбуке с Linux, создавать сборку Windows на виртуальной машине и, возможно, тестировать на реальном компьютере с Windows, если у меня будет время. Я чувствовал, что хотя запись pygame будет двухмерной и не такой флэш-памяти, как некоторые записи Unity, я все же смогу участвовать в дизайне игры; придумывать идеи и быстро их тестировать. Я стремился не к чему-то отполированному, а к чему-то реализованному.

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

Я смотрел видео с подсказками о геймджеме, опубликованное на канале GMTK; некоторые советы разработчиков были довольно хорошими. Мой главный вывод заключался в том, как разделить свое время. Было предложено, чтобы первый вечер был мозговым штурмом вдали от компьютера. Запишите свои идеи и нарисуйте несколько эскизов. Не кодируйте все, но имейте план. Первый день должен закончиться основным ядром вашей идеи и рабочей сборкой. Последний день должен быть посвящен усовершенствованиям и дополнениям, которые сделают игру по-настоящему яркой. Я решил, что это хороший совет, и согласился.

Мозговой штурм

Мой партнер имеет некоторый опыт в разработке планов и творческой работе. Она предложила мне начать с широкого, а не вдаваться в подробности о первой идее, которая придет мне в голову. Действительно, мы стали думать вовсе не об играх, а о том, что означает фраза «вышел из-под контроля». Широко подумав, я взял блокнот и ручку и начал набрасывать идеи. Я обсудил их со своим партнером, который предложил мне дополнительные вопросы для рассмотрения. Это помогло развить воображение. Здорово, если у вас есть кому поделиться идеями.

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

После часа или около того, когда я намеренно не фокусировался ни на одной идее, у меня возникло четыре разных идеи о том, что означает «выйти из-под контроля». В тот момент я вообще не думал об играх. Следующим шагом было удаление наименее привлекательной идеи и переход к остальным трем. Еще немного времени ушло на эти идеи и вторую убрали. Примерно в это же время я начал думать об играх. Как мне воплотить эту идею в жизнь и как это будет весело?

С парой идей, которые казались сильными соперниками, я решил остановиться на одной и двигаться дальше, наконец, составив примерный план. Как бы игра была закодирована в общих чертах. Имея все это в виду, я лег спать в разумное время! Один из советов разработчиков, который я слышал, заключался в том, чтобы позаботиться о себе. Я решил, что приму это близко к сердцу и не протяну дурацких ночей (в любом случае, я слишком стар для этого!)

Кодирование всего этого

Я решил попробовать сделать игру, вдохновленную Игрой жизни Конвея. Я думал, что простые системы могут выйти из-под контроля, как только вы пытаетесь подчинить их своей воле. Можете ли вы достичь стабильного или устойчивого состояния? Я подумал об обстановке и выбрал свет или огонь. Цель игры состоит в том, чтобы держать свет горящим как можно дольше. Пожары рядом друг с другом будут распространяться быстрее, а если поджечь специальный квадрат, то вещи взорвутся. В некоторых районах топлива больше, чем в других. Вы можете размещать костры только там, где вы можете видеть, и у вас не так много поджигателей. Как долго вы можете продержаться?

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

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

К середине последнего дня все это было на месте. Теперь мне нужно было собрать сборку для Windows. Использование pyinstaller казалось хорошим криком. У меня была виртуальная машина с Windows 7, доступная через Virtualbox, поэтому я скопировал игру и создал там exe. Однако моя первая попытка не удалась. Одну из библиотек Python, которые я использовал, нужно было собрать из исходного кода. Я пытался использовать библиотеку для генерации шума Перлина для ландшафта, однако не было времени установить Visual Studio только для этого, поэтому я отправился на поиски альтернативы.

Имея рабочую сборку, я решил, что последнее, что мне нужно сделать, — это протестировать Windows 10 без какого-либо установленного Python, просто чтобы убедиться. К счастью, у меня был доступ к такой машине. Программа работала просто отлично. Теперь, когда у меня была рабочая сборка, я мог добавить некоторые уточнения. Я еще немного поиграл с игровой механикой, добавил базовую графику, игровые состояния, и как только это было сделано, я решил на этом закончить. У меня оставалось около 6 часов, но я решил отправить сборку и посмотреть, что произойдет.

Вы можете скачать мою игру Slow Burn на моей веб-странице itch.io. Это не здорово, но тогда это не нужно для варенья. По крайней мере, это доставит вам несколько минут удовольствия.

Чему я научился?

В целом, я получил 4271 балл из 5411. Не так уж и плохо для моего первого GameJam. Больше всего меня порадовала оценка «оригинальности» — 3083. Думаю, мне удалось уловить концепцию «выход из-под контроля», даже несмотря на то, что игра выглядит не очень хорошо. Несколько человек увидели в нем «обратный минный тральщик», что я вроде как вижу. Я приму это как комплимент, так как люди любят тральщик! :)

Так чему же я тогда научился? Ну, во-первых, я думаю, что совет, который мне дали, был точен! Разделение вашего времени так, как я, казалось, действительно сработало. Посвятить целый вечер мозговому штурму, рисованию, обсуждению и игре вдали от клавиатуры было отличной идеей!

Во-вторых, я думаю, что был и прав, и не прав, выбрав PyGame. Неправильно, потому что он не такой мощный, как Unity; вы можете сделать гораздо больше за меньшее время в Unity. Однако я был прав, выбрав PyGame, потому что это то, что я знаю. Последнее, что вы хотите делать на GameJam, — это изучать еще один набор библиотек, инструментов или языков программирования. Я думал об использовании чего-то вроде годо, которое я, вероятно, мог бы выучить, но передумал. Если бы я тратил меньше времени на кодирование, мне пришлось бы заняться артом и звуком, что для меня гораздо сложнее.

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

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

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

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

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

Я бы порекомендовал GameJam всем, кто когда-либо хотел сделать игру. Я очень рада, что приняла участие, и с нетерпением жду следующего.