Пятничные факты #277 – Прогресс обновления GUI

Поделиться

опубликовали kovarex, Klonan

Прогресс обновления GUI (kovarex)

Это продолжение последнего отчета FFF-269. Как не удивительно, самым большим узким местом патча 0.17 является графический интерфейс. Мне нравится верить, что мы многому научились из ловушек совместного творческого процесса GUI. Это типичный способ, которым мы перепроектировали GUI:

  • Два-три человека начали обсуждать, что может быть круто изменить в конкретном графическом интерфейсе. Некоторые люди случайно присоединились и покинули продолжающуюся дискуссию. Аргументы против определенных идей должны повторяться снова и снова. Тогда дискуссия заканчивается из-за чего-то.
  • Неделю спустя люди снова начинают говорить, большинство из них забыли большинство вещей или обсуждали это с разными людьми, поэтому они предполагают, что некоторые детали изменений будут понятны всем, а они – нет.
  • Они приходят к соглашению, как это должно быть сделано.
  • Они случайным образом обсуждают это неделю спустя и выясняют, что у них были совершенно разные идеи о том, как это должно быть сделано, они просто не сформулировали их точно. Оба недовольны тем, что им приходится вновь открывать и снова обсуждать эту тему.
  • Кто-то начинает реализовывать GUI, но на полпути через него обнаруживается, что при определении способа выполнения работы возникло еще одно недоразумение, и нам нужно снова перейти к шагу 1 и повторить.

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

К счастью, мы в конечном итоге выяснили, что это не может быть сделано так, и, поскольку в GUI много работы, нам нужно сделать процесс. Это выглядит так:

  • Во-первых, есть общее обсуждение графического интерфейса, все члены команды могут поделиться своими идеями.
  • kovarex + Twinsen сидят в офисе одни и обсуждают в течение некоторого времени (могут быть часы) все плюсы и минусы того, как все должно быть сделано, и договариваются.
  • Twinsen пишет подробный UX-документ о графическом интерфейсе, в котором подробно описана структура и, что более важно, поведение.
  • Twinsen + kovarex обсуждают документ UX и предлагают изменения, пока они не согласятся с окончательной версией.
  • Albert + Aleš берет документ UX и создает на его основе макет пользовательского интерфейса.
  • kovarex + Twinsen + Albert согласовывают макет пользовательского интерфейса или предлагают изменения.
  • Кто-то назначен для реализации GUI на основе документа UX и макета UI
  • kovarex проверяет правильность реализации и указывает на некоторые несоответствия, которые он может увидеть. Частью этого шага является обеспечение того, чтобы мы использовали как можно больше стилей и кода графического интерфейса для различных графических интерфейсов.
  • kovarex + Albert окончательно рассматривают реализацию и исправляют окончательные детали, пока они оба не согласятся, что задание полностью завершено.

Наличие всегда доступных  UX-документов / UI макетов значительно сэкономило время. Это не только помогает нам решать проблемы общения, нам также не нужно запоминать и переформулировать решения, принятые некоторое время назад, поскольку мы можем просто открыть документ и посмотреть, что мы согласовали, и немедленно продолжить с того места, где мы остановились.

Хорошая часть этого строгого конвейера заключается в том, что теперь мы лучше знаем о состоянии работы.
Это задания графического интерфейса, которые мы надеемся предоставить в 0,17:

Общий UX UX проект UX обзор UI макет UI обзор Реализация проекта Обзор реализации Финальный обзор
Загрузка карты
Сохранение карты
Настройки графики
Настройки управления
Настройки звука
Настройки интерфейса
Другие настройки
Генератор карты
 GUI технологий
Подсказки технологий
Подсказка Рецепта/Предмета/Сущности
Панель действий
Панель ярлыков
 GUI поездов
Управление/настройка модов
Главный экран чата
Меню рецептов
Экран персонажа
Меню структур
Новая игра
Помощь
Выбор иконок чата
Библиотека чертежей

Вы можете видеть, что многое еще предстоит сделать, но работа имеет тенденцию ускоряться по мере того, как все больше и больше макетов / наборов / стандартов GUI дорабатывается и используется повторно. Можно сделать вывод, что в январе возможна пробная версия 0,17, но может быть и в  феврале :).

Маленькие детали (kovarex)

Кроме того, одна из причин, по которой работа продвигается медленнее, заключается в том, что, поскольку мы создаем окончательные версии всего, мы хотим, чтобы проект чувствовал себя отточенным до того, как мы посчитаем его завершенным, поскольку у нас не будет времени вернуться к нему.

Например, на каждом экране настроек у нас теперь есть кнопка «Восстановить настройки по умолчанию». Первым логическим шагом было включение кнопки, только когда некоторые параметры отличаются от значений по умолчанию. Но следующим логичным шагом было как-то сообщить пользователю, какие настройки будут изменены при использовании кнопки сброса. Поэтому мы просто выделяем все нестандартные настройки при наведении курсора на кнопку сброса, и это приятно видеть, так как внезапно вы получаете мгновенную обратную связь о том, что вы можете ожидать от действия.

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

Проблема масштабирования и решение (kovarex)

Одной из многих целей переписывания графического интерфейса было убедиться, что графический интерфейс выглядит корректно при всех возможных значениях масштаба пользовательского интерфейса. Под правильными мы в основном имеем в виду, что пропорции всего остаются неизменными, поэтому они просто меньше, но не деформированы странным образом. Это может показаться простым делом, но это не так, как все значения GUI (размеры, позиции виджетов, отступы и т. Д.) Являются целочисленными значениями, так как в конце каждый элемент должен находиться на каком-то определенном пикселе до тех пор, пока как мы хотим, чтобы это было ясно.

Представьте, что между двумя кнопками шириной 20 пикселей имеется разрыв шириной 1 пиксель, и вы хотите, чтобы он отображался в 120%. Кнопки увеличены до 24 пикселей, но зазор либо остается 1 пикселем, либо становится 2, но пропорции макета меняются.

Чтобы решить эту (и другие проблемы), мы решили использовать то, что мы называем «модулями». 1 модуль имеет 4 пикселя в стандартном масштабе (100%), и почти все это умножение модулей (размеры, позиции, отступы и т. Д.). Кроме того, мы ограничили возможные значения масштаба кратными 25% (от 75% до 200%). Это означает, что размер одного модуля может быть разным (от 3 пикселей при 75% до 8 пикселей при 200%), но пропорции всего остаются неизменными, поэтому он выглядит правильно.

Пока это работает довольно хорошо, но приносит еще одну проблему для 0.17. Я не знаю, заметил ли кто-нибудь, но слоты предметов (инвентарь / логистические фильтры, слоты крафта и т. Д.) Были намеренно масштабированы меньше, чем другие элементы пользовательского интерфейса. Причина этого состояла в том, что 32 × 32 иконки, которые мы имеем для всех предметов / жидкостей / рецептов, выглядят не очень хорошо, если растягивать слишком сильно.

Но так как нам пришлось отменить это специальное правило для 0.17, мы должны убедиться, что все значки 32 × 32 (285 элементов, 27 сигналов, жидкостей и т. Д.) Должны быть предоставлены с разрешением 64 × 64, поэтому все поддерживаемые интерфейсы  будут хорошо смотреться. Это будет довольно трудоемкая работа, но так как мы все равно визуализируем иконки из 3D-моделей, это должно быть управляемым. Мы, вероятно, выпустим значки высокого разрешения для 0,17 во время экспериментальной фазы.

Процедурная Защита от волн (Klonan)

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

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

Однако у меня есть некоторая нерешительность внутри себя, и есть несколько преимуществ и недостатков между пользовательскими картами ручной работы и случайно генерируемыми мирами.

Преимущества карты на заказ

  • Карта может быть специально разработана и настроена для лучшего опыта игры, я могу проверить и настроить то, как битеры перемещаются по карте, настроить расположение деревьев, ресурсов, настроить сложность и т. Д.
  • Нам не нужно беспокоиться об изменениях движка генерации карт, нарушающих сценарий.
  • Это надежный опыт для всех игроков, люди могут делиться конкретными советами, дизайнами и тактиками, которые более специфичны для карты.

Преимущества процедурных карт

  • Сценарий имеет гораздо большую воспроизводимость.
  • Нам не нужно беспокоиться о переносе  данных карт,  клеток, объектов и т. Д. В более новые версии.
  • Любые улучшения в генерации карты будут отражены в сценарии.
  • Люди не могут продумать сценарий, используя чертежи других людей.
  • Мы можем добавить некоторые параметры конфигурации для людей, которые хотят адаптировать опыт игры.
  • Легко добавить поддержку серверов для продолжения работы после победы / поражения.

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

Как всегда, вы можете сообщить нам, что вы думаете на нашем форуме.


Поделиться

Комментарии: