User Tag List

Страница 20 из 32 ПерваяПервая ... 161718192021222324 ... ПоследняяПоследняя
Показано с 191 по 200 из 317

Тема: Что нужно для написания игр ?

  1. #191

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,080
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    480
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    А почему расширение файлов a80, а не z80 ?
    расширение a80 колорер фара правильно раскрашивает. формат z80 это образ снапшота для эмулятора.

    Кстати я не совсем понял, зачем танчики выводить двумя процедурами. Я бы сделал одной процедурой по координатам (x,y). Так намного проще. Стек можно использовать для экранной таблицы. Зачем использовать стек где размер спрайта кратен 3 ? Скорость вывода спрайта нужно считать по самой медленной процедуре. Нет смысла сделать движение по X быстрее, чем по Y.

    Вот например как сделать чтобы танк буксовал на месте? Или например танк едет по вязкой поверхности? Во всех этих случаях должна быть анимация гусениц. Поскольку у нас фазы спрайтов связаны с анимацией этого нельзя добиться. Лучше всего хранить спрайт не сдвинутым, и доводить до нужно фазы согласно координаты Х. Это даст универсальность и больше физики.

    upd. почитал ТЗ.
    -----------------
    Такие игры, как например эта, пишутся по методу клеточного автомата. Скролинг можно делать по знакоместу (8 точек на раз) тогда можно цвета сохранить. И кто сказал, что нужно двигать игровую зону целиком, а не только то, что нарисовано в этой зоне?

    Пример игры клеточного автомата: Down to Earth
    Последний раз редактировалось drbars; 01.08.2013 в 21:52.

  2. #192

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

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    Скорее всего будут некоторые уровни с большой картой. Для вывода части спрайта я прикинул, что один столбик спрайта можно будет вывести на экран с помощью индексной адресации. В IX или IY записать адрес начала спрайта. А командами LD A,(IX+N) загружать из спрайта нужные байты. Т.е. для неполных спрайтов будет отдельная подпрограмма, более медленная. Еще нужно написать отдельную подпрограмму для вывода спрайта при движении по-вертикали. Там в любом месте может встретиться граница клетки, а ее правильный переход при выводе спрайта занимает очень много времени...
    наркоман чтоли?
    это делается так

    вот есть вывод спрайта
    шириной 3


    Код:
    слева направо
    pop de
    ld a,(hl)
    or e
    xor d
    ld (hl),a
    inc l
    
    pop de
    ld a,(hl)
    or e
    xor d
    ld (hl),a
    inc l
    
    pop de
    ld a,(hl)
    or e
    xor d
    ld (hl),a
    inc h 
    
    справа налево
    pop de
    ld a,(hl)
    or e
    xor d
    ld (hl),a
    dec l
    
    pop de
    ld a,(hl)
    or e
    xor d
    ld (hl),a
    dec l
    
    pop de
    ld a,(hl)
    or e
    xor d
    ld (hl),a
    inc h
    значит теперь нам надо добавить вывод спрайта с игнорированием 1 и 2 столбцов справа и 1 и 2 столбцов слева

    -1 слева

    Код:
    слева направо
    pop de
    
    pop de
    ld a,(hl)
    or e
    xor d
    ld (hl),a
    inc l
    
    pop de
    ld a,(hl)
    or e
    xor d
    ld (hl),a
    inc h 
    
    
    справа налево
    dup2
    pop de
    ld a,(hl)
    or e
    xor d
    ld (hl),a
    dec l
    edup
    pop de
    -2 слева

    Код:
    слева направо
    pop de
    pop de
    pop de
    ld a,(hl)
    or e
    xor d
    ld (hl),a
    inc h 
    
    
    справа налево
    pop de
    ld a,(hl)
    or e
    xor d
    ld (hl),a
    
    pop de
    pop de
    inc h
    для варианта с урезанием спрайта справа напишешь сам

    А где бы почитать про способы описания объектов на карте ?
    А как вам скорость движения танка? На мой взгляд очень быстро - надо уменьшить раза в 2-4, особенно для мощных танков.
    есть слово .w координата X и есть слово .w координата Y

    потом ты по этим двум координатам привязанным к углу карты вычисляешь координаты на экране и выводишь
    но у нас в слове вмещается 65536 значений а размер карты будет пусть 512 (2 полных экрана в ширину) тогда
    вот наше слово
    хххххххх хххххххх

    из этого слова нас при выводе на экран интересуют только старшие 9 бит

    где
    з - смещение в знакоместах (0-63)
    т - смещение в знакоместе (0-7) (фактически - величина скольжения спрайта)
    д - дробная часть необходимая для задания скорости движения

    зззззз тт т ддддддд

    если ты делаешь add #0080 то спрайт движется со скоростью 1 точка в цикл
    если add #0040 то 1 точка в 2 цикла
    другие значения я думаю понятны

    Как правильно делить проект на несколько файлов, в которые можно было бы вынести громоздкие подпрограммы ?
    include "имя файла"
    тогда при компиляции файл "имя файла" будет подгружен
    С уважением,
    Jerri / Red Triangle.

  3. #193

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

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    Кстати я не совсем понял, зачем танчики выводить двумя процедурами. Я бы сделал одной процедурой по координатам (x,y). Так намного проще. Стек можно использовать для экранной таблицы. Зачем использовать стек где размер спрайта кратен 3 ? Скорость вывода спрайта нужно считать по самой медленной процедуре. Нет смысла сделать движение по X быстрее, чем по Y.
    поскольку рисуем змейкой то всегда выбираем по 2 байта - я гарантирую это
    предъяви процедуру рисования спрайта с использованием экранной таблицы

    pop hl
    add hl,bc
    ld a,(de)
    ld (hl),a

    конечно красиво но где тогда высоту спрайта хранить?
    С уважением,
    Jerri / Red Triangle.

  4. #194

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,080
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    480
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    поскольку рисуем змейкой то всегда выбираем по 2 байта - я гарантирую это
    предъяви процедуру рисования спрайта с использованием экранной таблицы

    pop hl
    add hl,bc
    ld a,(de)
    ld (hl),a

    конечно красиво но где тогда высоту спрайта хранить?
    Хватит стебаться
    где HX - высота, LX - смещение по X/8. Высота и смещение у меня тоже плавающие.
    Код:
    	LD SP,@tabl
    	LD B,HX
    L1	POP DE        ;10
    	LD A,E         ;4
    	OR LX          ;8
    	LD E,A         ;4
    	LDI	      ;16
    	LDI	 
    	LDI	      ;=74
    	DJNZ L1
    Но у этого способа есть плюс если спрайт в произвольном месте экрана постоянно. Если же он всегда привязан к знакоместу и не движется по вертикали, думаю можно чуть быстрее

    Второй способ в случае автора актуальнее:

    Код:
    	LD IX,SP_OUT
    	LD BC,#18FF
    	LD HL,SPRITE
    	LD DE,SCREEN
    	JP (IX)
    
    COR_DE	LD A,E
    	SUB #E0
    	LD E,A
    	SBC A,A
    	AND #F8
    	ADD A,D
    	LD D,A
    	JP (IX)
    LOOP_1	DEC DE
    	LD E,A
    	INC D
    	LD A,D
    	AND #07
    	JR Z,COR_DE
    SP_OUT	LD A,E	
    	LDI	 
    	LDI	 
    	LDI	 
    	DJNZ LOOP_1
    
    ; 77 тактов на итерацию без корреции
    ; 124 такта на итерацию с коррецией, зато без таблиц. 
    ; Быстро и сердито :)
    Последний раз редактировалось drbars; 03.08.2013 в 06:12.

  5. #195

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,080
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    480
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот, набросал пример. Вывод способом 2.
    O/P/Q/A - движение танка

    Задание топикстартеру: прикрутить сюда спрайты для вертикального движения
    Вложения Вложения
    • Тип файла: rar tank.rar (2.8 Кб, Просмотров: 98)
    Последний раз редактировалось drbars; 03.08.2013 в 00:31.

  6. #196

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

    По умолчанию

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

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

  8. #197

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,080
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    480
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Всё, что кажется простым на самом деле не так. Вывод по (OR) тоже можно реализовать. Я думаю нужно для начала определиться, что у нас будет на экране. Как будет выглядеть лабиринт, сколько одновременно может быть в нём танков в игровой области. Далее, как делать скролл? Тут с координатной плоскостью надо задуряться... Можно держать, глобальные координаты каждого танка на карте уровня... а видимое игровое окно будет проекцией области этой глобальной карты. И скролл будет делаться относительно координат игрока в игровом окне. Координаты проекции поменялись - все танки автоматом перерисовались. Как препятствия (стены) лабиринта описывать... два способа координатами прямоугольников или атрибутной картой.

    Далее, ИИ игры должен как-то управлять этими объектами (танками врагов) через определённые методы. Тут и кратчайший поиск по лабиринту, и алгоритмы преследования.
    Последний раз редактировалось drbars; 03.08.2013 в 19:30.

  9. #198

    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    52 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Добавил управление танками по координатам, обрезку на краях окна и закрашивание атрибутами.
    Дальше надо будет сделать тоже самое для движения по-вертикали.

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

Название:	FUTURE TANK 130804-07.jpg 
Просмотров:	183 
Размер:	26.1 Кб 
ID:	42653  
    Вложения Вложения
    Последний раз редактировалось zx-kit; 04.08.2013 в 16:15.
    "L-256"

  10. #199

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,080
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    480
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию


  11. #200

    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    52 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    А что ? Танки мчатся - что еще надо ? Теперь можно думать, как с помощью них сценарий реализовать.
    "L-256"

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

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

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

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

Похожие темы

  1. простой скрипт для написания хелпов
    от jim в разделе Программирование
    Ответов: 2
    Последнее: 09.04.2007, 14:33
  2. Ответов: 26
    Последнее: 09.08.2006, 14:48
  3. Ищу программистика для написания игры МИНОТАВР
    от TomCaT в разделе Программирование
    Ответов: 13
    Последнее: 15.04.2006, 03:09

Ваши права

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