Я создаю стратегическую игру в браузере 2 года назад. Его уже активно играет небольшая толпа людей, так что это рабочая игра.
Наша проблема в том, что его ресурс голоден. В основном вы хотите оперу или хром. IE9 более или менее неиграбелен, и Firefox может быть довольно медленным на некоторых картах.
Игра представляет собой игру сверху вниз с использованием плиток, использующих 64x64-пиксельные DIV для карты.
В настоящее время мы находимся в завершающей фазе и сосредоточены на оптимизации. Одной из вещей, которые питаются ресурсами, является наша оживленная вода. У нас есть 32 различных плитки воды, разделенные на 15 кадров каждая. Таким образом, 480 64x64 изображений в одном файле .gif, который составляет 1,1 МБ.
Вот ссылка на воду: http://www.warbarons.com/beta5/terrain/water/water2.gif
Наша игра использует Fog of War, чтобы скрыть вражеские юниты и замки, которые вы не можете увидеть, как и в любой другой игре RTS. Так что поверх .gif обычно есть слой с прозрачным PNG.
Похоже, что это решение довольно требовательно для браузера. Когда я прокручиваю карту, чтобы показать, что вода в FireFox ЦП поднимается до 25%, а около 4-5%, когда воды не видно.
Я уже несколько дней гуглю, пытаясь понять, как лучше. Я нашел два других способа сделать это: с помощью тега canvas, который выполняет итерации по электронной таблице, или с помощью CSS для циклического перемещения по электронной таблице.
Проблема, которую я вижу с этими двумя вариантами, заключается в том, что все тайлы воды должны оставаться синхронизированными. Если один начнет играть раньше другого, волны не будут синхронизированы, что нарушит цельный вид.
Интересно, есть ли у кого-нибудь идея решить эту проблему? Я знаю, что наличие нескольких gif-анимаций приведет к проблеме несинхронизации.
Есть ли какой-нибудь умный способ использовать canvas для этого? Можно ли даже смешать холст с элементами div или для этого потребуется изменить весь движок карты?
Любая помощь будет принята с благодарностью.