Избранное сообщение

Очень вольный перевод статьи Designing to Succeed

Не так давно некий Tony Downey, геймдизайнер, опубликовал внушительную статью о разработке и игровом дизайне инди-игр. В ней он рассмотр...

вторник, 16 октября 2012 г.

Оптимизируй меня полностью!

Недавно я занимался несколько необычным для себя занятием - оптимизировал чужой код. Дело в том, что у одного товарища с фгд имелась почти готовая игра и адские тормоза к ней в придачу. Код для игры писал какой-то очень умный программист с обширными фундаментальными знаниями, навыками ООП, использования паттернов и всякого такого. Код - просто загляденье: всякое там наследование, конфиги в отдельном файле, менеджеры и алгоритмы, которые должны уменьшать нагрузку на процессор. Должны...

На деле, в коде вскрылись велосипеды (привет Найтмарецу с самописным классом поворота), которые вводили Flash в ступор. Вполне верные с теоретической точки зрения оптимизационные алгоритмы, как выяснилось, сильно проигрывают готовым решениям Флеша. Например, каждый кадр считать расстояния между объектами и включать самописную проверку на столкновения тогда, когда эти расстояния становятся достаточно малыми - это теоретически верное решение. Но куда быстрее просто каждый кадр вызывать обычный hitTest.

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

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

10 комментариев:

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

    ОтветитьУдалить
    Ответы
    1. >а насколько этот самый код прост в сопровождении и эффективно работает
      Вот очень сложный момент, кстати. Иногда я свой код даже на следующее утро нормально "сопроводить" не могу и ничерта не понимаю в нём. Но зато работает всё быстро.

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

      Удалить
  2. Ответы
    1. Я сейчас бегло перечитал и снова вынес ту же самую мысль, что и в первый раз - "все уроды, у всех код говно" х)

      Удалить
  3. Что-то ты мало писать стал, в последнее время.

    ОтветитьУдалить
  4. Только сейчас заметил, что справа пропали ссылки на другие блоги. Зачем убрал?

    ОтветитьУдалить
    Ответы
    1. Потому что блоггер говно и обрабатывает их некорректно. Надо либо руками запилить ссылочки, либо свалить на другую платформу. Алсо благодаря блоггеру, я только сейчас увидел твой комментю

      Удалить