"Калевала" Настольные игры выглядят очень привлекательно для начинающих разработчиков.
Нет необходимости строить фотореалистичные изображения и использовать сложные шейдеры (хотя никто не запрещает сделай это ).
Даже использование 3D в подавляющем большинстве игр совершенно не обязательно.
Сложность настольных игр сосредоточена на невизуальных компонентах.
Пользовательский интерфейс выглядит до крайности простым и примитивным.
Но… это не так! Сегодня я хочу рассказать о своем опыте разработки дизайна пользовательского интерфейса для настольных игр, накопленном за более чем год работы.
Моя серьезная страсть к настольным играм началась с того момента, как я познакомился Миллионы игр .
Я уже много писал об этом уникальном продукте, позволяющем делать компьютерные настольные игры буквально «на коленке».
Напомню, что именно эта программа послужила прототипом Дагаз — бесплатный и бесплатный продукт, который я сейчас разрабатываю.
Я многому научился у ZoG и этого опыт послужил прочной основой для моего собственного развития.
Было много вещей, которые мне не нравились в ZoG, и это побудило меня работать.
Некоторые вещи были переделаны, но концепции Zillions of Games по-прежнему остаются в основе.
Например, такие как: Параметры Это просто настройки, которые меняют определенные аспекты «поведения» ядра Zillions of Games. Некоторые из них носят чисто декоративный характер (например, с помощью опции «анимировать захваты» можно отключить «улет» снятых фигурок, что почему-то работает по умолчанию), но некоторые из этих настроек настолько важны, что без них корректная работа многих игр была бы невозможна.
Перечислю наиболее важные из них:
- «пройти поворот» — Это можно изменить, но в большинстве игр участвуют два игрока, ходы которых чередуются.
Сделать ход является обязательным, и невыполнение этого требования приводит к немедленному завершению игры (не обязательно проигрышу).
Не все игры такие.
Например, в Идти игрок имеет право «пасовать», пропуская ход, что является важным аспектом правил игры.
Во многих играх, таких как Реверси , игрок должен пропустить ход, если у него нет возможности сделать ход по правилам.
Опция «пропустить поворот» управляет этой функцией.
- "пройти частично" — Более сложная вариация предыдущего варианта, предназначенная для игр с составными (частичными, в терминологии ZoG) ходами.
По умолчанию после запуска цепочки захватов (в таких играх как шашки ), игрок должен завершить его до конца (то есть продолжать брать фишки, пока есть такая возможность).
Обычно это правило сочетается с приоритетом захвата (игрок обязан по возможности захватить фигуру противника).
Я знаю единственный традиционный игра , захват в котором обязателен несмотря на то, что цепочка захватов может быть прервана.
Без опции «пройти частично» было бы невозможно правильно реализовать ее в Zillions.
- «максимальное количество захватов» - Это хитрый вариант! Сам по себе тот факт, что мы обязаны продолжать цепочку захватов до конца, вовсе не заставляет нас брать максимальное количество фигур! При выполнении следующего дубля мы можем «свернуть не туда» и завершить цепочку по более короткой ветке.
Опция «максимальные захваты» не позволит нам этого сделать.
Без этого были бы проблемы с реализацией» Международные шашки "!
- "перерабатывать снимки" — Zillions of Games реализует приемы выпадения (добавление новых фигур на доску) довольно сложным образом.
В частности, для всех фигур, участвующих в таких ходах, должны быть указаны специальные счетчики, учитывающие количество фигур данного типа «вне» доски (это делается с помощью ключевого слова «off»).
Опция «переработать захваты» возвращает захваченные фигуры в соответствующие счетчики, в результате чего их можно снова разместить на доске.
Это редко используемый вариант, но когда он вам действительно нужен, без него не обойтись.
- "включить лишнее" — Еще один вариант, связанный с офф-прилавками.
Исход некоторых игр определяется путем подсчета количества фигур, имеющихся у игроков, но в играх с выпадающими ходами, таких как Сига , необходимо посчитать те фигуры, которые еще не расставлены на доске! Этот вариант делает именно это.
Большинство игр можно реализовать без всего вышеперечисленного, но если требуется что-то особенное, приходится добавлять опции.
Для миллионов игр это хардкод! Причём даже в большей степени, чем вы думаете.
Например, опция «пропустить поворот», помимо понятных всем ЛОЖЬ И истинный включает " принужденный ", и "максимальные захваты", для " Итальянские шашки ", и вообще, включается значением " 2 (в этой игре ферзи считаются «более равными», чем все остальные).
В Dagaz я расширил механизм опций.
Конечно, в тех случаях, когда можно использовать глобальные флаги, я так и делаю, но «maximal-captures», например, кодирует очень сложное поведение, связанное с подсчетом цифр.
Этот вариант реализован расширение игры.
Более того, тот же подход позволил мне реализовать новые опции, спрятав, например, в " отложенные захваты «сложная логика» Турецкая забастовка ", в Zillions традиционно кодируется очень сложным способом.
Как я писал выше, пользовательский интерфейс ZoG выглядит очень просто.
Указываем мышкой, какую фигуру собираемся перетаскивать (при этом подсвечиваются те поля, на которые можно переместить), после чего перетаскиваем фигуру на новое поле.
Здесь есть два момента, которые мне не нравятся.
Первый связан с мобильными устройствами, на которых Dagaz, по крайней мере, работает, а Zillions of Games — нет. На сенсорных экранах указатель мыши успешно заменяется пальцем.
Но это значит, что пока мы на что-то нажимаем, этот самый палец закрывает добрую половину экрана.
В результате становится трудно увидеть подсветку полей.
Когда палец отрывается от экрана, подсветка пропадает. Это кажется очевидным, но поскольку я в основном отлаживал Dagaz на десктопе, то не сразу понял, насколько это чертовски неудобно для пользователей мобильных устройств.
Второй момент связан с «перетаскиванием» фигур по экрану.
Дело в том, что не во всех играх фигурка состоит из одной «фигуры».
В такой ситуации «Drag & Drop» все портит. О миллионах игр похожие игры они выглядят просто ужасно.
Это основная причина, по которой я отказался от перетаскивания.
В Dagaz щелчок по форме «выделит» целевые поля, а затем щелчок по целевому полю вызовет движение.
Для мобильных устройств это вдвойне хорошо, поскольку второе нажатие является своеобразным «подтверждением» — до его завершения можно отказаться от хода, выбрав другую фигуру.
Кстати С этим механизмом связана еще одна довольно спорная опция, включенная в Zillions of Games по умолчанию - " умные ходы Суть ее довольно проста – если вы выбираете фигуру, для которой есть только один допустимый ход, то этот ход выполняется сразу, без всякого «перетаскивания» по доске.
То же самое работает и с целевыми полями, к которым единственный допустимый ход. ведет в сложившейся ситуации ход. Это может здорово сэкономить время, но если вы играете в сложную, незнакомую игру, то это, скорее всего, приведет только к проблемам.
Манкала такая установка просто незаменима.
В Дагазе я разделил "смарт-ходы" на две настройки: "от", которая используется во всех манкалах и головоломках с движущимися фигурами, и "до", для которой есть приложения в " Сокобане " и далее одна игра .
Конечно, значение «true» включит обе настройки сразу, но в подавляющем большинстве игр делать это вряд ли имеет смысл.
Специально для «Сокобана» я тоже сделал альтернативу модуль , который позволяет управлять игрой с помощью стрелок на клавиатуре компьютера.
Завершая разговор о наследии Zillions of Games, хотелось бы поговорить еще об одном важном механизме.
Обратите внимание на желтые прямоугольники на картинке.
Они определяют, какая фигура будет выбрана при щелчке мыши.
В этом и заключается проблема.
Если фигуры расположены в двух (или более) слоях, то область, расположенная выше, всегда будет перехватывать щелчок мыши, независимо от того, есть в ней фигура или нет. Невозможно сосчитать по пальцам, сколько раз меня это беспокоило! Конечно, в Дагазе это исправлено.
В некоторых играх (« Фермерские шахматы ", например) очень важно, чтобы анимация движения фигур выполнялась по определенной траектории.
Передача фигур "по прямой линии" может существенно усложнить понимание правил игры.
Возможны различные подходы.
здесь, но я исходил из того, что модель должна «знать» только начальную и конечную позиции движения.
Всем остальным управляет игровой вид. В конфигурации вида определяются «векторы», соединяющие отдельные позиции, и его задача.
получив пару позиций от модели, автоматически построить последовательность соединяющих их «векторов» для анимации движения.
Анимация движущихся фигур в «Ханойских башнях»
view.addVector(Dagaz.Model.stringToPos("a1"), Dagaz.Model.stringToPos("a6")); view.addVector(Dagaz.Model.stringToPos("a2"), Dagaz.Model.stringToPos("a6")); view.addVector(Dagaz.Model.stringToPos("a3"), Dagaz.Model.stringToPos("a6")); view.addVector(Dagaz.Model.stringToPos("a4"), Dagaz.Model.stringToPos("a6")); view.addVector(Dagaz.Model.stringToPos("a5"), Dagaz.Model.stringToPos("a6")); .
Часто бывает полезно дать игроку визуальное представление о целях игры.
Иногда (как на картинке выше) сама доска является подсказкой, но если этого недостаточно (как в загадки с движущимися фигурами, например), поможет еще один «декоративный» вариант, унаследованный от Zillions. Если " основные цели Активируется, при наведении указателя мыши на фигуру будут подсвечены позиции, в которые ее следует переместить.
Продолжая тему визуальных «подсказок» игроку, стоит рассказать еще об одной новой опции Дагаза.
В играх со сложными составными ходами очень легко заблудиться, забыв (или не осознав), что фигура еще не завершила свой полный ход. При реализации настройки «показ-мигание» я решил не перегружать дизайн новыми цветовыми метками, а использовать анимацию для выделения фигуры, выполняющей движение.
Это решение может показаться избыточным, но важно понимать, что при реализации этого варианта я не ориентировался в первую очередь на шашки.
Есть много гораздо более сложных игр со сложными ходами, например « Ко Сёги " или " Тендзику Сёги «Даже хорошо зная правила, на таких досках очень легко заблудиться.
А еще есть такие игры , конструкция сложного хода которого совершенно необычна:
Тесно связан с этой темой вопрос индикации взятия фигур.
Если взятие в игре шахматное или игра всем знакома (как шашки, например), особых проблем нет, но даже в Шахматах взятая фигура не всегда находится на поле, где заканчивается ход. Что, если игра менее знакомый , указывая на потенциальные дубли, становится жизненно важным.
Более того, некоторые игры должны предоставлять возможность выбор группы захваченных фигур:
На Мадагаскаре Фанороне , существуют два типа ходов захвата: в первом случае захват фигуры (или группы фигур) осуществляется путем приближения к ней, во втором - путем отступления.
В игре могут возникнуть ситуации, в которых игрок должен выбрать, как будет осуществляться захват. Чтобы еще больше усложнить задачу, этот захват можно встроить в цепочку сложных приемов.
Также возможность выбора захваченных фигур востребована в играх с «бонусным» захватом, таких как « Мельница ", " Йотай " или " Болото ".
Как и в случае с «показом-миганием», я решил не перегружать интерфейс цветной разметкой, а отображать потенциальные захваты полупрозрачными фигурами.
Движения падения отображаются таким же образом.
Фигура, добавленная на доску с помощью хода-капля, отображается в полупрозрачном виде при наведении указателя мыши на соответствующую позицию (к сожалению, на мобильных устройствах такая индикация не работает).
В некоторых случаях правила игры не допускают сбрасывающих ходов во всех позициях.
Если разрешенных для хода позиций мало, чтобы не вводить игрока в заблуждение, имеет смысл вывести на доску все разрешенные ходы.
Это хорошо работает в таких играх, как Реверси И Рэндзю , с его дебютным регламентом:
Очень часто запрещенных ходов гораздо меньше, чем разрешенных (это касается фолам в рэндзю , Например).
Запрещенные позиции должны быть отмечены, чтобы не вводить игрока в заблуждение.
Ничего нового я не придумал и использовал известное многим игрокам обозначение» Ко.
".
В Рэндзю , Фанци И похожий их В играх на доске может быть более одного такого поля.
Также есть некоторая сложность, связанная с перемещением фигур.
В играх семьи» Мельница ", может существовать правило, запрещающее построение одной и той же строки два раза подряд. При этом не совсем корректно отмечать только пустое поле, завершающее строку, поскольку переход на эту позицию может быть допустимым если это приведет к строительству другой ряд. В этом случае имеет смысл обозначить все фигуры, составляющие форму:
Вот что я получил» Мельница ".
В ассортимент .
И еще пара похожий игры от китайских товарищей и, конечно,» Болото «Конечно, это не конец истории.
Я, например, очень хочу сделать это этот игра.
Правда, одними вариантами здесь дело не ограничится.
Теги: #Разработка игр #Игровой дизайн #Логические игры #Юзабилити #настольные игры #Пользовательский интерфейс #Настольные игры #Дагаз
-
Магазин-Прокси
19 Oct, 24 -
Вордпресс 2.7
19 Oct, 24 -
Откуда Рыковский Трафик?
19 Oct, 24