crypt of decay [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

для матюгов [May. 5th, 2024|09:23 am]
оказывается, у меня был верхний пост для матюгов, а потом куда‐то проебался. искать лень, поэтому сделаю новый. каменты торадиционно скринятся.

мой набор модов для GZDooM а всё равно устарело давно.

сумбурные недостатьи по Gilbert-Johnson-Keerthi distance algorithm помечены тэгом gjk.

upd: тру и баню, тру и баню. ничего не поделаешь.

пояснение: умных здесь любят. умничающих — нет. умный знает разницу.

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

техническое
Link291 абырвалг|абырвалг!

вор должен сидеть в тюрьме! [Aug. 19th, 2017|12:31 pm]
я вот не понимаю тех, кто кричит про «путина судить, путин должен сидеть в тюрьме!» эй, путин уже давно в тюрьме, навсегда. вся роисся — это такая огромная тюрьма, и он в ней будет сидеть пожизненно.
Link30 абырвалг|абырвалг!

ещё о сишечке [Aug. 18th, 2017|04:35 pm]
а вы знаете, что
uint8_t b;
...
printf("%u\n", b<<24);

это потенциальное UB, в зависимости от значения b?

ынжой ё страндартизатион камити, йо!
Link61 абырвалг|абырвалг!

бида [Aug. 17th, 2017|06:56 am]
считать 2d global illumination в рилтайме — как полагается, нужен GPU, который пяток крузисов3 гонять может одновременно. а надо — чтобы на OpenGL 2.1 ездило. ну, с ARB_fragment_program/ARB_vertex_program максимум. пичалечка.

у меня есть подозрение (я, по ходу, нихуя не умею в математику, если кто не знал, так что именно подозрение), что для статической 2д геометрии можно precalc'нуть какой-то вариант irradiance cache. но что делать с дверями, например? специфика в том, что «дверь» в двигателе не слайдится, зато «дверью» может быть любая платформа. то есть, любая платформа может on/off, и, в принципе, это слабопредсказуемо. то есть, можно, наверное, проанализировать все триггеры на уровне — а потом скрипты появятся, да.

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

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

да, это для Doom 2D: Forever, если чо.
Link5 абырвалг|абырвалг!

в удивлении [Aug. 15th, 2017|10:16 am]
я чего-то не понял, чего это с народом. техника shadow volumes официально известна с 1977-го года. все туториалы обычно поясняют её сначала на 2d случае. и тем не менее в 2d двигателях никто её не использует (а если использует, то молчит): все туторы про всякую херь. то руками пересечения линий считать, то трэйсить лучи в шэйдере, то ещё что-то стрёмное. ну да, она даёт резкие «лунные» тени. так куча туторов даёт то же самое! и потом советуют сделать «несколько светов», чтобы получить тени помягче — что можно и с shadow volumes сделать.

я не понимаю. ну вот мне захотелось в кои-то веки написать carmack's reverse самому. тут же я вспомнил про свои 2d двигатели, привинтил туда свет на shadow volumes — работает расчудесно, держит сотни видимого света в кадре, всего сто строк дополнительного кода в рендере (literally). более того, чит с несколькими источниками света на месте одного для теней помягче мне не нужен, но реализуется очень несложно, и быстрее, чем реально эмулировать несколько источников. и никаких шэйдеров не надо, кстати. у людей такая инерция мышления, что ли, или чего?

а вот как сделать 2d realtime global illumination без rsm — я пока не придумал. ну, не то, чтобы я вообще мог эффективно думать без еды и сигарет, но всё равно не придумал.
Link8 абырвалг|абырвалг!

про искусство [Aug. 15th, 2017|03:23 am]
если для того, чтобы оценить, например, картину, надо долго учиться и «быть профессиональным искусствоведом», то это не искусство, а говно. и совершенно похуй, насколько там всякие «примитивисты», «модернисты» и прочие «…исты» владели техникой академического рисунка, если в итоге они всё равно производили мазню. «искусствоведы» в этом случае просто дослідники калу (ц).

если чо: я не говорю, что для восприятия чего-то посложнее совсем примитивного поп-арта не надо иметь никакого опыта. классическую музыку (или митол, если это больше нравится) надо учиться слушать, например. отличать хороший литературный язык от бесвкусных потуг на красоты тоже надо учиться. и врубаться в картины дали надо учиться. а вот в пикассо (когда он занимался мазнёй) сколько ни учись — всё равно… мазня потому что. и никакой это не «поиск новых форм», а эпатаж и мазня.

«искусствоведы», конечно, пояснят, почему я неправ про пикассо и прочих мазил, но это нормально: «искусствоведам» за это деньги платят. ведь если мазню пикассо вдруг перестанут считать картинами, то это крах рынка. никому не выгодно.
Link57 абырвалг|абырвалг!

я так понимаю... [Aug. 13th, 2017|09:02 am]
…что кроме reflective shadow maps ничего простого и быстрого (оба пункта важны!) для global illumination пока нет? очень печально, я не хочу shadow maps, мне нравятся «резаные» стенсильные тени. но без GI всё очень плохо, всегда будет doom3/f.e.a.r. — с их ненатурально резкими переходами освещённости. ну, или долго всё полировать, руками развешивая ambient — но тогда можно просто сделать precalc лайтмапов и light volumes уже (да, я в курсе, что f.e.a.r. местами это делает, неважно).

нет, мне низачем это не надо, просто вспоминаю молодость и смотрю, что с тех пор в 3д съехало с «неебовый хайтек» до «вот такая простенькая фигнюшка». ну, кроме того, что уровни от q2 теперь можно просто целиком в GPU запихивать, конечно.


p.s.: и чтобы два раза не вставать уже: а что, для векторного 2d никто stencil shadow volumes не делает? я сейчас очень плохо соображаю, но по-моему, никаких же огромных препятствий к этому не должно быть, и не надо заниматься сортировками-отсечениями, не? просто вытянул геометрию, пизданул в стенсилбуфер, а потом нарисовал световую блямбу. конечно же, это работает. десять минут позора и никаких шэйдеров.
Linkабырвалг!

ёбаные университеты надо нахуй сжигать [Aug. 12th, 2017|05:49 pm]
потому что единственной в них пользы — балаболы-учёные сосут гранты и просто так по зову души. а больше ничего. потому что сколько раз я пытался тыцнуть в поисковике на ссылку куда-то в .edu, столько раз там вместо обещаного документа/статьи/примеров была гнилая конская залупа. а сраный .edu, который не заботится о том, чтобы хранить однажды опубликованые результаты вечно — нахуй не нужен, и является тупым бесполезным прожигом бабла.

все остальные .edu, впрочем, тоже: сраное говнище из сраного средневековья, замшелое, ретроградное, жадное и отвратительное. все сжечь.
Link10 абырвалг|абырвалг!

фир от вивенди [Aug. 12th, 2017|11:33 am]
ужасно. просто ужасно. оба аддона от таймгейтов — лютейшая поебень. они сделали из F.E.A.R. тупорылый шутер!

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

F.E.A.R. вообще не должен был иметь продолжений (и я не собираюсь играть в официальные 2 и 3). потому что «атмосферы» еле-еле хватило на одну часть, а никакого убойного геймплея, который мог бы вытянуть продолжения, там отродясь не было.
Link2 абырвалг|абырвалг!

чтобы не казалось, что всё плюшки и радость [Aug. 11th, 2017|06:42 am]
чтобы не казалось, что горизонталы — это всенепременно такие пусечки-няшечки, и с ними завсегда везде ништяк: горизонтал в режиме maximum righteousness. неважно, насколько там в истории перекручено, она хороша как пример: задолбаный в детстве горизонтал решил, что даже если весь мир хуёвый, сам горизонтал будет Правильным, и причинит как можно больше Правильности окружающим.

не думайте, что это отдельные заскоки: на самом деле все горизонталы такие, просто у некоторых «диапазон приятия» пошире. но стоит задеть какое-то Шибко Важное Место — и всё: «вы обманули, вы обманули!» можете даже не пытаться потом объяснить, что горизонтал неправ/ошибся: он уже фортифицировался (привет, civ1!), и слушать всякую херню от обманувшего просто не станет. в терминальном случае — больше никогда; в других случаях — пока сам не переосмыслит свою позицию и не решит, что был дофига категоричен, можно было и помягче.

зато если горизонтала попустит — то попустит тоже насовсем: «это было, но прошло, проехали и забыли». он может иногда под плохое настроение вспомнить, как мир бывает хуёв на конкретном примере, но с вашего счёта это уже списано.
Link27 абырвалг|абырвалг!

нехуёво так [Aug. 10th, 2017|10:14 am]
AI* файлов в F.E.A.R. 790 штук, на четыре мегабайта. когда-нибудь надо будет туда залезть и поковыряться. интересно, как они всё это отлаживали?

литтех, кстати, весьма годный двигатель (все три основных версии); жаль, что ему в своё время лицензиаты репутацию подпортили. а F.E.A.R. — отличная игрушка.
Link21 абырвалг|абырвалг!

наверное, уже можно [Aug. 8th, 2017|01:35 pm]
поскольку я уже не совсем вьюнош, но ещё и не то, чтобы полновесный старпёр, то имею, наконец, сказать про старые и новые поколения.

а сказать я имею вот что: ни одно «старое поколение» не хуже и не лучше любого «нового». ну, примерно до тех пор, пока «старое поколение» не заводит шарманку про «маладьош уже нита, накаво страну аставим!!1111» — этих можно смело игнорировать, у них синдром стоячего хуя при сталине (и не факт, что стоял, а не просто мечталось).

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

какая хуйня в голову с голодухи лезет.
Linkабырвалг!

look who's talking [Aug. 5th, 2017|08:29 am]
когда капиталисты пугают людей тем, что при Проклятом Коммунизме запретят частную собственность, всё у всех отберут и даже ватник с валенками будут не твои — я в некоторой растерянности. то есть, я не знаю: просто смеяться, или рыдать от смеха. даже если оставить в стороне то, что коммунизм — это про отсутствие частной собственности на средства производства, так что капиталисты как обычно лгут, ситуация всё равно очень смешная: капиталисты пугают людей самими собой. потому что много у тебя этой «частной собственности», а? кредит за квартиру, которая не твоя (это в лучшем случае, а то и вовсе съёмная), кредит за машину, кредит за няшную плазмочку, кредит за модненький айфончег, кредит, кредит, кредит… алё, у тебя нет частной собственности именно сейчас, безо всякого Проклятого Коммунизма. всё, что ты считаешь своим, принадлежит не тебе. впрочем, валенки и ватник у тебя скорее всего не отберут, если что: их тебе оставят, чтобы ты отрабатывал кредиты. подольше.
Link30 абырвалг|абырвалг!

гыг [Aug. 3rd, 2017|04:04 pm]
не прошло и полувека, как я начал что-то подозревать… что, например, «моя твоя не понимай» не чинится вообще. что моё (обрывочное и агрессивное, конечно, но на самом деле очень простое и основаное всего лишь на нескольких базовых принципах) описание коммунизма для них не просто выглядит как «гулаг» — для них это и есть тот самый Страшный Гулаг! что они не тупят, а действительно наглухо не врубаются, как кто-то может быть не просто «так и быть, согласен, раз выбора нет» жить в этом ужасе, а действительно этого хотеть. и для них это действительно выглядит тотальным сумасшествием и промытыми мозгами, набитыми лозунгами.

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

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

я вообще не уверен, что мы можем это друг другу пояснить.

тут, наверное, должно быть что-то про массовые расстрелы, но я не придумал, что.

воможно, я когда-нибудь научусь пояснять так, чтобы хотя бы поняли (про «приняли» речь не идёт). но скорее всего — нет. жаль, но ладно. а возможно — встречу того, кто понимает сразу, всё, и без дополнительных пояснений. почему нет — статистически ведь не исключено. или ничего из этого не случится. что, собственно, мелочь по сравнению со вселенной. всё равно наши не прилетят.
Link93 абырвалг|абырвалг!

про теорию и практику касательно общественного строя [Aug. 2nd, 2017|10:50 am]
случаев, когда сначала была разработана ЧОткая Концепция Общественного Строя, а потом её реализовывали — я лично что-то не припомню. не надо этого и для коммунизма: теоретики потом концепцию придумают, если кому-то понадобится.

стоит понимать, что это не значит: «нахуй нам знания, лепим как-нибудь!» это значит: «если теория превращается в догму — нахуй эту теорию, потом запилим новую.» при этом не следует забывать о том, чтобы забрать из старой теории всё, что подходит: нечего полезное добро разбазаривать.

в общем, получается опять инженерная задача: есть некие стартовые условия и некие установки; надо построить из этого общество, работающее без нарушения установок. слушать теоретиков при этом полезно, но делать всё точно как они скажут — совершенно необязательно. теоретики потом теорию подрихтуют — она на то и теория, чтобы её рихтовать. а когда рихтовать перестают — теория превращается в догму и начинает мешать.

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

tl;dr: теоретики коммунизма — хорошие ребята, и делают полезное дело. но «светочами», «вождями» и «руководителями» не являются. их задача — поддержка, прогнозирование кризисов и разработка возможных путей решения кризисов. «бригада чрезвычайных ситуаций».


p.s.: это, если кто не понял, был очень длинный способ сказать: «практика является критерием истины».
Link31 абырвалг|абырвалг!

ты — мне, я — тебе [Aug. 2nd, 2017|09:38 am]
некоторые, может, удивятся, но $subj — это основа взаимоотношений в коммунистическом обществе: оное общество работает на принципе реципрокного альтруизма. именно отсюда получается «странное» для внешнего наблюдателя поведение, когда некто без особых дополнительных размышлений жертвует собой «во имя общих интересов». это не «промывка мозгов», а всего лишь соблюдение общественного договора: любой другой член общества при необходимости поступит так же, без исключений. уклонившийся же — уничтожается, за нарушение общественного договора. вся система держится на том, что каждый готов пойти на личные жертвы ради других.

нет, никаких «вторых шансов», «возможности осознать и исправиться» и подобной ерунды не существует: нарушившего общественный договор пристрелит первый же встречный, который будет знать о нарушении. не потому, что так написано в каком-то законе или приказе, а потому, что это паразит, захотевший воспользоваться правами без принятия на себя соответствующих обязанностей. его действия классифицируются как «предательство доверившегося» (в данном случае доверившиеся — все остальные члены общества), чему не существует ни оправданий, ни сроков давности (второго, впрочем, не существует вообще). неуничтожение подобного паразита означает, в свою очередь, нарушение общественного договора тем, кто не уничтожил: он выбрал поддерживать паразита, значит, согласен с его действиями, значит, сам такой же паразит.
Link78 абырвалг|абырвалг!

your glob matching sux [Jul. 29th, 2017|11:31 pm]
вы таки будете смеяться, но куча софта до сих пор не умеет делать нормальный glob pattern matching (это шелл-лайк простенькие регулярки, только с «*» и «?» — типа «a*b.ext»). или тупо хуячат рекурсию с полным бэктрэком, или заводят для этого аж весь движок «взрослых регулярок» (и дико фэйлят опять, если движок бэктрэковый).

то есть, вот эта херня наглухо их убивает, как и полагается (потому что патологический бэктрэк): «a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*b».

а ведь бэктрэкать все снежинки в глобматчере не надо вообще. примерно вот так:
bool wildmatch (const(char)[] pat, const(char)[] str) pure nothrow @trusted @nogc {
  bool star = false;

loopStart:
  size_t patpos = 0;
  foreach (immutable i, immutable char sch; str) {
    if (patpos == pat.length) goto starCheck;
    switch (pat.ptr[patpos++]) {
      case '\\':
        if (patpos == pat.length) return false; // malformed pattern
        ++patpos;
        goto default;
      case '?': // match anything except '.'
        if (sch == '.') goto starCheck;
        break;
      case '*':
        star = true;
        str = str[i..$];
        pat = pat[patpos..$];
        while (pat.length && pat.ptr[0] == '*') pat = pat[1..$];
        if (pat.length == 0) return true;
        goto loopStart;
      default:
        if (sch != pat.ptr[patpos-1]) goto starCheck;
        break;
    }
  }
  pat = pat[patpos..$];
  while (pat.length && pat.ptr[0] == '*') pat = pat[1..$];
  return (pat.length == 0);

starCheck:
   if (!star) return false;
   if (str.length) str = str[1..$];
   goto loopStart;
}

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

конечно, это всё ещё бэктрэкер, и его можно ускорить, применив thompson vm для регулярок — но мне кажется, что это будет уже немного перебор. а на непатологических случаях ещё и ненужное замедление — за счёт компиляции vm-кода и менеджмента потоков.
Link14 абырвалг|абырвалг!

оксюмороны, которые... [Jul. 29th, 2017|07:10 pm]
…принимают серьёзно, потому что Так Положено. хотя на самом деле полная чушь:

власть народа.

тот политик, который изобрёл этот термин, был гений. сколько тысяч лет прошло — а долбоёбы до сих пор ведутся.
Linkабырвалг!

а почему, собственно? [Jul. 29th, 2017|08:02 am]
с детства понять не мог, почему мальчишка из «в синем море, в белой пене…» так рвался съебнуть. русалка вполне симпатичная, на халяву учат, скипнуть — если чо — можно и попозже… чёрт, его же реальной рабочей магии учили! а этот долбоёб, от таких знаний… к тому же Анаит поёт клёво.
Link72 абырвалг|абырвалг!

реально пизданутые [Jul. 28th, 2017|07:25 am]
блядь, статья, начинающаяся со слов «меня часто спрашивают как принять участие в опенсорце» написана не в шутку. блядьнахуй, если у тебя вообще возник такой вопрос — убей себя, пожалуйста, ты дегенеративный биоотход.
Link25 абырвалг|абырвалг!

navigation
[ viewing | most recent entries ]
[ go | earlier ]