Разноцветные мип-мапы

Как известно, художники любят большие детализированные текстуры. Такие, что в игре видны только их мипмапы ненулевого уровня. Например, текстура 512×512 на наконечнике копья.
Борис Баткин рассказывал про интересный трюк, как быстро находить такие текстуры в игре: надо в загрузчике текстур заменить мипмапы на отладочные. У которых нулевой мип-уровень залит зелёным цветом, 1-й синим, 2-й - жёлтым, 3й - оранжевым, 4й и дальше - красным. Таким образом, если камера вблизи объекта и он не зелёный - это повод бить тревогу.
Continue reading ‘Разноцветные мип-мапы’ »

ключевые слова: software patents, java, oracle, google, android

всё очень и очень неинтересно

/me ОРЁТ: гадкий кризис это очень и очень хорошо. чем хуже, тем лучше. чем гаже, тем быстрее сдохнут софтверные патенты. повсеместно.

Коэффициент пидорастичности файла.

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

напр. если файл в 800 байт сжимается до 400, то его коэффициент равен 800/(400/800) = 1600

Скрипт для нахождения самых пидорских текстур (напр. одноцветного голубого неба 2048×2048 в RGBA формате):
Continue reading ‘Коэффициент пидорастичности файла.’ »

безусловно неинтерактивно

нужен большой, длинный пост. не one-liner. статья. с крассивыми примерами. нужно чудес, свободного времени, желания, встать с дивана. давно пора. но пока оно компилится, запускается в дебаге, дышит жабрами, туда ему и дорога. а посту сюда.
Continue reading ‘безусловно неинтерактивно’ »

Best tools no one uses: DOT (овалы со стрелками)

Иногда при копании в текстовых файлах, в которых хранится дерево зависимостей или граф, хочется получить наглядное представление этого файла.  Это могут быть зависимости между данными или промежуточное состояние программы при отладке сложного алгоритма на графе/дереве.
Есть простой инструмент, DOT language, который по текстовому файлу сгенерирует рисунок.
Например, по описанию

digraph graphname {
  a -> b -> c;
  b -> d;
}

будет построен рисунок:

Continue reading ‘Best tools no one uses: DOT (овалы со стрелками)’ »

первая игра с микроплатежами

собственно первая мультиплеер игра с микроплатежами, про которую я знаю (под катом)
Continue reading ‘первая игра с микроплатежами’ »

One-liner, Shodan-style

C++ with exceptions is about as manageable as Java without

p.s. replace Java with C# for gamedeff
p.p.s. but you don’t really care for music, do ya

Многопоточность (поток сознания)

Модная несколько лет назад тема “а давайте разместим игровой цикл в двух потоках - графика отдельно, физика отдельно” постепенно сходит на нет. И слава богу. По целому ряду причин. Во-первых, двухпроцессорными машинами уже никого не удивить, скоро никто не будет удивляться процессорам, в которых количество ядер будет измеряться двузначными числами. А во-вторых (и это более важно), ручное распределение задач по ядрам имеет определенную степень осмысленности только для простых задач, где такое распределение действительно может принести определенный перформанс. Но чем сложнее становится код, тем сложнее: а) держать в голове все выполняемые приложением задачи, б) иметь действительно эффективную реализацию многопоточности, в которой треды будут выполнять вычисления, а не ожидать друг друга.

При дальнейшем усложнении приложения можно получить и совсем дурацкую ситуацию - вручную распараллеленное приложение будет работать медленнее, чем точно такое же, но выполняемое в один поток. Ситуация сродни программированию на асемблере - известно, что ручной ассемблерной реализацией на синтетическом примере можно “выжать” еще 10-15% производительности из кода против С. Но если писать большую программу на ассемблере, то это займет гигантское количество времени и ресурсов, а результат вряд ли будет производительнее, чем высокоуровневая программа.
То же самое происходит и здесь. Ручное распараллеливание синтетического примера действительно может дать хороший прирост производительности. Ручное распараллеливание крупной программы почти наверняка потребует гигантских усилий и может принести замедление вместо ожидаемого ускорения.

Continue reading ‘Многопоточность (поток сознания)’ »

“правильная” платформа

можно заниматься каким-угодно маразмом. треботвать онлайна, оффлайна, и танцев с бубном. продавать сервисы, делать вид что так и надо.
Continue reading ‘“правильная” платформа’ »

маленькая, но не менее умная задача

есть какое-то вещественное C
надо найти такие целые A в [A_min..A_max], B в [B_min..B_max] так
чтобы A / B было максимально близко к C ( скажем c = A/B, надо Min (c-C)^2 )