В данный момент добавлены возможные баги. способы их лечения, неизлечимые баги и список изменений, которые будут введены при патче 1 июня.
Добавлены патч нотисы фикс-патча от 3 июня.
Карбон и eve online: incursion 1.6
reported by CCP Snorlax | 2011.05.30 17:28:47
Оригинал
В этом патчнотисе мы раскажем вам о карбоне в еве онлайн. Вы не заметите больших изменений, т.к. мы вносим изменения в исходный код, а не в UI. Этот шаг стал возможен для нас в виду изменений, к которым мы готовились весь прошлый год. Этот проект является сильным перелопачиванием кода о котором вы сможете прочитать ниже, что позволит ввести новое в еве UI. Мы благодарим вас за то, что вы спокойно отнесетесь к тому, что ничего нового вы не увидите, и мы будем так же тщательно следить за обычными каналами.
Почему CarbonUI?
UI в EVE значительно устарел к текущему времени, поэтому нам требуется перелопатить код и посадить его на новые средства рендеринга. Старый UI рендерил используя fixed-function рендеринга в Direct3D - основной в D3D7 подход. D3D9 так же поддерживает этот подход, но это может сыграть злую шутку с производительностью, и ограничивает вас возможностями этого набора функций - никаких модных шейдеров, например.
Мы планировали тюнинг UI долгое время по ряду причин :
- улучшенное юзабилити
- улучшенный внешний вид
- улучшенная производительность
Текущий UI фреймворк провёл нас в этом плане - за многие годы он значительно оброс функциями и разработка на нём стала много сложнее, к тому же встретились многие тупики на пути к призводительности (отсыл к девблогам BFF команды вестимо. Прим. переводчика.). Недостаточно внимания было уделено разработке самого фреймворка, в виду добавления новых возможностей в него в спешке.
Мы рассмотерли несколько путей по апгрейду фреймворка UI, но в конце концов мы поняли, что EVE UI код стал слишком велик для рассматрения варианта переписать UI с учетом новых парадигм. Мы решили применить подход, требующий минимальное количество доработок текущего UI.
Итак, CarbonUI - это эволюция структуры текущего пользовательского интерфейса и его фреймворка, с совершенно новой системой рендеринга. Мы старались изменить настолько мало, насколько это вообще возможно в верхнем уровне UI, так что UI программеры, работающие в Python не увидят больших изменений - и что более важно, это ~200K строк UI кода, который продолжает работать. Как говорится, было много кода требующего модифицирования для работы с новыми слоями рендеринга или просто нам нужен был рефакторинг(радуйтесь, лаги фиксят, код рефакторят, всё будет хорошо. Прим. переводчика). Результатом стало то, что немногие файлы UI остались нетронутыми в той или иной степени..
Некоторые ключевые особенности:
- Сцены UI могут быть реализованы в различных контекстах:
- Объекты UI могут быть отрендерены в текстуры для создания 3D объектов.
- UI станет поддерживать 3D, что позволит произвести взаимодействие UI в 3D сценах.
Девовские скрины показывают как теперь возможно переностить 2D сцены в 3D объекты.
- UI так же позволяет рендерить набор примитивных 2D сцен в труЪ крутую 3D сцену, позволяющую прорисовать всё это с созданием эфекта глубины и перспективы.
Work in progress UI в Captain’s Quarters как раз эта история, построеная при помощи CarbonUI.
- 2D рендеринг как 2D наложение
- Весь Python код и объекты UI могут быть использованы в различных контекстах - сцены могут быть перемещены из одного контекста в другой на лету(человек, который ловит всё на лету, должен быть готов к тому, что однажды кто то поймает на лету его. Прим. переводчика)!
- Производительность стала лучше чем была на старом UI!
- Текстуры автоматически помещаются в атлас текстур, наподобие гербария, позволяя добиться куда более эффективного рендеринга без дополнительной работы со стороны дизайнеров интерфейса.
- Клиппинг сделан в пиксельных шейдерах
- У башенного крана колёса деревянные и квадратные. Интересно, до этой строки кто нибудь дочитал?) Шутка переводчика.
- Трансформации происходят в вершинных шейдерах
- Пиксельные шейдеры осуществляют преумножение альфы, так что и непрозрачные материалы, и материалы с альфа- и аддитивной композицией обрабатываются в одном режиме композиции D3D.
- В результате запросов на отрисовку стало менее 10, а раньше это было более 100 запросов.
- Выравнивание польностью отделено от рендеринга
- Выравнивание теперь полностью выполнено на Python - что является более легким в обслуживании
- Оптимизация рендеринга больше не приводит к риску потери выравнивания
- Рендеринг теперь полностью происходит при помощи пиксельных шейдеров, что открывает нам возможности делать всякую крутоту на них!
- Теперь все простейшие интерфейсы полностью поддерживаются все основные эффекты, такие как тень, свечение, размытие.
Это то, как наши программисты тестировали новые средства анимации карбона в UI =_=
- Новые библиотеки полностью написаны на Питоне, что позволит делать более легкий и динамичный UI.
Выравнивание
Что мы имеем ввиду под выравниванием? Это то как элементы UI расположены на экране, грубо говоря координаты по оси X и Y, но программист UI не должен размещать изх по этим координатам. Для примера, если она хочет разместить кнопку внизу экрана, то кнопка получает CENTERBOTTOM выравнивание(ЦЦП изобрело CSS, с блекджэком и... дреками? прим. Переводчика). Если окно изменяется - то координаты пересчитываются, так, что бы кнопка осталась по центру внизу экрана(изобрели css2 - инфа 100%).
Перемещение этой функции из Си++ в Питон - было не однозначным решением. Это конечно быстрее отрабатывается в Си++, но мы много усилий положили на улучшение производительности в Питоне. С другой стороны это было ДО, что означало, что внесение изменений будет сопряжено с некоторыми трудностями.
Это было связано с 2 причинами:
- Рендеринг и выравнивание - это переплетенные воедино темы, изменение одного влекло за собой риск потери работоспособности другого
- Цикл тестирования разработки на Питоне значительно короче цикла тестирования разработки на Си++
Вместо того, что бы оптимизировать код на Питоне - мы решили уменьши объем работы, что позволило бы привести к тем же результатам. Выравнивание делалось каждый кадр при обновлении иерархии UI, это было заменено на кэширование результатов и вызов выравнивания при при любых изменениях их свойств.
Имея четкое разделение в выравнивании мы получили более простой способ оптимизировать каждую часть этого пазла.
Почему мне должно быть не всё равно?
Когда мы запускали игру 8 лет наза UI выглядел круто по сравнению с другими играми. Времена меняются, а вот наш пользовательский интерфейс не очень. Хотя такие проекты как карборUI трудно даются - мы всегда должны делать что то такое, что позволяет выйти за рамки, использовать всё, что дают современные технологии. Даже если игроки не увидят сейчас очевидной разницы, когда мы запустим карбонUI на транке, то мы можем вам пообещать, что наши программеры теперь говорят о много большем типа так - "Ага, без проблем" когда им ставят очередную, немного сумасшедшую идею в задачи. В конечном счёте в результате внедрения CarbonUI наша любимая маленькая игра про космос станет много круче.
Что будет с производительностью?
Мы расскажем подробнее о разнице в производительности с CarbonUI в скором девблоге!
upd :
EVE Online: Incursion 1.6 планируется к установке в увеличеный ДТ во вторник 31 мая. ДТ начнется в 10:00 UTC (14 по МСК) и будет завершен в 16:00 UTC (20 по МСК).
Incursion 1.6 представляет новый CarbonUI framework, открывающий дорогу к новому улучшеному пользовательскому нтерфейсу EVE Online.
CarbonUI это эволюция текущего UI framework, с совенренно новой моделью рендеренга слоев, постовляющей кучу нативных эффектов для элементов UI рендеринга элементов UI в 3D сцены.
Дополнительный патч для исправления косяков с флит файндером будет доступен после установки инкурсиона 1.6.
Оригинал
upd : Патч уже установлен и повлек за собой некоторые проблемы.
О методе их решения можно почитать тут (англ.)
upd 2 : новая порция проблем стала известна. О них можно прочитать на офф форуме (англ.)
upd 3 : что будет исправлено в патче от 1 июня. Об этом можно прочитать на офф форуме (англ.)
upd 4: Патч 3 июня
Оригинал
Фиксы клиента
- Капа будет правильно отображаться
- Таймер сессии больше не будет истерично мигать (я думал это фича. Прим. переводчика)
- Комбат шорткаты теперь будут работать корректно. Нажал на объект - вызвал шорткат.
- Фикс окна рассылки.
- Исчезнувшие кнопки работы с джамп клонами будут востановлены.
- Кол-во бабла требуемое для репайра чего либо будет отображаться в окне репайра.
- Текущая вкладка ассетов будет сохранена в случае смены шипа.
- Количество не выполненых контрактов будет отображаться корректно.
- Игроки больше не будут терять бай и селл ордера в окне маркета.
- Дисплей капаситора вернулся на свое законное место
Фиксы со стороны сервера
- Планетарные реусурсы и экстраткотры будут возвращать прежние объемы, никаких больше опытных подгонов.
- Пожалуйста, убедитесь что Вы установили сей патч, иначе работа с ПИ будет затруднительна.
ДТ будет увеличен до 12 по UTC (16 по МСК)
Сообщение отредактировал Chegevarich: 03 June 2011 - 16:41