Важная информация

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 27

Тема: NoNaMe RTS - "за неделю на изичах"

  1. #1
    Member
    Регистрация
    06.05.2019
    Адрес
    г. Подольск
    Сообщений
    87
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    9
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию NoNaMe RTS - "за неделю на изичах"

    Проект NoNaMe.

    Концепция


    1. Ориентир процессор Z80, 1МБ, KMouse, NeoGS, в т.ч. периферия SD, Mp3
    2. Вспомогательные модули кода без привязки к адресу.
    3. Простота их загрузки - обёртка для SD-Card, TR-Dos и т.п.
    4. Работа с NeoGS. Проигрывание mp3.
    5. Простая работа с памятью, куча, аллокатор.
    6. Использовать RAM0 в cpu0.
    7. Стандартный граф. движок для менеджера памяти ATM подобных, с избавлением от промежуточных буферов.
    [свернуть]


    Драйвер памяти autoconf-0.0.2.7 (23.10.2021)


    autoconf-0.0.2.7.zip
    [свернуть]

    Генерация фона



    1. Fonrender. В данном примере используется нулевая страница ОЗУ (RAM0), подключённая вместо ПЗУ d . В ней генерируется код типа ld bc,NNNN; push bc;, где далее в NNNN по методу "змейка" подставляются данные фона.

    Минусы:
    - фон заранее подготовленный статичный (ничего там не крутится, не вертится);
    - в cpu0 подставлять RAM0 не много ZX умеют;
    - почти целая страница кода;
    - только на весь экран (full screen)

    fonrender.zip - какой-то тест
    KAY1024-RAM.zip - таблица матрицы фона, вариант работы "со змейкой".
    [свернуть]

    Сборка Totalcmd &Notepad++ &SJAsm &Unreal


    Shell.zip
    Shell.7z

    - портативная сборка "Набор для редактирования, запуска проекта"
    - [Ctrl+F9] Скрипт компиляции проекта
    - [F9] Скрипт компиляции и запуска проекта
    - [F10] Скрипт запуска проекта
    !!! Notepad++ Сохраняет только текущую страницу редактирования
    [свернуть]


    to be continue...
    Последний раз редактировалось Biland; 16.12.2021 в 18:28. Причина: Концепция (16.12.2021)

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

  3. #2
    Activist Аватар для Deadly
    Регистрация
    18.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    257
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    353
    Поблагодарили
    100 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ку, посмотрел код, не во всё вникал, но неплохо, не плохо..
    Если, я правильно понял, там таблица жирная из минусов, но скорость нормас )

  4. #3
    Member
    Регистрация
    06.05.2019
    Адрес
    г. Подольск
    Сообщений
    87
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    9
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Это меня NEO SPECTRUMAN наставил на путь истинный, ссылаясь на Алона. Про таблицу минусы не догнал немного, если LD, PUSH, то 12288кБ, без атрибутов, плюс байты восстановления стека и прыжок обратно в код программы. Скорость отрисовки фона самая быстрая выбиралась, но минус в том, что к RAM7 вывод спрайтов без буфера не подвязать. Вот если бы в cpu0 можно было разные страницы подключать, один какой-то клон подобное умеет, не помню какой.
    unreal

  5. #4
    Activist Аватар для Deadly
    Регистрация
    18.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    257
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    353
    Поблагодарили
    100 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Biland Посмотреть сообщение
    Про таблицу минусы не догнал немного, если LD, PUSH, то 12288кБ, без атрибутов, плюс байты восстановления стека и прыжок обратно в код программы.
    Я про этот минус и говорю, правда, насчитал поменьше, таблицу, в 192 тайла * 4 (LD & PUSH) = 768 байт.
    У меня на тайл уходит 674 такта, и нет такой таблицы жирной в 13кб + можно рисовать в 2 экрана. В любом случае, каждый подход имеет право на жизнь, для каждого своего случая.

  6. #5
    Member
    Регистрация
    06.05.2019
    Адрес
    г. Подольск
    Сообщений
    87
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    9
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    У тебя фон около 130000 тактов занимает. В данном случае, подготовка фона столько же занимает. Но потом за фрейм (в половину быстрее) кидает фон в экран, но за счёт 13кБ. Кидать фон могу в любую страницу, только адрес в стек установить. Больше всего раздражает, что нужно страницы щёлкать со спрайтами и тайлами. Этот способ специфичен, бесспорно, используется магия Медноногова.) Но с уровнем развития ZX (камень в огород "Повелителю"), считаю, что нужно использовать 1024кБ, Turbo - 7 или 14Мгц, страницы в cpu0.
    unreal

  7. #6
    Activist Аватар для Deadly
    Регистрация
    18.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    257
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    353
    Поблагодарили
    100 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Biland Посмотреть сообщение
    В данном случае, подготовка фона столько же занимает
    Не каждый фрейм обновляется всё. Имеется буфер в 192 байта, отвечающие за каждый тайл, в который меняются биты, отвечающие что обновлять (бэкграунд, туман и т.п.)
    т.е. ~ 15к уходит, если ни чего не меняется в кадре. если тайл требуется перерисовать, тогда плюсуй к 15к на тайл 674 тактов на его обновление и т.д. и т.п.

  8. #7
    Veteran
    Регистрация
    19.01.2005
    Адрес
    Наро-фоминск
    Сообщений
    1,835
    Спасибо Благодарностей отдано 
    395
    Спасибо Благодарностей получено 
    168
    Поблагодарили
    104 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Интересны алгоритмы ИИ.

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

    vlad-kras (04.06.2021)

  10. #8
    Member
    Регистрация
    06.05.2019
    Адрес
    г. Подольск
    Сообщений
    87
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    9
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Deadly, правильно ли понял? Фон рисуется в экран, когда спрайт бежит, то буфер в 192 байта обрабатывается и на основании его идёт рефреш фона, не всего фона? Типа, как у Лорда?
    unreal

  11. #9
    Activist Аватар для Deadly
    Регистрация
    18.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    257
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    353
    Поблагодарили
    100 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Аблосютли, не знаю как там у великого "Лорда Драгона" сделано, но это нормальная практика, зачем рисовать, то, что не нужно?

  12. #10
    Member
    Регистрация
    06.05.2019
    Адрес
    г. Подольск
    Сообщений
    87
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    9
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    У Повелителя похоже тоже самое. Я по удалёнке последние видео смотрел, на 3,5МгЦ видно, что при прокручивании экрана, когда на спрайты возвращается происходит торможение, сразу jackal вспомнился с его лесом. А там ещё снаряды, стрелы нужно прикрутить. Как у Медноногова стрелы центрованы по тайлам, либо как в jackal без привязок. Там тоже рефреш долбить будет.

    И, вообще, я посчитал, что более 200к тактов нужно будет, для 50 fps.

    ^m00h^, это совсем интересная тема. Особенно про волновой метод в RTS. ) Кто-то Повелителя подколол на начальном этапе. Думаю, что можно воспользоваться алгоритмом с олимпиады по программированию. Найти все маршруты, из одного города в другой. Типа двумерный массив ((3,6),(7,3),(6,4),(x1,x2)), где x1 - это город с которого выходим, x2 - это город куда приходим. Найти все маршрут по городам задачка на несколько строк, города (checkpoint) можно установить сразу, либо в процессе игры генерировать. Как бы виртуальные дороги, юниту немного времени уйдёт досчитать маршрут от ближайшей точки дороги к пункту назначения. В warcraft для этого есть дороги, они и приводят куда нужно. Здесь можно сделать, также дороги невидимые от checkpoint до checkpoint (если их нет в анимации). Этот приём в играх используется, в Settler совсем явно. Но это только набросок для ZX.

Страница 1 из 3 123 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 17
    Последнее: 26.12.2015, 23:22
  2. Ответов: 51
    Последнее: 23.03.2015, 10:45
  3. Ответов: 51
    Последнее: 11.08.2014, 10:40
  4. Ответов: 0
    Последнее: 15.08.2010, 14:38
  5. Ответов: 6
    Последнее: 20.11.2007, 11:29

Ваши права

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