Difference between revisions of "Mapsoft"
m |
m |
||
Line 5: | Line 5: | ||
<poem> | <poem> | ||
− | [[User:Mezriss|Mezriss]] - lead developer | + | [[User:Mezriss|Mezriss]] - lead developer. |
− | [[User:insd7s|insd7s]] - assistant developer | + | [[User:insd7s|insd7s]] - assistant developer. |
</poem> | </poem> | ||
Revision as of 08:58, 26 October 2011
Contents
Техническое задание на разработку мапсофта
Перечень почётных ниггеров
Назначение мапсофта
(В этом разделе предполагается перечисление сценариев использования, при которых этот мапсофт при имеющемся функционале будет предпочтительней всех конкурентов) (Этот текст будет пугать посетителей на главной странице)
Требования к мапсофту
- Софтина должна строиться на базе клиент-серверной архитектуры. Вся информация хранится на сервере, клиент используется только для отображения и кеширования. Актуализация клиентской информации должна производиться в реальном времени, с интервалом опроса не больше пяти секунд.
Аутентификация и доступ
- Аутентификация пользователей одним кликом через OpenID (кнопки для аутентификации через гугл, твиттер, фейсбук, (опционально через произвольный OpenID)). Пользователь имеет право создавать под своим аккаунтом карты, выставлять им статус "открытая/приватная".
- Приватную карту может просматривать только её создатель (ака мастера), используется, например, для мастерских заготовок впрок.
- Для приватной карты можно указать список пользователей, у которых будет доступ к ней, если она будет сделана публичной.
- Открытую карта могут просматривать все, у кого есть ссылка на нее и кому её создатель дал доступ.
- Если доступ дан "всем", то карту может просматривать кто угодно при наличии ссылки (удобно для карт турниров)
- Опционально создатель может дать доступ только некоторому количеству пользователей, но не более Х (для обычных игр, предбоевой подготовки).
- Созданную открытую карту можно сделать активной.
- Игроки, у которых есть доступ, получают уведомление, на их страницах она отмечается как активная
- Игроки могут управлять присвоенными ими токенами (с учетом всех ограничений), токены добавляются в ростер инициативы
- Приватную карту может просматривать только её создатель (ака мастера), используется, например, для мастерских заготовок впрок.
Создание карты
Создание карты для стартового функционала программы рудиментарно. Указываются:
- название карты
- тип карты
- список пользователей, у которых есть доступ
- ссылка на картинку для карты (или аплоад на imgur, если в данный момент не исчерпана квота или аплоад в дропбокс) или текстура для фона из набора
- масштаб картинки или текстуры (настраивается ползунком)
- размеры карты, если выбрана текстура (установлен размер по умолчанию Х)
- тип сетки (квадраты, гексы, отсутствие), её размер (ширина одной ячейки; не меньше Х, не больше Y, настраивается ползунком)
После окончания создания можно начать рисовать туман, расставлять токены, менять её статус, делать активной
Туман войны
- Игроки видят туман как непрозрачную текстуру/цвет, создатель карты - с прозрачностью 0.Х
- В настройках карты создатель может выбрать текстуру из набора или цвет
- Управление туманом производится через кнопки "залить" и "очистить" и рисованием курсором с зажатым shift'ом (обновленное состояние тумана отправляется игрокам и добавляется в историю только после того, как создатель отпускает shift)
По хорошему нужна возможность иметь отдельный туман для каждого игрока/токена, но это все переусложнит
Токены
Круглые хреновины, которые можно перемещать. При создании указываются:
- Имя токена
- Размер в клетках/гексах или произвольный, если на карте нет сетки (не меньше Х, не больше Y; настраивается ползунком)
- Цвет
- Буква в центре или ссылка на фоновую картинку (опционально; возможно для простоты стоит отказаться от картинок)
После создания можно:
- Дать доступ к токену какому-то игроку
- Добавить токен в ростер инициативы
- Указать дополнительную информацию в формате ключ-значение.
- эта информация вместе с именем отображается при наведении
- Значение может отображаться как текст или как полоска, если оно было указано как процент или в формате Х/Y.
- Каждое значение может отображаться только для создателя карты / для создателя и игрока, которому присвоен токен / всем (по умолчанию)
Интерфейс карты
Основное окно страницы с картой состоит из карты и 2 перемещаемых панелей:
- горизонтальная панель - ростер инициативы
- вертикальная панель со всем остальным и иконками для переключения между панелями:
- история - сюда записываются сообщения о происходящем (перемещение токенов, стирание туманы, конец хода и т.п.), можно "исследовать" историю (см. историю в фотошопе) и смотреть что было раньше (вкладка по умолчанию)
- под историей текстовое поле - создатель может создавать произвольные оповещения, которые будут добавлениы в историю (с пометкой "объявление" или что-то в таком духе)
- текстовое поле для строки дайса, кнопка для броска
- список просматривающих карту и присвоенных им токенов (в первую очередь те, у кого есть токены, в самом конце - количество незалогиненных зрителей)
- настройки выбранного токена (или сделать редактирование информации сразу в тултипе, всплывающем при наведении на токен?)
- настройки карты и всего прочего
- мастер может менять фоновую картинку (и какие-то еще настройки)
- игрок может настраивать способ оповещения о начале нового хода (звук, алерт, что-то еще)
- история - сюда записываются сообщения о происходящем (перемещение токенов, стирание туманы, конец хода и т.п.), можно "исследовать" историю (см. историю в фотошопе) и смотреть что было раньше (вкладка по умолчанию)
Карта это картинка + сетка (опционально) + токены + флажки + вейпоинты
- Координаты хранятся попиксельно; если на карте есть сетка, то при перемещении токенов они устанавливаются в центр
- В одной ячейке сетки может быть до 8 токенов и до 8 вейпоинтов; они все устанавливаются с Х% смещением от центра
- Если несколько токенов разного размера находятся очень близко, то сверху рисуются более мелкие
Управление картой и токенами
- Флажки для привлечение внимания - каждый игрок может поставить указатель с подписью (привлечь внимание к чему-то на карте)
- Не больше Х одновременно присутствующих на карте флажков от каждого игрока
- Кнопка для удаления, доступная как игроку, так и мастеру
- Флажок окрашен в цвет первого токена, присвоенного игроку, до наведения на него курсора отображается с 0.Х прозрачностью
- Создание вейпоинтов для перемещения токена
- Новый вейпоинт создается перетаскиванием токена в нужное место
- Старые вейпоинты можно перетаскивать в другое место или удалять; если удален вейпоинт из середины цепи, оставшиеся соединяются
- Рассчитывать расстояние и показывать на каждом вейпоинте (возможно фича лишня; нужно предусмотреть несколько правил, по которым рассчитывается)
- Где-то у мастера есть кнопка для одобрения пути, после нажатия токен перемещается (возможно стоит при включении настройки разрешать игрокам двигать токены самим?)
История
В лог истории записываются все действия происходящие с картой, объявления мастера
- События могут быть публичными и тайными (то, что мастер делает с токенами под туманом); тайные события отображаются только у мастера или у всех после отправки карты в "архив" (может быть полезно для турниров)
- При клике по какому-то событию, карта показывается на момент этого события; чтобы продолжить следить за событиями в нормальном режиме нужно кликнуть по выбранному событию во второй раз или выбрать последнее событие
Типы событий, сохраняющихся в истории:
- Объявление (мастер записывает в лог строку текста)
- Результат броска дайсов
- Создание токена, удаление токена, изменение имени токена
- Редактирование статистики на токене (скажем "Хобгоблин: -85% хп")
- Изменение тумана
- Начало раунда N
- Конец хода %токена% (игрок нажал кнопку "окончить ход")
- Начало хода %токена% (мастер запустил ростер инициативы или нажал кнопку "следующий ход"). При этом событии хозяин токена оповещается.
- Изменение инициативы %токена%
Ростер инициативы
Ростер это табличка со следующими колонками:
- Имя токена
- Инициатива (1 или более значений через запятую; сортировка всегда по первому значению)
- Статус (текстовое поле)
- Значение одного из информационных полей с чара (это как-то где-то настраивается)
Управление ростером:
- Кнопка "добавить все токены", кнопка "добавить токен" (с выпадающим меню для выбора)
- Кнопка "отсортировать", чекбокс "автоматическая сортировка", селект "по убывающей/по возрастающей"
- Кнопка "конец хода" (нажимается игроком, когда он расставил вейпоинты и ждет утверждение)
- Кнопка "следующий (доступна только мастеру)
- Строки в ростере можно перемещать перетаскиванием
Дайс
В текстовое поле вводится строка с формулой броска. Строка разбирается на сервере, где и происходит "бросок". Результат вместе с именем игрока добавляется в историю.
Страница пользователя
На ней отображаются:
- Список созданных им карт (вход для редактирования, смена типа открытая/приватная, установка её в активный режим, удаление)
- Список публичных карт, к которым ему дали доступ или присвоили токен, активные выделены
- Настройки сайта, если такие будут реализованы (смена языка, смена темы оформления, список игнорируемых пользователей)
Прочее
- Блэкджек, шлюхи.
- Поддержка макоебов.
Планы на очень далекое будущее
- Чат
- Рисование карты заготовленными тайлами
- Социальная хренотень с календарями доступности игроков, напоминанием об играх