Войти на сайт

Авторизация, ждите ...
×

ТЕМА: XP: Resolution - Менябельное разрешение экрана

XP: Resolution - Менябельное разрешение экрана 15 года 7 мес. назад #26074

  • Equilibrium Keeper
  • Equilibrium Keeper аватар
  • Вне сайта
  • Мастер
  • Скриптер
  • Сообщений: 119
  • Спасибо получено: 3
Итак, вот первые плоды капания в скриптах покемонов. Вернее, даже не самих покемонов, а сопотствующих файлов, а именно кастомной Tilemap. В результате трехднвной работы получилось нечто вполне вменяемое и даже играбельное, хотя еще и далекое от идеала.



Как вы видите - на первый взгляд, все просто прекрасно. Но, увы, не обошлось и без тараканов.
  • При использовании огромных тайлсетов на огромных картах заметно падает FPS (-4 кадра) при обновлении автотайлов (это 7 самых верхних тайлов, не входящих в тайлсет). Во вторых, при этом автотайлы рисуются поверх нормальных тайлов, "выедая" дыры в деревьях и прочих объектах. Для исправления этого они в свою очередь перерисовываются заново (причем все), что скидывает FPS еще на 10~15 кадров. Естественно все мягко говоря лагает и играть в такое чудо невозможно.
    С картами стандартных размеров без исполинских тайлсетов все нормально, но наверняка рано или поздно кому-нибудь понадобится создать карту 500x500... А играть без анимированных тайлов тоже не интерестно, наоборот - лучше бы добавить им 8~128 лишних кадров, что бы водичка колыхалась плавно...
  • При хождении вниз-вправо, карта ограничивается лишь по левому краю, а по нижнему и правому продолжает двигаться, открывая взору черные области
Это нужно править. Я добавил несколько комментариев, выстроил скрипты лесенкой, убрал Булевую алгебру (>>, <<), привел названия переменных и методов к более привычному виду, так что скрипт теперь стал намного более читабелен. Тем не менее, очень бы пригодилась помощь скриптеров в устранении вышеупомянутых багов. За эти три дня скрипт уже примелькался и на него трудно взглянуть объективно. Нужны новые люди, новые идеи реализации, оптимизации.

Вот техническая демка(10мб):
narod.ru/disk/7574735000/Resoulution%20(copy%202).zip.html
webfile.ru/3402139

Прошу прощения за большой объем - нет уже сил чистить ее от мусора. В основном это графика + последняя библиотека для тех, кто сидит на старом мейкере без R&W патча.

Не обращайте внимание на смещенные окна, пустоты в менюшках и битвах и прочее. Существует переменная $resolution, управляющая разрешением. Ссылаясь на нее, все это можно будет в последствии выровнять - тут ничего сложного. Сейчас главная задача - довести до ума класс Tilemap и все что с ним связано, так что бы корректно отображалась карта. К слову, разрешением можно буедет управлять из игры, через меню Настройки. А доступный масштабный ряд будет определяться разработчиком. К сожалению, это некоторым образом скажется на итоговых размеров игры, как вы можете заметить глядя на демку, однако это вынужденная мера в виду отсутствия пока масштабирования изображений.

Граждане-скриптеры, не проходите мира! Одному очень сложно этим заниматься!
Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Последнее редактирование: 15 года 7 мес. назад от Equilibrium Keeper.
Администратор запретил публиковать записи гостям.

XP: Resolution - Менябельное разрешение экрана 15 года 7 мес. назад #26079

  • mephis
  • mephis аватар
  • Вне сайта
  • Светлый дракон
  • Коллекционер
  • Сообщений: 727
  • Спасибо получено: 123
  • УчительПереводчик
Я честно говоря лох в устройстве классов мэйкера, так бы подсказал что-нибудь дельное. Разве что, покопавшись, понял что для починки глюка с чёрными областями нужно модифицировать (либо перекрыть старые, если это возможно) методы scroll_down и scroll_right в классе Game_Map.

Там они вида
  def scroll_down(distance)
    @display_y = [@display_y + distance, (self.height - 15) * 128].min
  end
  #--------------------------------------------------------------------------
  def scroll_right(distance)
    @display_x = [@display_x + distance, (self.width - 20) * 128].min
  end

Очевидно, если заменить 15 и 20 на то количество, которое влазит на экран, он скроллировать дальше не станет.

Кстати, Equilibrium Keeper, а вот что засоветуешь почитать, чтобы более-менее понять как всё это работает. В программировании разбираюсь. Думаю, что синтаксис Ruby за полдня осилю.
→ → ↓ ↑ Y
Администратор запретил публиковать записи гостям.

XP: Resolution - Менябельное разрешение экрана 15 года 7 мес. назад #26084

  • Kuraudo
  • Kuraudo аватар
  • Вне сайта
  • Просветлённый
  • Философ
  • Сообщений: 456
  • Спасибо получено: 7
  • Разработчик2 место 3 местоОрганизатор конкурсов
Как известно, в скриптах я профан, но с точки зрения пользователя могу кое что посоветовать и прокоментировать. Ну во первых лучно у меня ФПС не проседает, во вторых хотелось бы в увеличении разрешения видеть не просто большую зону, которую охватывает глаз, а хотелось бы видеть ту же зону, н ов большем разрешении. Понимаю что сделать это очень трудно, фактически получается, что мукер должен сам дорисовывать графику до нужного разрешения, тут нуден определенный алгоритм. Вообщем лично меня бы устроил результат, в котором графика была бы не такой "рябой" при увеличении на весь экран, хотя и сделать это нашими усилиями наврядли возможно.
Это все, потому что я ужасный тип.
Администратор запретил публиковать записи гостям.

XP: Resolution - Менябельное разрешение экрана 15 года 7 мес. назад #26086

  • Equilibrium Keeper
  • Equilibrium Keeper аватар
  • Вне сайта
  • Мастер
  • Скриптер
  • Сообщений: 119
  • Спасибо получено: 3
mephis
Спасибо. Бывает. ^_^
Касательно изучения - чужие скрипты и замечательный учебник: ru.wikibooks.org/wiki/Ruby
Тебе будет легче. В отличии от тебя - я не программист. (=

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

А лагов ты не заметил потому что для больших карт я отключил обновление. А на маленьких лагов нет. )

all
Спасибо Доку за RPGAE, нарыл я в нем уже отлаженную Тайлмапу. Естественно отлажена она не до конца, но зато проблем с обновлением нет. Будет время - прикручу и избавлюсь от вылета на границе карты.
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Администратор запретил публиковать записи гостям.

XP: Resolution - Менябельное разрешение экрана 15 года 7 мес. назад #26114

  • Equilibrium Keeper
  • Equilibrium Keeper аватар
  • Вне сайта
  • Мастер
  • Скриптер
  • Сообщений: 119
  • Спасибо получено: 3
Касательно бага с прокруткой:
def scroll_down(distance)
    @display_y = [@display_y + distance, (self.height - $resolution[1] / 32) * 128].min
  end
  #--------------------------------------------------------------------------
  def scroll_right(distance)
    @display_x = [@display_x + distance, (self.width 0 - $resolution[0] / 32) * 128].min
  end
Осталось расковырять второй баг - проявляется на картах размеры которых примерно 150x150 и больше. Почему то карта тайлов вылетает (высвобождается) и скрипт выдает ошибку... копаю.

Еще один момент - Graphics.transition, кажется, действует только на область 640х480. Видимо, придется переписывать этот метод...
Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Последнее редактирование: 15 года 7 мес. назад от Equilibrium Keeper.
Администратор запретил публиковать записи гостям.

XP: Resolution - Менябельное разрешение экрана 15 года 7 мес. назад #26123

  • mephis
  • mephis аватар
  • Вне сайта
  • Светлый дракон
  • Коллекционер
  • Сообщений: 727
  • Спасибо получено: 123
  • УчительПереводчик
Это где там Line 619: NoMethodOccurred? Да тупо выход за границы в map_data. Особо не смотрел, но как временное решение в строках 604 и 605 уменьшить на единицу size_x и size_y:
      end_x = size_x - 1 if end_x > size_x
      end_y = size_y - 1 if end_y > size_y

Но наверняка причина в другом месте зарыта. С чего бы тогда глюки были только на >150 клеток картах.
→ → ↓ ↑ Y
Последнее редактирование: 15 года 7 мес. назад от mephis.
Администратор запретил публиковать записи гостям.

XP: Resolution - Менябельное разрешение экрана 15 года 7 мес. назад #26124

  • Equilibrium Keeper
  • Equilibrium Keeper аватар
  • Вне сайта
  • Мастер
  • Скриптер
  • Сообщений: 119
  • Спасибо получено: 3
Скрипт исправлен. Вернее поставлен аварийный переключатель. Протестировал - все работает. При оптимизации надо будет расковырять причины выхода из допустимого диапазона.
Просьба протестить - все должно работать.
Для тех кто уже скачал предыдущую версию, вот ссылка на исправленные скрипты. Распакуйте и забросьте в папку Data:
webfile.ru/3402146

Ссылки обновлены.
Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Администратор запретил публиковать записи гостям.

XP: Resolution - Менябельное разрешение экрана 15 года 7 мес. назад #26125

  • Equilibrium Keeper
  • Equilibrium Keeper аватар
  • Вне сайта
  • Мастер
  • Скриптер
  • Сообщений: 119
  • Спасибо получено: 3
mephis
Вот и я про это же. Не выход. Там ясно указан интервал без включения: n...x Тобишь n..х-1. И вылетает она именно на больших картах. Поэтому я просто разрываю циклы, если id = map[x, y, z] не существует. Побегал - вроде, это никак не влияет на рисовку тайлов - все отображаются. Просто один из циклов пробегает на один раз больше, чем положено... Почему - надо разобраться.
Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Администратор запретил публиковать записи гостям.

XP: Resolution - Менябельное разрешение экрана 15 года 3 нед. назад #28903

  • Maximus
  • Maximus аватар
  • Вне сайта
  • Бывалый
  • Сообщений: 58
Ребята! Ссылки не работают на СИЕ ЧУДО! Буду благодарен если кто-нибудь выложет.
Очень хотелось бы посмотреть.
Администратор запретил публиковать записи гостям.
Модераторы: NeKotZima
Время создания страницы: 0.559 секунд