|
|
(5 intermediate revisions by 3 users not shown) |
Line 1: |
Line 1: |
− | [[Category:Служебное]] | + | [[Category:Project]] |
− | = Техническое задание на разработку мапсофта =
| + | Теперь в гуглосайтах. |
− | | |
− | == Перечень почётных ниггеров ==
| |
− | | |
− | <poem>
| |
− | [[User:Mezriss|Mezriss]] - lead developer
| |
− | [[User:insd7s|insd7s]] - assistant developer
| |
− | </poem>
| |
− | | |
− | == Назначение мапсофта ==
| |
− | (В этом разделе предполагается перечисление сценариев использования, при которых этот мапсофт при имеющемся функционале будет предпочтительней всех конкурентов)
| |
− | (Этот текст будет пугать посетителей на главной странице)
| |
− | | |
− | == Требования к мапсофту ==
| |
− | | |
− | * Софтина должна строиться на базе клиент-серверной архитектуры. Вся информация хранится на сервере, клиент используется только для отображения и кеширования. Актуализация клиентской информации должна производиться в реальном времени, с интервалом опроса не больше пяти секунд.
| |
− | | |
− | === Аутентификация и доступ ===
| |
− | * Аутентификация пользователей одним кликом через OpenID (кнопки для аутентификации через гугл, твиттер, фейсбук, (опционально через произвольный OpenID)). Пользователь имеет право создавать под своим аккаунтом карты, выставлять им статус "открытая/приватная".
| |
− | ** Приватную карту может просматривать только её создатель (ака мастера), используется, например, для мастерских заготовок впрок.
| |
− | *** Для приватной карты можно указать список пользователей, у которых будет доступ к ней, если она будет сделана публичной.
| |
− | ** Открытую карта могут просматривать все, у кого есть ссылка на нее и кому её создатель дал доступ.
| |
− | *** Если доступ дан "всем", то карту может просматривать кто угодно при наличии ссылки (удобно для карт турниров)
| |
− | *** Опционально создатель может дать доступ только некоторому количеству пользователей, но не более Х (для обычных игр, предбоевой подготовки).
| |
− | ** Созданную открытую карту можно сделать активной.
| |
− | *** Игроки, у которых есть доступ, получают уведомление, на их страницах она отмечается как активная
| |
− | *** Игроки могут управлять присвоенными ими токенами (с учетом всех ограничений), токены добавляются в ростер инициативы
| |
− | === Создание карты ===
| |
− | Создание карты для стартового функционала программы рудиментарно. Указываются:
| |
− | * название карты
| |
− | * тип карты
| |
− | * список пользователей, у которых есть доступ
| |
− | * ссылка на картинку для карты (или аплоад на imgur, если в данный момент не исчерпана квота или аплоад в дропбокс) или текстура для фона из набора
| |
− | ** масштаб картинки или текстуры (настраивается ползунком)
| |
− | ** размеры карты, если выбрана текстура (установлен размер по умолчанию Х)
| |
− | * тип сетки (квадраты, гексы, отсутствие), её размер (ширина одной ячейки; не меньше Х, не больше Y, настраивается ползунком)
| |
− | После окончания создания можно начать рисовать туман, расставлять токены, менять её статус, делать активной
| |
− | === Туман войны ===
| |
− | * Игроки видят туман как непрозрачную текстуру/цвет, создатель карты - с прозрачностью 0.Х
| |
− | * В настройках карты создатель может выбрать текстуру из набора или цвет
| |
− | * Управление туманом производится через кнопки "залить" и "очистить" и рисованием курсором с зажатым shift'ом (обновленное состояние тумана отправляется игрокам и добавляется в историю только после того, как создатель отпускает shift)
| |
− | <small>По хорошему нужна возможность иметь отдельный туман для каждого игрока/токена, но это все переусложнит</small>
| |
− | === Токены ===
| |
− | Круглые хреновины, которые можно перемещать. При создании указываются:
| |
− | * Имя токена
| |
− | * Размер в клетках/гексах или произвольный, если на карте нет сетки (не меньше Х, не больше Y; настраивается ползунком)
| |
− | * Цвет
| |
− | * Буква в центре или ссылка на фоновую картинку (опционально; возможно для простоты стоит отказаться от картинок)
| |
− | После создания можно:
| |
− | * Дать доступ к токену какому-то игроку
| |
− | * Добавить токен в ростер инициативы
| |
− | * Указать дополнительную информацию в формате ключ-значение.
| |
− | ** эта информация вместе с именем отображается при наведении
| |
− | ** Значение может отображаться как текст или как полоска, если оно было указано как процент или в формате Х/Y.
| |
− | ** Каждое значение может отображаться только для создателя карты / для создателя и игрока, которому присвоен токен / всем (по умолчанию)
| |
− | === Интерфейс карты ===
| |
− | Основное окно страницы с картой состоит из карты и 2 перемещаемых панелей:
| |
− | * горизонтальная панель - ростер инициативы
| |
− | * вертикальная панель со всем остальным и иконками для переключения между панелями:
| |
− | ** история - сюда записываются сообщения о происходящем (перемещение токенов, стирание туманы, конец хода и т.п.), можно "исследовать" историю (см. историю в фотошопе) и смотреть что было раньше (вкладка по умолчанию)
| |
− | *** под историей текстовое поле - создатель может создавать произвольные оповещения, которые будут добавлениы в историю (с пометкой "объявление" или что-то в таком духе)
| |
− | *** текстовое поле для строки дайса, кнопка для броска
| |
− | ** список просматривающих карту и присвоенных им токенов (в первую очередь те, у кого есть токены, в самом конце - количество незалогиненных зрителей)
| |
− | ** настройки выбранного токена (или сделать редактирование информации сразу в тултипе, всплывающем при наведении на токен?)
| |
− | ** настройки карты и всего прочего
| |
− | *** мастер может менять фоновую картинку (и какие-то еще настройки)
| |
− | *** игрок может настраивать способ оповещения о начале нового хода (звук, алерт, что-то еще)
| |
− | Карта это картинка + сетка (опционально) + токены + флажки + вейпоинты
| |
− | * Координаты хранятся попиксельно; если на карте есть сетка, то при перемещении токенов они устанавливаются в центр
| |
− | * В одной ячейке сетки может быть до 8 токенов и до 8 вейпоинтов; они все устанавливаются с Х% смещением от центра
| |
− | * Если несколько токенов разного размера находятся очень близко, то сверху рисуются более мелкие
| |
− | | |
− | === Управление картой и токенами ===
| |
− | * Флажки для привлечение внимания - каждый игрок может поставить указатель с подписью (привлечь внимание к чему-то на карте)
| |
− | ** Не больше Х одновременно присутствующих на карте флажков от каждого игрока
| |
− | ** Кнопка для удаления, доступная как игроку, так и мастеру
| |
− | ** Флажок окрашен в цвет первого токена, присвоенного игроку, до наведения на него курсора отображается с 0.Х прозрачностью
| |
− | * Создание вейпоинтов для перемещения токена
| |
− | ** Новый вейпоинт создается перетаскиванием токена в нужное место
| |
− | ** Старые вейпоинты можно перетаскивать в другое место или удалять; если удален вейпоинт из середины цепи, оставшиеся соединяются
| |
− | ** Рассчитывать расстояние и показывать на каждом вейпоинте (возможно фича лишня; нужно предусмотреть несколько правил, по которым рассчитывается)
| |
− | ** Где-то у мастера есть кнопка для одобрения пути, после нажатия токен перемещается (возможно стоит при включении настройки разрешать игрокам двигать токены самим?)
| |
− | === История ===
| |
− | В лог истории записываются все действия происходящие с картой, объявления мастера
| |
− | * События могут быть публичными и тайными (то, что мастер делает с токенами под туманом); тайные события отображаются только у мастера или у всех после отправки карты в "архив" (может быть полезно для турниров)
| |
− | * При клике по какому-то событию, карта показывается на момент этого события; чтобы продолжить следить за событиями в нормальном режиме нужно кликнуть по выбранному событию во второй раз или выбрать последнее событие
| |
− | Типы событий, сохраняющихся в истории:
| |
− | * Объявление (мастер записывает в лог строку текста)
| |
− | * Результат броска дайсов
| |
− | * Создание токена, удаление токена, изменение имени токена
| |
− | * Редактирование статистики на токене (скажем "Хобгоблин: -85% хп")
| |
− | * Изменение тумана
| |
− | * Начало раунда N
| |
− | * Конец хода %токена% (игрок нажал кнопку "окончить ход")
| |
− | * Начало хода %токена% (мастер запустил ростер инициативы или нажал кнопку "следующий ход"). При этом событии хозяин токена оповещается.
| |
− | * Изменение инициативы %токена%
| |
− | | |
− | === Ростер инициативы ===
| |
− | Ростер это табличка со следующими колонками:
| |
− | * Имя токена
| |
− | * Инициатива (1 или более значений через запятую; сортировка всегда по первому значению)
| |
− | * Статус (текстовое поле)
| |
− | * Значение одного из информационных полей с чара (это как-то где-то настраивается)
| |
− | Управление ростером:
| |
− | * Кнопка "добавить все токены", кнопка "добавить токен" (с выпадающим меню для выбора)
| |
− | * Кнопка "отсортировать", чекбокс "автоматическая сортировка", селект "по убывающей/по возрастающей"
| |
− | * Кнопка "конец хода" (нажимается игроком, когда он расставил вейпоинты и ждет утверждение)
| |
− | * Кнопка "следующий (доступна только мастеру)
| |
− | * Строки в ростере можно перемещать перетаскиванием
| |
− | | |
− | === Дайс ===
| |
− | В текстовое поле вводится строка с формулой броска. Строка разбирается на сервере, где и происходит "бросок". Результат вместе с именем игрока добавляется в историю.
| |
− | === Страница пользователя ===
| |
− | На ней отображаются:
| |
− | * Список созданных им карт (вход для редактирования, смена типа открытая/приватная, установка её в активный режим, удаление)
| |
− | * Список публичных карт, к которым ему дали доступ или присвоили токен, активные выделены
| |
− | * Настройки сайта, если такие будут реализованы (смена языка, смена темы оформления, список игнорируемых пользователей)
| |
− | | |
− | === Прочее ===
| |
− | * Блэкджек, шлюхи.
| |
− | * Поддержка макоебов.
| |
− | ==== Планы на очень далекое будущее ====
| |
− | * Чат
| |
− | * Рисование карты заготовленными тайлами
| |
− | * Социальная хренотень с календарями доступности игроков, напоминанием об играх
| |