User Tag List

Страница 48 из 99 ПерваяПервая ... 444546474849505152 ... ПоследняяПоследняя
Показано с 471 по 480 из 985

Тема: WarCraft 1 - под классический 128+TR-Dos

  1. #471

    Регистрация
    20.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    804
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    298
    Поблагодарили
    92 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    Lightbulb

    Уважаемые дамы и господа, представляю на ваш суд вторую версию игрового движка

    WARCRAFT - Orcs & Humans
    version 0.02 alpha
    http://dragons-world.ru/ZX_Spectrum/...0_02_alpha.zip



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

    Парочку юнитов с умыслом пустил бегать по дорожкам и мосту. Буду делать дорогу чёрно-жёлтой. Мост тоже.

    В меню есть галочка "нормалайз анимэйшн" - снимает исскуственно введённую паузу в анимациях юнитов. Хотя, маленькую паузу я там всё равно оставил, чтобы они совсем не пропадали при определённых стечениях обстоятельств. Как видите, запас по скорости, перед этапом наращивания высокоуровневого ИИ, обеспечен. Что и следовало доказать. Это возможно!


    ------------------------------------------------------------------------------------------------------------
    Донат для поддержки идей разработчика можно осуществлять на следующие кошельки:

    Яндекс.Деньги (они же yoomoney): 41001318897076
    WebMoney: WMID: 890037554880
    R418046365227 - рубли
    Z401891667965 - доллары
    Последний раз редактировалось DragonsLord; 20.05.2021 в 22:11.

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

    bakka(20.05.2021), Black Cat / Era CG(20.05.2021), Dart Alver(20.05.2021), Dimon spb(20.05.2021), hood(20.05.2021), Romaneo(20.05.2021), scl^mc(22.05.2021), Verm-V(20.05.2021), Xrust(20.05.2021)

  2. #472

    Регистрация
    20.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    804
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    298
    Поблагодарили
    92 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот это интересно, что за ограничения?
    Ограничения в доступном времени на исполнение. В вашем представлении нужно рефрэшить весь фон каждый кадр, по сути пересоздавать его с нуля. В моей же интерпретации - никогда ни при каких обстоятельствах не перерисовывается более 2 полосок тайлов из 12 присутствующих. Ни при скроллинге, ни при статическом выводе бегающих юнитов. Мораль сей басни такова: разница во времени вывода В ШЕСТЬ РАЗ.

    Что есть быстрее этого, очень интересно (2 байта за 21 такт?):
    Я не про развёрнутый цикл говорил. Для такой роскоши типа "LD BC,очередные два байта: PUSH BC" нет места. Я говорил про конструкцию типа "PUSH BC.DE.HL,IX,IY exx PUSH BC.DE,HL и потом POP в обратном порядке". Проблема в том, что такой код, конечно быстрее, но у него ограничение - зона скроллирования не больше 16 знакомест. Для варианта, когда у нас 24 знакоместа, приходится делать в два прохода, и это получается на 10% медленнее, чем тупо переброска по таблицам. Могу показать в виде кода, если есть интерес.

    "высокоуровневого ИИ" - это что?
    Назкоуровневыми процедурами в случае писания rts можно назвать процедуры:
    - мышки
    - оконный интерфейс
    - вывод текста
    - скроллинг
    - печати 1 тайла с точностью до знакоместа
    - печати 1 спрайта с точностью до пикселя
    это базовые процедуры фундамента, вызываемые многократно за 1 кадр, и следовательно, нуждающиеся в максимальной оптимизации на скорость исполнения.

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

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

    Или есть способ раз нарисовать всё, а потом через буферы ландшафт под спрайтами запоминать-восстанавливать, так что-ли?
    На примере скроллинга карты:
    - пишете 8 скроллеров для всех направлений в стиле "взять информацию и переложить на размерность 1 тайла в сторону"
    - это сдвинет весь экран на 16 пикселей в любую из сторон, открыв одну полоску тайлов на месте, откуда сдвигали, или две полоски тайлов, если сдвигали наискосок
    - допечатываете 1 полоску тайлов (12 штук) или две полоски (23 тайла) по ситуации.
    анимацию обычно при скроллировании полностью останавливают. Можно, конечно, не останавливать, но появится неприятный эффект снижения чувствительности мыши и замедление скроллинга. Точнее даже не это неприятно, а то, что времянка скроллинга перестанет быть постоянной и станет переменной, в зависимости от загруженности экрана юнитами.

    На примере печати спрайтов юнитов, перемещающихся по карте:
    - есть таблица видимой области, т.е. 12х12=144 байта (можно и в битах, но не суть)
    - перебираете всех юнитов, чекаете тех, кто сейчас в видимом окне, по их кординатам запоняете таблицу единичками. Это будут места, которые необходимо обновить
    - вызываете процедуру рефрэшера фона, который по этой таблице отрисовывает только необходимые тайлы (среднестатистически это также в пределах 24 тайлов)
    - далее по верху отрисовываете всех юнитов, кто находится в видимой области.
    здесь отмечу, что процедура подготовки таблицы должна учитывать, что при нахождении спрайта не по целым координатам, нужно обновлять не один тайл а зону из нескольких, чтобы перекрыть задник спрайта гарантированно. Для спрайтов, отличающихся по размеру от тайлов - ситуация ещё сложнее.

    2-я банка ( это та что #8000-#BFFF ) быстрая ( и 0-я вроде тоже ). Значит вектор прерывания, если IM2 используется, придётся сюда класть, иначе на классике вечные тормоза и снег пойдёт
    У меня прерывание обслуживается полной таблицей в 257 байт и обработчик находится в конце средней банки, которая у всех моделей Спектрума быстрая. Могу показать в виде кода, если вам интересно. Вообще, всё, что касается процедур, требующих отсутствия тормозов, - они находятся в средней странице.

    В условно медленных банках находятся:
    - в нижней банке лежат таблицы сдвигов для процедуры спрайтов (8 килобайт)
    - в верхних банках лежат сами спрайты юнитов (эти банки на некоторых официальных спеках медленные)
    и вот от этого никак не уйти при таких объёмах информации, которые необходимы rts для функционирования.
    Последний раз редактировалось DragonsLord; 20.05.2021 в 15:00.

  3. #473

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

    По умолчанию

    DragonsLord, настрой нормально отдачу файлов.
    чего он sna как txt отдает?

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

    запрещать прерывания перед переключением страницы - необязательно.
    С уважением,
    Jerri / Red Triangle.

  4. #474

    Регистрация
    20.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    804
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    298
    Поблагодарили
    92 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Проверил: sna отдаёт, как sna.
    Настраивай свой комп.

    запрещать прерывания перед переключением страницы - необязательно
    Кстати, да. У меня же обработчик не вверху а в средней трети лежит.

    Уже работаю над продолжением:



    Меня вот пока волнует вопрос перекидывания на чистовой экран. Пока не сложилось в голове. Ведь кидалка будет минимум 85000 тактов. Как сделать то, чтобы луч не сёк скрин на две половины со смещением? Есть мысли?
    А делать:
    ei
    halt
    call pause (20000t)
    и выводить догоняя луч, как-то жалко просирать фрэйм в никуда...

    Ещё эта мышка долбаная, хз, как красиво сделать, чтобы не мигнула. Кидалка ведь будет трогать стэк полюбасу, а это значит di, и мышка будет выключена всё время вывода...
    Последний раз редактировалось DragonsLord; 21.05.2021 в 10:09.

  5. #475

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

    По умолчанию

    Цитата Сообщение от DragonsLord Посмотреть сообщение
    Проверил: sna отдаёт, как sna.
    Настраивай свой комп.
    настраивать что?
    по клику по твоей ссылке - sna открывается как страница
    Нажмите на изображение для увеличения. 

Название:	pict1.jpg 
Просмотров:	96 
Размер:	22.4 Кб 
ID:	75438

    vtrd например открывает окно с предложением сохранить.
    Нажмите на изображение для увеличения. 

Название:	pict2.jpg 
Просмотров:	90 
Размер:	22.5 Кб 
ID:	75439

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

    Цитата Сообщение от DragonsLord Посмотреть сообщение
    Ещё эта мышка долбаная, хз, как красиво сделать, чтобы не мигнула. Кидалка ведь будет трогать стэк полюбасу, а это значит di, и мышка будет выключена всё время вывода...
    попробуй переделать под два экрана.
    С уважением,
    Jerri / Red Triangle.

  6. #476

    Регистрация
    20.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    804
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    298
    Поблагодарили
    92 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Видимо, упаковка в zip устранит эту проблему для всех систем. - ща запакую.

    попробуй переделать под два экрана.
    Всё под два экрана? Я заманаюсь потом интерфейс отслеживать.
    эээ... не, это вообще не возможно, ибо экран в верхней банке, и дата спрайтов тоже в верхней банке. И спрайтовалка не подразумевает сие непотребство.

    Отдельно саму мышку и там и там рисовать одновременно тоже нельзя, я думал про это. Потому что мышка7 будет потом елозиться по неподвижному скрину, где мышка5 уже будет впечатана намертво.
    Последний раз редактировалось DragonsLord; 20.05.2021 в 22:21.

  7. #477

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

    По умолчанию

    Цитата Сообщение от DragonsLord Посмотреть сообщение
    Отдельно саму мышку и там и там рисовать одновременно тоже нельзя, я думал про это. Потому что мышка7 будет потом елозиться по неподвижному скрину, где мышка5 уже будет впечатана намертво.
    обсолютели вронг.
    думай, думай, думай!
    С уважением,
    Jerri / Red Triangle.

  8. #478

    Регистрация
    20.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    804
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    298
    Поблагодарили
    92 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Чего вронг? Намёки где? А лучше нормальную развёрную мысль.
    ....сложна! сложнаааа!!!!....
    Последний раз редактировалось DragonsLord; 20.05.2021 в 22:55.

  9. #479

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

    По умолчанию

    Цитата Сообщение от DragonsLord Посмотреть сообщение
    Чего вронг? Намёки где? А лучше нормальную развёрную мысль.
    Рисуем экран 5
    Нарисовали
    Стираем стрелку на включенном экране
    проверяем необходимость переключения экрана. Включаем нужный экран.
    Рисуем стрелку на включенном экране.



    Рисуем экран 7
    Нарисовали
    Стираем стрелку на включенном экране
    проверяем необходимость переключения экрана. Включаем нужный экран.
    Рисуем стрелку на включенном экране.

    Повторяем.

    ....сложна! сложнаааа!!!!....
    Ты всегда можешь бросить и уйти и тогда Медноногов будет смеяться вслед тебе со своего пьедестала, почесывая жирное брюшко.
    С уважением,
    Jerri / Red Triangle.

  10. #480

    Регистрация
    20.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    804
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    298
    Поблагодарили
    92 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ты демку вааще смотрел? Что я писал ДО того, читал?
    Не могу я на двух экранах рисовать всё. Всё заточено - рисовать на теневом экране с перекидыванием в чистовой по готовности.

    Забей. Я уже придумал, как вывести стрелку ИДЕАЛЬНО. Вам старикам не понять...

    и тогда Медноногов будет смеяться вслед тебе со своего пьедестала
    Судя по скорости моего вывода спрайтов, а также по цветному графонию тайлов, - Медный уже улетел с пъедестала лицом вперёд
    Последний раз редактировалось DragonsLord; 21.05.2021 в 10:29.

Страница 48 из 99 ПерваяПервая ... 444546474849505152 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. как портировать музон с Warcraft inroduction
    от ALKO в разделе Музыка
    Ответов: 20
    Последнее: 03.02.2021, 01:06
  2. Ответов: 1
    Последнее: 25.07.2018, 19:52
  3. Чтение дисков TR-DOS под XP
    от Zloy в разделе Софт
    Ответов: 47
    Последнее: 19.09.2008, 09:06
  4. NK-DOS (вариант MS-DOS под TR-DOS)
    от Nomy Graphics в разделе Оси
    Ответов: 30
    Последнее: 03.09.2007, 16:59
  5. Софт под iS-dos
    от demon_zx в разделе Софт
    Ответов: 0
    Последнее: 07.03.2006, 23:35

Ваши права

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