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


Это самое ясное изложение идей, которыми творчество живо там, где оно не умерло.
Тех идей, отсветы которых мы видим у Iñigo Quílez, автора знаменитой демы Elevated:


Спасибо [livejournal.com profile] lionet и всем в твиттере.
aruslan: (Default)
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 - по крайней мере имеет смысл.
Сам по себе этот подход не уменьшает время реакции игры на ввод: потребуются изменения в дизайне и в рантайме (обработка ввода, старт анимации и т.п.), но это можно подтянуть, было бы желание.

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

World Science Festival 2009:
Bobby McFerrin Demonstrates the Power of the Pentatonic Scale
(больше - здесь: http://vimeo.com/user1103909)


via @jeffreitman
aruslan: (Default)
Забавно рассказывать о map и fold/reduce - и говорить о MapReduce.
Примерно так же забавно, как говорить о map и fold/reduce, объясняя fold/refold/unfold.
Википедия однозначно приносит плоды.

Зато ликбез был успешно проведён аж на трёх фронтах. И это радует.
aruslan: (Default)
Подход "Improvise, modify, adapt and overcome" отлично применим и к оптимизации.

Оптимизировать намазанное ровным слоем - грустно.
Поэтому проблемы нужно творчески сконцентрировать в хорошо локализованные группы пиков.
И пики потом отрезать.

Главное - не бояться полученного концентрата.
Ибо ночь темнее всего перед рассветом.

Через это я считаю, что канал ДТФ рулит.
Канализация вообще великая штука, ибо концентрирует, централизует - и отрезает.
Бояться надо как раз равномерной Великой вони.
aruslan: (Default)
Спешите видеть замечательное введение в lock free стеки у [livejournal.com profile] _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.
aruslan: (Default)
Не очень понимаю, чем дуэт параллельно работающих машин Тьюринга отличается от одной, если нас интересует ответ от хотя бы одной из них.

Конструктивно, мы можем написать интерпретатор машины Тьюринга на машине Тьюринга.
Мы можем сделать его "параллельным" путём пошаговой интерпретации каждой из двух программ вместе с их состояниями.
И мы можем остановиться, если хотя бы одна из программ остановилась.

Очень хочется помощи зала.
Вот цытато:

Now, since f(k) is determined by a parallel duo of Turing machines that is not, itself, a Turing machine, but which can be viewed as a deterministic Turing oracle, it follows that there is no algorithmic method of determining f(k); in other words, although the number-theoretic function f(x) is a well-defined mathematical concept, f is not a mathematical object. Hence f(x) may be considered as determinate, but uncomputable; its values are essentially unpredictable, and so, by definition, truly random.

(Is the Halting probability a Dedekind real number?)
aruslan: (Default)
Верификатор алгоритмов синхронизации для relaxed моделей памяти (в особенности C++0x).

http://www.rsdn.ru/Forum/message/3068646.flat.aspx
http://groups.google.ru/group/relacy/

Очень вкусно.
aruslan: (Default)
Май 2003: "Why Pthreads are better than Win32 threads"
Октябрь 2006: "Why Windows Threads Are Better Than POSIX Threads"
(ц) Clay Breshears (Intel)

Мне особенно понравилось про Persistence of signals.
aruslan: (Default)
Иногда создается ощущение, что то, как линкер работает - военная тайна.
И поэтому делают странное и смешное.

Например, в процессе чтения одного ассета (или библиотеки ассетов) - лезут в другой, в третий, обратно в первый, обратно во второй.
До тех пор, пока много секунд загрузки не будут потрачены исключительно на DVD seek.
Про циркулярные зависимости я промолчу. И про тонны копирований внутри - тоже.
Ну и про отсутствие минимального контроля целостности.

А вот линкеры - они обычно умнее. Особенно те, что разрешают связи при загрузке.
Пусть не все, но у нас и задача попроще )
Замечу - эта схема более чем тривиальная.
Её в самом тупом виде реализовать ничуть не сложнее, чем сложную обычную.
Учитывая управление временем жизни и прочее счастье вроде хэш-таблиц - так еще и проще.

Грустно про это рассказывать, на самом деле. Ведь не стриминг бесконечных миров даже.
Вот и дядя Дима на gamedeff рассказывает хоть и уровнем повыше, но всё про то же.

Зачем делать плохо - вот загадка.
Лучше уж не делать совсем - хотя бы устойчивее работать будет, да и дешевле.
aruslan: (Default)
http://www.research.att.com/~bs/hopl-almost-final.pdf

Для Конференции по истории языков программирования (HOPL) отбирается 12-14 докладов один раз в пятнадцать лет.

В 1993 году Бьярн Страуструп выступил на Второй конференции по истории языков программирования с докладом "A history of C++: 1979-1991", более известным в переработанной и развёрнутой версии D&E.

Перед нами -- черновик доклада по C++ для Третьей конференции (HOPL-III). Начинается со времён начала стандартизации и первого D&E, и, через ISO 1998 и 2003, доходит до поздних этапов пересмотра стандарта C++0x в 2007.

D&E был интереснее технически. Evolving a language - глубже политически.
Приятного прочтения!

via LtU HOPL-III
aruslan: (Default)
Поясню, про что тут.

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

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

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

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

Вот и всё.
aruslan: (Default)
Благодаря [livejournal.com profile] rudybear вспомнил, что забыл подобновить ссылки на C++09 на моём del.icio.us/aruslan/C++ (aka [livejournal.com profile] 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 включат в стандарт, какого размера будет четвертое издание Страуструпа? :)
aruslan: (Default)
[livejournal.com profile] kunaifusu сегодня двинул сильно правильную мысль про неадекватные интервью как фермент глобального bozo explosion в индустрии.

А любое интервью - это, очевидно, способ оценить компанию.

Про сливные бачки и ГЭС )
Потому что специалисты по C++ в геймдеве действительно нужны нечасто.
И гораздо чаще - нужны специалисты по разработке игр.
aruslan: (Default)
Сегодня напомнили, что boost::interprocess (который в девичестве был известен как shmem) жив и всячески приближается к.
Лежит в boost vault.

А ведь там есть всякие забавные контейнеры, аллокаторы и смарт-пойнтеры.
Так что приглашаю к столу.
aruslan: (Default)
Сегодня Мамонт раскрыл мне левую нижнюю чакру простым ключом /GH в MSVC++.
Который _pentry()/_pexit() hooks.

Удивительные свойства сгенерированного кода позволяют делать всякие вкусные и полезные вещи.
Мне этого очень когда-то не хватало.

Воистину, век живи, век учись.
aruslan: (Default)
Очень рекомендую к прочтению замечательную статью "Магия" [livejournal.com profile] kunaifusu про довольно стандартный трик магического преобразования floating point в int с помощью загадочных констант.

В статье очень детально и вкусно расписываются корни преобразования и происхождение чисел вроде
  (double)fp+6755399441055744.0

Что характерно, рассказывается как сделать это без double ;)

Помню своё удивление, когда я впервые увидел зубодробительные пассажи для табличного вычисления синусов и косинусов, которые начинались с характерного приведения аргументов
  inline float SinCosFast(float x, float &cosx) 
  {
    x= 0.159155f*x +1536.0f;
    ...
  }


Уже потом появились cvtps2pi, споры о тормозах, выравнивания, спецхинты и инструкции. Естественно, не везде (ц).

А тогда это было интересным и свежим взглядом на жизнь.

Особенно из-за явного джедайского форса.
Который молча рубил одной строчкой тупые брутальные
    const int a = *reinterpret_cast<const int*>(&fp);
    const int sign = (a>>31);
    const int mantissa  = (a&((1<<23)-1))|(1<<23);
    const int exponent  = ((a&0x7fffffff)>>23)-127;
    const int r         = ((unsigned int)(mantissa)<<8)>>(31-exponent);
    return ((r ^ (sign)) - sign ) &~ (exponent>>31);


Клёвая статья, спасибо! :)

Ну и танкистские ссылки напоследок:

1. "What Every Computer Scientist Should Know About Floating Point Arithmetic" by David Goldberg
2. "Let's Go to the (Floating) Point" by Chris Hecker
3. "Магия" by [livejournal.com profile] kunaifusu
4. "Origin of Quake3's Fast InvSqrt()" - Part I, читать камменты, Part II (via [livejournal.com profile] qiller_neu)
aruslan: (Default)
И вновь здравствуйте!
Последнее время было совсем не до ЖЖ, произошло много интересного ;)
Обязательно расскажу в самое ближайшее времяTM, так что stay tuned!

Ну а сейчас - есть тема.

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

Готов заплатить разумное количество денег, даже если это будет полностью доступное opensource решение с минимальной рихтовкой и сборкой, выполненной вами. Можно (и нужно) использовать любые наработки и доступные freeware/opensource решения, лишь бы можно было передать права на модификацию и использование.

Какой нужен чат )
Срок - три недели, в идеале - одна-две недели.
По деньгам - договоримся.
Чем более я буду счастливый по фичам и простоте и т.п. - тем больше денег.

Обращаться в аську ICQ 233978046(даже если я оффлайн; завтра буду где-то с 11 утра живой).
Убедительная просьба начинать не с "Превед", а с "Есть готовый чат" или там "Хочу денег" :)
Ну или пишите в камменты :)

Буду всячески благодарен за вирусную рассылку этой ссылки по знакомым, имеющим отношение к.
Мне правда очень нужно.
Кстате, если такое есть уже прямо вот вообще уже полностью собранное - подходи и бери - я всё равно дам денег (первому кто), просто потому что спасибо, вот :)

P.S. Поздравляю всех с Новым годом, ага! :))
Я вроде вынырнул, и практически уже вновь начал читать и комментить ЖЖ!
aruslan: (Default)
Gucci> У нас на металлургическом заводе QNX юзают. 
Gucci> Там админ 200 тысяч в месяц получает, а если 
Gucci> что-то падает, его как правило кидают в багажник 
Gucci> и в лес отвозят.

via bash
sin cere для [livejournal.com profile] dmi3s

Profile

aruslan: (Default)
aruslan

January 2014

S M T W T F S
   1234
56789 1011
12131415161718
19202122232425
262728293031 

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 20th, 2017 14:54
Powered by Dreamwidth Studios