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

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

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

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

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

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

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

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

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

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

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

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

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

      Удалить
  2. 2 Cергей:
    http://habrahabr.ru/post/153225/

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

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

    ОтветитьУдалить
    Ответы
    1. Я работать больше стал зато)

      Удалить
    2. Над кучей флешек, само собой.

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

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

      Удалить