вторник, 24 августа 2010 г.

Наш опыт участия в 10К Apart, часть вторая: жмем дальше

Как мы уже писали, для соревнования 10K Apart, мы сделали настоящий rogue like rpg — «Mario The Fontanero».

В комментариях нам дали несколько очень дельных советов, которые позволили нам сэкономить еще некоторое количество драгоценных байт. Добавив к ним пару собственных оптимизаций, мы выгадали достаточно места для того, чтобы добавить в игру несколько новых фич, по прежнему оставаясь в пределах 10 Кбайт:
  • Действие «Throw». Теперь вы можете кидаться едой во врагов. Попадая в монстра, она наносит ему повреждение, но при этом исчезает.
  • Алхимия. Теперь можно смешивать еду с питьем в надежде получить что-нибудь новое. Так, «Jelly» + «Milk», например, даст в результате «Book of Healing» (этот рецепт вам очень пригодится на нижних этажах подземелья.)
  • В битве с кроликом придётся применить смекалку. Кролик теперь не нападает сам, а мирно пасётся. Но убить его стало гораздо сложнее!
  • Добавлен эффект confuse. Иногда главный герой конфузится от выпитого или в результате неудачных экспериментов.
  • Новый тайл для отображения починенной трубы. По многочисленным просьбам, мы добавили его, чтобы можно было отличить починенную трубу от сломанной.

А теперь, по традиции, поделимся с хабрасообществом описанием оптимизаций, которые помогли нам все это сделать:
  • whoozle переписал упаковщик в png так, чтобы он использовал greyscale png, в котором отсутствует палитра (это дало очень большую экономию, порядка 300 байт).
  • Парадоксально, но факт — увеличение ширины png дало значительный эффект! Мы увеличили png до 1024x17 и сэкономили ещё. И здесь опять IE9 подложил нам свинью: он перестал правильно определять размеры png и начал возвращать в скрипт странные размеры: 127x127. Пришлось жестко прописать размеры картинки прямо в загрузчике.
  • По совету bolk, мы отказались от pngcrush в пользу связки optipng+pngout, которая действительно даёт большую экономию за счёт своих продвинутых алгоритмов перепаковки.
  • Также lahmatiy нам подсказал, что замена «this.» (вместо слова «this») и «.length» на 1-2 буквенные символы (` и @@ соответственно) даст ещё больший выигрыш.
  • Ну и, в конце концов, мы просто переписали часть кода.

Итоговый размер игрушки остался практически прежним — 10231 байт, но играть в нее теперь стало намного веселее.


Источник: Хабрахабр - Ненормальное программирование
Оригинальная страница: Наш опыт участия в 10К Apart, часть вторая: жмем дальше

Комментариев нет:

Отправить комментарий