User Tag List

Страница 2 из 8 ПерваяПервая 123456 ... ПоследняяПоследняя
Показано с 11 по 20 из 74

Тема: Портирование Asteroids

  1. #11

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

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Да, я тоже прикидываю что процедурами хранить очень накладно получается.
    Может быть все-таки попробовать, а уж как перестанет влезать, так и начать экономить? Вдруг влезет.
    Больше игр нет

  2. #12

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

    По умолчанию

    Насколько я увидел, на экране больше всего астероидов, т.е. основное время тратится на них, соответственно если пробовать инлайнить, то только астероиды(камни). В камнях много повторов, поэтому можно инлайнить процедуру с lxi, учитывая, что при переходе к следующей паре байтов не всегда надо их менять. Иногда надо будет поменять только один байт из двух (mvi вместо lxi). Еще можно попробовать проанализировать более тщательно и задействовать вторую регистровую пару под самые частые байты в камне. Их достаточно задать один раз на спрайт. Как минимум стоит попробовать инлайнить самые большие камни.

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

    nzeemin(17.06.2021)

  3. #13

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

    По умолчанию

    Вероятно стирание всего экрана это временное решение для прототипа, но на всякий случай обращу на него внимание. Переход на пообъектное стирание даст заметную прибавку скорости, а то сейчас очистка экрана отъедает >1/3 времени.

  4. #14

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,051
    Спасибо Благодарностей отдано 
    1,142
    Спасибо Благодарностей получено 
    1,472
    Поблагодарили
    524 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Вероятно стирание всего экрана это временное решение для прототипа, но на всякий случай обращу на него внимание. Переход на пообъектное стирание даст заметную прибавку скорости, а то сейчас очистка экрана отъедает >1/3 времени.
    Я ещё подумаю.
    Появилась ещё такая мысль: можно использовать ТРИ плана под игровой экран, переключая их по очереди, текущий ярко, предыдущий бледно - получим "эхо" для всех движущихся объектов.

  5. #15

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

    По умолчанию

    Если использовать много плоскостей, и если выбрать приоритетом скорость, то можно как написал svofski раскидывать спрайты по плоскостям. Готового механизма в игре нет, я представляю примерно так: при выводе очередного спрайта смотрим по координатам, если нет наложения, то используем основную плоскость+0, если есть, то плоскость+1, если и там уже есть, то +2, и т.д. (если хватит памяти) до +3. Если плоскости кончились, то или рисуем процедурой с xor или просто портим какую-то из плоскостей. Выигрыш за счет отказа от чтения экрана и логических операций, но, конечно, будет помигивать.
    Вариантов много, вопрос в приоритетах - "безмигательность", скорость, наличие спецэффекта, наверно еще что-то можно придумать.

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

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

  6. #16

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,051
    Спасибо Благодарностей отдано 
    1,142
    Спасибо Благодарностей получено 
    1,472
    Поблагодарили
    524 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Можно ещё поиграть с вариантом когда держим группу флажков "мы тут рисовали" и очищаем только там где запачкали.

    Но пока я всё это откладываю на потом - хочу сначала логику реализовать, хотя бы основную часть.

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

  8. #17

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

    По умолчанию

    Умозрительно представляется, что поблочное стирание эффективнее пообъектного при большом "коэффициенте перекрытия" спрайтов, но и пообъектное и поблочное стирание для asteroids явно должны быть эффективнее полноэкранного.

  9. #18

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,051
    Спасибо Благодарностей отдано 
    1,142
    Спасибо Благодарностей получено 
    1,472
    Поблагодарили
    524 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сделал процедурное рисование для больших камней - спрайтов размером 32x32.
    Пока набросал грубо, есть ещё возможность для некоторой оптимизации.
    Объём кода процедур - 11164 байта, против 4*32*8*4 = 4096 байт данных спрайтов.
    Результат: до того в 3 фрейма укладывалось 15 камней, сейчас 23 камня!
    В эти 3 фрейма также входит стирание одного плана и обработка клавиатуры.

    На ужасы нашего городка можно посмотреть тут: https://github.com/nzeemin/vector06c.../astrosprt.asm и метод WriteSprite32x32Code() в SpriteRotate.

    Приложил превью с 23-мя камнями. Кораблик вращается клавишами влево-вправо. Клавиша вверх - эффект взрыва кораблика.
    Последний раз редактировалось nzeemin; 29.06.2021 в 22:55.

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

    svofski(29.06.2021), yur(07.07.2021)

  10. #19

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

    По умолчанию

    Игра смотрится уже очень круто!
    Больше игр нет

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

    nzeemin(29.06.2021)

  11. #20

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,051
    Спасибо Благодарностей отдано 
    1,142
    Спасибо Благодарностей получено 
    1,472
    Поблагодарили
    524 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Пробую применить переключение планов через смену палитры.
    Но есть ощущение, что я что-то делаю не так. Потому что изображение заметно моргает.
    Причём моргают не только движущиеся, но и статичные объекты.

    UPDATE: Разобрался, исправил. Теперь картинка такая как надо. Красота неописсуемая. Оч доволен.
    Превью-4 в аттаче. стрелочка вверх - показать пламя.

    Последний раз редактировалось nzeemin; 30.06.2021 в 03:59.

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

    ivagor(30.06.2021), parallelno(25.07.2022), PPC(30.06.2021), svofski(30.06.2021), yur(07.07.2021)

Страница 2 из 8 ПерваяПервая 123456 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. ASTEROIDS на УКНЦ
    от S_V_B в разделе ДВК, УКНЦ
    Ответов: 112
    Последнее: 31.05.2021, 06:44
  2. Портирование Desolate с TI-83 Plus на УКНЦ
    от nzeemin в разделе ДВК, УКНЦ
    Ответов: 45
    Последнее: 11.02.2021, 11:32
  3. Портирование Lode Runner БК->УКНЦ
    от nzeemin в разделе ДВК, УКНЦ
    Ответов: 103
    Последнее: 12.12.2020, 04:04
  4. Портирование игр с PC на БК
    от S_V_B в разделе БК-0010/0011
    Ответов: 227
    Последнее: 01.04.2019, 02:36
  5. Портирование Stop the Express
    от nzeemin в разделе ДВК, УКНЦ
    Ответов: 90
    Последнее: 21.11.2018, 09:46

Ваши права

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