Difference between revisions of "Mapsoft"

From Game Logs
Jump to: navigation, search
m (Требования к мапсофту)
Line 1: Line 1:
 
[[Category:Служебное]]
 
[[Category:Служебное]]
  
== Техническое задание на разработку мапсофта ==
+
= Техническое задание на разработку мапсофта =
  
=== Перечень почётных ниггеров ===
+
== Перечень почётных ниггеров ==
  
 
<poem>
 
<poem>
Line 10: Line 10:
 
</poem>
 
</poem>
  
=== Требования к мапсофту ===
+
== Требования к мапсофту ==
  
* Софтина должна строиться на базе клиент-серверной архитектуры. Вся информация хранится на сервере, клиент используется только для отображения. Актуализация клиентской информации должна производиться в реальном времени, с интервалом опроса не больше пяти секунд.  
+
* Софтина должна строиться на базе клиент-серверной архитектуры. Вся информация хранится на сервере, клиент используется только для отображения и кеширования. Актуализация клиентской информации должна производиться в реальном времени, с интервалом опроса не больше пяти секунд.  
* Аутентификация пользователей по логин-паролю. Пользователь имеет право создавать под своим аккаунтом карты, выставлять им статус "закрытая/открытая/активная" и указывать перечень пользователей, имеющих доступ к карте.
+
 
** Закрытая карта не видна никому кроме её владельца (ака мастера), используется, например, для мастерских заготовок впрок.
+
=== Аутентификация и доступ ===
** Открытая карта по умолчанию видна всем, без требований к авторизации. При указании фильтра по юзерам, видна только им. Служит, например, для архива или предбоевой подготовки.
+
* Аутентификация пользователей одним кликом через OpenID (кнопки для аутентификации через гугл, твиттер, фейсбук, (опционально через произвольный OpenID)). Пользователь имеет право создавать под своим аккаунтом карты, выставлять им статус "открытая/приватная".
** Активная карта - аналог хостнутой сетевой игры. Владелец карты разбрасывает инвайты по пользователям, находящимся в системе, после чего они получают возможность зайти в карту, указать имя персонажа, выбрать цвет токена, етц. Добавление кастомных аватарок не видится приоритетным. Привязка "аккаунт - персонаж" сохраняется между сессиями, дабы была возможность реконнектиться.
+
** Приватную карту может просматривать только её создатель (ака мастера), используется, например, для мастерских заготовок впрок.
 +
*** Для приватной карты можно указать список пользователей, у которых будет доступ к ней, если она будет сделана публичной.
 +
** Открытую карта могут просматривать все, у кого есть ссылка на нее и кому её создатель дал доступ.
 +
*** Если доступ дан "всем", то карту может просматривать кто угодно при наличии ссылки (удобно для карт турниров)
 +
*** Опционально создатель может дать доступ только некоторому количеству пользователей, но не более Х (для обычных игр, предбоевой подготовки).
 +
** Созданную открытую карту можно сделать активной.
 +
*** Игроки, у которых есть доступ, получают уведомление, на их страницах она отмечается как активная
 +
*** Игроки могут управлять присвоенными ими токенами (с учетом всех ограничений), токены добавляются в ростер инициативы
 +
=== Создание карты ===
 +
Создание карты для стартового функционала программы рудиментарно. Указываются:
 +
* название карты
 +
* тип карты
 +
* список пользователей, у которых есть доступ
 +
* ссылка на картинку для карты (или аплоад на imgur, если в данный момент не исчерпана квота или аплоад в дропбокс) или текстура для фона из набора
 +
** масштаб картинки или текстуры (настраивается ползунком)
 +
** размеры карты, если выбрана текстура (установлен размер по умолчанию Х)
 +
* тип сетки (квадраты, гексы, отсутствие), её размер (ширина одной ячейки; не меньше Х, не больше Y, настраивается ползунком)
 +
После окончания создания можно начать рисовать туман, расставлять токены, менять её статус, делать активной
 +
=== Туман войны ===
 +
* Игроки видят туман как непрозрачную текстуру/цвет, создатель карты - с прозрачностью 0.Х
 +
* В настройках карты создатель может выбрать текстуру из набора или цвет
 +
* Управление туманом производится через кнопки "залить" и "очистить" и рисованием курсором с зажатым shift'ом (обновленное состояние тумана отправляется игрокам и добавляется в историю только после того, как создатель отпускает shift)
 +
=== Токены ===
 +
Круглые хреновины, которые можно перемещать. При создании указываются:
 +
* Имя токена
 +
* Размер в клетках/гексах или произвольный, если на карте нет сетки (не меньше Х, не больше Y; настраивается ползунком)
 +
* Цвет
 +
* Буква в центре или ссылка на фоновую картинку (опционально; возможно для простоты стоит отказаться от картинок)
 +
После создания можно:
 +
* Дать доступ к токену какому-то игроку
 +
* Добавить токен в ростер инициативы
 +
* Указать дополнительную информацию в формате ключ-значение.  
 +
** эта информация вместе с именем отображается при наведении
 +
** Значение может отображаться как текст или как полоска, если оно было указано как процент или в формате Х/Y.  
 +
** Каждое значение может отображаться только для создателя карты / для создателя и игрока, которому присвоен токен / всем (по умолчанию)
 +
=== Интерфейс карты ===
 
* Основное окно пользовательского интерфейса состоит из трёх областей областей - перечень хронологических событий (далее - ХС), ростер инициативы и собственно карта. При нажатии на какой-либо пункт хронологии окно карты откатывается на тот момент, давая возможность посмотреть где кто стоял и как всё происходилО. Мастер инициирует все ХС на карте, но это не обязательно должны быть перемещения. В общем случае, ХС может вводить новый токен, убирать старый, перемещать старый, изменять статус токена (функционал статусов в начальный минимум разработки не входит, но в перспективе вай нот), или ничего не делать, и служить сугубо для отметки, например, начала нового хода, комментария о вносе стопицот дамага, смешных шуток с башорга, етц.
 
* Основное окно пользовательского интерфейса состоит из трёх областей областей - перечень хронологических событий (далее - ХС), ростер инициативы и собственно карта. При нажатии на какой-либо пункт хронологии окно карты откатывается на тот момент, давая возможность посмотреть где кто стоял и как всё происходилО. Мастер инициирует все ХС на карте, но это не обязательно должны быть перемещения. В общем случае, ХС может вводить новый токен, убирать старый, перемещать старый, изменять статус токена (функционал статусов в начальный минимум разработки не входит, но в перспективе вай нот), или ничего не делать, и служить сугубо для отметки, например, начала нового хода, комментария о вносе стопицот дамага, смешных шуток с башорга, етц.
 
* Внутри игры рядовой пользователь изначально имеет два рабочих инструмента - указательные флажки, цветом совпадающие с его токеном. Первым флажком он сообщает куда намерен переместиться, дабы мастер, после рассмотрения заявки игрока, создал ХС-перемещение. Вторым флажком пользователь передаёт остальным участникам карты информацию "<strike>ебошить</strike> обратите внимание сюда". В запутанных картах целеуказание вида "вон тот, второй слева в верхнем ряду, которого Полуэкт подамажил" может быть запутано и нерационально, так что сразу решаем и этот вопрос. Расстановка флажков сиюминутна, исторической ценности не имеет и в ХС не фиксируется.
 
* Внутри игры рядовой пользователь изначально имеет два рабочих инструмента - указательные флажки, цветом совпадающие с его токеном. Первым флажком он сообщает куда намерен переместиться, дабы мастер, после рассмотрения заявки игрока, создал ХС-перемещение. Вторым флажком пользователь передаёт остальным участникам карты информацию "<strike>ебошить</strike> обратите внимание сюда". В запутанных картах целеуказание вида "вон тот, второй слева в верхнем ряду, которого Полуэкт подамажил" может быть запутано и нерационально, так что сразу решаем и этот вопрос. Расстановка флажков сиюминутна, исторической ценности не имеет и в ХС не фиксируется.
 
* Также у пользователя есть волшебная кнопка "я всё", сигнализирующая мастеру о том, что по данному товарищу ХС можно закрывать. Сигнализация должна настраиваться на клиенте, и включать в себя галки для звукового оповещения, попапа и мигания окна.
 
* Также у пользователя есть волшебная кнопка "я всё", сигнализирующая мастеру о том, что по данному товарищу ХС можно закрывать. Сигнализация должна настраиваться на клиенте, и включать в себя галки для звукового оповещения, попапа и мигания окна.
* Создание карты для стартового функционала программы рудиментарно: владелец указывает настройки сетки (квадратная | гексагональная | отсутствует), аплоадит жыпег с фоном (опционально), давит "создать", отвечает на промпт статуса карты, и поехали. Если указан активный статус - сразу открывается типовой интерфейс приглашения, т.е. список пользователей. Участие пользователя сразу в нескольких картах нафиг не нужно, что упрощает.
+
=== История ===
 
* Внутри активной карты все изменения баттлфилда мастер оформляет в виде ХС - обычно это изменения в токенах (перемещение/ввод/удаление, можно сразу нескольких), плюс короткий комментарий, выводящийся всем игрокам в область ХС. Софтина должна поддерживать загрузку нового фона карты, также записывая это обновление в отдельный ХС. Желателен ассортимент шаблонов ХС вида холостой информационной записи "начался новый ход", или кнопки "таки да", которая, если у текущего пользователя стоит галка "я всё", автоматически создаёт ХС, перемещающий токен текущего пользователя на его флажок-ногу, с типовым комментарием а-ля "%username походил".
 
* Внутри активной карты все изменения баттлфилда мастер оформляет в виде ХС - обычно это изменения в токенах (перемещение/ввод/удаление, можно сразу нескольких), плюс короткий комментарий, выводящийся всем игрокам в область ХС. Софтина должна поддерживать загрузку нового фона карты, также записывая это обновление в отдельный ХС. Желателен ассортимент шаблонов ХС вида холостой информационной записи "начался новый ход", или кнопки "таки да", которая, если у текущего пользователя стоит галка "я всё", автоматически создаёт ХС, перемещающий токен текущего пользователя на его флажок-ногу, с типовым комментарием а-ля "%username походил".
 +
=== Ростер инициативы ===
 
* Ростер инициативы управляется сугубо мастером<ref>схуяле, чуть менее чем все игровые системы предполагают всякую хитроту с собственным инитом, проще дать читорам по балде чем дму всех по шкале инита носить.</ref>, при активизации карты заполняется вручную таблицей с колонками "%username" и "%init". В мастерском интерфейсе таблицу можно редактировать, меняя значение %init для каждого пользователя, сортируя по %init, и кнопками "вверх-вниз" перемещать пользователей вопреки всему. Пользователь, до которого дошла очередь хода по таблице, получает оповещение (настройки см.выше). Если пользователь нажал "я всё" и его ХС был закрыт мастером, инициатива автоматически переходит к следующему. В противном случае, мастер передаёт ход вручную.''Инит по-разному устроен в разных системах, поэтому правильным подходом, ящитаю, было бы иметь для данной конкретной нахощеной карты такой параметр, как используемая система и управлять инитом соответственно. Т.е., ролльнуть инит или взять базик спид из мини-чарника, например.''
 
* Ростер инициативы управляется сугубо мастером<ref>схуяле, чуть менее чем все игровые системы предполагают всякую хитроту с собственным инитом, проще дать читорам по балде чем дму всех по шкале инита носить.</ref>, при активизации карты заполняется вручную таблицей с колонками "%username" и "%init". В мастерском интерфейсе таблицу можно редактировать, меняя значение %init для каждого пользователя, сортируя по %init, и кнопками "вверх-вниз" перемещать пользователей вопреки всему. Пользователь, до которого дошла очередь хода по таблице, получает оповещение (настройки см.выше). Если пользователь нажал "я всё" и его ХС был закрыт мастером, инициатива автоматически переходит к следующему. В противном случае, мастер передаёт ход вручную.''Инит по-разному устроен в разных системах, поэтому правильным подходом, ящитаю, было бы иметь для данной конкретной нахощеной карты такой параметр, как используемая система и управлять инитом соответственно. Т.е., ролльнуть инит или взять базик спид из мини-чарника, например.''
 +
=== Дайс ===
 +
В текстовое поле вводится строка с формулой броска. Строка разбирается на сервере, где и происходит "бросок". Результат вместе с именем игрока добавляется в историю.
 +
=== Страница пользователя ===
 +
На ней отображаются:
 +
* Список созданных им карт (вход для редактирования, смена типа открытая/приватная, установка её в активный режим, удаление)
 +
* Список публичных карт, к которым ему дали доступ или присвоили токен, активные выделены
 +
* Настройки сайта, если такие будут реализованы (смена языка, смена темы оформления, список игнорируемых пользователей)
  
 +
=== Прочее ===
 
* Блэкджек, шлюхи.
 
* Блэкджек, шлюхи.
 
* Поддержка макоебов.
 
* Поддержка макоебов.

Revision as of 10:19, 25 October 2011


Техническое задание на разработку мапсофта

Перечень почётных ниггеров

Mezriss - lead developer
insd7s - assistant developer

Требования к мапсофту

  • Софтина должна строиться на базе клиент-серверной архитектуры. Вся информация хранится на сервере, клиент используется только для отображения и кеширования. Актуализация клиентской информации должна производиться в реальном времени, с интервалом опроса не больше пяти секунд.

Аутентификация и доступ

  • Аутентификация пользователей одним кликом через OpenID (кнопки для аутентификации через гугл, твиттер, фейсбук, (опционально через произвольный OpenID)). Пользователь имеет право создавать под своим аккаунтом карты, выставлять им статус "открытая/приватная".
    • Приватную карту может просматривать только её создатель (ака мастера), используется, например, для мастерских заготовок впрок.
      • Для приватной карты можно указать список пользователей, у которых будет доступ к ней, если она будет сделана публичной.
    • Открытую карта могут просматривать все, у кого есть ссылка на нее и кому её создатель дал доступ.
      • Если доступ дан "всем", то карту может просматривать кто угодно при наличии ссылки (удобно для карт турниров)
      • Опционально создатель может дать доступ только некоторому количеству пользователей, но не более Х (для обычных игр, предбоевой подготовки).
    • Созданную открытую карту можно сделать активной.
      • Игроки, у которых есть доступ, получают уведомление, на их страницах она отмечается как активная
      • Игроки могут управлять присвоенными ими токенами (с учетом всех ограничений), токены добавляются в ростер инициативы

Создание карты

Создание карты для стартового функционала программы рудиментарно. Указываются:

  • название карты
  • тип карты
  • список пользователей, у которых есть доступ
  • ссылка на картинку для карты (или аплоад на imgur, если в данный момент не исчерпана квота или аплоад в дропбокс) или текстура для фона из набора
    • масштаб картинки или текстуры (настраивается ползунком)
    • размеры карты, если выбрана текстура (установлен размер по умолчанию Х)
  • тип сетки (квадраты, гексы, отсутствие), её размер (ширина одной ячейки; не меньше Х, не больше Y, настраивается ползунком)

После окончания создания можно начать рисовать туман, расставлять токены, менять её статус, делать активной

Туман войны

  • Игроки видят туман как непрозрачную текстуру/цвет, создатель карты - с прозрачностью 0.Х
  • В настройках карты создатель может выбрать текстуру из набора или цвет
  • Управление туманом производится через кнопки "залить" и "очистить" и рисованием курсором с зажатым shift'ом (обновленное состояние тумана отправляется игрокам и добавляется в историю только после того, как создатель отпускает shift)

Токены

Круглые хреновины, которые можно перемещать. При создании указываются:

  • Имя токена
  • Размер в клетках/гексах или произвольный, если на карте нет сетки (не меньше Х, не больше Y; настраивается ползунком)
  • Цвет
  • Буква в центре или ссылка на фоновую картинку (опционально; возможно для простоты стоит отказаться от картинок)

После создания можно:

  • Дать доступ к токену какому-то игроку
  • Добавить токен в ростер инициативы
  • Указать дополнительную информацию в формате ключ-значение.
    • эта информация вместе с именем отображается при наведении
    • Значение может отображаться как текст или как полоска, если оно было указано как процент или в формате Х/Y.
    • Каждое значение может отображаться только для создателя карты / для создателя и игрока, которому присвоен токен / всем (по умолчанию)

Интерфейс карты

  • Основное окно пользовательского интерфейса состоит из трёх областей областей - перечень хронологических событий (далее - ХС), ростер инициативы и собственно карта. При нажатии на какой-либо пункт хронологии окно карты откатывается на тот момент, давая возможность посмотреть где кто стоял и как всё происходилО. Мастер инициирует все ХС на карте, но это не обязательно должны быть перемещения. В общем случае, ХС может вводить новый токен, убирать старый, перемещать старый, изменять статус токена (функционал статусов в начальный минимум разработки не входит, но в перспективе вай нот), или ничего не делать, и служить сугубо для отметки, например, начала нового хода, комментария о вносе стопицот дамага, смешных шуток с башорга, етц.
  • Внутри игры рядовой пользователь изначально имеет два рабочих инструмента - указательные флажки, цветом совпадающие с его токеном. Первым флажком он сообщает куда намерен переместиться, дабы мастер, после рассмотрения заявки игрока, создал ХС-перемещение. Вторым флажком пользователь передаёт остальным участникам карты информацию "ебошить обратите внимание сюда". В запутанных картах целеуказание вида "вон тот, второй слева в верхнем ряду, которого Полуэкт подамажил" может быть запутано и нерационально, так что сразу решаем и этот вопрос. Расстановка флажков сиюминутна, исторической ценности не имеет и в ХС не фиксируется.
  • Также у пользователя есть волшебная кнопка "я всё", сигнализирующая мастеру о том, что по данному товарищу ХС можно закрывать. Сигнализация должна настраиваться на клиенте, и включать в себя галки для звукового оповещения, попапа и мигания окна.

История

  • Внутри активной карты все изменения баттлфилда мастер оформляет в виде ХС - обычно это изменения в токенах (перемещение/ввод/удаление, можно сразу нескольких), плюс короткий комментарий, выводящийся всем игрокам в область ХС. Софтина должна поддерживать загрузку нового фона карты, также записывая это обновление в отдельный ХС. Желателен ассортимент шаблонов ХС вида холостой информационной записи "начался новый ход", или кнопки "таки да", которая, если у текущего пользователя стоит галка "я всё", автоматически создаёт ХС, перемещающий токен текущего пользователя на его флажок-ногу, с типовым комментарием а-ля "%username походил".

Ростер инициативы

  • Ростер инициативы управляется сугубо мастером<ref>схуяле, чуть менее чем все игровые системы предполагают всякую хитроту с собственным инитом, проще дать читорам по балде чем дму всех по шкале инита носить.</ref>, при активизации карты заполняется вручную таблицей с колонками "%username" и "%init". В мастерском интерфейсе таблицу можно редактировать, меняя значение %init для каждого пользователя, сортируя по %init, и кнопками "вверх-вниз" перемещать пользователей вопреки всему. Пользователь, до которого дошла очередь хода по таблице, получает оповещение (настройки см.выше). Если пользователь нажал "я всё" и его ХС был закрыт мастером, инициатива автоматически переходит к следующему. В противном случае, мастер передаёт ход вручную.Инит по-разному устроен в разных системах, поэтому правильным подходом, ящитаю, было бы иметь для данной конкретной нахощеной карты такой параметр, как используемая система и управлять инитом соответственно. Т.е., ролльнуть инит или взять базик спид из мини-чарника, например.

Дайс

В текстовое поле вводится строка с формулой броска. Строка разбирается на сервере, где и происходит "бросок". Результат вместе с именем игрока добавляется в историю.

Страница пользователя

На ней отображаются:

  • Список созданных им карт (вход для редактирования, смена типа открытая/приватная, установка её в активный режим, удаление)
  • Список публичных карт, к которым ему дали доступ или присвоили токен, активные выделены
  • Настройки сайта, если такие будут реализованы (смена языка, смена темы оформления, список игнорируемых пользователей)

Прочее

  • Блэкджек, шлюхи.
  • Поддержка макоебов.