User Tag List

Страница 9 из 32 ПерваяПервая ... 5678910111213 ... ПоследняяПоследняя
Показано с 81 по 90 из 317

Тема: GameNoname

  1. #81

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

    По умолчанию

    Цитата Сообщение от parallelno Посмотреть сообщение
    Суть проблемы в том что спрайты рисуются не каждый кадр.
    Допустим в первый кадр нужно нарисовать только два первых спрайта. Они будут стёрты на старых позициях. Затем нарисованы в новых с маской.
    Во второй кадр нужно нарисовать два следующих спрайта. Они будут стёрты в старых позициях.
    Если старые позиции перекрывают предыдущие нарисованные спрайты, то они будут стёрты. Маскирование не сработает. В этом проблема.
    Придумал как частично полечить. Буду пробовать.
    Идея в том чтобы разбить кадр на 4 вертикальные области. Если спрайты попадают в эту область то они за один кадр рисуются с маской. Отрисовка в этих областях в таком порядке чтобы не пересекаться с лучем.
    раз ты спрайты по очереди рисуешь может все таки метод поспрайтовой рисовки?
    ну когда выбирается сектор с нахлестом вокруг спрайта и все что там есть рисуется
    С уважением,
    Jerri / Red Triangle.

  2. #82

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

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    На векторе есть игры с предсвинутыми спрайтами полностью в квазе.
    Посчитаем. У parallelno спрайты 16*15*8 цветов. Пусть будут 16*16 (может 15 это ошибка). Тогда кваза хватит на 236 таких спрайтов со всеми сдвигами, это очень даже много для сравнительно небольшой игрушки.
    Ага. С памятью под спрайты проблем нет. Сейчас распределение пока такое:
    Банк0_0000-7ffff - спрайты героя и половины врагов.
    Банк0_8000-ffff - тайлы уровня
    Банк1_A000-dfff - текущий клип.

    Еще много банок свободных.
    Спрайты со сдвигом на 2+маска

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

    Цитата Сообщение от svofski Посмотреть сообщение
    Во, понял.

    Похоже, что способ разделения спрайтов на кадры не идеальный.

    Идеально было бы, понятно, отрисовать всё за кадр. Но это видимо вызывает теринг. А ты проверял, правда получается заметный прям режущий глаз теринг? Все же есть вещи, которые мы 8-битным игрушкам охотно прощаем.

    Можно складывать всех пересекающихся (вернее, пересекавшихся на прошлом кадре) врагов в одну кучку, рисовать их строго одним кадром, остальных поровну распределять между другими рисовательными кадрами.

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

    Кстати способ рисовать спрайты не за один кадр я решил из-за скорости отрисовки. Не хватает у меня времени на всех.

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

    jerri, на отрисовку всего за один кадр у меня не хватает времени кадра. Но возможно стоит покопать в эту сторону если с горизонтальными секторами не взлетит.

  3. #83

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

    По умолчанию

    Если ты не запрещаешь прерывания, то что значит "не хватает времени на всех"?
    Больше игр нет

  4. #84

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

    По умолчанию

    Цитата Сообщение от parallelno Посмотреть сообщение
    jerri, на отрисовку всего за один кадр у меня не хватает времени кадра. Но возможно стоит покопать в эту сторону если с горизонтальными секторами не взлетит.
    Сделай скорость 25 фпс и освежай раз в два фрейма
    С уважением,
    Jerri / Red Triangle.

  5. #85

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

    По умолчанию

    svofski, да, я не запрещаю. но я стараюсь уложиться в кадр чтобы пониматься где у меня луч бежит и обходить его. Возможно я не понял твою идею.

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

    Цитата Сообщение от jerri Посмотреть сообщение
    Сделай скорость 25 фпс и освежай раз в два фрейма
    к сожалению у меня не получается уложится в 25 fps при отрисовке всех спрайтов. сейчас основная масса спрайтов (скелеты) рисуется 12.5fps. кадый спрайт рисуется в 3 плоскости с маской.

  6. #86

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

    По умолчанию

    Цитата Сообщение от parallelno Посмотреть сообщение
    к сожалению у меня не получается уложится в 25 fps при отрисовке всех спрайтов. сейчас основная масса спрайтов (скелеты) рисуется 12.5fps.
    оу. а тут еще жощще. а скорость как стабилизируешь?
    С уважением,
    Jerri / Red Triangle.

  7. #87

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

    По умолчанию

    Цитата Сообщение от parallelno Посмотреть сообщение
    Возможно я не понял твою идею.
    Я к тому, что может быть просто рисовать как рисуется и все, не думать пока о мелочах. Нормально обогнать луч тяжело. Ты еще устанешь от этого, а потом переделаешь что-то в игре и все придется заново придумывать.

    Meanwhile, такая безумная идея -- что если пожертвовать 8К для слоя маски? На самом деле меньше, потому что не весь экран ведь задействован. Жирно конечно, но открываются дополнительные возможности пятачка

    Назовем его слой Ъ. Вначалѣ Ъ пустъ.

    Кадр 1.

    Затираем группу спрайтов 1 в предыдущей позиции. Затираем только те биты, которые не установлены на соответствующем месте в слое Ъ (в первом кадре это все биты)
    Рисуем группу спрайтов 1 в новой позиции и OR-им маску в слой Ъ.

    Кадр 2.

    Затираем группу спрайтов 2 в предыдущей позиции. Затираем только те биты, которые не установлены на соотв. месте в слое Ъ (тут мы обходим стороной то, что было отрисовано в первом кадре)
    Рисуем группу спрайтов 2 в новой позиции и OR-им маску в слой Ъ.

    ... так продолжается столько, сколько предусмотрено промежуточных фаз ...

    Кадр X межфазный. Чистим слой Ъ и все начинается сначала.
    Больше игр нет

  8. #88

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

    По умолчанию

    jerri, скорость привязана к прерываниям. Если апдейт+ draw не уложились в кадр, то в следующий раз апдейт выполнится столько раз сколько прошло прерываний с прошлого раза.

  9. #89

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

    По умолчанию

    Цитата Сообщение от parallelno Посмотреть сообщение
    jerri, скорость привязана к прерываниям. Если апдейт+ draw не уложились в кадр, то в следующий раз апдейт выполнится столько раз сколько прошло прерываний с прошлого раза.
    ага дельта тайминг. разумно.
    Но я обычно вешаю обработку на прерывание.

    8к много - столько не нужно.
    используй блоки 8*8 для маркировки освежения местности.
    С уважением,
    Jerri / Red Triangle.

  10. #90

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

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    Я к тому, что может быть просто рисовать как рисуется и все, не думать пока о мелочах. Нормально обогнать луч тяжело. Ты еще устанешь от этого, а потом переделаешь что-то в игре и все придется заново придумывать.

    Meanwhile, такая безумная идея -- что если пожертвовать 8К для слоя маски? На самом деле меньше, потому что не весь экран ведь задействован. Жирно конечно, но открываются дополнительные возможности пятачка

    Назовем его слой Ъ. Вначалѣ Ъ пустъ.

    Кадр 1.

    Затираем группу спрайтов 1 в предыдущей позиции. Затираем только те биты, которые не установлены на соответствующем месте в слое Ъ (в первом кадре это все биты)
    Рисуем группу спрайтов 1 в новой позиции и OR-им маску в слой Ъ.

    Кадр 2.

    Затираем группу спрайтов 2 в предыдущей позиции. Затираем только те биты, которые не установлены на соотв. месте в слое Ъ (тут мы обходим стороной то, что было отрисовано в первом кадре)
    Рисуем группу спрайтов 2 в новой позиции и OR-им маску в слой Ъ.

    ... так продолжается столько, сколько предусмотрено промежуточных фаз ...

    Кадр X межфазный. Чистим слой Ъ и все начинается сначала.

    Интересно. Если я правильно понимаю, то если чистить слой ъ целиком, то спрайты в кадрах 2,3 и остальных межфазных кадрах потеряют возможность быть корректно сбленджеными так как при новой фазе могут быть стёрты. Или я что-то упустил?

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

    Цитата Сообщение от jerri Посмотреть сообщение
    ага дельта тайминг. разумно.
    Но я обычно вешаю обработку на прерывание.

    8к много - столько не нужно.
    используй блоки 8*8 для маркировки освежения местности.
    В прерывании держать апдейт для меня означает что я не смогу ничего нарисовать когда луч вверху экрана в области бордюра.
    Сейчас обработчик выполняется в середине кадра. В начале кадра рисуется то что в нижних позициях, а после апдейта рисуется то что нужно в верхних позициях. Таким образом я избавляюсь от пересечения с лучем.

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

    По поводу моего метода разделения области отрисовки на 4 вертикальные области.
    svofski, да, ты прав что спрайты могут скучковаться в одной области. Но для меня будет ок такие случаи имхо. На msx и nes тоже есть подобное ограничение. Спрайты начинают моргать. Если не получится это излечить, то думаю это ок.

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

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

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

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

Ваши права

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