понедельник, мая 25, 2009

Hullywood - почти релиз!

Мы шли к этому последние 4 месяца. Наконец-то финишная прямая. Postmortem писать еще рано, а о релизе, который состоится в эту среду, 27-го числа уже пора :)

пятница, мая 22, 2009

Краткий обзор Virtools 4.1 => 5.0

Новая версия Virtools 5.0 вышла уже под новым именем – 3D Via Virtools 5.0. Сразу скажу, что к сожалению пакет всю больше изменяется в сторону интеграции с пакетами DS, соответственно приобретает все больше механизмов для entertainment проектов и всё меньше из раздела game dev. Анализируя запросы swap-meet можно сказать, что только 5 из них были удовлетворены. О них в первую очередь.

LUA Scripting теперь интегрирован в виртулз. По сравнение с VSL его центральным преимуществом является корректная работа с global scope и наличие большого числа бесплатных плагинов. В режимы выполнения он к транслируется в luac в режиме release и по скорости работы (несмотря на офф заявления разработчиков Virtools) мало отличается по быстродействию в сравнение с VSL. Мне однако непонятна причина, почему инженеры не стали реализовывать возможность использовать luac (скомпилированный в байт-код ) . LUA язык с нестрогой типизаций и отсутствием классов в привычном понимании (с++ например), организация классов похожа на JavaScript. Пример из документации LUA. Я сам использовал чистый LUA модуль для классов без сложного наследования (можно найти на LuaForce).

Насколько я понимаю, основным фокусом LUA должно стать создание новых BB с его использованием, к тому же он является стандартом в индустрии. Редактор LUA аналогичен VSL однако в нем нельзя создавать global scripts (видимо в виду специфики scope). В том числе в редакторе присутствует проверка синтаксиса, консоль, отладка и возможность сокрытия скриптов. Очень понравилось , что в заработали тредовые библиотеки LUA. Несмотря на предупреждения в справке все работает стабильно, возможно конечно что моих
получасовых тестов недостаточно.

Blend Shapе Support - поддержка BS по сути открывает ворота в качественную лицевую анимацию. VSL (LUA) содержит все необходимые функции управления весами и их перераспределением. Особо приятно, что blend shape воспринимается как единый меш. По сути это давно является стандартом – кости для анимации скелета и blend shapes для лицевой анимации. Экспорт доступен из Maya и Max.

Изменения в управлении объектам – 3D Compass. Собственно тут ноги растут из продуктов DS для которых этот элемент манипуляции объектами – норма. По собственному впечатлению – очень удобно, но нужно привыкнуть. По началу постоянно делал не то, что хотелось.
Очень понравился smart drag & drop – объект размещается строго в меcте расположения курсора или поверх объекта, на который указывает мышка. Я думаю, что те кто реально собирал сцены уже внутри виртулза прекрасно знают этот геморрой с перетаскиванием объекта в нужные координаты. В этой фичей это превращается в очень простую операцию.

У блока Render Scene In RT View появился параметр "Override Shader Technique", который позволяет отсчитать сцену не с Override Material а именно Tech шейдера, который доступен материалу. Собственно сейчас делать любые пост эффекты или например тени или материалы с альфа тестом стало реально просто.

Появилась возможность отсчитать сцену сразу во фрейм буфер (т.е. не только в текстуру как раньше). Как следствие
FSAA и hardware based texture/frame buffer copy (Stretch Rect). Появился рендер в стерео текстуру. Resolve Multisampling & Resume Multisampling – доступ во frame buffer на запись, чтение, overlay, перенаправление вывода. Позволяет извлечь color buffer (color/depth ) и stencil. В shaders исполняемых в Combinate RT View стали доступны AlphaTestEnable, AlphaBlendEnable, AlphaRef (OpenGL only: SingleSided, DoubleSided).
Следуя подсказкам Доминика нашлись следы работы над shader based shadow maps, новой семантикой, блоками и аппаратной
поддержкой hardware shadow texture format. В том числе shadow_fx.cpp содержит рабочую версию шейдера теней. У меня сложилось впечатление, что данный функционал не вошел в релиз сугубо по причине нехватки времени на тестирование – после ручной сборки менеджера – тени работали прекрасно, хоть и пришлось их вешать хинтом.

Хочу еще отдельно отметить Enhanced Content Protection. Об этой возможности просили с 2003 года. Суть ее заключается в следующем – открывая vmo с помощью custom player можно через ShaderManager и VSL Manager получить текст скриптов и шейдеров. Помимо прочего можно выполнить пересохранение так, что будут видны все скрипты проекта (будут утеряны только оригинальные имена переменных). В 5.0 по крайней мере shaders и vsl можно закрыть от просмотра и редактированию по паролю. LUA осталься без подобной защиты ? видимо потому, что он легко может быть конвертирован в текст даже из luac состояния. Однако совсем не понятно, почему не сделали банальное архивирование с паролем при сохранении например через CryptWriteBuffer (он все равно вызывается этим менеджером).

Новые блоки, всего их 31штука. Большей частью открытия не представляют, напишу самые интересные. Для ленивых и просто не дружащих с математикой появились Convert From Spherical & Convert To Spherical. Собственно что они делают понятно из названия – пересчитывают координаты в сферическую систему координат и обратно.
Merge Materials &Merge Textures - позволяют избавиться от дублей текстур и материалов в рантайме. Появился Is Key Down - я думаю, что все кто с виртулз работает давно имеет его аналог.
XML Manager теперь доступен во всех плеерах, включая web – полный комплект иструментария для работы с XML.

Появился настраиваемый Auto Save.
В Level Manager отображаются созданные в системе шрифты, но почему то не удаляются и не привязаны к текстурам – тупо список.

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

Это аналог worksets для скриптов. При переходе
между папками отображаются только ее скрипты. Очень удобная вещь.




Приведу багфисы 5-ки:
• A particle system bounding box did not take into account the size of the particles, leading to visibility issues.
• When scaling a camera,size of displayed particles were incorrect. This is now fixed. The workaround of billboard size corrections should now be removed from existing compositions; otherwise, the compensation scale will be applied twice.
• Errors in normal export on morph animations in 3ds max exporter.
• Execution time inside aCall Behavior was not accurate (execution was too fast).
• "Display Progression Bar" was ignoring the "Foreground sprites" visibility parameter in the "Render Scene in RT View."
• The "Transform" function in a parameter operation or Op BB was 1 frame late (using matrix
of the previous frame).
• The depth parameter in the "Ray Intersection" was not used accurately (i.e. the depth used was smaller than the parameter value).
• Strange behaviors happened when severally call behaviors linked to the same BG were called simultaneously.
• Visibility issues with particles when switching between scenes.
• Imprecision occurred with large negative ints in VSL.
• Write in texture could crash when using uv outside the [0.0,1.0] range.
• A small memory leak existed in the standalone player.
• Dynamically loading animation in VSL did not work when multiple characters had the same hierarchy.
• "Copy Buffer to Texture" BB did not copy the alpha component of the buffer.
• 2D Frames could grow or shrink slowly in the scene.
• Crash could occur when pressing F4 in the Schematic.
• When losing connection with the license server, one couldn't save the current composition before exiting Virtools.
• Using the Animation Synchronizer with the OpenGL rasterizer could kill the 3D View.
• When moving a graph with the alt key down could remove some links in the Schematic.
• Saving window layout in the user profile could make virtools crash.
• Loading a V8U8 texture could mess the float multiplications.
• 2D picking was not always working with Proj Ref Camera (VR Pack).

На VR Library моя лицензия не распространяется, так что посмотреть не получилось. Из центрального - добавили много нового оборудованием, стерео текстуры и решили проблемы с утечками памяти и быстродействием.

Из заявленного ранее - Scalse Form GUI нет. Тщательно анализируя код я не нашел даже следов его присутствия. Поддержка Soft Kinetics ограничилась демонстрациями на GDC`09, препроцеcсор текстур отправился в MP ? Новая библиотека звука осталась за бортом.

Читаю доклад на КРИ 2009

Сегодня принесли запись моего доклада. Выкладываю, как и обещал ранее. Презентация и видео, которое я показывал на ноутбуке двумя постами ниже.

воскресенье, мая 17, 2009

КРИ 2009

Сегодня читал доклад на КРИ - "Мультиплатформенное протототипирование- Миф или Реальность". Постарался рассказать почему нельзя игнорировать создание прототипов по мере разработки, о видах разработки прототипов и рассказал о наболевшем - virools и создании прототипов. О рисках и сложностях разработки с точки зрения менеджмента, геймдизайнера и программиста.
Волновался жутко, а вот сам доклад прошел как то буднично - я ожидал намного более агрессивной публики. С другой стороны утро, воскресенье :) это отягчающие факторы, наверное все скандалисты остались дома!
По сравнению с прошлым годом выставка оставила мрачное впечатление - людей мало, люди у стоек большей частью настроены пессиместично, проектов заметно меньше по сравнение с прошлым годом.

Материалы:
Презентация доклада в ppt. Ролик демонстрация экспериментов с пост эффектами к инкриментарным прототипам. Попытка анализа идей с постэффектам - ЧБ, сепия, slow motion, slow motion + matrix camera. И тесты подгототовленных эффектов на живой сцене. Ролик, демонстрирующий прототип небольшой "аркады" (в доклад не вошел).

Как только будет готово видео самого доклада и звук - непременно выложу ссылки.