My:Abs

Материал из synset
Перейти к: навигация, поиск

Цель

Фреймворк на начальном этапе не предназначается для создания квестов со сложной логикой, где множество локаций и предметов связаны между собой последовательными действиями и переходами, изменениями своих состояний и поступающими игроку задачами.

Фреймворк предназначен для настройки игр, основной механикой которых является поиск предметов на различных экранах. В хидене присутствует статический фон и объекты. Объекты могут быть:

  • статически "вплетены" в фон (подобно Mysteriez) и необходимо только задание области для клика на них.
  • всегда быть в одном и том-же месте, но удаляться при клике (отделяться от бекграунда)
  • менять своё положение в одной и той же сцене
  • использоваться в различных сценах.

В данной игровой сессии объекты могут быть не "кликательными" и быть составной фона, в другой "кликательными". У объектов может быть различный z-порядок.

Фреймворк состоит из 3-х составных частей:

  • редактор ресурсов
  • редактор сцен
  • редактор уровней

Желательно эти части сделать "разборными кубиками", дабы использовать в других редакторах. Работа с фреймворком должна быть доступна любому пользователю - не программисту (в первую очередь художникам)

Редактор ресурсов

Редактор ресурсов является самостоятельным приложением (использующим стандартный GUI) которое хранит и менеждирует все графические ресурсы проекта (бекграунды, небольшие статические картинки, анимированные клипы). Со временем должен стать универсальным инструментом для различных задач фреймворка. Сам по себе он не является редактором сцен, так как подобный редактор зависит от типа игры. Решает задачу уникальности имён объектов (ресурсов). В нём не создаётся атласа текстур (редактор ни чего не знает о расшаривании).

Перенесение объектов в другие модули=приложения (редакторы сцены, интерфейса) осуществляется по drag-and-drop. При этом "переносится" информация о ресурсе, но не сами графические файлы.

С одной и той же базой ресурсов могут одновременно работать различные экземпляры приложения (несколько художников, редакторов сцен и т.д.). Окно редактора ресурсов должно изменять свой размер, иметь галочку "быть сверху".

Загрузка графики

Open graph res.jpg

Можно загружать различные виды сырых графических ресурсов. Их тип указывается в окне загрузки. Это может быть:

  • Отдельный файл с неопределёнными координатами.
  • Все файлы из директории в различных режимах:
    • Однотипные кадры анимации, сразу группируются в объект.
    • Фон и объекты на нём в виде отдельных файлов одинакового размера. Те файлы которые могут быть обрезаны интерпретируются как объекты. Запоминаются их координаты относительно исходного размера и имя бекраунда (необрезаемого файла) с которым они были связаны. Соответственно бекграунд помнит список объектов которые на нём были.

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

Имена ресурсов

Все ресурсы имеют уникальные текстовые идентификаторы (имена). По умолчанию им присваивается имя файла. Если такое имя уже есть к нему добавляется порядковый номер. Имена - произвольные строки. Могут быть на русском.

После загрузки ресурсы могут быть переименованы (по-прежнему с контролем уникальности их имени).

Иерархическая группировка

ACDSee.jpg

Ресурсы группируются в древовидной структуре (подобно ACDSee Pro). Стоит использовать стандартные контролы (TreeView и т.п.). Пример дерева:

  • Бекграунды
    • Спортивные
    • Офисы
  • Интерьеры
    • Столы
    • Шкафы
  • Объекты
    • Спортивный инвентарь
    • Кухонная утварь
  • Кнопки

Должна быть реализована процедура менеджирования (создания, удаления и т.п.) директорий. Их имена не обязаны быть уникальными (по крайней мере на отдельных ветвях дерева)

Графические ресурсы (отдельные битмапы и группы анимаций) могут быть помещены в любую директорию дерева. Можно пометить (мультипометка) список объектов и поддиректорий и удалить их (с переспрашиванием) или скопировав, перенести на другую ветвь дерева.

Список финальных объектов (битмапов и клипов) выводится в виде графического (иконками) или текстового списка (настраивается).

Настройка анимации

Для хиденов не предполагается использовать сложных систем анимации. Обычно это зацикленная группа битмапов (фреймов). В большинстве случаев они объединяются при загрузке. Вся группа получает уникальное имя. Фреймы могут удаляться, добавляться, переупорядочиваться Настраивается:

  • стартовый фрейм
  • скорость проигрывания анимации
  • задержка перед повторным проигрыванием (по умолчанию нулевая). Можно заложить два поля: минимальная задержка и максимальная между которыми время будет выбираться случайным образом (для снижения однообразности).

В окне настройки и графическом древовидном списке анимированный объект себя проигрывает в соответствии с этими настройками.

В дальнейшем для других проектов этот раздел развивается.

Слияние баз ресурсов

Возможность добавление одной базы в другую. Например, при работе нескольких художников не находящихся в одной сети. Необходим механизм быстрого выявления совпадения ресурсов (что-то типа контрольной суммы) с устранением их дублирования.

Обеспечение целостности

Необходимо обеспечить целостность графических и логических структур. Например, если некоторый объект удаляется из редактора ресурсов, редакторы сцен или интерфейса которые его используют об этом ни чего нем знают. Возможное решение - счётчик числа использований ресурса (подобно менеджеру памяти). Сообщения об использовании ресурса или его освобождении другими приложениями могут посылаться, например, по TCP протоколу.

Различные разрешения

Каждый ресурс может (должен) быть различных разрешениях (для разных устройств). По умолчанию ресурс масштабируется автоматически. Если выглядят плохо, загружаются специально сделанные под данное разрешение (максимально этого избегать за счёт дизайнерских решений лейаута).

Статистика

Различные информационные запросы (формирование списков, html-отчёты и т.п.):

  • Ресурсы без разрешений
  • Ресурсы не используемые внешними редакторами

Редактор сцен

Редактор сцен предназначен для формирования сцены хидена. Может использоваться как редактор интерфейса. Основные понятия:

  • сцена - совокупность объектов и областей
  • объект - графический ресурс (фон, интерьер, картинка, клип), отображающийся на сцене
  • область - событийная область на экране (обычно для клика на неё)

Сцена

В редакторе сохраняется список всех созданных сцен. Этот список менеждируется в виде деревестной структуры (аналогично редактору ресурсов). У каждой сцены есть своё уникальное текстовое имя-идентификатор. Кликая на данную сцену в списке, её сразу становится видно экране.

Редактирование начинается с создания новой сцены, её помещение в список сцен.

Списки сцен, созданные различными людьми должны сливаться (добавляться) с проверкой уникальности.

Объект

При клике на данную сцену (в списке сцен) появляется список имён графических ресурсов, находящихся на сцене (имена берутся из редактора ресурсов). Объект можно перемещать по сцене, изменить его z-координату (см. редактирование).

Объект на сцену перетаскивается по drag-and-drop из редактора ресурсов. При перетаскивании бекграунда с нажатой клавишей (например, shift) перетаскивается не только бекграунд но и объекты которые были с ним связаны при загрузке в режиме "фон и объекты".

Выбранный из списка объект имеет редактируемые свойства:

  • x,y - координаты
  • w,h - ширина и высота (не редактируемо)
  • z - порядок
  • масштаб? (есть ли в движке?)
  • видимость

Область

Область - прямоугольная (в дальнейшем эллипсоидная и полигон) область сцены, при клике на которую что-либо происходит. В простейшем случае совпадет с картинкой объекта.

Действие:

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

Редактирование

При клике на объект он выделяется в списке объектов. И наоборот, выбор в списке объектов делает активным объект на сцене. Затем он мышкой может быть перетащен. Если с объектом связана область, она перетаскивается вместе с ним.

Аналогично происходит редактирование области (при клике на сцене должен быть нажать Ctrl). Дополнительно возможно изменить её размер.

Настройки

Окно настроек управляет внешним видом объектов и областей. Возможные режимы:

  • Рамки вокруг объектов: (всех, активного, не показывать)
  • Границы областей: (все, активная, не показывать)
  • Рамки вокруг подсцен (?)

Разрешения

Редактор Уровней

Общие возможности

Этот редактор должен позволять дизайнеру настраивать следующее:

  • какой экран относится к какому уровню
  • какие слова (предметы) будут обязательными с списке поиска для данного уровня
  • какие слова будут не обязательными, то есть по случайному закону будет выбираться группа слов из этого массива предметов.
  • какой процент повтора слов по сравнению с предыдущим уровнем на данной локации допускается
  • какое количество слов должно быть в поиске
  • какой способ отображения слов в списке будет на этом уровне (контуры, изображения, названия, описания предметов)
  • задавать имена предметов в списке поиска
  • задавать описания предметов. То есть у предметов будет как название так и описание. в зависимости от выбранного режима подачи списка слов они будут отображаться или по своим именам или по описаниям
  • задавать какие помехи будут присутствовать на экране (например фонарик, то есть видим только ограниченную зону вокруг курсора)
  • движущаяся это сцена или обычная
  • порядок отображения слов. То есть возможна ситуация когда мы показывать будем по 6 слов, но каждое найденное будет заменяться на следующее в списке до этого не видимое.
  • настраивать хинты. будет 4+ типа хинтов. на каждом уровне хинты могут иметь разные настройки в плане их количества, времени их восстановления
  • количество спрятанных на сцене бонусных объектов . То есть объектов, которые не находятся в списке поиска, но их можно найти и получить за это очки.
  • ограниченно ли на уровне время и какой бонус дается за более раннее завершение и в зависимости от процента найденных слов.

Система очков

Надо учесть что будут игры или режимы в играх, где присутствуют или отсутствуют очки.
Очки могут начисляться за:

  • подбор предмета (во время уровня)
  • сниматься за рандомные клики или за использование хинтов(во время уровня)
  • начисляться за быстрые клики подряд (бонус за скорость)(во время уровня)
  • за остаток времени (в конце уровня)
  • в зависимости от процента найденных предметов за ограниченное время (в конце уровня)
  • за точность попадания (в конце уровня)
  • за то. что ни разу не был использован хинт (в конце уровня)

Примечания

Разрешения

w h w/h 1024/w Устройство
480 320 1.50 2.13 iphone
480 320 1.50 2.13 android старые
800 480 1.67 1.28 android типично
800 480 1.67 1.28 android планшеты
854 480 1.78 1.20 android телефоны
960 640 1.50 1.07 iphone
960 540 1.78 1.07 android новые
1024 768 1.33 1.00 ipad
1024 600 1.71 1.00 android планшеты
1024 768 1.33 1.00 android планшеты
1280 800 1.60 0.80 android планшеты

Покрывать 3 базовых отношения w/h:

1.33 1024x768 других нет
1.50 960x640, 480x320 2-кратная разница
1.67 800x480, 960x540(-60), 854x480(-54), 1024x600(-24), 1280x800(-32)

Остальные добивать интерфейсными полосками слева-справа или сверху-снизу. Полоска может быть одна (типа кепшен окна) с линком на сайт. Плюс 2-е ориентации, итого 6 лейаутов.

Для хиденов область поиска объектов имеет универсальное w/h и горизонтальную ориентацию. подстройка лейаутов происходит для положения и размера списков предметов и т.п.