Записи Gener_Al

О вращении головой, памяти и кешировании.

Оценить эту запись
Посмотрев ряд известных проектов на РПГ-мейкерах я не только лишний раз убедился в унылости текущего состояния своей разработки, но и обратил внимание на то, как важны и оживляют игру всякие дополнительные анимации персонажей (как минимум, главного героя). Конечно, в этой мысли нет ничего нового, но, как я вижу, ряд подобных анимаций можно легко сделать самому, даже если не умеешь рисовать. В частности, вращение головы. Когда персонаж говорит с кем-то, стоящим сбоку, он не поворачивается к собеседнику полностью, а только голову поворачивает. Хорошо выглядит и сделать легко – просто берем картинку анфас, отрезаем голову и ставим вариант головы в профиль (левый и правый).
И вот тут самое интересное. Как использовать данную анимацию? Понятно, что в нужный момент мы меняем графику для главного героя (кстати, лишний раз обращаю внимание на то, что подобный штуки лучше оформлять в виде общих событий и вызывать их, чтоб в случае изменения чего-то в повороте головы изменения вносить в одном месте, а не во всех диалогах). И тут есть некоторая проблема – в момент смены графики персонажа этот самый персонаж мигает. Причем на некоторых форумах народ сильно жалуется на это и описывает это чуть ли не как глюк мейкера MV. Это не так, MV – молодец, он все правильно делает. Решение данной «проблемы» очень простое – дополнительную графику персонажа следует кешировать. То есть загружать в оперативную память заранее, до того, как к ней обратятся. Для этого есть разные плагины – я лично использую TDDP_PreloadManager.js (но только ту его часть, что за кеширование отвечает). Без использования сторонних плагинов – можно эту графику назначить на карте, где она будет использоваться, в качестве графики какого-то невидимого-прозрачного ивента. Но кеширование – лучше =).
Подобная графика – хороший пример того, что НУЖНО кэшировать. Помните, кеширование ускоряет загрузку сцен в проектах и т.п., но кешировать нужно только то, что вы используете часто и то, что занимает немного памяти. Ибо нет ничего проще чем загадить гигабайт-другой оперативки.

Отправить "О вращении головой, памяти и кешировании." в Digg Отправить "О вращении головой, памяти и кешировании." в del.icio.us Отправить "О вращении головой, памяти и кешировании." в StumbleUpon Отправить "О вращении головой, памяти и кешировании." в Google Отправить "О вращении головой, памяти и кешировании." в VKontakte Отправить "О вращении головой, памяти и кешировании." в Facebook

Метки: Нет Добавить / редактировать метки
Категории
Без категории

Комментарии

  1. Аватар для Пётр
    Я как эвентист эту проблему давно решил. Картинки, чарсеты и прочее просто показывается автособытием до начала катсцены ну или где там нужно. Невидимо. Занимает доли секунды. Ещё как вариант исчезать не будет если нужная графа в одном спрайтлисте. Ну это на тот случай если нужно обойтись без плагинов. А вообще в последней версии же вроде графа грузится мгновенно?
  2. Аватар для Paranoid
    А на асе ничего не мигает.
  3. Аватар для Пётр
    Цитата Сообщение от Paranoid
    А на асе ничего не мигает.
    Правда чтоле? А никто и не знал.
    Мега полезный комментарий.
  4. Аватар для Gener_Al
    В 1.4.0. ничего мгновенно не грузится. Да и вряд ли когда-либо ВСЕ будет грузиться мгновенно. Тут либо надо всю графику, анимацию и звуки грузить сразу, что крайне неэкономно и глупо, либо как-то уж очень умно отслеживать на каких картах какие МОГУТ быть запросы по звуку-графике что тоже практически нереально.

    Да. Можно через ивенты и я об этом писал. Но это не очень красивое решение. Ведь надо либо на каждой карте где использует доп. анимация ставить такие ивенты, либо в общие выносить и тогда оно везде перегружаться будет. Кеширование намного правильнее.
    Вообще главная идея поста - надо кешировать и думать, что именно кешируешь.
  5. Аватар для Gener_Al
    Цитата Сообщение от peter8031983
    Правда чтоле? А никто и не знал.
    Мега полезный комментарий.
    Ася не интересна так как не кроссплатформенна.
    И там, правда судя по отзывам, сам не смотрел, вместо мигания тормоза (что, вобщем-то, одно и тоже).
  6. Аватар для Пётр
    Последняя версия не 1.4, а 1.5 как бы. Я пока не тестировал. Точно сказать не могу. Вот сегодня как раз старый проект потестить на это дело хотел.
    Есть так же другой плагин, который загружает перед картой всю графу, что на ней используется в ивентах.

    А что касается кэша... Всегда нужно думать, что куда пихаешь. Это касается и плагинов, и графы и даже женщин.)
  7. Аватар для Gener_Al
    Цитата Сообщение от peter8031983
    Последняя версия не 1.4, а 1.5 как бы. Я пока не тестировал. Точно сказать не могу. Вот сегодня как раз старый проект потестить на это дело хотел.
    Есть так же другой плагин, который загружает перед картой всю графу, что на ней используется в ивентах.

    А что касается кэша... Всегда нужно думать, что куда пихаешь. Это касается и плагинов, и графы и даже женщин.)
    Указанный мною плагин тоже умеет грузить всю графу с карты заранее. Но я этим не пользуюсь. Не шибко нужно и не шибко оптимально. К тому же мой герой много где вертит головой =). Соответственно, я делаю 3 общих события - поверни голову: влево, вправо, норма. И вызываю когда надо. О их вызове с карты плагин не знает и ничего не закеширует.
  8. Аватар для Paranoid
    Пф, будто мв кросплатформенный, ога.
  9. Аватар для Пётр
    Цитата Сообщение от Gener_Al
    Указанный мною плагин тоже умеет грузить всю графу с карты заранее. Но я этим не пользуюсь. Не шибко нужно и не шибко оптимально. К тому же мой герой много где вертит головой =). Соответственно, я делаю 3 общих события - поверни голову: влево, вправо, норма. И вызываю когда надо. О их вызове с карты плагин не знает и ничего не закеширует.
    Я же говорю. Суешь это все в один спрайтлист.
    И даже плагины не нужны.
  10. Аватар для Deme
    Цитата Сообщение от Gener_Al
    Ася не интересна так как не кроссплатформенна.
    Для запуска игр на VX Ace на других платформах можно использовать mkxp. Там, правда, свои подводные камни, довольно проблематичные (mkxp надо компилировать вручную, готовых пакетов толком нет; версия для Андроида нестабильна и не обновлялась 2 года; mkxp использует другую версию Руби плюс в нём нет WinAPI, из-за чего на mkxp могут не пойти многие скрипты).