Всем привет! Мы — два новоиспеченных разработчика мобильных игр, бывшие однокурсники, выпускники Казанского федерального университета, Айдар и другие.
Айдар: «История нашей игры «Синкомания» началась, когда мне приснился странный сон.
Это была компьютерная игра, в которой четыре белых шара синхронно двигались по квадратному полю.
Когда первый из них вырвался за пределы игрового поля, я проснулся.
На следующее утро я позвонил ему, и в обед мы встретились во дворе университета, где я работал».
Эд: «Какой программист не мечтал создать собственную игру? Летом 2014 года у меня было много свободного времени, и я с радостью ухватился за эту идею.
Тогда мы даже не могли себе представить, с какими трудностями нам придется столкнуться».
Однако на первом этапе мы были полны энтузиазма, все было легко и интересно.
Именно об этом мы и поговорим в первой части статьи.
Итак, на входе у нас была одна простая идея — игрок одним движением управляет четырьмя героями.
Сначала нам нужно было определиться с жанром игры.
Мы довольно быстро отказались от аркадных игр: управлять таким количеством одновременно движущихся элементов — задача непростая.
Нам обоим нравятся медленные интеллектуальные игры, поэтому мы согласились, что это будет пошаговая головоломка.
Правда, пользователям от этого легче не стало — игра получилась хардкорной.
Также мы решили исключить случайные и непредсказуемые элементы, чтобы игровой процесс полностью зависел от действий игрока.
Эд: «Недолго думая, я выбрал Обработка , так как прототипы легко создавать без предварительных настроек.
Кроме того, синтаксис Java позволил нам легко перенести логику игры на Android с помощью таких комбинаций, как Ctrl+C и Ctrl+V, но об этом позже.
Мы создали четырёх героев в виде белых кружков и изменили их координаты с помощью стрелочек на клавиатуре».
Айдар: «Мы установили стартовое положение героев в равноудалённых местах уровня, так как это выглядело симметрично и «почему бы и нетЭ» Впоследствии мы решили, что было бы круто, если бы каждый уровень начинался одинаково».
Немного поэкспериментировав с управлением, мы поняли, что героям нужна цель, какой-то выход из уровня.
Сначала мы рассматривали идею вывода героев за пределы игрового поля (именно это и произошло во сне Айдара).
Но более интересным и драматичным нам показался единственный выход — он наложил больше ограничений (из которых, как известно, рождается творчество).
Так что у нас было единственное условие победы: все герои должны выйти живыми.
Знак выхода обычно подсвечивается зеленым цветом.
Мы сделали то же самое.
«На второй день Они воздвигли стену.
Пусть посередине уровня будет стена, и пусть она отделяет героев от выхода».
Объект-стена является естественным препятствием и основным инструментом построения сценария прохождения.
Интуитивно мы решили, что герой остаётся на месте, если на его пути стоит стена.
Поскольку стены обычно строятся из камня, мы изобразили их в виде серого квадрата.
Игровое поле мы сделали в виде шахматной доски размером 11 на 11. Так легче хранить и перемещать предметы.
Например, если герой находится в левом нижнем углу, то его координаты — [0][0].
Чтобы переместить героя на одну клетку вверх, достаточно прибавить единицу к значению строки: [0+1][0]=> [1][0].
Каждый квадрат может быть занят только одним объектом, что приводит к естественному вопросу: «Что произойдет, если два объекта окажутся на одном квадратеЭ» Впервые мы об этом подумали только тогда, когда один герой уперся в стену, а второй врезался в него.
Так появилось одно из условий проигрыша: два героя на одной клетке взаимно уничтожаются.
Еще одно проигрышное условие появилось, когда мы создали элемент-ловушку — ячейку, при попадании в которую герой погибает. Ловушку нужно было изобразить как нечто опасное и запретное, поэтому, следуя минималистическому стилю, мы выбрали красный квадрат.
Эд: «Мне очень нравится настольная игра "Роборально" , и особенно конвейерная система, которая вносит элемент внезапности, если просчитать свои действия.
Конвейеры срабатывают в отдельной фазе хода (после перемещения героев) и перемещают объекты в направлении стрелки.
Мы привнесли нечто похожее в нашу игру, назвав это потоками».
Нити выполняют две основные функции: 1) Ниппельная система.
Пропускает в одну сторону, но не пропускает обратно.
2) Производственная линия.
С его помощью герои, враги и ящики (о них чуть позже) смогут ездить по заданным маршрутам.
Айдар: «Продолжая поиск изощренных способов убийства героев, мы решили развить идею ловушек и сделать их мобильными.
Сначала у нас была идея ввести в игру маятниковую ловушку, которая будет перемещаться между двумя клетками с определенной частотой.
А вот ловушка, которая может путешествовать по всему игровому полю, гораздо круче.
Такие элементы оказываются «живыми», и мы сразу называем их врагами».
Однако случайное движение элементов вносит в игру непредсказуемость и неуправляемость, что идет вразрез с законами придуманного нами мира.
Поэтому мы решили, что врагами должен управлять сам игрок и, будучи антагонистами героев, двигаться против команд, то есть в противоположном направлении.
Например, если герой идет направо, то враг идет налево.
Когда врагов на уровне достаточно, создается иллюзия, что они живут своей жизнью: катаются ручьями, неудачно бьются головой о стены, умирают в ловушках или на руках друг друга, покидают этот мир через выход и, как будто нарочно (не совсем) все время пытаясь убить героев.
Эд: «На одном из тестовых уровней враги настолько раздражали, что мне всё хотелось отомстить им.
Им нужен был инструмент, а точнее оружие против них, которое могли бы использовать герои.
Перебрав несколько вариантов, мы решили сокрушить врагов тяжелыми предметами».
Мы вспомнили игру «Сокобан» и создали модифицированный тип коробок (новое – это хорошо забытое старое).
Коробки — это, по сути, стены, которые можно толкать, поэтому мы изобразили их в виде небольших серых квадратов с перекрестием.
Они гармонично вписываются в правила нашей игры: если поставить ящик на клетку с героем или противником, персонажи погибнут, так как по закону два предмета не могут находиться в одной ячейке.
Кроме того, ящики могут плавать по течению, а при попадании в ловушку или выход разрушаются.
Как и в игре Сокобан, нельзя толкать больше одного ящика подряд, поэтому могут возникнуть ситуации, когда герой окажется взаперти.
Айдар: «При создании уровня практически невозможно предугадать все возможные решения, и уже в самом начале мы с Эdom заметили, что уровни проходим по-разному.
Это неудивительно, ведь с каждым новым ходом количество государств растет в геометрической прогрессии».
Разнообразие прохождения — особенность игры, которой мы искренне гордимся.
Конечно, большинство уровней можно пройти не задумываясь, но тогда вместо двадцати ходов вам может понадобиться сорок или шестьдесят. Так в игре появился стимул пройти ее еще раз — поиск кратчайшего решения.
Эд: «Лично для меня поиск оптимального пути — моя любимая часть игры.
В самом начале разработки мы создали таблицу, где наши друзья, самые первые пользователи, делились своими рекордами: сколько ходов потребовалось для прохождения уровня.
Установление рекордов и попадание в этот список мотивировали нас продолжать играть».
Перед выходом игры нам нужно было собрать кратчайшие прохождения всех уровней, чтобы оформить их в виде платных подсказок.
Для этого мы запрограммировали алгоритм перебора с ограничениями, но на уровнях с большим количеством объектов он занимал слишком много времени.
Когда время расчета превысило несколько дней, мы решили использовать краудсорсинг (англ.
Crowdwashing, Crowd — «толпа» и сорсинг — «использование ресурсов»).
Если игрок улучшил свой рекорд на одном из уровней, то с помощью Google Analytics мы получали его решение в виде последовательности ходов.
Опытные игроки обычно ищут оптимальный проход эвристически, используя свои устоявшиеся закономерности и избегая лишних ходов.
Таким образом, мы быстро пополнили базу прохождений, но, к нашему удивлению, некоторые игроки все еще продолжают бить рекорды.
Мы тщательно их записываем и обновляем в последующих версиях приложения.
Продолжение следует…
В следующей части мы расскажем о том, как мы разрабатывали загадки и приемы прохождения уровней в игре «Синкомания».
Как мы придумали и сделали нашу первую игру на Android. Часть 2: Уровни Теги: #android игры #java #Разработка мобильных приложений #Разработка игр #Разработка Android
-
Компилятор Befunge Для Python
19 Oct, 24 -
Что Касается Некоторых Блогов
19 Oct, 24 -
Японские Кроссворды На Qtquick
19 Oct, 24 -
Эксплойт На Rbc.ru
19 Oct, 24