Archive for September 2007

Мгновенное исполнение желаний.

Болтаем на #ff. Говорю – а вот круто было бы, братва, говорить SetLOD для текстуры, а параметр – float. Чтобы при сэмплинге посчитанный mip-фактор обрезался. Можно делать красивую незаметную загрузку старших мипов, постепенно сдвигая границу к старшему мипу.

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

А мне консольные люди говорят – йоу, писишный неудачник! Фича такая есть у нас  - clamp посчитанного mip-фактора в интервал. Нижнее и верхнее значение – float числа.

Не успел захотеть,  а фича появилась в железе.

All your base are belong to us

Слегка вялое теоретичное наблюдение одного знакомого.
(в святъх традициях E-Prime перед каждъм предложением вставлять ‘Он думает что..’).

Вот космос. Вокруг пролетает метальнъй кусок, спутник китайский.
Давно перестал работать, примерно между второй и третьей ступенью ‘Протона’.
Ему одиноко и очень холодно. Он смотрит вниз, где всякая протоплазменая хрень жрет себя и планету, переваривает все добро в … ну, и образуются редкие лужицъ, грустно отражая свет.
В некоторъй лужицах бактерии. Нам интереснъ 3 типа етих зверей – программеръ, художники и гейм-дизайнеръ. В разнъх лужах мутации прошли конечно не совсем так, но общее дерево развития схожее.

Continue reading ‘All your base are belong to us’ »

Инструменты, утилиты, код не исполняемый в runtime.

Напишу пожалуй очень короткий пост. Сила движка для игры/игр в инструментах.

Это то, что отличает поделку на коленках где надергано много модных технологий от мощного движка на котором вышло/выйдет много игр. Зачем нам сложная система подчёта Sperical Harmonics если у нас не будет утилитки, которая их расчитает заранее в offline? Зачем нам мегопродвинутая система частиц, если у нас нет редактора для неё?

Правильно, незачем.

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

Точно также легко написать bump который будет с самозатенением, рейтресингом внутри по текстуре и другими наворотами. Но вот подобрать, чтобы совпадали tangent space при генерации и при выводе это уже надо постараться. А совместить такой мегобамп с меготенями или ещё чем - это уже задача для самурая.

Или написать утилитку/плагин для редактирования материала наиболее приближенного к собственно движку?

Кстати вопрос на засыпку. Почему ambient цвет в 3ds max это свойство материала?

Про оперативные мозги

“Любая программа стремится занять всю доступную память”
Законы Мерфи, Искусство проектирования, 3-й закон машинного программирования.

На днях узнал про печальную проблему, которая постигла одну из наших демок. Оказывается, ее нельзя запускать на компах с 1 Гб оперативки, потому что демка требует себе, любимой, 1.5 Гб памяти.
Крепко задумался и решил проверить, а как обстоит дело на других проектах. Как правило, я стараюсь придерживаться следующих позиций, применительно к программам на PC:

  • программа должна стараться не выходить за предел 600 Мб аллокаций;
  • программа не должна иметь утечек памяти;
  • программа должна обладать разумной фрагментацией;
  • программа должна минимизировать накладные расходы на загрузке, предотвращая, например, излишние преобразования данных или даже копирование загруженных блоков из файлов с одного места в другое;
  • если программа имеет load on demand, она должна предотвращать собираение в оперативной памяти абсолютно все данных со всех уровней.

Так как же на самом деле обстоит ситуация с оперативной памятью в играх? Чтобы ответит себе на этот вопрос, я порылся в столе и собрал имеющиеся у меня компакт-диски (благо работа позволяет :)), которые могут претендовать на статус “крупных проектов”. Дальше при помощи Process Explorer из комплекта утилит бывшего sysinternals посмотрел, что происходит в системе.
Итак.

Continue reading ‘Про оперативные мозги’ »

Shadow map discussions

Мне всегда было интересно, получится ли из IRC-логов записывать что-то самодостаточное. Буду пробовать.

Вот как примерно все выглядит на #gamedeff.

Suggestions по формату и насколько успешно логи доносят идею, какие места непонятнее всего получились – более чем welcome. А то я думаю, продолжать ли эту затею.

Continue reading ‘Shadow map discussions’ »

…и о посредственности

Упомянутый баг-близнец состоит в непонятном поведении системы после системного вызова. Формально это разное с вызовом таки опциональной библиотеки имени DirectX; но практически еще противнее.

Титаническое отличие заключается в возможностях борьбы.
Continue reading ‘…и о посредственности’ »

О скитаниях вечных…

Скорбен путь программиста, но путь программиста-игродела скорбен вдвойне, ибо несть числа багам на стыке уровней чужих абстракций.

По молодости я имел предпочтения к вендорам видеокарт. Теперь я ненавижу их одинаково.
Continue reading ‘О скитаниях вечных…’ »

And now of something completely different

Читаем

http://www.dtf.ru/news/read.php?id=47801

и оригинал

http://www.escapistmagazine.com/news/view/76574-PS3-hits-top-form-in-four-to-six-years-Sony-says

Заголовки жгут – что оригинал, что перевод. Интересно, а что значит performing optimally, и чем это черевато? Впрочем это риторический вопрос.

Continue reading ‘And now of something completely different’ »

инсТРУменты

Я уже ранее писал в ЖЖ про то, что инструменты надо использовать по назначению. Копать туннель саперной лопаткой глупо. И водоотводную канавку на даче пробовать прорыть горнопроходческой машиной – еще более глупо. К сожалению, сплошь и рядом в проектах продолжает встречаться как горнопроходческая машина для канав (что в первую очередь влечет за собой существенные потери по производительности и памяти), так и саперная лопатка для туннелей (сильное удлинение процесса разработки и охрененная нестабильность приложения).

Continue reading ‘инсТРУменты’ »

ЕЗЫГ МОЙ. Брейн-дамп номер 0. Что, кому, на какой платформе.

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

Continue reading ‘ЕЗЫГ МОЙ. Брейн-дамп номер 0. Что, кому, на какой платформе.’ »