Category: it

Category was added automatically. Read all entries about "it".

lnd2

Мгновения Силы - 2: Brett Victor - Inventing on Principle

Обязательно к просмотру:
Исключительно мощная демонстрация силы и простоты от Brett Victor
(изобретателя новых концепций пользовательского интерфейса в Apple):


Его презентация "The Future of Programming":

Bret Victor - The Future of Programming from Bret Victor on Vimeo.



Ну и совершенно гениальная "презентация" Steven Wittens -- посмотрите хотя бы про Безье!
Steven Wittens - Making Things with Maths

Это самое ясное изложение идей, которыми творчество живо там, где оно не умерло.
Bret Victor - Kill Math

Тех идей, отсветы которых мы видим у Iñigo Quílez, автора знаменитой демы Elevated:


Спасибо lionet и всем в твиттере.
pepper

Why Reinhard desaturates his blacks

Update:
Ben Diamand (SCEA, God of War III) написал объёмный комментарий со схожими наблюдениями и рассказал про то, как было сделано в God of War III.

И, чтобы два раза не вставать:

Tom Madams написал забавную заметку по следам выступления John Hable (Uncharted 2 HDR) на GDC и ряду его статей в блоге:
Image and video hosting by TinyPicFilmic Tonemapping Operators (by John Hable)
Why Reinhard desaturates your blacks (by John Hable)

Why Reinhard desaturates my blacks (by Tom Madams)

В результате всё получилось как всегда, что в общем-то не удивляет :)

На этой оптимистичной ноте передаю привет от изумительно-тёплого ветра в СФ.
И, кроме того, я считаю, что 60 FPS от Димы Андреева - это сила.
lnd2

Какие 60 FPS сейчас нужны

Update: На Eurogamer вышла объёмная статья про технологию Димы:
LucasArts' 60FPS Force Unleashed II tech demo


Дима "AND" Андреев мощно выступил на SIGGRAPH с показом зачем и как делать 60 FPS из 30.
Real-time Frame Rate Up-conversion for Video Games (слайды с комментариями, видео)

Во многих компаниях прошла война споров "60 vs 30".
Обычных аргументов - два: input latency (60 FPS рулит) и качество картинки (рулит 30 FPS).
Честные 60 FPS сделать можно, но удержать планку визуального качества на уровне хороших игр с 30 FPS будет довольно непросто. И наоборот, можно обрабатывать ввод чаще, чем раз в кадр, и реагировать на него хотя бы визуально раньше, но это сильно зависит от жанра и требует соответствующих изменений в игре.

Классический набор сломанных копий:
Christer Ericson: Input Latency
Mike Acton: Ratchet and Clank Future will probably be Insomniac’s last 60fps game
Cliff Bleszinski: Our target is, and shall remain, 30 fps
SCEA Explains Reason For 30FPS In God Of War III
Cevat Yerli: “nothing below” 30fps will suffice in Crysis 2

Полтора года назад я бы скептически сказал "не умеешь 60, не мучь себя", но то, что сделал Дима - реально доставляет, и эффект, конечно же, надо просто видеть.

Для меня самое убойное в этой технике - визуальная гладкость и качество этих 60 FPS.
Есть ощущение, что делать вот такие 60 FPS - по крайней мере имеет смысл.
Сам по себе этот подход не уменьшает время реакции игры на ввод: потребуются изменения в дизайне и в рантайме (обработка ввода, старт анимации и т.п.), но это можно подтянуть, было бы желание.

Ну а пока - меня реально просто прёт :)
Через это интересно послушать ваши мысли по этому поводу.
lnd2

Занимательный бег не спеша у _foreseer

Спешите видеть замечательное введение в lock free стеки у _foreseer:
Running lock free.

Там просто и внятно изложена базовая идея и есть хорошие ссылки на почитать.
Ну а уж презентация Elimination-Backoff Stack просто жжёт термоядом - спасибо за ссылку, Андрей!

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

"Как стек running free у нас" - ABA брутально через CAS2.
Но чаще не столько CAS, сколько классическое комбо Load-Link/Store-Conditional.
А именно lwarx/lwsync/stwcx/GETLLAR/PUTLLC, и дальше вариации на тему очень быстрой vs очень устойчивой синхронизации (ну и на обход багов в отдельно взятых процессорах).

Важно помнить про тот самый exponential backoff. Ну и вообще, важно думать.
Если думать, то и lock-free структуры не понадобятся :)
Ну а если не думать, то они скорее всё испортят, чем помогут.

Вот не далее чем на прошлой неделе загадочно и очень каскадно протухла память.
И - что вы думаете? - выяснилось, что зажгла самопальная реализация lock-free очереди.
Автору кода было интереснее реализовывать lock free очередь нежели свои таски.
И хотя тема протеста "маленького человека" против обезличенной корпоративной машины мне в целом понятна, это таки не повод не читать википедию.

Я по-прежнему считаю, что геймдев конторы обязаны предоставлять публичный доступ к исходникам. Чтобы термины "exponential backoff", "memory barrier" и "lock-line reservation" из абстрактных превратились в конкретные, благодаря помощи зала.
Принцип Керкхоффа вполне применим к геймдеву, ибо смысл соревнований - в умении создавать и шипить игры.

Через это ссылки на почитать дальше про lock free и вообще:
1. Lock-Free Code: A False Sense of Security Хебра нашего Саттера.
2. Insomniac’s SPU Best Practices (PPT) Майка нашего Эктона.
3. Obstruction-Free Synchronization (PDF) того самого Мориса Херлихуя (ц) _foreseer.
lnd2

Принудительная диагностика

Иногда возникает брутальное желание запретить коммит кода, если в нём нет или мало ассертов.
С одной стороны - учить пользоваться вилкой глупо если код как пюре.
Но ведь становятся же люди веселее, когда берут образ веселого человека?..

Poll #1109174 Принудительная диагностика

Сколько ассертов принудительно требовать при коммите?

В любой функции - минимум один ассерт (кроме inline в h)
9(12.5%)
В любой функции с параметрами - минимум один ассерт на аргумент
13(18.1%)
На каждые 7 строк - один ассерт
10(13.9%)
На каждые 5 строк - один ассерт
1(1.4%)
Не требовать обязательного ассерта - не будут писать всё равно
7(9.7%)
Не требовать обязательного ассерта - всё равно не поможет
32(44.4%)
lnd2

Номер версии

Иногда создается ощущение, что проблемы диагностики бинарной несовместимости не были решены обычным дайджестом лет сорок назад.
Т.е. не на Microsoft 360, а на вполне себе IBM 360.

В самом тупом случае используют просто номер версии. Слишком хрупко ибо человеки.
Или CRC32 всего текста шейдера или там описания класса. Это чересчур строго.

Более жизнеспособен дайджест бинарной совместимости.
Т.е. хэш того, от чего эта самая бинарная совместимость зависит.

Например для классов - это хэш от layoutа и сигнатур виртуальных функций плюс layoutа полей.
Для шейдеров - описание внешних связей (порядок, типы, имена/семантика).

И всё - при построении ассета, который требует конкретного шейдера, - считаем дайджест шейдера и пишем его прямо в ассет (32 бита например или там MD5).
А в рантайме берем дайджест теперь уже реального шейдера (из рантайма) и сравниваем с дайджестом что в ассете.

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

И вместо невероятных глюков и access violation спокойно говорят - "сорри, бинарная несовместимость".
lnd2

Пятничное - опять про интервью

Поясню, про что тут.

Зачем тест в котором человек что-то пишет (игру, например)?
Чтобы он написал что-то гениальное? Не-а.
То есть, конечно, гениальное приветствуется, но это не всегда главное.

Нужно три простых вещи.

1. Человек должен уметь общаться. Понимать, спрашивать и предлагать.
2. Человек должен уметь программировать. Реализовывать то, что понял.
3. Человек должен уметь заканчивать. Результативно. В полную силу.

Вот эти вот "Понимать" и "Заканчивать" - то, что бывает важнее всего.
Всё остальное можно побороть. Это - нет.
Collapse )
Ну а жёсткие, скриннинговые и брутальные вопросы по C++ в стиле kunaifusu - это стресс тест умения адаптироваться к неизвестному контексту без права на ошибку. Причём - в классическом C++ контексте - мы оба много чего знаем, осталось убедиться, что все DR прочитаны обоими.

Вот и всё.
lnd2

Пятничное - C++09 - синдром второй версии

Благодаря rudybear вспомнил, что забыл подобновить ссылки на C++09 на моём del.icio.us/aruslan/C++ (aka delicpp_aruslan), а ведь после майской встречи комитета всё расцвело в предвкушении C++09 public draft. Он ожидался в октябре 2007, теперь возможно сдвинется, но это уже не важно.

Разработчикам игр будет небезынтересно почитать пейпер Electronic Arts STL из мэйлинг листа.

На Google Tech Talks - замечательное видео "New features in the next C++ standard" (и там есть еще много всего вкусненького!):

Comeau как всегда впереди планеты - вот список уже поддерживаемых Comeau фич C++09.

И, наконец, сам драфт стандарта (PDF) из майского мэйлинг-листа.


C++ меняется, и меняется сильно и толсто.
Как там у Брукса про синдром второй системы? ;)

А вот и цитата из старой доброй ветки Дамира про C++ на gamedev.ru:
Infernal Papuan
Интересно, если boost включат в стандарт, какого размера будет четвертое издание Страуструпа? :)
lnd2

Пятничное - дождик в Питере


http://movies.teamxbox.com/xbox360/pgr4/pgr4_stpetersburgrain_720p.wmv (53M)

Что Питер - это они, конечно, молодцы, это правильно.
В первом PGR я обожал рассекать по Лондону - нравится мне Лондон, ничего не могу с собой поделать.
Да и геймплей был отменный. Идея непрерывно набирать комбо-кудосы, сгорающие при малейшей ошибке или задержке в комбо - это круто. Сутками рубились.

Но вот дождика ребята явно давно не видели.
Брызг от асфальта нет, и вообще неправильный дождик какой-то.
У того же Сайбера - дождик вполне себе правильный.
И в одном нашем проекте, который зреет уже себе вполне.

В общем, выездную сессию ребятам надо устраивать.
В места, где дождь бывает ;)

Ну а Питер - Питер испортить тяжело.
Белые ночи, опять же.
Уже скоро :)