Пытаюсь
обобщить информацию по использованию
таймеров в играх для разработки
универсального устройства. Первый этап
- проанализировать типовые сценарии
применения и набор настроек в таймере,
которые это обеспечат.
Как результат
- разработка универсального таймера,
который можно применять для очень
широкого набора сценариев. Если я вдруг
что-то упустил, надеюсь на помощь
зала.Дальше будет многабуков.
Предыстория
Сейчас работаю
над одним проектом, целью которого
является создание относительно
универсального таймера для нескольких
сецнариев игр. Но, обнаружив, что ресурсов
в железе остаётся еще дохрена, решил
расширить задачу.
Итак, что
имеется сейчас в виде работающего
макета:
- экран (4 строки по 20 символов),
- считыватель RFID,
- клавиатура с цифрами 0-9, знаками * и #, буквами A-D,
- светодиод (многоцветный),
- выход для пиротехники (внутри разъем типа тюльпан),
- питание от 2-3 элементов АА,
- как вариант - будет отдельное питание для инициации пиротехники, чтобы процессор в случае несрабатывания не оставался без питания.
Аппаратная
платформа достаточно мощная, чтобы в
дальнейшем прицепить:
- энергонезависимые часы (можно применить, к примеру, для включения подсветок только в ночное время, что продлит время работы от батарей)
- память для запоминания времени событий (и кодов RFID), что позволит даже учитывать когда именно точка переходила из рук в руки, кто герой и всё такое
- карту памяти (SD) для сохранения расширенного лога игры и, возможно, настроек
- подключение по usb, для считывания списка событий и клонирования настроек
- модуль беспроводной связи точек со штабом, но это явно не дешевая опция (так как придётся дополнительно разворачивать сеть ретрансляторов).
Кстати, те же RFID ключи используются в системе учёта мертвяка, что весьма удобно. Итак, возвращаясь к теме таймера, пока
что первое, что пришлось сделать -
проанализировать сценарии.
Виды сценариев
- Классическая контрольная точка
- стороны нажимают свои кнопки, им идёт счет времени
- прямой счет времени каждой стороны
- счет без ограничения
- Классическая удерживаемая точка
- прямой счет времени
- счет без ограничений
- при отсутствии нажатий счет останавливается через указанное время (например, надо минимум 1 раз в 20 минут подтверждать владение точкой)
- Контрольная точка, короткая игра
- прямой счет времени
- общее время ограничено (обратный счет суммарного времени)
- Контрольная точка, задача удержать заданное время
- обратный счет времени
- время сбрасывается в начальное значение при запуске другой стороной- счет замораживается по достижении нуля
- Бесконечный источник ресурса
- прямой счет времени
- счет без ограничения
- для активации необходим идентификатор
- Конечный источник ресурса
- прямой счет времени
- счет времени ограничен суммарно (обратный счет суммарного времени)
- для активации необходим идентификатор
- Источник необходимого ресурса
- обратный счет времени
- счет времени завершается при достижении нуля (набрали сколько сказано)
- для активации необходим идентификатор
- Источник необходимого ресурса, добыча фиксированными порциями
- обратный счет времени
- счет времени завершается при достижении нуля
- при отбитии точки чужой стороной время добывающей стороны округляется вниз до ближайшего кратного указанному значения (то есть учитывается, например, каждый полный час удержания ресурса)
- (как вариант) время сверх кратного указанному переходит захватившей стороне
- для активации необходим идентификатор
- Пусковая установка - надо дойти до установки, ввести код или иным способом активировать, при этом начнется отсчёт времени до пуска, в течение которого надо удерживать точку (т.е. аналог сценария 4)
- обратный счет времени
- для активации необходим идентификатор
- при захвате точки изначальной стороной счет времени сбрасывается в исходное состояние (предотвратили пуск, надо заново всё осуществлять)
- Тупо таймер
- приносится стороной на точку, устанавливается, подключается к пиротехнике и далее см. сценарий 9, но теперь отключающая сторона должна ввести код
- обратный счет времени
- для останова счета необходим идентификатор
Список настроек
Все сценарии имеют сходные черты - счёт времени, при захвате точки что-то произойдёт, счёт как-то заканчивается и всё такое. Так что пришлось обобщать и составлять список настроек, которые позволят
реализовать описанные сценарии.
Настройки:
- Стороны:
- количество сторон (от 1 до 4, больше на экран не лезет)
- Цвета сторон (красный/синий/желтый/зеленый и может другие, чтобы можно было сделать визуальную индикацию текущей принадлежности точки многоцветным светодиодом)
- Счет времени сторон (общий для всех сторон конфликта)
- прямой счет времени (от 0 вверх, часы)
- обратный счет времени (от указанного времени, таймер)
- Общий счет времени
- прямой (часы)
- обратный (таймер)
- отключен (для игр без ограничения времени)
- Сброс счета стороны - для останавливаемых таймеров, счета ресурсов и прочих извращений
- по нажатию другой стороны
- по особому RFID- по особому коду
- сброс до целого количества интервалов (для сбора ресурсов фиксированными объемами)
- отключен (для обычных таймеров)
- Конец игры - условие, по которому счетчик блокируется, запоминая текущий счет
- достижение счета стороны заданного N
- достижение счета стороны 0
- достижение общего счета заданному N
- достижение общего счета 0
- отключен (бесконечный счет)
- Останов счета текущей стороны
- при нажатии кнопки другой стороны (классический счетчик)
- автоматически при отсутствии нажатий в течение N минут (для точек, где обязательно надо подтверждать присутствие)
- при вводе кода-при предъявлении RFID
- Акивация счета другой стороны
- кнопкой стороны (захватили точку, нажали и пошел учёт
- RFID стороны (не просто захватили, а привели техника стороны и он запустил)
- RFID + кнопка стороны (см. выше, но ключ-карта запуска может переходить от стороны к стороне)
- код стороны (можно сообщать стороне коды активации при выполнении какого-то квеста)
- общий код + кнопка стороны (код активации спрятан на полигоне в нескольких экземплярах)
- Запуск общего счета времени (начало игры)
- по любой кнопке
- по любому RFID
- по определенному RFID (организатором)
- по коду (организатором)
- через указанное время (минут)
- в указанное время (при наличии часов в устройстве)
- Действия по достижении условия окончания игры
- выход под электроинициацию (можно прицепить пиротехнику)
- звуковой сигнал (скажем, за минуту начинает пищать, нервируя окружающих)
- звуковой сигнал + по окончании инициация
- ничего
- Подсветка дисплея
- постоянно
- по событиям (экономим электричество включая каждую минуту + по нажатию кнопок на несколько секунд)
- отключена (пусть фонарики носят)
- Маяк - светодиод, показывающий точку в ночное время или если точка стоит где-то в подвале
- вкл постоянно (цвет стороны)
- вкл постоянно (белый)
- мерцание (цвет стороны, включается каждую минуту на несколько секунд)
- мерцание (белый, см. выше)
- выключен
0 Комментарии