Оглядываясь назад на процесс разработки моей игры Ludum Dare

Ludum Dare — это геймджем, который проводится два раза в год, и у вас есть 48 часов, чтобы создать игру полностью с нуля. Тема объявляется в начале, но большинство тем допускают широкий спектр игровых жанров. В Ludum Dare есть два набора правил: Compo и Jam. Compo — это хардкорная версия, в которой у вас есть 48 часов на создание игры, и все должно быть создано в течение этого периода, включая все ресурсы, звуки, музыку и т. д. Правила Jam более свободны: группы могут участвовать, у них есть 72 часа. и может использовать некоторые ранее существовавшие активы. Это был мой восьмой раз участия, и я работал в категории Compo.

Тема

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

Когда была объявлена ​​тема «Застрял в петле», я поначалу не очень обрадовался, потому что казалось, что она не соответствует ни одной из моих идей. Но после некоторого мозгового штурма я придумал план, которым остался доволен: пошаговая игра против ИИ-противника. Каждый ход игрок берет случайные карты. Каждая карта представляет плитку мицелия, и плитки можно размещать на карте на соответствующих краях. Когда 4 плитки в узоре 2x2 образуют петлю, вырастает гриб, который дает дополнительную энергию, поэтому в будущих ходах можно разыграть больше карт. Чтобы выиграть игру, игрок должен стать доминирующим видом грибов и победить черную плесень (противника).

Язык программирования

Для этого Ludum Dare я снова использовал JavaScript и HTML5. По сравнению с другим моим выбором C++ и OpenGL, у него есть несколько преимуществ. Во-первых, это веб-сайт, и люди предпочитают играть и оценивать веб-игры. А в современных браузерах производительность JavaScript и HTML5 более чем достаточна для большинства геймджемов. Также намного проще поделиться исходным кодом небольшой веб-игры, что является требованием набора правил Compo. Если бы я пошел с C++, мне пришлось бы делиться всеми своими внутренними библиотеками, а они действительно беспорядочны и совсем не в состоянии для публикации, или участвовать в Jam, который мне не так нравится, как Compo.

Реализация

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

Первой механикой, над которой я работал, было перетаскивание карт. Сначала просто следуя за мышью, а затем привязываясь к действительным тайлам. Затем пошли правила размещения, которые было немного утомительно реализовывать, потому что есть 11 разных плиток с 4 сторонами каждая, и мне нужно было рассмотреть все возможные комбинации. А позже я также добавил исходные плитки с другими правилами размещения и атакой противника, что добавило еще больше условий к размещению плиток. Вероятно, есть лучший способ реализации правил размещения, который потребовал бы меньше ручной работы, но я не смог вовремя его придумать. Второй утомительной механикой было обнаружение петель, потому что для каждой плитки существует 4 различных возможных петли.

После того, как основная механика размещения была готова, пришло время поработать над ИИ-оппонентом. Это была моя первая игра Ludum Dare, в которой я пытался сделать что-то подобное, поэтому я не был уверен, насколько хорошего противника с искусственным интеллектом я смогу создать за ограниченное время. Я не всегда имел в виду ИИ, когда реализовывал правила размещения, поэтому мне пришлось внести несколько модификаций, чтобы они работали для ИИ. Но в целом мне удалось создать достойного соперника за разумное время. Это ни в коем случае не идеально, и это обман, но достаточно правдоподобно для нескольких раундов.

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

Графика

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

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

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

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

Музыка

Даже правила compo позволяют процедурным генераторам создавать музыку (или другие активы), что отлично для меня, потому что я понятия не имею, как сочинять музыку (хотя я хотел бы когда-нибудь научиться этому). Есть несколько музыкальных генераторов, но я использую Wolfram Tones. Он имеет широкий спектр различных музыкальных стилей и очень прост в использовании. Некоторые композиции звучат немного странно, но через несколько минут вообще можно найти ту, которая подходит игре.

Звуковые эффекты

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

Я также записал, как произношу несколько коротких фраз, которые после некоторой постобработки в Audacity оказались лучше, чем я ожидал, так что, возможно, я буду использовать это больше в будущем. И небольшое примечание: у меня не было поп-фильтра для микрофона, но у меня на столе была маска, а ношение маски имеет тот же эффект, что и поп-фильтр.

Полировка

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

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

Балансировка

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

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

Если вы хотите попробовать игру, вы можете сделать это здесь: https://pingpoli.de/ld47/

Первоначально опубликовано на https://pingpoli.de.