wizzard: (Default)
Что такое эксперимент Либета: в большинстве экспериментов у человека время принятия решения типа 0.1 сек, но EEG датчик на башке показывает, что сигнал появляется ДО того, как человек сам поймет, что он собирается сделать.

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

И всякие "моторные навыки", ходьба, танцы, вождение велосипеда, автомобиля, вот это всё - это обучение лагокомпенсатора.

Так вот, есть контроллер такой, читающий ЭЭГ, OCZ NIA называется - у меня он был. Ощущение отрицательной латенси вызывает просто охуение. Я этого никогда в жизни не забуду, "аватар в игре предсказывает мои действия"

В то время я даже намерял, там чуть ли не 700 мс запаса, т.е. ты собираешься выстрелить за 700 мс до того как ты выстрелил. Очень хорошо если за 300, это считается "внезапно". Поэтому лагокомпенсаторы возможны. Но во всяких шутерах они в лучшем случае линейно экстраполируют... Ну и 50-100 мс это предел, иначе игроки не могут отличить читера от человека, у которого просто лагает.

А сегодня я увидел мультиплеерный мод для kerbal space program. Там лагокомпенсатор асинхронный, он записывает действия игроков и проигрывает тех, кто в будущем для тех, кто в прошлом, а тех кто в прошлом симулирует, как будто они ничего не делали, и при коллизиях переигрывает.

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

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

Лагокомпенсатор должен рендерить оба варианта. То есть начинать виньетировать экран в стиле "мы дохнем" не тогда, когда "ой всё" - а тогда, когда пересекаются конусы неопределенности тушки игрока и очереди пуль другого игрока.

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

Да, в общем виде это AI-полная задача (надо предсказать противника, который живой человек, и данных про него в системе обьективно не хватает), но для вероятностного ее подвида весьма поможет датамайнинг по базе данных старых реплеев.

Кто еще не понял - в условиях современного интернета, его лагов и интерактивщины про это также в той или иной форме приходится думать ВСЕМ дизайнерам UI, другой вопрос, что параллелей с геймдевом они почему-то не проводят.
wizzard: (Default)
I don't want to win an argument, I want to win.

I.e. while it is obviously fun to use and abuse the logic, it isn't clear to me how does this help you in the long run - unless you got into TV debates, which we aren't going to discuss here.

Somehow related - "win wars, not battles".

From an optimization perspective: when you spend more on each try - you get less options to try. Seems like there is a balance somewhere.
wizzard: (Default)
Мне тут пришла в голову идея написать транслятор Javascript в Lua ;-)

(В обратную сторону уже пару штук есть)

В целом интересны такие вещи:

1) насколько страшно будет распухать код при попытке изобразить семантику ECMA-262 на Lua

2) будет ли конструкция ECMA-262 -> Lua -> LuaJIT быстрее V8 ;-)

3) насколько получится сделать модули ноды (npm) совместимыми с OpenResty

Что скажете?

(я уверен, что эта запись не соберет столько же комментов, сколько срачик про трамваи, но тем не менее)
wizzard: (Default)
Очень сложно жить, если на любой вопрос, заданный себе в форме "правильно ли я поступаю в данной ситуации?" ответом является "зависит от того, с какой стороны посмотреть..."

Чем мораль Х лучше или хуже морали У? А ничем, просто так сложилось, условий, при которых они сложились - все равно давно уже нет. Какую из них выбрать? А черт его знает.

Хорошо людям, которые верят! Ну и вообще наивным людям. Потому что в 90% случаев наивным быть хорошо - думай, не думай, за тебя уже подумали, общество-то иначе не держалось бы.

А я не верю, мне, видите ли, пруфы подавай. Надо думать. Пока думаешь - снижается скорость реакции, теплое местечко могут и занять. Поэтому верить в что-то и бежать вперед - выгодно. Пока столб на дороге не встретится. Столбов немного. Но есть. Но немного.

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

Только вот это тоже не работает. Чем ложь отличается от "не успел рассказать/забыл/подумал, что не важно"? Да ничем. Что, если каждый день сливать друг другу всё, что помним? Удивительно, мозги снова закипают! Только уже от обьема ненужной информации.

Обьективно ненужной, причем! 99% того, что случилось с вами сегодня, не повлияет на вас через пять лет. А 1% повлияет. И спрогнозировать, какой именно 1% - сейчас нельзя.

Прибавим к этому эмоции и субьективность восприятия. У всех разная база знаний, все делают разные выводы и искренне видят разные вещи. Даже я сам, блин, в разных состояниях оцениваю одно и то же совершенно по-разному.

Тут должен был быть вывод. Только нет его.
wizzard: (Default)
> Все семантические технологии упираются в то, что люди на местах ничего не понимают.

> Насчёт автоматической перестройки UML моделей - это как работать с документом, где случайным образом меняется текст. Плюс с диаграммами проблема в том, что это графика, то есть для её адекватного использования надо владеть хотя бы основами графического дизайна.

(с) vit_r, в комментах.

Я еще от себя добавлю, что тексты тоже далеко не все умеют писать.
wizzard: (Default)
машина без колеса

...тот неловкий момент, когда вы понимаете, что в вашей йоба-операционке нету dir (ls). Не прошло и 9 лет *facepalm*

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

И это невзирая на то, что *первое*, что я соорудил, когда мне в руки в 2001 году попался дотнет - это был навигатор по хипу запущенного приложения (с редактором, на рефлекшене работающий)

блин, таким идиотом себя теперь чувствую...
wizzard: (Default)
а вы когда-нибудь задумывались, что обфускация кода в пределе эквивалентна гомоморфному шифрованию?

то-то мне исторически все время казалось, что в пейперах какие-то очень похожие концепции проскакивают...
wizzard: (Default)
Какие вы знаете безопасные (в смысле статически верифицируемые) виртуальные машины или форматы байткода?

(Также известно как typed assembly, proof-carrying assembler, managed code и такое прочее). Слайды по теме: http://www.cs.umd.edu/class/fall2006/cmsc631/lectures/talpcc.pdf

Я знаю BEAM (проконсультировался, увы, нет) и CLR.
JVM не подходит, потому что существующие формальные модели (http://cseweb.ucsd.edu/~gmporter/papers/formaljvm-ecoop01.pdf) не моделируют permissions, а смотрят только за integrity самого рантайма.

Требования примерно такие:

Level 0 protection: прога доказанно не может развалять рантайм (с этим проще всего, любой гипервизор или ОС на процессоре с MMU и ring levels подходит), на OOM, slowloris и прочее пока забьем для упрощения.

Level 1: прога доказанно не может развалять соседнюю прогу, иначе как через API (браузеры, JVM, dalvik, nacl, linux/bsd/windows/android итд итп)

Level 2: есть прога, из trusted library + untrusted code, антрастед код может звать методы из трастед либрари без оверхеда на IPC но доказанно не может обойти проверки, встроенные в них, даже если трастед лайбрари делает колбэки в untrusted код (CLR)

Level 3: в общем случае, можно навесить constraints на код, в виде security capabilities, и статически показать, что этот код будет доказанно их придерживаться (F*?)

репост с привлечением комментов в оригинал приветствуется. и, да, стоит ли на английском это написать? на stackoverflow такие вопросы не любят, увы.
wizzard: (Default)
Третий месяц бьемся над выжиманием максимально возможной пропускной способности из полосы.

Решения, работающего во всех случаях, так до сих пор и не придумал. Зато придумали сабж. Похоже, он возможен. Надо писать статью.

Интересно, будет ли кто-то в реальности пользоваться протоколом, где key exchange занимает два часа и десятки мегабайт трафика? :D
wizzard: (Default)
duality

Я тут временами люблю перефигачивать себе мозги. Рефлексы, привычки, модели, точки зрения, образ мышления, вкусы - все это настраивается.
Read more... )

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

Ну и что теперь делать, блин? Не, как минимум один выход есть - соорудить сознательно управляемый переключатель между этими двумя состояниями ("социопат/дипломат"). Но на это уйдет минимум год, а то и 3-5... А делать что-то надо уже сейчас >_<. Отвратительно.

EDIT: говорят, что человек, который мне нужен - называется не психотерапевт, а менеджер/агент ;) Вообще, интересная мысль. Подумаю.

EDIT2: заместитель/бизнес-партнер. мда.
wizzard: (Default)
интересно, как бы так не сьехать крышей в попытке дизайна систем без опорных точек (single points of failure), потому что всякие релятивистские факторы лезут во все поля -_-

чтиво:
- http://pagesperso-systeme.lip6.fr/Marc.Shapiro/papers/RR-6956.pdf
- http://gsd.di.uminho.pt/members/cbm/ps/itc2008.pdf
- http://research.microsoft.com/pubs/192621/sigtt611-bernstein.pdf
- http://www.dtic.mil/cgi-bin/GetTRDoc?AD=ADA563903
- http://dl.acm.org/citation.cfm?id=2333116

(вообще его много, это просто сейчас во вкладках открыто, ничем особенным не выделяется)

Кстати, да. Будет ли кому-то интересно, если я буду регулярно писать про понравившиеся мне PDF-ки?
wizzard: (Default)
> Your order is on its way, and can no longer be changed.

Liars and Outliers: Enabling the Trust that Society Needs to Thrive

Foundations of Multidimensional and Metric Data Structures (The Morgan Kaufmann Series in Computer Graphics)

Наконец-то руки дошли заказать %)
Можно становиться в очередь, да.
wizzard: (Default)
Сегодня утром мы с G. размышляли про разные виды писателей и я сформулировал мысль, что один из мощных критериев выбора литературы для меня - база автора. Т.е. на основании чего он пишет свои произведения.

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

В общем и целом такие книги можно использовать для предсказания будущего - ака "чужой опыт, бесплатно!". Хватает их, правда, не бесконечно.

Один из факторов, которые меня сильно беспокоят - у меня закончились такие мануалы :) Точнее, до 2014-2015 еще хватит, но пора искать новое.

Да, при этом важно отличать идею от видения. Идею писатель погружает в видение, и у него получается сюжет. Если писатель пишет много - то это много сюжетов в общем похожем каркасе видения. Я, по крайней мере, не встречал еще писателей у которых бы получалось вырабатывать видения чаще чем раз в 5-10 лет.

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

Я, собственно, стараюсь и сам сидеть (читаю научные статьи, новости, то-се), но, к сожалению, скорость восприятия у человека ограничена. Выжимки в виде книг по смежным областям читать намного удобнее. Их, правда, фиг найдешь. Во-первых, реального bleeding edge всегда мало, а во-вторых, далеко не всегда человек может про это писать (коллеги могут не понять, например).

Поэтому пишется оно всегда эзоповым языком. Который далеко не всегда получается расшифровать. Если получается - то круто, мануал найден. Если не получается - тогда это просто художественная литература :) Хотя встречаются и технические произведения, в которых описано две вещи сразу - одна лежит на поверхности, а другая всплывает на 2-3 прочтение...

*СПГС = синдром поиска глубинного смысла
wizzard: (Default)
miTLS is a verified reference implementation of the TLS protocol. Our code fully supports its wire formats, ciphersuites, sessions and connections, re-handshakes and resumptions, alerts and errors, and data fragmentation, as prescribed in the RFCs; it interoperates with mainstream web browsers and servers. At the same time, our code is carefully structured to enable its modular, automated verification, from its main API down to computational assumptions on its cryptographic algorithms.

да, я в код не то чтобы очень внимательно смотрел, но изучить в любом случае стоит.
wizzard: (Default)
не прошло и (кто-знает-сколько-лет), как психовизуальные технологии пошли в реалтайм.

ну вначале это началось, конечно, в игрушках и видеокодеках. но теперь и вообще везде. процессора много, энергии мало, почему бы и нет.

а) динамический локальный контраст (грубо говоря, некоторые последние мобильники, картинка на которых непропорционально очень радует прессу, используют HDR для того, чтобы не так блёкнуть на солнце, суть-то одна и та же, сжимать 10000:1 в 255:1, или 255:1 в 30:1)
б) динамический глобальный контраст (ему уже несколько лет, но наконец-то научились его делать так, чтобы не выглядел как говно) - когда понятно, что яркие элементы и без того будут видны, яркость подсветки понижается, а gamma ramp выкручивается таким образом, чтобы визуально картинка на экране не изменялась, только в светлых тонах полутона теряются - всё равно глаз их не может различить
в) динамический refresh rate - на экране мигает курсор - вуаля, 5 FPS. фильм? 24. игрушка? 60!

ну про всякие мелочи типа разгона процессора в момент нажатия на клавишу/прикосновения к экрану, lcd overdrive, расширения стереобазы, софтверного шумоподавления (которое от года к году становится все круче) я уже и не говорю.

не знаю, это хорошо или плохо, но наверное хорошо (за исключением разве что volume wars). Поскольку проблемы с закончившейся гонкой мегагерц и заканчивающейся гонкой мегабайт нарастают, читов со временем будет становиться только больше :)

а вот ClearType, к счастью, уходит в прошлое, на смену приходят high-res экраны. Эх, когда же придумают что-нибудь чтобы пофиксить латенси для augmented reality.
wizzard: (Default)

пишу датафлов движок для продакшена в третий раз.

в какой-то книжечке я читал, что после 3 частных случаев можно наконец делать либу :)

и таки да, первые две задачи различались очень сильно, да и между второй и третьей разница заметная есть.

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

наверное, адепты функциональщины смогли бы это разрисовать какими-нибудь комбинаторами/iteratees, но у меня из-за наличия обратных связей это в голове не помещается (т.е. в графе обработки есть циклы - перезапрос пакетов, фидбек по параметрам итд итп)

edit: вставил картинку, картинка уменьшена и не кликабельна, дабы не вызывать вопросов у лоеров заказчика.
wizzard: (Default)
открыл для себя, что логика, где кроме "правда" и "ложь" бывает "неизвестно" и "противоречиво" называется FL4. А вот что еще можно почитать по теме, на русском или английском, кроме трудов Павлова? В идеале что-нибудь, эмм, прикладное, потому что философские и метафизические труды регулярно содержат мегатонны трэша с чуждой мне терминологией, об которую ломается мозг. Или гайд по терминологии если вдруг есть, тоже круто было бы.
wizzard: (Default)
Почему я считаю pointer chasing универсальной абстракцией вычислений?

Потому что он turing-complete!

> 29C3: Page Fault Liberation Army or Gained in Translation (EN)
> (произвольные вычисления на x86 MMU)
> http://www.youtube.com/watch?v=Y1ypnYIyzKk
> Обсуждение: http://news.ycombinator.com/item?id=5261598
wizzard: (Default)
вынесу из комментов:

собсно гря визуальных тулз есть 3 вида

1. моделирование, про код речи вообще не идет, за искл реверсной инженерии
2. рассчитанных на команду разработчиков и команду пользователей разработанной системы ("движок и дизайнеры" в геймдеве, и т.д.)
3. self-contained, рефлексивные тьюринг-полные тулзы, написанные на самих себе

третий вид практически не существует, т.к. делать его означает делать все программирование с нуля :) но думать в эту сторону, имхо, является полезной пищей для ума.
wizzard: (Default)
tl;dr: почему у нас до сих пор нет игр с супер-пупер живым миром? а вот почему.

я вот недавно жаловался на то, что железо современное плохое и не подходит для симуляторов ( http://wizzard0.livejournal.com/278128.html )

и вот расписал, как именно оно плохое ( http://wizzard0.livejournal.com/282769.html )

короче самое печальное что из этих эстимэйтов можно вывести - что если любое вычисление выполняется за константное время (==это таблица ранее вычисленных значений), то можно выполнить за кадр не более 150к независимых вычислений. зависимых - в 50 раз больше, в идеальном случае (тупое последовательное копирование) - в 500 раз. но реально таки 150к вычислений.

т.е. игрушка написанная "в лоб" на нынешнем железе может симулировать со скоростью 60 кадров в секунду 75к разных энтитей (считая одну операцию на изменение состояния энтити, и одну операцию на отрисовку)

Вроде бы, не так уж мало.
"можно закрасить экран iPad обьектами площадью в 10 пикселей" -- vgrichina

Для 2D игр, действительно, достаточно. А вот с 3D и мультиплеером - ситуация уже не столь радостная.

1. давеча thesz тут ( http://thesz.livejournal.com/1359825.html ) ужасался использованию Stackless Python в EVE Online и тому, что одновременно на узле могут присутсвовать "всего" 3000 игроков.

Если вспомнить, что кораблик в EVE - это далеко не материальная точка, плюс есть еще дроны, управляемые ракеты и прочий такой мусор - внезапно мы приходим все к той же магической цифре в 75к обьектов.

2. Если мы хотим *симулировать* сколько-нибудь большой мир - мы вынуждены делать либо пошаговую игру, либо упрощать обьекты вдалеке от игрока. Само по себе это не так плохо, и для single-player очень даже работает.

А вот в мультиплеере бюджет обьектов сьедается очень быстро, ведь, хоть игроки и кучкуются, но все равно у нас получается уже N "окрестностей игрока", а не 1 окрестность

3. Даже в "одной окрестности", если мир трехмерный, симулировать 50 метров по высоте и 400 м по ширине (квартал города в GTA) означает 8 млн куб.м. По 100м^3 на обьект. Или по материальной точке (точнее, обьекту, который описывается конечным автоматом, таблица состояний которого помещается в RAM) через каждые 4 метра. При этом изрядную часть этого бюджета сьедает графика.

Minecraft? Нет, не пойдет. Там ландшафт статичен. Хотя даже там дистанция отрисовки ненамногим больше магических 200 метров, хотя из динамических обьектов только коровы, лампочки и redstone.

Roblox ( http://www.youtube.com/user/roblox ) гораздо ближе. Вообще, Семен призывается в тред рассказать, какие у них реально получаются там размеры сцен.

4. "динамически понижать детализацию по удалению от игрока" - можно. и нужно. Но уметь надо. Для user-generated content это ой как непросто. Никого в GTA не раздражало, что если преследуемая машина свернет за угол (а то и если просто ненароком камеру повернуть) - она исчезнет навсегда? Вот я примерно об этом.

Comments welcome.

Profile

wizzard: (Default)
wizzard

June 2017

S M T W T F S
    123
45678910
11 121314151617
18192021222324
252627282930 

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 25th, 2017 02:45 am
Powered by Dreamwidth Studios