User Tag List

Страница 4 из 32 ПерваяПервая 12345678 ... ПоследняяПоследняя
Показано с 31 по 40 из 317

Тема: GameNoname

  1. #31

    Регистрация
    13.05.2018
    Адрес
    г. Тамбов
    Сообщений
    816
    Спасибо Благодарностей отдано 
    345
    Спасибо Благодарностей получено 
    659
    Поблагодарили
    200 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    Не, мерцать тут ничего не будет. Если две пары плоскостей переключать целиком это как переключать две странички видеопамяти. Если я конечно правильно понял, о чем написал Stl75.

    Но по-моему для игры такого типа никакого специального мудрежа не нужно. Ей не нужно поддерживать какой-то фиксированный фреймрейт, а много цветов тут важнее скорости отрисовки. Чтобы обновления были локальными нужен промежуточный буфер, в который рисуются сначала фон, потом с со своими масками предметы и персонажи. И такой буфер целиком уже потом каким нибудь предельно тупым и скорострельным способом выводится в нужное место на экране. На глаз это должно смотреться нормально даже без синхронизации, потому что обновления минимальны. Но вот как именно выбирать регионы для отрисовки - задача интересная. Тривиальное решение -- весь экран, но столько памяти, по крайней мере в кваслесс версии, просто нет. Ну а если и есть, то перекачивать столько памяти зараз выходит очень медленно.
    Можно и так - выводить изображение через буфер...

    Только у Вектора-06Ц - видеопамяти 32Кб...

    Сколько памяти - сможете выделить на буфер???
    Последний раз редактировалось Stl75; 11.08.2022 в 16:34.

  2. #31
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #32

    Регистрация
    03.07.2021
    Адрес
    г. Кировск
    Сообщений
    922
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    156 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    если и есть, то перекачивать столько памяти зараз выходит очень медленно
    Учитывая статичный фон, проще действительно выделять буфер, куда сперва выводятся затронутые тайлы фона, а сверху уже накладываются спрайты персонажей/врагов.
    Если точнее - несколько небольших буферов чуть больше размера спрайтов, чтобы затирать предыдущие фазы движения.

    - - - Добавлено - - -

    Цитата Сообщение от Stl75 Посмотреть сообщение
    Только у Вектора-06Ц - видеопамяти 32Кб...
    При "буферизации" лишь кусков под движущимися спрайтами памяти уйдет в разы меньше, пропорционально кол-ву этих спрайтов на экране.

  4. #33

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,299
    Спасибо Благодарностей отдано 
    1,028
    Спасибо Благодарностей получено 
    813
    Поблагодарили
    484 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Stl75 Посмотреть сообщение
    Сколько памяти - сможете выделить на буфер???
    Ну это как parallelno придумает.

    1) Простой вариант -- это выбрать окрестность персонажа округленную до знакоместа. 3х3 тайла будет буфер, где главный герой в центре. Остальных непоместившихся персонажей и всякие пули, мечи и стрелы перерисовывать аналогично по очереди. Картинку будет рвать, но не весь экран разом, а локально и каждый раз по разному, так что есть шанс, что почти всегда это будет незаметно. Особенно при том, что тут все крохотное 8х8. Так по-моему легко может случиться, что все перерисовывается по многу раз. Этому легко помочь, помечая в дополнительной битовой карте какие участки уже перерисованы.

    2) Как вариант, можно сделать буфер не 3x3 тайла, а шириной в экранную строку.

    3) Еще идея -- если хорошо отладить клиппинг всех спрайтов (а это не так уж и сложно), можно сделать процедуру отрисовки одного тайла с наложением всех предметов и персонажей. Тогда тайлы можно перерисовывать в любом порядке, хоть в псевдослучайном. Тогда основная логика будет только помечать тайлы, требующие обновления, а рисовальный цикл будет обходить карту их обновлять. Сначала мне показалось, что это запарно, потому что клиппинг и все такое, но на самом деле это по сути упрощение варианта (1).
    Больше игр нет

  5. #34

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,390
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Stl75 Посмотреть сообщение
    На Спектруие - мерцание решается достаточно просто
    Цитата Сообщение от Stl75 Посмотреть сообщение
    Для Вектор-06Ц можно попробовать так
    Не может быть, неужели на векторе возможна двойная буферизация? Хотя подождите: 1, 2, 3, 4, 5 (это не все примеры, но и тут можно заметить, что вариантов организации больше одного)

  6. #35

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,299
    Спасибо Благодарностей отдано 
    1,028
    Спасибо Благодарностей получено 
    813
    Поблагодарили
    484 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Не может быть, неужели на векторе возможна двойная буферизация?
    Я первое сообщение понял как то, что Вектор предоставляет большее разнообразие в этом деле. И с этим утвержением я согласен.
    Больше игр нет

  7. #36

    Регистрация
    13.05.2018
    Адрес
    г. Тамбов
    Сообщений
    816
    Спасибо Благодарностей отдано 
    345
    Спасибо Благодарностей получено 
    659
    Поблагодарили
    200 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Собственно, на Векторе есть несколько игр,
    в которых буфер точно в видеопамяти...

    Например, Сражение 1, 2...
    sragen1.rom,
    sragen2.rom...

    Цвета видно обрезали...
    Например, до 8...
    ???
    Последний раз редактировалось Stl75; 11.08.2022 в 19:50.

  8. #37

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от parallelno Посмотреть сообщение
    Мысли из зала и мудрости предков всегда приветствуются.
    Рендер пока зачаточный. Хочется добавить проджектайлы и анимацию на бэкграунде и музыку. Посмотрю как это все укладывается вместе и буду прибирать и оптимизировать.
    Про фон. Пока минорная штука. Если будет многих раздражать, то буду что-то делать. Если не хватит ресурсов, то сделаю однородным.
    Ага. тут уже говорили несколько вариантов.

    теперь с обоснованием

    1. фон из блоков 8*8, спрайты рисуются в буфере
    на экран выводим только те блоки которые изменились.
    тоесть имеем две таблицы размером в массив
    1 карта тайлов
    2 карта изменений
    если надо обьясню подробнее

    2. вариант для Вектора.
    4 битплана по 2 битплана на экран
    нарисовав на 2 битпланах ждем фрейм и переключаем палитру так чтобы перерисованные битпланы получили цвет.
    С уважением,
    Jerri / Red Triangle.

  9. #38

    Регистрация
    29.06.2022
    Адрес
    г. Ирвайн, США
    Сообщений
    408
    Спасибо Благодарностей отдано 
    590
    Спасибо Благодарностей получено 
    340
    Поблагодарили
    109 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо всем за советы и обсуждение!

    Немного детайлей об игре.
    В игре тайлы 16*16. 16 цветов. Тайл с "землей" рисуется всегда в $8000 плоскость. Спрайты мобов и героя 16*15. Рисуются в три плоскости начиная с $a000.
    Мерцание в основном изза двух факторов.
    1. Спрайты стираются полным размером спрайта в предыдущей позиции спрайта, затем спрайт рисуется в новой позиции. Это приводит к тому что спрайта не виден полностью или частично. Пока план лечения это стирать только то место где новый спрайт уже не рисуется. т.е. для горизонтального движения стирать только 8*15 полоску и только в тех моментах когда спрайт переместился на следующий байт. т.е не каждый кадр. Это как я надеюсь сильно уменьшит проблему. Если глитчи останутся сильными, буду думать дальше. )
    2. При наложении одного спрайта на другой. Это лечитать планирую тем что при наложении спрайтов рисовать их по маске. Или как минимум рисовать монстров без маски, а глав героя по маске сверху.

    Из интересного. В игре спрайты рисуются/стираются не каждый кадр. Герой в анимации движения рисуется каждый второй кадр, в анимации Idle рисуется кадый 8 кадр. Если спрайт стартует новую анимацию то счетчик одновляется и спрайт сразу будет отрисован. то есть герой в idle будет отрисован сразу без задержки после того как игрок перестал нажимать на клавиши. Но следующий кадр idle анимации будет нарисован чере 8 кадров.
    Скелеты для всех анимаций рисуются каждый 8 кадр. Но как в случае с героем они сразу отрисуют первый кадр новой анимации, затем следующий через 8 кадров. Их скорости медленнее героя и снижение фреймрейта я не замечаю. Более быстрые мобы будут могут рисоваться чаще. Это пер анимейшен параметр конкретного мобика.
    Для балансировки нагрузки все мобы стартуют свои анимации со смещением задерки. то есть если на экране 7 мобов + герой, то все они будут рисоваться в свой кадр и нагружать процессор примерно как один моб рисуюшийся каждый кадр.
    В целом считается что мобы и герой размером с тайл. но их видимая часть может быть меньше. В памяти храниться и отрисовывается только видимая часть. то есть спрайты в анимации не приязаны к размеру тайла и могут быть от 8 до 24 пикселей по гризонтали.

    Про использование экрана как 2 буфера по 4 цвета решил отказаться. Хочется больше цвета.
    Про временную буферизацию в памяти думал примерно тоже самое, но пока отложил. Когда что-то будет накладыватся на тайлы отличные от "земли" буду думать. Перерисовывать испорченные тайлы целиком коннечно сильно не хочется так как дорого, поэтому склоняюсь в пользу временного сохранения в память. но там посмотрим.

    - - - Добавлено - - -

    Подскажите пожалуйста можно ли использовать квазидиск для чтения музыки каждый кадр и подмену экранных плоскостей с квазидиском?
    Последний раз редактировалось parallelno; 11.08.2022 в 21:15.

  10. #39

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,299
    Спасибо Благодарностей отдано 
    1,028
    Спасибо Благодарностей получено 
    813
    Поблагодарили
    484 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от parallelno Посмотреть сообщение
    Подскажите пожалуйста можно ли использовать квазидиск для чтения музыки каждый кадр и подмену экранных плоскостей с квазидиском?
    Квазидиск для чтения чего угодно можно использовать, музыки тоже. Можно даже для записи музыки

    Подмену экранных плоскостей нельзя. Экран всегда рисуется из основной памяти.
    Больше игр нет

    Эти 2 пользователя(ей) поблагодарили svofski за это полезное сообщение:

    nzeemin(12.08.2022), parallelno(11.08.2022)

  11. #40

    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    928
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    73 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А в квазидиск можно сохранить экран с фоном? Можно же с квазидиска считать участок фона в буфер, наложить на фон в буфере спрайт, и записать этот частичный буфер в нужное место экранного озу.
    ¡Un momento, señor fiscal!

    Этот пользователь поблагодарил Smalovsky за это полезное сообщение:

    parallelno(12.08.2022)

Страница 4 из 32 ПерваяПервая 12345678 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •