Category: компьютеры

Category was added automatically. Read all entries about "компьютеры".

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

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

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

Collapse )

Топ-10 самых нелепых падений игр (2)

Очень давно ничего не писал в ЖЖ. Банально нет времени, сначала его было мало из-за операции на руке, потом навалились проблемы с оформлением документов на строительство и я вынужден был пропадать в Королеве.

Впрочем, этот пост был заготовлен давно - он писался в течение года, периодически сортировался, и наконец, готов.

Новый Топ-10 самых нелепых падений игр. Частично повторяет старый, ибо, как это ни грустно, проблемы с запуском игр повторяются снова и снова. И снова разработчики наступают на те же самые грабли (при желании можно сравнить список с тем, который был опубликован год назад). Впрочем, старых ошибок не так уж и много. Либо разработчики все же читают мой ЖЖ, либо квалификация программистов за прошедший год существенно повысилась, либо "плохие" разработчики не смогли пережить кризис.

Итак, поехали.

Collapse )

Теория ошибок. Нестабильности третьего и четвертого рода.

Развивая тему анализа нестабильностей, которую я начал еще весной (http://ddima.livejournal.com/48573.html и http://ddima.livejournal.com/49288.html), оставалось рассмотреть нестабильности третьего рода - это собственные ошибки функции. То есть когда все наружные условия соблюдены, объект или модуль находятся в правильном состоянии, все переданные аргументы являются правильными, а результат работы функции все равно оказывается некорректным. Но как показала последующая практика, эти нестабильности полезно разделить еще на два независимых вида - это нестабильности, связанные с ошибками алгоритма, непроинициализированными переменными и т.п. (нестабльности третьего рода) и нестабильности, связанные с некорректной обработкой результатов функций (четвертого рода).

Collapse )

Про bubblesort, кеши и оптимизацию программы.

Несколько интересных соображений, навеянных публикациями по dual-pivot quicksort.

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

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

Collapse )

Точки стабилизации в программе

Я обещал после чистки ресурсов рассказать про стабильные моменты в программе и контроль в процессе исполнения. balmerdx правильно написал и в коментах, и у себя в ЖЖ про слежение в процессе игры, только все же ИМХО не раскрыл тему до конца.

Основная мысль, которая заставляет переживать за проект - это не проблема memory leaks в конце. Memory leaks в конце чреваты только deinitialization hell, оставлением глобальных ресурсов винды и еще кое-какими мелочами. На самом деле гораздо более серьезная вещь - это операции, которые происходят в оперативке во время самой игры. Причем тем дальше, тем больше эта проблема начинает меня волновать даже на PC, потому что все чаще появляются падения игр при достижении предела 1.7 Гб аллокаций. Понятно, что повсеместный переход на x64 эту проблему снова нивелирует, но он не решит ее целиком.

Collapse )

Это страшное слово setlocale.

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

Collapse )

Сказ про то, как American Chopper сам восстановился

А я вот вчера вечером решил поностальгировать и поставил себе на домашний комп American Chopper. Не, на самом деле, конечно, я хотел кое что в нем посмотреть, но будем считать это простой ностальгией. Проект уже старенький, 5 лет прошло, к тому же он (сейчас это уже хорошо видно) цинично спортирован с PS2 версии с самыми минимальными переделками. Но речь сейчас не об этом.
В Крейтовском коде еще с прошлого века существовал блок функций SetIdle()/ClearIdle()/IsIdle(). Эти функции предназначены для работы с режимом паузы. SetIdle() увеличивает счетчик паузы, ClearIdle() - уменьшает. Если счетсик равен 0, игра находится в рабочем состоянии. Если > 0, игра находится в режиме паузы. Внутриигровое меню, например, на конструкторе ставит режим паузы, на деструкторе ее снимает. Железобетонно? Вроде как да.

Collapse )

Cross posted to blog.gamedeff.com

Чем должна и не должна заниматься игра на старте? (часть 2)

Спасибо огромное всем, кто проголосовал в опросе.

Как обычно, результаты очень показательные, особенно если учесть возможность посмотреть ответы и сравнить выпущенные разработчиками игры.

Я озвучу свою собственную точку зрения на вопрос "требуется ли такая диагностика в игре и если да, то каким образом ее делать". Кстати судя по ответам, по состоянию на 9:30 23 апреля я должен растаться с 24 литрами пива (именно столько людей проголосовало за пункт 1). Впрочем, пиво почти наверняка останется при мне, потому что я готов привести конфигурации компьютеров и настроек, на которых ваша версия GetTotalVideomem() даст неправильный ответ.

А раз вы не можете быть уверены в результате, то что же делать?

Collapse )

Crossposted to blog.gamedeff.com

Рейтинг самых нелепых падений игр

Составил тут рейтинг самых нелепых падений игр. Я не беру набившие оскомину "Приложение не может быть запущено, так как оно некорректно настроено" или "очередное dx3x_??.ddl не найдено". Только интересные и нетрадиционные падения, которые встречались мне на уровне либо выпущенных игр, либо на уровне поздних бета-версий. По понятным причинам называть точные названия игр не буду.

Collapse )

Проценты мощностей

Представители студии Naughty Dog пообещали, что игра Uncharted 2: Among Thieves будет использовать практически всю мощность игровой консоли PlayStation 3.

Интересно услышать мнение look4awhile на этот счет.
А вообще было бы здорово ранжировать разные игры по процентам используемой мощности. В смысле того, насколько актуально игра использует CPU/GPU, а не в плане того, сколько инструкций выполняется.
По моим оценкам разные консольные игры используют от 20 до 60 процентов мощностей приставки (в "практически всю мощь" я готов поверить через 6-8 лет после выхода консоли), а большинство наших PC игр (я имею в виду, от True-PC developers) - от 5 до 20 процентов. Это при пороговом процентном значении для каждой конкретной PC-машины - порядка 60%.
Причем из качественно использующих возможности компьютера игр в последнее время мало что выходило - так даже сходу и не вспомню.
  • Current Mood
    sleepy понедельник
  • Tags