User Tag List

Страница 10 из 31 ПерваяПервая ... 67891011121314 ... ПоследняяПоследняя
Показано с 91 по 100 из 317

Тема: GameNoname

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,930
    Спасибо Благодарностей отдано 
    107
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от parallelno Посмотреть сообщение
    При таком способе xor тоже быстрее? Мне видится что нет, но может я что-то упускаю.
    Нет, что OR, что XOR, работают одинаково быстро. Я к тому, что при использовании XOR при выводе спрайтов не нужно заботиться о пересечении спрайтов. К тому-же, используется одна и та-же процедура, как для вывода, так и для стирания (главное стирать в тех-же координатах).

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

  3. #2

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

    По умолчанию

    А как xor тут вообще поможет? Он работает только если четное число раз ксорим сами с собой одно и то же. Даже если бы тут был черный фон, ксоры между разными спрайтами все перексорят к чортям.
    Больше игр нет

  4. #3

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

    По умолчанию

    1) 1 й спрайт xor 2, 2) 1 xor 2 xor 3, 3) 1 xor 2 xor 3 xor 4
    1 xor 2 xor 3 xor 4 xor 4=1 xor 2 xor 3 - вернулись к шагу 2)
    1 xor 2 xor 3 xor 3=1 xor 2 - вернулись к шагу 1)
    Но в местах наложения нескольких спрайтов на экране каша.

  5. #4

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

    По умолчанию

    Самое крутое ксоренье мне запомнилось из clrs b2m'a. Я на самом деле до сих пор не понял, как это было сделано =)

    В общем четное количество ксоров чего угодно расксорятся потом обратно. Но в промежутке-то на их месте получается полный фарш. А с цветами так и совсем печалька.
    Больше игр нет

  6. #5

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

    По умолчанию

    svofski, если я все правильно понимаю то xor это инверсия по маске, поэтому и проворачивается фарш обратно при двойном xor. Только нужно держать цвет инвертированным.
    О, понял. Действительно будет быстрее, так как маскирование при отрисовке нового спрайта не нужно делать. А старый спрайт стирать с той же скоростью.

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

    Размышляя о том куда копать дальше понял что преследуя изначальную задумку загнал себя в тупик.
    Изначально я придумал что у каждого спрайта есть счётчик показывающий в какие кадры его нужно рисовать, а в какие нет. Это цикличный байт типа 00010001 для монстра и 01010101 для героя. В каждый кадр этот счётчик скролился в право и если 1 попадал во флаг переноса, то мы рисуем.
    Это дало возможность рисовать спрайты с разным fps, но привело к тому что непонятно как их корректно блендить. Плюс нет двойной буферизации. Это я решил излечить меняя порядок отрисовки. В итоге как и говорил
    svofski, это сложно контролировать. То есть это работает если на экране с 6-8 спрайтов, но не работает с 2.
    Дальше я планировал добавить другие штуки Аля пули и т.п. что ещё больше усложнит убегание от луча. Плюс ко всему этому ещё то что этот подход хоть техническии и не запрещает прерывания, но все же полагается на них чтобы работало убегание от луча. В итоге я экономлю перформанс на разном fps для спрайтов, но трачу его на синхронизацию с прерываниями и иду по пути очень сложного и не стабильного рендера. В общем все взвесил и решил что попробую сделать с двойной буферизацией, если будет ещё медленнее или хуже, то просто забью на бленд спрайтов и буду рисовать без маски и с запасом чтобы новый спрайт стирал свою старую копию на экране.

  7. #6

    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    471
    Спасибо Благодарностей отдано 
    805
    Спасибо Благодарностей получено 
    278
    Поблагодарили
    106 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    parallelno, а это обязательно, чтобы движущиеся объекты проходили "насквозь" друг друга ?
    Если я правильно понял обсуждаемую проблему то есть вариант сделать - что два движущихся объекта столкнувшись расходятся в разные стороны, т.о. нет перекрытия спрайтов. Так сделано во многих играх. Такой подход упростит задачу.

  8. #7

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

    По умолчанию

    metamorpho, ага, спасибо. Но хотелось бы иметь возможность пересечения спрайтов.

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

    jerri, спасибо за почву для размышления.
    Изобретение велосипедов эта один из элементов вдохновения для меня, так что все ок!

  9. #8

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,921
    Спасибо Благодарностей отдано 
    363
    Спасибо Благодарностей получено 
    327
    Поблагодарили
    250 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    блин 30 лет технологий и снова сочиняем велосипеды, самокаты и прочие велобеги.

    1 синхронизация по прерываниям.

    1.1
    50 раз в секунду выполняются прерывания.
    выбираем кратность и например со скоростью 1 через 2 выполняем обработку всех персонажей на экране.
    результат обаботки записываем в один из двух списков выводимых спрайтов

    1.2
    во внешнем рендере выбираем один из двух списков и отрисовываем все спрайты по списку выбранным способом

    плюсы - стабильная скорость персонажей, стабильная скорость героя.


    Теперь об отрисовке
    На примере игры Jack the Nipper 2
    вывод спрайтов с маской поверх фоновой графики и других спрайтов
    также возможен спрайт за предметами Фореграунда

    Титульный экран
    Нажмите на изображение для увеличения. 

Название:	nipper1.png 
Просмотров:	157 
Размер:	9.8 Кб 
ID:	77735

    состоит если присмотреться из блоков 32*32 которые состоят из элементов 8*8

    Нажмите на изображение для увеличения. 

Название:	nipper2.png 
Просмотров:	168 
Размер:	11.6 Кб 
ID:	77736

    карта экрана представляет собой массив элементов
    и дополнительную таблицу действий где указываются элементы которые нужно восстановить на экране или элементы которые нужно отрисовать из набора модифицированных элементов

    при отрисовке персонажей создается модифицированный набор элементов куда копируются элементы фона поверх которых накладываются спрайты.

    на экран выводятся либо модифицированные элементы, либо фоновые которые надо восстановить

    Нажмите на изображение для увеличения. 

Название:	nipper3.png 
Просмотров:	153 
Размер:	3.0 Кб 
ID:	77737
    С уважением,
    Jerri / Red Triangle.

  10. #9

    Регистрация
    13.05.2018
    Адрес
    г. Тамбов
    Сообщений
    817
    Спасибо Благодарностей отдано 
    348
    Спасибо Благодарностей получено 
    661
    Поблагодарили
    201 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Привет всем...

    Обычно мерцание спрайтов - буфером устраняется...
    Но тут видать - вариант особый...

    Для особого варианта - можно сделать так...

    1. Делаем карту экранов.
    То есть - каждый экран делим на области.
    Экран задействован не весь, поэтому делим через массив...

    2. Смещаем персонажей - не по номерам,
    а по областям экрана, в которых они находятся...

    3. Между областями экрана по периметру -
    делаем буферные области, которые обсчитываются
    по-другому, чтобы устранить мерцание спрайтов
    между областями экрана...

    ???
    Последний раз редактировалось Stl75; 02.09.2022 в 15:22.

  11. #10

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

    По умолчанию

    Цитата Сообщение от Stl75 Посмотреть сообщение
    Привет всем...

    Обычно мерцание спрайтов - буфером устраняется...
    Но тут видать - вариант особый...

    Для особого варианта - можно сделать так...

    1. Делаем карту экранов.
    То есть - каждый экран делим на области.
    Экран задействован не весь, поэтому делим через массив...

    2. Смещаем персонажей - не по номерам,
    а по областям экрана, в которых они находятся...

    3. Между областями экрана по периметру -
    делаем буферные области, которые обсчитываются
    по-другому, чтобы устранить мерцание спрайтов
    между областями экрана...

    ???
    Если честно, то я не совсем понял идею.
    Напиши пожалуйста что скрывается под многоточия и и знаками вопроса.

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

    Цитата Сообщение от jerri Посмотреть сообщение
    блин 30 лет технологий и снова сочиняем велосипеды, самокаты и прочие велобеги.

    1 синхронизация по прерываниям.

    1.1
    50 раз в секунду выполняются прерывания.
    выбираем кратность и например со скоростью 1 через 2 выполняем обработку всех персонажей на экране.
    результат обаботки записываем в один из двух списков выводимых спрайтов

    1.2
    во внешнем рендере выбираем один из двух списков и отрисовываем все спрайты по списку выбранным способом

    плюсы - стабильная скорость персонажей, стабильная скорость героя.


    Теперь об отрисовке
    На примере игры Jack the Nipper 2
    вывод спрайтов с маской поверх фоновой графики и других спрайтов
    также возможен спрайт за предметами Фореграунда

    Титульный экран
    Нажмите на изображение для увеличения. 

Название:	nipper1.png 
Просмотров:	157 
Размер:	9.8 Кб 
ID:	77735

    состоит если присмотреться из блоков 32*32 которые состоят из элементов 8*8

    Нажмите на изображение для увеличения. 

Название:	nipper2.png 
Просмотров:	168 
Размер:	11.6 Кб 
ID:	77736

    карта экрана представляет собой массив элементов
    и дополнительную таблицу действий где указываются элементы которые нужно восстановить на экране или элементы которые нужно отрисовать из набора модифицированных элементов

    при отрисовке персонажей создается модифицированный набор элементов куда копируются элементы фона поверх которых накладываются спрайты.

    на экран выводятся либо модифицированные элементы, либо фоновые которые надо восстановить

    Нажмите на изображение для увеличения. 

Название:	nipper3.png 
Просмотров:	153 
Размер:	3.0 Кб 
ID:	77737
    Два списка выводимых спрайтов для того чтобы не пересекаться с измененными данными обработки всех персонажей?
    А что включает в себя таблица действий? Можешь прописать по подробнее, пожалуйста?

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

    Ещё было бы здорово если бы ты описал подробнее из каких элементов состоит карта экрана и структуру набора модифицированных элементов.

Страница 10 из 31 ПерваяПервая ... 67891011121314 ... ПоследняяПоследняя

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

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

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

Ваши права

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