Pingvin писал(а):
Alexies писал(а):
Какую конкретно задачу будет решать кастомный код на карточке, которую нельзя заранее заложить в виде параметра?
Придумал организатор новый сценарий игры.
Что ему делать?
Он должен идти на поклон к Pingvin-у и к Alexias и просить их исправить прошивки, да ещё проверить потом, чтобы прошивки работали одинаково.
Второй вариант - и Армада и Каустик могут работать со скриптом.
Оргу остается написать скрипт в блокноте и скинуть на карточки - благо и Армады и у Каустик есть USB и разбирать ничего не надо..
Я понимаю, что Вы предлагаете. Но давайте рассморим гипотетический масштабный сценарий, который придумал орг, и посмотрим Ваш и мой подход. Не будем обсуждать его реальную играбельность и интересность, пусть, для примера, сценарий такой:
Есть 2 команды, террористы и спецназ.
- Сначала спецназ должен захватить 3 контрольные точки строго по порядку, на каждую точку даётся строго N мин времени. Пока не захвачена первая, вторая неактивна. Не успели хоть на одной точке - выиграли террористы. Респун неограничен. Общее время на все 3 точки тоже ограничено и меньше суммарного допустимого времени на каждую (чисто для сложности логики).
- Потом, спецназ должен, например, разминировать здание. Время ограничено. Есть несколько "бомб". Не успели - выиграли террористы. Респун неограничен. Спецназ респится "волнами" с интервалом в 1 минуту (если пришел между волнами - ждешь следующей. Довольно распространено в компьютрных играх)
- Затем, нужно истребить всех террористов. Респаун огрничен, только M раз. Патроны не восстанавливаются (для разнообразия).
Как такую штуку реализую я: скрипты, конечно, будут. Но только на "базе", которая под Android, то есть не ограничена в ресурсах. Ей по радио устройства будут сообщать своё состояние, а она будет решать, какие команды раздать. Все команды, раздаваемые базой конечным устройствам, достаточно просты, например: повязка такая-то, установи количество респаунов на M и время раунда на N. Контрольная точка такая-то, ты теперь активна на 10 минут. Аптечка такая-то, ты спавнишь с интервалом 1 мин начиная вот прямо с этого момента. И т.п. Для исполнения таких команд не нужны скрипты на целевых устройствах. А базовое устройство, связанное по радио со всеми девайсами, которое будет контролировать всю игру, необходимо для хоть сколько-то сложного сценария. Причём, в случае, если потеряется радиосвязь, никакие скрипты бы не спасли: как одна точка узнает, что другую - захватили, и пора менять режим работы?
Конечно, теоретически можно было бы обойтись без базового устройства, и написать довольно сложные скрипты для каждой повязки, точки или аптечки, чтобы они сами определяли, когда что делать. Но тут множество минусов:
- сложность написания этих самых скриптов (Вы часто пишете распределенные приложения с нестабильной связью между участниками сети, которым требуется точная синхронизация стейт-машин? А орги в клубах?
) - в свою очередь, скрипт для одного "сервера" гораздо проще получится.
- сложность доставки этих скриптов до каждого девайса. Соединяться с каждым по блютусу, или того хуже, по кабелю, и не перепутать, что куда загрузить - дофига работы.
- сложность отладки таких скриптов (ой, я там налажал. Пойду обойду все точки, заменю скрипты).
По предыдущим пунктам: если есть возможность загрузки скриптов по радио (не bluetooth), то значит есть "база", и скрипы не нужны, поскольку база сама может всем управлять, как я описал выше.
- слабые антенны: базовый модуль тупо лучше слышит всех, так как имеет хорошую стационарную аненну на возвышенности с плоской диаграммой. А вот аптечка может и не услышать, что где-то там захватили точку и пора менять режим.
ИМХО, без всяких скриптов гораздо проще и ничуть не менее функционально.