PDA

Просмотр полной версии : Разработка ZXOOM



Страницы : 1 [2] 3

Andrew771
01.04.2011, 10:06
Под 128 не планирую делать.
А как еще можно ускорить?
У меня уже борьба за память под спрайты началась, так что особо не развернешься на оптимальных алгоритмах, жрущих память.

Для ALKO: спрайты делай целыми, а не четвертинками. Программа 3D-View сама их режет на части.

jerri
01.04.2011, 11:35
ну тут надо сорцы смотреть
можешь засветить те куски кода вывода которые ты точно уже не будешь менять?

Andrew771
01.04.2011, 14:32
Беготня с пистолетом, смотрим.

Andrew771
01.04.2011, 17:45
можешь засветить те куски кода вывода которые ты точно уже не будешь менять?
если не успел качнуть, то в личку :)

jerri
01.04.2011, 18:12
Успел кое что
посмотри PEIZAS

есть резервы для ускорения

не совсем понимаю как у тебя идет отрисовка
от ближних объектов к дальним, так?

просто колонны как то криво накладываются
и кстати спрайты можно через стек отрисовывать

ALKO
01.04.2011, 20:43
Andrew771, конкретно что именно мне рисовать?

Кстати, титулный скрин будет?
А то я начал рисовать для титулки картинку,но отсканить получится через месяц.

---------- Post added at 20:39 ---------- Previous post was at 20:35 ----------


Беготня с пистолетом, смотрим.

пистол следует инвертировать,а то тень светится, а свет затеняется

---------- Post added at 20:40 ---------- Previous post was at 20:39 ----------

и при выстреле лучше вниз его опускать (так принято по стандарту ФПСок начала 90-х)

---------- Post added at 20:43 ---------- Previous post was at 20:40 ----------

инвертировать нужно всё,кроме стен.

newart
01.04.2011, 23:08
Под 128 не планирую делать.
То есть музыки в игре не будет?

ALKO
01.04.2011, 23:17
и не надо.
Проц с изображением еле справляется, так на него ещё и музон цеплять собираетесь.
К тому же это делается под реал 48.

moroz1999
02.04.2011, 00:27
а как насчет General Sound? Ему проц не нужен.

jerri
02.04.2011, 01:08
так вот может автор потом и сподобится :) 128+GS написать
только пусть сначала 48 добьет

переписал немного пару подпрограмм вывода
надо проверить

Black_Cat
02.04.2011, 06:14
а как насчет General Sound? Ему проц не нужен.а ты перед началом игры музыку из дума запусти по кругу на плеере :)

Andrew771
02.04.2011, 14:55
Кстати, титулный скрин будет?
А то я начал рисовать для титулки картинку,но отсканить получится через месяц.
Да, будет. Сразу на экране, т.к. больше некуда запихивать.
А раньше, чем через месяц (а может и больше), он и не понадобится. :)
Мне еще генератор лабиринта нужно писать или адаптировать, что прислал Jerri.


То есть музыки в игре не будет?
Музыка планируется, во время заставки, двухголосная на бипере. А в игре только всяческие щелчки, бОльшее проц не потянет.


переписал немного пару подпрограмм вывода
надо проверить
смотрю..

---------- Post added at 14:55 ---------- Previous post was at 14:53 ----------

Еще, что предлагал БК-0010, насчет невидимости и прибора ночной видимости, пока в силе.

jerri
02.04.2011, 15:14
тебе его переписать под твои нужды?
кстати как у тебя враги обрабатываются?

---------- Post added at 15:14 ---------- Previous post was at 15:13 ----------


а ты перед началом игры музыку из дума запусти по кругу на плеере :)

Тошнить же будет кругов через 50

Black_Cat
02.04.2011, 16:44
Тошнить же будет кругов через 50а она там и так по кругу идёт, и самое главное - ни чуть не надоедает :) Наоборот - без неё Doom - не Doom :)

jerri
02.04.2011, 17:03
ну хз - а есть думовский музон в виде мода?

Black_Cat
02.04.2011, 17:23
ну хз - а есть думовский музон в виде мода?х.з. чёт не слышал о таком.. Проще наверно просто как mp3 записать :)

jerri
02.04.2011, 18:09
а ГС играет мп3?

Black_Cat
02.04.2011, 18:11
NGS играет, токо не знаю как там с зацикливанием

goodboy
02.04.2011, 18:12
в `родном` думе - midi.

ALKO
02.04.2011, 18:15
раз вам так нужен музон, запустите в винампе.
Всё равно небось пользуетесь только эмулем

Black_Cat
02.04.2011, 18:17
в `родном` думе - midi.эт понятно, но на Спеке миди нет

---------- Post added at 18:17 ---------- Previous post was at 18:15 ----------


раз вам так нужен музон, запустите в винампе.
Всё равно небось пользуетесь только эмулемна РС и Doom можно запустить :)

jerri
02.04.2011, 18:43
миди наверное можно в мод переделать?
на амиге должны быть конверторы

Andrew771
02.04.2011, 18:53
тебе его переписать под твои нужды?
Давай, классно было бы. Лабиринт 128х128. Когда формируется матрица, уже сразу надо наносить стены, колонны и барьеры. А врагов и аптечки - после окончания формирования, на свободные клетки.


кстати как у тебя враги обрабатываются?
Поля 15х15 вокруг игрока. Враг может стрелять только прямо по вертикали, горизонтали или диагонали с игроком, и если между ним и игроком нет стен или колонн (через барьеры стрелять может, хотя возможно это уберу, т.к. барьеры высокие). С остальных клеток враг стрелять не может. Поэтому он смещается на ближайшую клетку, откуда можно стрелять.

jerri
02.04.2011, 19:53
нуу вообще конечно лабиринт то получается 127 на 127 :) или даже 125 на 125 без учета внешних стен

кстати зачем такой большой
может всетаки поменьше?
что то вроде 96*96 - выше крыши
вон в ЧВ вообще карта 64*64

и есть пара идей относительно рендера изображения - будет ускорение но надо тогда тебе будет перепахать большой кусок программы

goodboy
02.04.2011, 20:31
миди наверное можно в мод переделать?
я так понял Modplug Tracker может загружать MID и отгружать MOD.
только сначала надо вытащить MUS файлы из WAD и сконвертить в MID

Andrew771
02.04.2011, 23:13
Движок предусматривает лабиринт с горизонтальной стороной 128. Так легче считать адреса клеток. Границы лабиринта ессно все огорожены внешними стенами, так что 126х126. Вертикальная сторона может быть любой. Можно уменьшить, но не в ущерб интересности и сложности игры, чтобы под спрайты больше места оставить.


и есть пара идей относительно рендера изображения - будет ускорение но надо тогда тебе будет перепахать большой кусок программы
В ЧВ не лабиринт, а карта местности.
Если спрайты не менять и память еще больше не транжирить, то можно. Хотя, с другой стороны, побыстрее охота эту игру закончить и начать новую писать. :)

---------- Post added at 22:36 ---------- Previous post was at 20:37 ----------

Сейчас вставляю трупы, вроде нормально получается.
Но пока еще есть ошибки с выводом спрайтов (всех), необъяснимые пропадания изображения в некоторых знакоместах, хотя должны работать в них маски. Буду ковырять в отладчике.

---------- Post added at 23:13 ---------- Previous post was at 22:36 ----------


Но пока еще есть ошибки с выводом спрайтов (всех), необъяснимые пропадания изображения в некоторых знакоместах, хотя должны работать в них маски. Буду ковырять в отладчике.
Нашел! Досаднейшую ошибку. Оказывается, подпрограммы получения автомасок для значения 0 дают 0, а должны 255! Так что, исправил.
Еще кое-где неправильно в спрайтах заданы параметры краевых знакомест. Это уже в 3D-View надо подрегулировать.

jerri
02.04.2011, 23:33
а просто скипать нулевые байты?

Andrew771
02.04.2011, 23:36
а просто скипать нулевые байты?
и на каждой таком скипе будут другие байты проверяться, не выгодно ИМХО :)

jerri
03.04.2011, 13:35
итак вот генератор
сначала создает 127 на 127(128) т.е требует 16256 памяти
потом высушивает соответственно до нужного вида (в 1 байте 2 элемента)
естественно никаких лишних элементов не добавляет :) тут уж извини
смотри разбирай спрашивай

Andrew771
03.04.2011, 21:26
смотри разбирай спрашивай
спасибо. Завтра буду смотреть.
Насчет еще более быстрого вывода сцены думал.
Можно подумать над тем, чтобы хранить в спрайтах не координаты знакоместа, а сразу адрес вывода на экране первого байта знакоместа. Тогда не нужно каждый раз его высчитывать. Правда, в этих же двух байтах я храню параметр - краевое это знакоместо спрайта или нет, и если краевое, то какое - правое или левое. Можно как-то это продумать, чтобы вместе с адресом хранить (можно не адрес, а хотя бы смещение от какого-то адреса, например, начала экрана, тогда два бита будут по-прежнему свободны для краевых параметров).
Еще думал, хранить "слои" экрана - у меня 7 уровней вглубь, следовательно, 7 слоев для перспективы 90 градусов и 7 слоев для перспективы 45 градусов. Причем не весь экран, а только четверть, т.к. остальные 3/4 можно получать отзеркаливанием. В слое хранятся для каждого знакоместа байты изображения каждого элемента (15 элементов - стены, колонны, бассейны, трупы, фазы врагов и т.д.). Т.е. спрайты вообще не нужны, а всё хранится в этих слоях, которые быстро можно вывести. Но всё это занимает в памяти очень много места, пока не придумал, как сократить размер.

Black_Cat
03.04.2011, 21:37
что с музыкой решили, будет GS из Doom?

Andrew771
03.04.2011, 21:53
что с музыкой решили, будет GS из Doom?
свою лучше написать, благо я музыкант еще, хоть и не спектрумовский. :)

Black_Cat
03.04.2011, 22:07
но для прикола неплохо бы при загрузке иметь меню выбора с музой, в т.ч. и из дума :)

---------- Post added at 22:07 ---------- Previous post was at 22:04 ----------

А вааще загрузу продумывали? Интересно было бы сначала грузить картинки с текстом, типа предыстория, а потом уже игру.

jerri
04.04.2011, 09:33
спасибо. Завтра буду смотреть.
Насчет еще более быстрого вывода сцены думал.
Можно подумать над тем, чтобы хранить в спрайтах не координаты знакоместа, а сразу адрес вывода на экране первого байта знакоместа. Тогда не нужно каждый раз его высчитывать. Правда, в этих же двух байтах я храню параметр - краевое это знакоместо спрайта или нет, и если краевое, то какое - правое или левое. Можно как-то это продумать, чтобы вместе с адресом хранить (можно не адрес, а хотя бы смещение от какого-то адреса, например, начала экрана, тогда два бита будут по-прежнему свободны для краевых параметров).
Еще думал, хранить "слои" экрана - у меня 7 уровней вглубь, следовательно, 7 слоев для перспективы 90 градусов и 7 слоев для перспективы 45 градусов. Причем не весь экран, а только четверть, т.к. остальные 3/4 можно получать отзеркаливанием. В слое хранятся для каждого знакоместа байты изображения каждого элемента (15 элементов - стены, колонны, бассейны, трупы, фазы врагов и т.д.). Т.е. спрайты вообще не нужны, а всё хранится в этих слоях, которые быстро можно вывести. Но всё это занимает в памяти очень много места, пока не придумал, как сократить размер.

есть еще вариант отрисовки

1 как сделано у тебя
есть теневой экран 6912 байт

сначала ты делаешь расчеты, потом рисуешь, потом копируешь на экран - это долго

2 как можно сделать
сделать таблицу 3072 байта
сделать таблицу 768 байт под атрибуты
где 2 байта обработчик знакоместа
вторые 2 байта - адрес символа

также у тебя на экране имеется довольно много пустых мест
и рисовать в них - довольно расточительно по тактам


итак обработчик

обработка пустого места
empty_char
pop af //снимаем ненужный адрес
exx
ldi //красим экран - естественно в этом месте атрибуты должны быть #00
exx
ret //переходим на следующий элемент
draw_char //обычная отрисовка изображения
pop hl //снимаем адрес чара
ld (draw_c0),sp
ld sp,hl
ld l,e
ld a,d
and #f8
ld h,a

dup 3
pop bc
ld (hl),c
inc h
ld (hl),b
inc h
edup
pop bc
ld (hl),c
inc h
ld (hl),b
ex de,hl
exx
ldi
exx
ld sp,$
draw_c0 equ $-2
inc e
ret nz
ld a,d
add a,8
ld d,a
ret
draw_charfv //отрисовка перевернутого по вертикали изображения
pop hl //снимаем адрес чара
ld (draw_c1),sp
ld sp,hl
ld l,e
ld a,d
or #07
ld h,a

dup 3
pop bc
ld (hl),c
dec h
ld (hl),b
dec h
edup
pop bc
ld (hl),c
dec h
ld (hl),b
ex de,hl
exx
ldi
exx
ld sp,$
draw_c1 equ $-2
inc e
ret nz
ld a,d
add a,8
ld d,a
ret


как заполнять эту таблицу?

для начала распушаем
нулевой адрес и обработчик нулевых чаров
в область атрибутов заливаем #00

далее при прорисовке добавляем в область атрибутов цвет тайла
а в область обработчика адрес рисовалки и адрес тайла

т.е получается чтото вроде

dw empty_char,0,empty_char,0,empty_char,0,empty_char, 0
dw draw_char,#8000,draw_char,#8008,draw_char,#8010,dr aw_char,#8018

и в файле атрибутов

db 0,0,0,0,1,1,1,1

как то так :)

основная тема понятна?
дальше рассказывать как делать прорисовку с маской?

Andrew771
04.04.2011, 11:28
Идею понял. Но есть сомнения.


сначала ты делаешь расчеты, потом рисуешь, потом копируешь на экран - это долго
Расчеты и отрисовка идут сразу для каждого тайла.

Сейчас у меня такой алгоритм:

1. Цикл по клеткам лабиринта, находящихся рядом с клеткой игрока. Смещения до нужных клеток заданы в таблице. Начинаем с ближних клеток и заканчиваем дальними (т.е. получается 7 уровней в глубину, на каждом уровне разное количество клеток).

2. Определяем элемент в текущей клетке.

3. По таблице, в зависимости от элемента клетки, определяем адрес спрайта, процедуру его вывода (1/4, 2/4, 3/4 или 4/4) и координаты спрайта на экране (на самом деле, в таблице хранится только горизонтальная координата, т.к. вертикальная всегда равна нулю).

3а. При этом в 1/4 спрайт будет выводиться как есть, в 2/4 - зеркально отраженным, в 3/4 - перевернутым, в 4/4 - перевернутым и зеркально отраженным. Спрайты, которые не симметричны, будут выводиться процедурой 1/4. Процедуры обозначают только способ вывода, а координаты вывода могут быть любыми, т.е. например 2/4 означает не то, что спрайт выводится только в 2/4 экрана, а то, что в любую координату экрана зеркально отраженным.

3б. В спрайтах хранятся для каждого знакоместа горизонтальная и вертикальная координаты, параметр занятости знакоместа ("краевой параметр") и 8 байтов изображения. Краевой параметр может иметь значения:
- знакоместо полностью перекрывает всё, что за ним;
- знакоместо на левом краю спрайта, поэтому знакоместо другого спрайта, если попадет под это знакоместо, должно будет выводиться с правой маской;
- знакоместо на правом краю спрайта, поэтому знакоместо другого спрайта, если попадет под это знакоместо, должно будет выводиться с левой маской.

4. Выводим спрайт соответствующей процедурой 1/4, 2/4, 3/4 или 4/4 на виртуальный экран.

4а. В каждой процедуре есть 3 блока вывода:
- вывод знакоместа непосредственно без маски;
- вывод знакоместа с левой маской;
- вывод знакоместа с правой маской.

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

4в. В байт атрибутов заносятся, помимо цвета, краевой параметр текущего выводимого спрайта в биты flash и bright.

5. После завершения обхода всех выводимых клеток, копируем виртуальный экран на реальный. При этом в атрибутах сбрасываем биты flash и bright.

--

Т.е., если кратко, просматриваем знакоместа спрайтов и выводим в знакоместа экрана, если они не заняты или заняты частично. Пустые знакоместа в спрайтах не хранятся и на экран не выводятся.

А можно подумать для убыстрения вывода, как сделать наоборот - просматривать знакоместа экрана и выводить в них только ближние знакоместа необходимых спрайтов. Собственно, похожее на это ты и предлагаешь.
В твоем алгоритме пока непонятно, как учитывать краевые параметры (маски). Как подсовывать один спрайт под другой, т.к. мы сначала выводим ближние спрайты, а потом дальние (или сделать обратно, как было в первых тормозных версиях?).
А также сами таблицы должны быть динамическими, т.к. элементов клеток 15, и под каждый элемент свой спрайт.

---------- Post added at 11:28 ---------- Previous post was at 11:20 ----------


А вааще загрузу продумывали?
пока некогда, еще основную часть пишем.

jerri
04.04.2011, 13:04
Идею понял. Но есть сомнения.
Сейчас у меня такой алгоритм:
1. Цикл по клеткам лабиринта, находящихся рядом с клеткой игрока. Смещения до нужных клеток заданы в таблице. Начинаем с ближних клеток и заканчиваем дальними (т.е. получается 7 уровней в глубину, на каждом уровне разное количество клеток).



здесь действительно надо подумать и посмотреть
ведь отрисовки как раньше уже не будет, потому скорость повысится
а отрисовка станет проще
кстати вот 5 процедур для отображения (только отображения)



обработка пустого места
empty_char
pop af //снимаем ненужный адрес
exx

xor a //красим экран - естественно в этом месте атрибуты должны быть #00
ld (de),a
inc hl
inc de
exx
ret //переходим на следующий элемент
draw_char //обычная отрисовка изображения
pop hl //снимаем адрес чара
ld (draw_c0),sp
ld sp,hl
ld l,e
ld a,d
and #f8
ld h,a

dup 3
pop bc
ld (hl),c
inc h
ld (hl),b
inc h
edup
pop bc
ld (hl),c
inc h
ld (hl),b
ex de,hl
exx
ld a,(hl) //красим экран - здесь уже естественно не 0
and c
ld (de),a
inc hl
inc de
exx
ld sp,$
draw_c0 equ $-2
inc e
ret nz
ld a,d
add a,8
ld d,a
ret
draw_charf //отрисовка изображения с отзеркаливанием
pop hl //снимаем адрес чара
ld (draw_c2),sp
ld sp,hl
ld l,e
ld a,d
and #f8
ld h,a
ld d,ROTTAB
dup 3
pop bc
ld e,c
ld a,(de)
ld (hl),a
inc h
ld e,b
ld a,(de)
ld (hl),a
inc h
edup
pop bc
ld e,c
ld a,(de)
ld (hl),a
inc h
ld e,b
ld a,(de)
ld (hl),a
ex de,hl
exx
ld a,(hl) //красим экран - здесь уже естественно не 0
and c
ld (de),a
inc hl
inc de
exx
ld sp,$
draw_c2 equ $-2
inc e
ret nz
ld a,d
add a,8
ld d,a
ret

draw_charv //отрисовка перевернутого по вертикали изображения
pop hl //снимаем адрес чара
ld (draw_c1),sp
ld sp,hl
ld l,e
ld a,d
or #07
ld h,a

dup 3
pop bc
ld (hl),c
dec h
ld (hl),b
dec h
edup
pop bc
ld (hl),c
dec h
ld (hl),b
ex de,hl
exx
ld a,(hl) //красим экран - здесь уже естественно не 0
and c
ld (de),a
inc hl
inc de
exx
ld sp,$
draw_c1 equ $-2
inc e
ret nz
ld a,d
add a,8
ld d,a
ret
draw_charfv //отрисовка перевернутого по вертикали отзеркаленного изображения
pop hl //снимаем адрес чара
ld (draw_c3),sp
ld sp,hl
ld l,e
ld a,d
or #07
ld h,a
ld d,ROTTAB
dup 3
pop bc
ld e,c
ld a,(de)
ld (hl),a
dec h
ld e,b
ld a,(de)
ld (hl),a
dec h
edup
pop bc
pop bc
ld e,c
ld a,(de)
ld (hl),a
dec h
ld e,b
ld a,(de)
ld (hl),a
ex de,hl
exx
ld a,(hl) //красим экран - здесь уже естественно не 0
and c
ld (de),a
inc hl
inc de
exx
ld sp,$
draw_c3 equ $-2
inc e
ret nz
ld a,d
add a,8
ld d,a
ret





2. Определяем элемент в текущей клетке.
3. По таблице, в зависимости от элемента клетки, определяем адрес спрайта, процедуру его вывода (1/4, 2/4, 3/4 или 4/4) и координаты спрайта на экране (на самом деле, в таблице хранится только горизонтальная координата, т.к. вертикальная всегда равна нулю).
3а. При этом в 1/4 спрайт будет выводиться как есть, в 2/4 - зеркально отраженным, в 3/4 - перевернутым, в 4/4 - перевернутым и зеркально отраженным. Спрайты, которые не симметричны, будут выводиться процедурой 1/4. Процедуры обозначают только способ вывода, а координаты вывода могут быть любыми, т.е. например 2/4 означает не то, что спрайт выводится только в 2/4 экрана, а то, что в любую координату экрана зеркально отраженным.
3б. В спрайтах хранятся для каждого знакоместа горизонтальная и вертикальная координаты, параметр занятости знакоместа ("краевой параметр") и 8 байтов изображения. Краевой параметр может иметь значения:
- знакоместо полностью перекрывает всё, что за ним;
- знакоместо на левом краю спрайта, поэтому знакоместо другого спрайта, если попадет под это знакоместо, должно будет выводиться с правой маской;
- знакоместо на правом краю спрайта, поэтому знакоместо другого спрайта, если попадет под это знакоместо, должно будет выводиться с левой маской.
4. Выводим спрайт соответствующей процедурой 1/4, 2/4, 3/4 или 4/4 на виртуальный экран.
4а. В каждой процедуре есть 3 блока вывода:
- вывод знакоместа непосредственно без маски;
- вывод знакоместа с левой маской;
- вывод знакоместа с правой маской.
4б. При выводе каждого знакоместа спрайта сначала проверяется хранящийся в байте атрибутов на виртуальном экране занесенный ранее другим спрайтом краевой параметр, в зависимости от этого процедура переходит на нужный блок вывода:
- если краевой параметр равен "знакоместо перекрывает всё, что за ним", то вывод данного знакоместа вообще не осуществляется, сразу переходим на следующее;
- если краевой параметр равен "знакоместо пустое" (т.е. еще сюда ничего не выводили), то выводим знакоместо спрайта без маски;
- если краевой параметр равен "знакоместо на левом краю спрайта", то подсовываем знакоместо спрайта под изображение на экране, затем накладываем правую маску для этого изображения, затем возвращаем сверху изображение на место;
- если краевой параметр равен "знакоместо на правом краю спрайта", то подсовываем знакоместо спрайта под изображение на экране, затем накладываем левую маску для этого изображения, затем возвращаем сверху изображение на место.




4в. В байт атрибутов заносятся, помимо цвета, краевой параметр текущего выводимого спрайта в биты flash и bright.




5. После завершения обхода всех выводимых клеток, копируем виртуальный экран на реальный. При этом в атрибутах сбрасываем биты flash и bright.

--

Т.е., если кратко, просматриваем знакоместа спрайтов и выводим в знакоместа экрана, если они не заняты или заняты частично. Пустые знакоместа в спрайтах не хранятся и на экран не выводятся.

А можно подумать для убыстрения вывода, как сделать наоборот - просматривать знакоместа экрана и выводить в них только ближние знакоместа необходимых спрайтов. Собственно, похожее на это ты и предлагаешь.
В твоем алгоритме пока непонятно, как учитывать краевые параметры (маски). Как подсовывать один спрайт под другой, т.к. мы сначала выводим ближние спрайты, а потом дальние (или сделать обратно, как было в первых тормозных версиях?).
А также сами таблицы должны быть динамическими, т.к. элементов клеток 15, и под каждый элемент свой спрайт.

значит так

берем самые дальние элементы

заносим адрес обработчика и адрес тайла в соответствии с твоей картой тайлов
заносим цвет (младшие 6 битов) а в старшие 2 бита заносим статус тайла

00 стандартный
01 стандартный зеркаленный
10 перевернутый
11 перевернутый зеркаленный

это просто

далее если более ближний элемент накладывается поверх дальнего,
то:

1 проверяем атрибут накладываемого тайла
2.1 если он не краевой, то грубо меняем старый обработчик и адрес на новый
2.2 если он краевой, то перемещаем в соответствии с флагами (переворот и отзеркаливание)
и накладываем поверх, после чего заносим адрес обработчика и адрес тайла уже из буфера
3 заносим атрибут и флаги в таблицу отрибутов


пока некогда, еще основную часть пишем.
кстати надо бы уже задуматься

ALKO
04.04.2011, 15:09
Andrew771, сделай,пожалуйста, две версии:
С музоном под ГС или АЮшку для буржуев
И одну под 48кб со спикером для босяков типа меня

Black_Cat
04.04.2011, 15:16
С музоном под ГС или АЮшку для буржуев
И одну под 48кб со спикером для босяков типа меня
AY насолько понимаю, не получится - не хватает процессорного времени. А GS нужно токо один раз загрузить вначале игры, а "босякам" беспокоиться нечего, если GS нет, то и так один спикер останется. Так что достаточно одной версии. Разве что при загрузке картинок можно попробовать переключать AY/спикер.

Andrew771
04.04.2011, 15:28
значит так

берем самые дальние элементы

Этот алгоритм будет работать медленнее, чем текущий. Это то, от чего мы с Novastorm в своё время ушли. Зайди на первое сообщение этой темы, скачай 29-ю версию и посмотри, как она шевелится по сравнению с нынешней. Там как раз вывод осуществляется начиная с дальних клеток и кончая ближними. К тому же, там нет отзеркаливания и перевертывания, а всё задано сразу в спрайтах. Т.е., если применить еще отзеркаливание и перевертывание, то будет еще медленнее.
Зачем выводить дальние спрайты, если они будут закрыты ближними? Причем, слава Аллаху, ближние спрайты по размеру намного больше дальних, так что выводом одной какой-нибудь ближней стены мы перекрываем сразу полэкрана, и все дальние спрайты просто пробегаются без вывода.
У тебя хоть и нет вывода сразу, но приходится перековыривать все спрайты, да еще переворачивать и отзеркаливать тайлы, которые впоследствии всё равно будут перекрыты, так что сизифов труд.
Самый главный фактор, который наверно ты не учел, повторяю, - это то, что ближние спрайты намного больше дальних, поэтому они сразу перекрывают огромные области экрана, которые больше не нужно обрабатывать.

---------- Post added at 15:27 ---------- Previous post was at 15:19 ----------


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

---------- Post added at 15:28 ---------- Previous post was at 15:27 ----------


И одну под 48кб со спикером для босяков типа меня
вот такую и сделаем первой версией. Я тоже, как буржуи, признаю только чистый 48 спек :)

jerri
04.04.2011, 16:16
У тебя хоть и нет вывода сразу, но приходится перековыривать все спрайты, да еще переворачивать и отзеркаливать тайлы, которые впоследствии всё равно будут перекрыты, так что сизифов труд.
Самый главный фактор, который наверно ты не учел, повторяю, - это то, что ближние спрайты намного больше дальних, поэтому они сразу перекрывают огромные области экрана, которые больше не нужно обрабатывать.

ну конечно здесь так побыстрее будет
значит надо выделить еще пару битов :)
и будет тогда повеселее

---------- Post added at 16:16 ---------- Previous post was at 15:41 ----------

есть возможность выделить еще 2 бита в атрибутах?

Andrew771
04.04.2011, 17:42
есть возможность выделить еще 2 бита в атрибутах?

Подо что? Под вот это?


00 стандартный
01 стандартный зеркаленный
10 перевернутый
11 перевернутый зеркаленный

Возможность есть даже 3 бита, т.к. paper не нужен. Только зачем? Это формирование уже задается в таблице вывода спрайтов.

jerri
04.04.2011, 19:11
Возможность есть даже 3 бита, т.к. paper не нужен. Только зачем? Это формирование уже задается в таблице вывода спрайтов.

задается в таблице, а нужно еще и маркировку именно на тайле.

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

вот смотри
сейчас ты чистишь 6912 байт, потом рисуешь, потом бросаешь 6912 байт

я предлагаю заполнять 3840 байт
потом отрисовать в буфере краевые тайлы
потом прорисовать сразу на экране все что нужно (скорее всего от 1/2 до 1/4 экрана)
будет сильный выигрыш по скорости

---------- Post added at 19:08 ---------- Previous post was at 18:13 ----------

алгоритм по шагам
утрировано
вначале чистим буфер

ld hl,ret_draw
ld de,empty_char
ld bc,0
ld sp,end_buff
ld (curr_buf),sp
push hl
dup 768
push de,bc
edup

далее
отрисовка спрайта
если просто рисуем, то
в обработчики заносим draw_char
в адрес - адрес тайла
в атрибуты добавляем краевой/некраевой левый/правый (как
есть сейчас) и добавляем 2 бита манипуляции (флип по горизонтали, флип по вертикли)
в случае если уже есть что-то есть и оно некраевое то просто игнорим
в случае если уже есть что-то есть и оно краевое то:
1 копируем новый тайл в соответствии с условиями (flip_h/flip_v) в (curr_buff)
2 накладываем то что есть в соответствии с условиями (flip_h/flip_v mask_l/mask_r)
3 заносим новый обработчик draw_char, новый адрес (curr_buff), зануляем флаги (flip_h/flip_v)
4 приращиваем (curr_buf) на 8 для следующего условного тайла

врядли возможна ситуация когда у тебя в одном месте рисуется с наложением больше 2х тайлов

---------- Post added at 19:11 ---------- Previous post was at 19:08 ----------

могу написать кусочек кода :)
на входе нужен адрес тайла в спрайте, его флаги и координаты на экране

*тайл - кусочек 8*8 точек спрайта
собственно ты ими и манипулируешь

Black_Cat
05.04.2011, 03:07
Кстати, на счёт биперной музыки при загрузке картинок. Зацените как может звучать простой бипер: http://chipmusic.org/mister+beep/music/triton-and-mermaid-1-bit

jerri
05.04.2011, 09:29
это оно так на пц звучит :( на спеке всетаки похуже :(

Black_Cat
05.04.2011, 10:25
это оно так на пц звучит на спеке всетаки похужене, это именно запись с реала, а не с эмуля

Andrew771
05.04.2011, 10:44
вот смотри
сейчас ты чистишь 6912 байт, потом рисуешь, потом бросаешь 6912 байт

я предлагаю заполнять 3840 байт
потом отрисовать в буфере краевые тайлы
потом прорисовать сразу на экране все что нужно (скорее всего от 1/2 до 1/4 экрана)
будет сильный выигрыш по скорости
Сомневаюсь, что быстрее оно будет работать. У тебя идет заполнение промежуточного буфера почти 4к, в то время как у меня на вирт.экран сразу строится картинка. После прорисовки тайла мне не нужно больше помнить, откуда я его взял, флаги к нему и процедуру его вывода, а у тебя нужно. К тому же при выводе из буфера будет противное мерцание на экране, т.к. вывод по процедурам на реальный экран будет в реальном времени. А у меня весь вывод происходит на виртуальный экран, и когда он полностью построен, просто его копируем на реальный. Пока идет это строительство, игрок видит на экране полную предыдущую картинку, без мерцания и перерисовывания. Вирт.экран для этого и сделан, а не потому что я захотел потранжирить память.
И еще непонятно, зачем заводить дополнительные два флага, если сразу можно указать адрес нужной процедуры вывода.
Кстати, у меня в программе есть некое подобие этого буфера (ELEMxx), только я его заранее построил вручную, и он не меняется. В каждой его ячейке в зависимости от элемента клетки указан адрес спрайта, процедура его вывода и горизонтальная координата. Еще учти, что некоторые одни и те же спрайты выводятся различными процедурами и/или в разные координаты. Для этого я и писал зеркалку и перевертывание, чтобы в 4 раза сэкономить место под спрайты. Буфер невозможно просчитать программно, можно задать только вручную, т.к. для каждого спрайта индивидуальные параметры вывода.

jerri
05.04.2011, 11:42
не сомневайся
давай попробуем :)

ты обнуляешь 6912 байт
я только 3900
ты перебрасываешь потом на экран 6912 байт
я только то что не черное
надо смотреть
потому как есть возможность именно сильно всё ускорить

могу модифицировать 68 версию

Andrew771
05.04.2011, 12:09
ты перебрасываешь потом на экран 6912 байт
я только то что не черное
Я тупо перебрасываю-копирую, а ты будешь выводить каждое знакоместо через процедуры.
И формируешь этот буфер через многочисленные флаги.
В общем, сомневаюсь я.
Но попробуй на 68-й версии, если хочешь. Если получится ускорить, вставлю тогда.

---------- Post added at 12:09 ---------- Previous post was at 12:07 ----------

Я сейчас занят вставкой спрайтов трупов и врагов.

ALKO
05.04.2011, 15:31
похожий двиг:
shining in the darkness [sega genesis]
http://t1.gstatic.com/images?q=tbn:ANd9GcR8thr2IM1xsjw8umkUq1BL9V-_vy2BuR8Jt98xgMEDv2P8NAjq

http://t1.gstatic.com/images?q=tbn:ANd9GcRO4KFJd-n0AT5SYfuv2ShU2cayiiDWCBeu_kS6OOFytiEWG_3rOtLBG_Rn

http://t2.gstatic.com/images?q=tbn:ANd9GcScykcGyedpTXtW9mwJIeKs7KsZLvPUl 5J6RzNAKtLGepdaVNve

jerri
05.04.2011, 16:42
РПГ же :)

Andrew771
05.04.2011, 16:45
Закончил 72-ю версию, получилась игра "Найди и убей истуканов" (см.файл) :v2_cool:

jerri
05.04.2011, 16:48
Маски не все прописаны :)
персы ИМХО крупноватые :)

---------- Post added at 16:48 ---------- Previous post was at 16:47 ----------

Сквозь стенки периодически ктото просвечивает :(

Andrew771
05.04.2011, 16:49
Маски не все прописаны
персы ИМХО крупноватые
Да, это всё требует корректировки спрайтов. Движок не виноват. :)

---------- Post added at 16:48 ---------- Previous post was at 16:48 ----------


квозь стенки периодически ктото просвечивает
то же самое, виноваты спрайты.

---------- Post added at 16:49 ---------- Previous post was at 16:48 ----------

мне главное сначала всё набросать, все спрайты. А потом уже их шлифовать.

jerri
05.04.2011, 17:19
ковыряю твой движок в отображениях :)
сурово :)
Я так понимаю проверка на выход за пределы экрана не проводится\не нужна?

Andrew771
05.04.2011, 17:55
ковыряю твой движок в отображениях
сурово
ну дык лепил не за один месяц :)
Текстовое описание алгоритма приводил - на пару страниц назад в теме.


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

Black_Cat
05.04.2011, 17:56
персы ИМХО крупноватые
Давайте их оставим такого размера, с поправкой, что это не люди.

ALKO
05.04.2011, 19:57
Andrew771, все спрайты нужно инвертировать
либо через граф-редактор,а потом залить в ром
либо заполнить атрибуты битом инверсии.

и почему именно синий цвет выбран?
для атмосферности?

и ещё нужно подкорректировать положение трупов
надо опустить пониже,т.к. прорисовываются поверх стен.
В близи не слишком заметно ,но если отойти от трупа он как бы парит в воздухе

Andrew771
05.04.2011, 22:15
все спрайты нужно инвертировать
либо через граф-редактор,а потом залить в ром
либо заполнить атрибуты битом инверсии.
Ты думаешь, что черные, обведенные контурами они будут красивше? А мне кажется, наоборот, закрашенные красивее. Надо подумать...

Синий цвет - как бы в полутьме всё идет.

Трупы скорректирую, по-быстрому делал, не все точно подогнал.

---------- Post added at 22:15 ---------- Previous post was at 22:14 ----------


Давайте их оставим такого размера, с поправкой, что это не люди.
Чуть можно уменьшить, раза в 1.3, а то очень огромные. Тем более и в памяти места меньше займут. :)

ALKO
05.04.2011, 22:25
Ты думаешь, что черные, обведенные контурами они будут красивше? А мне кажется, наоборот, закрашенные красивее. Надо подумать...
так первоначально и задумывалось,что б тень была темнее осветлённого участка.
Или же главный герой обладает демонским зрением?

Andrew771
05.04.2011, 22:26
так первоначально и задумывалось,что б тень была темнее осветлённого участка.
что за тень? Мы вроде тени не отображаем :)

ALKO
05.04.2011, 22:27
я имею ввиду на самом спрайте

Andrew771
05.04.2011, 22:30
Не догоняю, если честно. У нас есть только два цвета - синий и черный. Всё монохромное. Вот ими только и можем баловаться.

ALKO
05.04.2011, 22:32
http://www.mtdesign.ru/wp-content/uploads/2010/04/%D0%BA%D1%80%D1%83%D0%B33_jpg.jpg

---------- Post added at 22:32 ---------- Previous post was at 22:30 ----------

ну что же тут не понятного???
Покрыть весь экран атрибутов тем же самым значением со включённым битом,отвечающим за инверсию знакоместа

Andrew771
05.04.2011, 22:35
Про контуры не забывай.

Надо пробовать.
Тогда сможешь сделать, пожалуйста, те же спрайты с контурами и инвертированные?
Ладно, я спать, жена не дает писать дальше. Споки :)

ALKO
05.04.2011, 23:03
Про контуры не забывай.
а разве маска этого не делает?

Andrew771
06.04.2011, 09:54
а разве маска этого не делает?
нет, она только перекрывает. Иначе стены не будут плавно стыковаться.

jerri
06.04.2011, 09:57
нет, она только перекрывает. Иначе стены не будут плавно стыковаться.


RMASK LD H,TRMASK
LD L,0
RMASK1
xor a
LD E,l
dup 8
or e
sla e
edup
cpl
LD (HL),a
INC L
jr nz,RMASK1
RET

; получение таблицы автомасок слева для байтов изображения

LMASK LD H,TLMASK
LD L,0
LMASK1
xor a
LD E,l
dup 8
or e
srl e
edup
cpl
LD (HL),a
INC L
jr nz,LMASK1
RET



; получение зеркального отображения байта
; входные параметры: A = байт изображения
; выходные параметры: A = байт изображения отзеркаленный

MIRROR LD H,TMIRR
LD L,0
LD B,0
MIRR1 LD A,L
dup 8
RLCA
RR E
edup
MIRR2 LD (HL),E
INC L
DJNZ MIRR1
RET


посмотри насколько правильная маска получается

Andrew771
06.04.2011, 10:55
посмотри насколько правильная маска получается
Вставил, посмотри какие щели между стенами (см.файл).
Это глупость - делать маску с пустой границей. Еще когда книжку Капульцевичей читал в 1996 году, сразу забраковал. Лучше спрайт сразу делать с контуром.

jerri
06.04.2011, 12:39
Видимо неправильно используется

08080000 -дальний байт (новый)
88888000 -маска
00000888 -ближний байт (старый)

соответственно способ генерации

берем ближний байт и роллим с наложением вправо
потом инвентируем и кладем в таблицу

LMASK LD H,TLMASK
LD L,0
LMASK1
xor a
LD E,l
dup 8
or e
srl e
edup
cpl
LD (HL),a
INC L
jr nz,LMASK1
RET

таже история со второй таблицей

08080080 -дальний байт (новый)
00088888 -маска
88800000 -ближний байт (старый)

RMASK LD H,TRMASK
LD L,0
RMASK1
xor a
LD E,l
dup 8
or e
sla e
edup
cpl
LD (HL),a
INC L
jr nz,RMASK1
RET


Пока только 1/4
позже будет остальное

Andrew771
06.04.2011, 14:49
08080000 -дальний байт (новый)
88888000 -маска
00000888 -ближний байт (старый)
так оно и работает сейчас у меня с масками без краев.

jerri
06.04.2011, 16:18
я генератор переписал - он теперь выдает более правильные маски

только я путаю какая правая какая левая :)
ты текст смотрел?
просто посмотри как оно работает

Andrew771
06.04.2011, 17:23
хорошо, посмотрю.

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

---------- Post added at 17:23 ---------- Previous post was at 17:19 ----------


олько я путаю какая правая какая левая
я тоже иногда.
Если краевое левое знакоместо в спрайте и вывод напрямую или перевернутый, то нужна левая маска.
Если краевое правое знакоместо в спрайте и вывод напрямую или перевернутый, то нужна правая маска.
Если краевое левое знакоместо в спрайте и вывод зеркальный или перевернутый зеркальный, то нужна правая маска.
Если краевое правое знакоместо в спрайте и вывод зеркальный или перевернутый зеркальный, то нужна левая маска.
:)

jerri
06.04.2011, 17:28
ну я бы 2 краевых друг на друга занулял чтобы картину не портили

Andrew771
06.04.2011, 17:36
ну я бы 2 краевых друг на друга занулял чтобы картину не портили
Я сейчас так и зануляю, но, ИМХО, это может приводить к багам на изображении.
Тут есть две ситуации:
- краевое левое сверху полностью перекрывает краевое левое снизу.
- краевое левое сверху не перекрывает краевое левое снизу.
Вот здесь, возможно, источники проблем.
:)

PUMPKIN
06.04.2011, 19:37
Автор! Слишком большой угол по фазе разворота(дергун) ,а так зашибись!
ps:Каким образом ты 1-н ваяеш 3-д ,если раньше товарищи скопом не осилили???:v2_dizzy_rain:

alone
06.04.2011, 19:47
Кто не осилил? Megus осилил ("Malady"). Vivid осилил ("Stellar Contour").

PUMPKIN
06.04.2011, 19:56
В каких проектах? Твои лейблы мне не о чём не говорят.Я видел доом от DR и citadel от DREAMERA .
ВСЁ,вольф 3д забыл.У автора пейсато всё смотрится- чётко всё видно,но резалт может сдуться.

alone
06.04.2011, 20:02
Вы с какой платформы упали, уважаемый? :) Надо очень плохо смотреть демы, чтобы пропустить эти две. А ещё "Love Gun" от Volga Soft.

Black_Cat
06.04.2011, 20:06
В каких проектах?
первая - интро, вторая - дема.. вот и все достижения :)

PUMPKIN
06.04.2011, 20:13
А вообще чтобы интерестно было играть сюжет должен быть с РФой действительностью,она загибается.

---------- Post added at 20:13 ---------- Previous post was at 20:09 ----------

О чём мы говорим о демах, или о играх.Посмотрю по позже, как эмуль скачаю.

Andrew771
06.04.2011, 21:25
Слишком большой угол по фазе разворота(дергун) ,а так зашибись!
ps:Каким образом ты 1-н ваяеш 3-д ,если раньше товарищи скопом не осилили???
Потому что я выбрал изначально другой подход - не векторная, а спрайтовая графика. Т.е., в памяти хранятся заранее отрисованные спрайты в стиле 3D для разных положений (кстати, спрайты разных размеров для разных положений я не вручную кодирую, а в собственной специально написанной программе 3D-View для PC). Исходные спрайты теперь рисует ALKO.
При выводе трехмерной сцены ничего математически по точкам не просчитывается, а только выводятся нужные спрайты. Поэтому удалось на весь экран выводить без тормозов. Сейчас Jerri еще хочет убыстрить мой движок. :)
Издержка этой технологии - можно выводить сцены только под заданными углами и с дискретным перемещением, для которых есть спрайты. В память 48к Спека уместились спрайты только для углов 90 и 45 градусов. Поэтому минимальный поворот на 45 градусов. Для 128к можно уменьшить угол до 22,5 градусов.

---------- Post added at 21:23 ---------- Previous post was at 21:19 ----------

Еще есть набросок игры Jukovа, построенный тоже на 3D-спрайтовой графике: http://zx.pk.ru/showpost.php?p=353347&postcount=17

---------- Post added at 21:25 ---------- Previous post was at 21:23 ----------


А вообще чтобы интерестно было играть сюжет должен быть с РФой действительностью,она загибается.
БК-0010 пишет сценарий на эту тему, про гибель Екатеринбурга. Лучше пусть про Мааскву :)

Black_Cat
06.04.2011, 21:41
сценарий на эту тему, про гибель Екатеринбурга.Сценарий основан на реальных фатах, но место действия изменено. Реальный подземный город, ставший прообразом Зетиксума, существует, но не около Екатеринбурга, а около Магнитогорска под горой Ямантау.


Лучше пусть про Маасквупро Маааскву есть - Метро 2037 :)

Andrew771
06.04.2011, 21:48
Ты главное Миасс не трогай, родину моей жены, а то я сам приеду стрелять. :)
ZXoom - на ЦУМ сильно похоже, Центральный универсальный магазин. Там теперь миллионеры тока ходят, тоже можно устроить армагеддон :)

Rindex
06.04.2011, 23:37
Издержка этой технологии - можно выводить сцены только под заданными углами и с дискретным перемещением, для которых есть спрайты. В память 48к Спека уместились спрайты только для углов 90 и 45 градусов. Поэтому минимальный поворот на 45 градусов. Для 128к можно уменьшить угол до 22,5 градусов.

Хотелось-бы узнать, а это что одна игра будет 48/128к, или сначало будет для 48к, а уж потом для 128-к. Если две игры по отдельности, но вначале выйдет версия для 48к, то второй, которая для 128к, скорее всего не будет. Думаю изначально надо делать для 128к и со всеми наворотами.

Andrew771
07.04.2011, 09:59
48к вначале выйдет. А дальше я самоустраняюсь, буду писать Цивилизацию. Но весь код с комментариями будет полностью открыт. Движок пишется универсально, поэтому дорабатывать его для 128к не много, если кто возьмется.
Просто, один проект делать долго невозможно, пропадает запал. Скорее всего, большинство проектов поэтому только демо :)

Alex Clap
07.04.2011, 11:21
По сюжету. Русский Север (Таймыр, Чукотка, или т.п.). Заброшенная база времен холодной войны. Или забытая, тогда вы один из сотрудников персонала физически не смогший после развала страны вернуться домой, оставшись там навсегда страгой. Потенциальный противник хочет достать одну из тайн СССР и забрасывает туда разведгруппу. Ваша задача добраться до главного секрета базы и уничтожить его, например это будет ретранслятор энергии из парамира :)

Rindex
07.04.2011, 11:39
48к вначале выйдет. А дальше я самоустраняюсь, буду писать Цивилизацию.

Ну вот, про что я и говорил, что 128к не будет.


Но весь код с комментариями будет полностью открыт. Движок пишется универсально, поэтому дорабатывать его для 128к не много, если кто возьмется.

Поверь мне, 100%, что никто не возьмётся. И даже могу сказать почему. Просто уже похожая игра будет для 48к и делать улучшения для 128к смысла уже нет, поскольку все уже наиграются. Тут надо было сразу делать что-бы программа автоматом выбирала сама на каком компьютере её запустили (48/128к), или вообще изначально всё делать для 128к.

P.S. Надеюсь Цивилизация уже сразу будет заточена под 128к. Просто не хочется видеть опять обрезанную игру и разговоры про то, что хотелось сделать то и то, но вот памяти на 48к не хватило.

Andrew771
07.04.2011, 13:47
Просто не хочется видеть опять обрезанную игру и разговоры про то, что хотелось сделать то и то, но вот памяти на 48к не хватило.
Цива будет сразу под 128, т.к. иначе большая карта не уместится, а на маленькой не интересно играть.
Хотелки для ZXoom придумали уже тут на форуме. Изначально я хотел простую стрелялку с 45 градусными поворотами, так оно и будет. Изначально всё писалось на реальном 48к Спекки, 128-го у меня не было. И вообще было не ясно, прокатит ли вся концепция или будет тормозить/жрать немеренно памяти.

jerri
07.04.2011, 13:53
Вобщем, заменил твои процедуры отрисовки своими
и оружие поправил
смотри
при стрельбе видно то, что экран не чистится :) что конечно не мешает :)
чуть чуть переделки и все будет ок :)

Rindex
07.04.2011, 14:09
Изначально всё писалось на реальном 48к Спекки, 128-го у меня не было.

Надеюсь, что хоть теперь появился. :rolleyes: А 48к - это для маньяков и тех, которые доказывают с пеной у рта, что настоящий Спектрум этот 48к с биппером. Для буржуев может быть и да, но у нас с самого начала был другой стандарт с памятью 128к + AY.

Andrew771
07.04.2011, 15:14
адеюсь, что хоть теперь появился.
угу, эмуляторы всего сразу. :)


А 48к - это для маньяков и тех, которые доказывают с пеной у рта, что настоящий Спектрум этот 48к с биппером. Для буржуев может быть и да, но у нас с самого начала был другой стандарт с памятью 128к + AY.
не согласен со всеми предложениями. 48к в СССР и ранней новой России выпускались.

Rindex
07.04.2011, 15:22
не согласен со всеми предложениями. 48к в СССР и ранней новой России выпускались.

Когда народ раскусил разницу в 48к и 128к+AY, это 48-е барахло никому не нужно стало. У меня тоже Дельта была, хорошо хоть продал, но еле-еле. Никто не брал.
[/offtop]

ALKO
07.04.2011, 15:24
http://xmage.ru/images/dizzysmile.gif http://xmage.ru/images/dizzysmile.gif http://xmage.ru/images/dizzysmile.gif
когда вы уже инвертируете экран?
Или хотя бы скажите мне по какому адресу расположен байт,отвечающий за цвет заливки.

Andrew771
07.04.2011, 15:39
Когда народ раскусил разницу в 48к и 128к+AY, это 48-е барахло никому не нужно стало. У меня тоже Дельта была, хорошо хоть продал, но еле-еле. Никто не брал.
Большинство народа к тому времени уже сваливало на PC, сразу после 48к, в том числе и я. И сразу после этого перехода Спек был забыт.
Зачем мне нужно было писать тогда под не имевшуюся у меня машину?


когда вы уже инвертируете экран?
Или хотя бы скажите мне по какому адресу расположен байт,отвечающий за цвет заливки.
Зачем инвертировать? Чтобы было всё синее с черными прожилками?
Такого байта нет, он формируется программно во многих местах :)


Вобщем, заменил твои процедуры отрисовки своими

Объективно, скорость не изменилась. Иногда кажется даже, что медленнее. :)
Я ж тебе говорил, что ничего эта перетасовка не даст. Разве только памяти немного сэкономит.

jerri
07.04.2011, 17:05
Изменилась :)
если очень много краевых элементов то мой метод будет уступать конечно
только за счет перерасчетов
если накладываемых обьектов на экране мало то мой метод более выгоден
как по памяти так и по скорости

Andrew771
07.04.2011, 17:35
Поизучаю еще твою методику, но изменения скорости нет. Всё равно тебе спасибо за огромную помощь! Генератор лабиринта точно твой будет.

А теперь враги уже научились стрелять и догонять (см.файл). Промежуточных фаз движения у них пока нет, так что сложновато. :)

jerri
07.04.2011, 18:08
как мерил скорость?




;соответствие процедур
PUTSPR equ draw_spr
MIR24 equ draw_sprv
MIR34 equ draw_sprh
MIR44 equ draw_sprhv


по остальным итак видно

Andrew771
07.04.2011, 21:56
как мерил скорость?
на глаз. При сложных сценах, где много краевых знакомест, чуть медленнее пашет моего, как ты и сказал.

moroz1999
07.04.2011, 22:44
заглянул в последнее демо - это клево!

Mad Killer/PG
07.04.2011, 22:52
Можно что-бы врагов выстрелы были не красные!

Andrew771
07.04.2011, 22:59
Можно что-бы врагов выстрелы были не красные!
да, это будет. И еще их интеллект получше чуть сделаю, а скорость чуть поменьше :)


заглянул в последнее демо - это клево!
Пасиба!

ALKO
08.04.2011, 13:41
http://xmage.ru/images/dizzysjtj.gifhttp://xmage.ru/images/dizzysjtj.gifhttp://xmage.ru/images/dizzysjtj.gif
неужели такое изображение вы считаете стандартным для восприятия человеческого глаза?!
http://t3.gstatic.com/images?q=tbn:ANd9GcR4fxsPl5f5Yx4RpeYHOCzmSdmxhyQ_i E0H8g2sRRigZycfz3sj1w

ALKO
08.04.2011, 13:42
_____

ALKO
08.04.2011, 14:18
____

Black_Cat
08.04.2011, 14:45
Именно чёрное по белому и я предлагал, + куча всяких бонусов цветом.. при том с более качественной прорисовой выстрелов, и самое главное - ещё и быстрее!

jerri
08.04.2011, 15:01
Цифры указывают количество сгенеренных тайлов
стоит конечно же учесть что 2 краевых тайла я приравниваю к нормальному :)

ALKO
08.04.2011, 15:11
вот теперь:v2_dizzy_rose: с цветом порядок
и шустрее дёргается.
Интересно на сколько изменится скорость если добавить AI.

Black_Cat
08.04.2011, 15:21
с колоннами какие-то проблемы.. то сквозь них проходишь, то они в стене оказываются..

ALKO
08.04.2011, 16:35
интро

Andrew771
08.04.2011, 16:42
неужели такое изображение вы считаете стандартным для восприятия человеческого глаза?!
да, чё-то мне тоже разонравилась синяя полутьма, часто всё сливается. Черно-белое что ли сделать? У тебя на скриншотах здОрово выглядит.
Jerri, процедуры масок я у тебя взял, они правильнее. :) С врагами количество сгенеренных тайлов существенно растет, поэтому твой будет всё больше тормозить.
Я написал новую версию (см.файл), где сделал врагов поинтеллектуальнее и помедленнее стреляющих. Еще сделал разные цвета, смотря кто стреляет - игрок или враги. Еще оптимизнул немного, буфер укоротил на 267 байт. :)

Andrew771
08.04.2011, 16:45
интро
Это класс!

---------- Post added at 16:45 ---------- Previous post was at 16:44 ----------


с колоннами какие-то проблемы.. то сквозь них проходишь, то они в стене оказываются..
колонн в моей версии пока нет. Это в 68-й были пробы :)

Black_Cat
08.04.2011, 17:02
Черно-белое что ли сделать?:) да, и со всеми цетовыми прибамбасами! И BFG-9000 прикрути, и сделай нормальную стрельбу с трассами как я предлагал. При этом врагов можно даж такими оставить. С трассами - и быстрее, т.к. не надо перерисовывать атрибуты всего экрана, и зрелищней, и понятней.. а то совсем абстракция какая-то в духе Малевича..

jerri
08.04.2011, 17:10
не думаю что существенно тормозить будет
дай последнюю версию
я в нее свою выводилку встрою, тогда можно будет посмотреть
кстати есть еще резервы на ускорение :)

Andrew771
08.04.2011, 17:32
дай последнюю версию
я в нее свою выводилку встрою, тогда можно будет посмотреть
кстати есть еще резервы на ускорение
Лови исходник. Короче, отдаю тебе всю судьбу игры до вторника, т.к. я буду занят делами в оффлайне и три дня не смогу над ней работать. :(
Сделай, помимо выводилки, если возможно, черно-белую графику, а также трассировки выстрелов атрибутами. BFG я бы не хотел, лучше пистолет, как щас. :)

Black_Cat
08.04.2011, 18:12
BFG я бы не хотел, лучше пистолет, как щас. с пистолетом не получится. BFG-9000 был взят именно из-за его ширины. Только с широким оружием можно смоделировать перспективу удаляющегося объёмного заряда. Ведь мы управляем токо иключительно аттрибутами, т.е. минимальный размер - одно знакоместо. А врагам как раз не надо иметь широкое оружие, хотя заряды от них подлетая будут увеличиваться в размерах - но это как раз нормально.
Сделайте для эсперимента с BFG и посмотрите насколько живее и реалистичней станет игра.

jerri
08.04.2011, 18:24
выводилку да :)
графу перекрашу да :)
а насчет трассировки хз :)

---------- Post added at 18:24 ---------- Previous post was at 18:23 ----------



Сделайте для эсперимента с BFG и посмотрите насколько живее и реалистичней станет игра.

нету там свободных элементов под выстрелы

Black_Cat
08.04.2011, 19:05
нету там свободных элементов под выстрелыjerri, в том-то и суть, этого метода, что не надо никаких свободных элементов! Вот здесь всё описано: http://zx.pk.ru/showpost.php?p=363681&postcount=106

---------- Post added at 19:05 ---------- Previous post was at 18:52 ----------


а насчет трассировки хзтам два типа выстрела. Лучевой - типо широкий пучок света - это просто кратковременная вспышка всех закрашенных атрибутов луча.
Режим плазмоидов - это по очереди закрашенные определённые знакоместа, движение которых растянуто на 4 кадра, или более, но кратно 4. Я даже думаю, что полёт плазмоидов (4 фазы) должен занимать 0,5-1,5 сек.
Враги стреляют токо плазмоидами, лучевого оружия у них нет.

jerri
09.04.2011, 00:40
хорошо перефразирую вопрос
сейчас отображение графики происходит в соответствии с картой лабиринта
где есть стены, враги, пустота
вопрос к чему привязывать "полёт плазмоидов (4 фазы) должен занимать 0,5-1,5 сек."
если ГГ новое положение может получать каждый цикл?

Луч или вспышку можно тупо отрисовать здесь и сейчас

Black_Cat
09.04.2011, 06:37
вопрос к чему привязывать "полёт плазмоидов (4 фазы)в пространстве привязка не нужна, привязка есть токо к событию нажатия клавиши огня, от этого события и идёт отсчёт фаз. Т.е. фактически время полёта плазмоида не зависит от расстояния до цели. К сожалению ничего лучше сделать в данном случае нельзя, но это всёж более реалистичный уровень абстракции чем просто мигание экраном.

jerri
09.04.2011, 12:06
еще раз

я нажимаю выстрел
и делаю стрейф влево - куда летит плазмоид? и кого он поражает?

и еще момент
противники стреляют - как отследить движение их плазмоидов?

Black_Cat
09.04.2011, 13:02
я нажимаю выстрел
и делаю стрейф влево - куда летит плазмоид? и кого он поражает?

и еще момент
противники стреляют - как отследить движение их плазмоидов?
Ессно, за твоим движением оно не должно идти. Поэтому, если это нельзя как-то привязать к 3D движу, то при уходе с изначальной линии огня, прорисовка движения плазмоида прекращается, но поражающий фактор защитывается моментально, как и при вспышке. Сама прорисовка нужна скорее для более естественной визуализации выстрела .
Кста, там есть ещё мегаплазмоид. Думаю, для него вааще движение прорисовывать не надо. Нужна огромная, меняющаяся в цвете вспышка, после которой в заданном радиусе все враги умирают.

jerri
09.04.2011, 13:33
лан посмотрю что можно сделать
теперь о поддержке ГС
нужны
1 данные о том как крутить ГС
2 музончик (негромкий с небольшим количеством инструментов)
3 набор звуков
3.1 топ топ
3.2 выстрел игрока
3.3 выстрел врага
3.4 вопль игрока
3.5 вопль врага

дополните плиз :)
желательно семплы покороче :)
и музончик тож
чтобы игру долго не грузить :)

ALKO
09.04.2011, 13:59
При слабом проце да ещё и при дискретных движениях не стОит использовать всякие плазмоиды и астероиды.
Лучше просто при выстреле игрока мерцать бордюром и спикером,а при выстреле противника:
-мерцать атрибутом на месте его ствола,если мимо.
-заполнить весь экран красным ПАПЕРом и ИНКом, на доли секунд.потом вернуть атрибуты в прежнее состояние

moroz1999
09.04.2011, 14:02
Прикладываю пакет для работы с GS, который получился в ходе озвучки Sea Dragon.
В пакете исходники в формате sjasm, компилирующиеся в готовый trd по bat-файлу:
Библиотека для загрузки
Библиотека для проигрывания
Отдельный необязательный бонус - мини-утилита на php для пакетной нарезки, delta-кодирования и упаковки в MegaLZ музыки и звуков. На выходе заодно генерит таблицы с длинами в том же формате, который используют библиотеки для загрузки
и проигрывания.

Если требуется более конкретная помощь, то с радостью возьмусь за это дело.

Black_Cat
09.04.2011, 14:30
При слабом проце да ещё и при дискретных движениях не стОит использовать всякие плазмоиды и астероиды.
Лучше просто при выстреле игрока мерцать бордюром и спикером,а при выстреле противника:
-мерцать атрибутом на месте его ствола,если мимо.
-заполнить весь экран красным ПАПЕРом и ИНКом, на доли секунд.потом вернуть атрибуты в прежнее состояние

ALKO, именно так всё и формируется, токо ещё быстрее, т.к. не надо менять атрибуты на всём экране.

1 данные о том как крутить ГССцылки на софт и как программировать: http://speccy.info/General_Sound

3.1 топ топ - можно и не делать
3.2 выстрел игрока - в разных режимах BFG звуки разные
3.3 выстрел врага - вааще не надо, только звук в момент попадания в игрока
3.4 вопль игрока - только когда он умер
3.5 вопль врага - только когда он умер

Можно ещё чтоб враг издавал вопль когда заметит игрока.
Когда берёшь аптечку или предметы или чёт включаешь должно быть звуковое подтверждение.

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

jerri
09.04.2011, 15:40
а теперь давай вопли и выстрелы для спикера :)
я такое не делал :)

Black_Cat
09.04.2011, 16:33
а теперь давай вопли и выстрелы для спикера
я такое не делал Потряси Ширу, это наш, русский: http://www.worldofspectrum.org/forums/showthread.php?t=33379
Да и Mister Beep если чё - по русски сечёт.

jerri
09.04.2011, 16:42
нет Ширу трясти не буду :)
проект не мой я только консультант

Black_Cat
09.04.2011, 16:55
там в сцылке есть исходники и примеры

jerri
09.04.2011, 19:26
ну музыку на ГС я запускал :) и в принципе наверное семплы програю,но нужна музыка (из Дума) и собственно семплы

Black_Cat
09.04.2011, 20:02
нужна музыка (из Дума) и собственно семплыну, наверно это здесь: http://iddqd.ru/music

newart
09.04.2011, 21:49
AY насолько понимаю, не получится - не хватает процессорного времени.
В соседней ветке лежит плеер, который кушает меньше 1000 тактов.

Black_Cat
09.04.2011, 22:09
В соседней ветке лежит плеер, который кушает меньше 1000 тактов.я это не решаю, насколько понимаю, этих 1000 тактов просто нет. Сэкономить такты можно токо на выстрелах, и этих тактов с лихвой хватит для стрельбы через AY. Но тут другая проблема - AY на 48k нет.. Поэтому выстрелы и вопли остаются токо через спикер.

newart
09.04.2011, 22:19
я это не решаю, насколько понимаю, этих 1000 тактов просто нет.
В игре нет прерываний? Не путаешь такты с байтами?

---------- Post added at 22:19 ---------- Previous post was at 22:14 ----------


Но тут другая проблема - AY на 48k нет..
Если ты про железо то был Melodik soundbox и fuller....

Есть и игры 48-е с AY музыкой.

Black_Cat
09.04.2011, 22:24
:) не путаю

---------- Post added at 22:24 ---------- Previous post was at 22:22 ----------


Есть и игры 48-е с AY музыкой.наверно есть :) , вопрос токо - есть ли такты под это..

newart
10.04.2011, 08:22
вопрос токо - есть ли такты под это..
Цикл игры четко размерен по фреймам?

jerri
10.04.2011, 09:29
нет и прерывания запрещены

newart
10.04.2011, 13:23
запрещены
Зачем?

jerri
10.04.2011, 13:30
изначально автор запретил :)
а я рисую через стек же

newart
10.04.2011, 13:50
а я рисую через стек же
Черный ворон тоже рисовал...

jerri
10.04.2011, 14:10
ЧВ адаптированные данные под вывод
а здесь вывод под существующие данные

jerri
11.04.2011, 09:47
переделал вывод
переделал отрисовку выстрелов
герой стреляет типа лучом
враги также мерзко красят экран

наверное стоит действительно заменить пистолет на что то более серьезное.

jerri
11.04.2011, 12:23
увы вчера больше ничего сделать не смог :(
комп помре

ALKO
11.04.2011, 15:18
наверное стоит действительно заменить пистолет на что то более серьезное.
дело не в пистолете...

я ведь уже предлагал,как лучше:

Лучше просто при выстреле игрока мерцать бордюром и спикером,а при выстреле противника:
-мерцать атрибутом на месте его ствола,если мимо.
-заполнить весь экран красным ПАПЕРом и ИНКом, на доли секунд.потом вернуть атрибуты в прежнее состояние

и когда противник стреляет,пусть не так быстро со скоростью рептилии убирает пушку.
Пусть вовсе не убирает её когда игрок в зоне видимости противника.

DimkaM
11.04.2011, 15:33
переделал вывод
переделал отрисовку выстрелов
герой стреляет типа лучом
враги также мерзко красят экран

наверное стоит действительно заменить пистолет на что то более серьезное.

Клёва.
Ужо можно поиграть.
Надеюсь доделаете.
Мне показалось или супостаты умеют через стены стрелять?

Black_Cat
11.04.2011, 15:37
Лучше просто при выстреле игрока мерцать бордюром и спикеромэто предлагалось в самом начале и было отвергнуто


-мерцать атрибутом на месте его ствола,если мимо.мимо противник стрелять не умеет, это заложено в алгоритм

ALKO
11.04.2011, 15:39
неужели нельзя рандомное попадание сделать?

Black_Cat
11.04.2011, 15:40
jerri, а в SNA можно?

ALKO
11.04.2011, 15:41
это предлагалось в самом начале и было отвергнуто
все против спикера, потому-что у всех есть Генерал Саунд Турбо Про?

Black_Cat
11.04.2011, 15:44
все против спикеранет, ты не понял :) , против мигания бордюром :)

ALKO
11.04.2011, 15:50
ну или три фазы выстрела противника:
-монохромное (в стойке прицеливания)
-затем примерно так
http://zx.pk.ru/attachment.php?attachmentid=26404&d=1302521938
-ну и в итоге полностью красный экран (атрибуты в 32 dec)

---------- Post added at 14:50 ---------- Previous post was at 14:47 ----------

Ай ладно, как знаете...
Больше не буду вмешиваться...делайте,как сочтёте нужным...

jerri
12.04.2011, 09:11
БК-0010, там же есть снап

---------- Post added at 09:11 ---------- Previous post was at 09:10 ----------

ALKO, я как бы не против :) дело за автором ;)

Andrew771
12.04.2011, 09:58
Привет! Я опять в строю :)
Желтый цвет поначалу глаз режет, но потом привык. Радует, что пол и потолок можно не выводить никак, а также видимость врагов улучшена за счет контраста цветов. Может, черно-белое еще лучше?
Звук будем делать под обычный спикер, т.к. во-первых на 48к нет AY, во-вторых нет прерываний и времени для их вывода. В заставке двухголосная мелодия с причмокиваниями "ударных", в игре - только шаги и звуки выстрелов, может и вопли. Я во Wham в 90е годы мелодии писал, он создает исполняемый код сразу.
А луч при выстреле игрока можь сделать не лучом, а вспышкой? И мерцание экрана тоже надо оставить. И выстрелы врагов тоже нужно прорисовывать атрибутами вместе с мерцанием экрана.
Фазы врагов думаю, как сделать помедленнее. А то стреляют очень быстро и без подготовки.
Мерцание бордюра видимо придется сделать, т.к. желтый цвет не прокатит. Либо сделать черный бордюр на всю игру.
Баг про стрельбу сквозь стены есть. Это если две стены по диагонали смыкаются, за ними враг, а перед ними игрок стреляет по диагонали. Кстати, и ходить можно сквозь такое смыкание. :) Т.к. при такой стрельбе или хождении проверяются только клетки по прямой диагонали. Но это планирую избежать правильной генерацией лабиринта, чтобы не возникало таких стен, смыкающихся только диагональю.

---------- Post added at 09:58 ---------- Previous post was at 09:54 ----------

Спасибо, Jerri, за поддержку проекта. Движение, по-моему, плавнее стало (то ли от цвета, то ли от алгоритма). :)

Black_Cat
12.04.2011, 10:04
там же есть снап

jerri, я искал ч/б картинку с BFG

Сделай, помимо выводилки, если возможно, черно-белую графику, а также трассировки выстрелов атрибутами. BFG

jerri
12.04.2011, 10:15
цвет меняется элементарно - там есть палитра и от нее все танцуется
желто-чёрный это просто мой выбор, он на черно белом ТВ смотрелся хорошо
потом привык :)

плавность появилась за счет чуть большей ;) скорости
бфг где-то здесь было но я хз как ее в спрайт запихать :)

Andrew771
12.04.2011, 10:54
Да не надо BFG, сейчас нормально с пистолетом. Луч я переделаю во вспышку.

Black_Cat
12.04.2011, 11:03
в игре - только шаги и звуки выстрелов, может и воплишаги имхо даром не надо - совершенно не несут никакой информации, токо время жрут.


А луч при выстреле игрока можь сделать не лучом, а вспышкой? И мерцание экрана тоже надо оставить. И выстрелы врагов тоже нужно прорисовывать атрибутами вместе с мерцанием экрана.И оружие и стрельба, и щас и раньше - полная порнография.
Обьясню что не так. У игры должна быть атмосфера, а это не возможно без гармоничности всех компонентов игры. Сейчас игра больше похожа на механистический конвейер, куда напихали разрознённые, ничем не связанные компоненты, ни один из которых сам по себе не несёт абсолютно никакой атмосферы. Я уверен, что 90% успешности игры - это дизайн, а вовсе не код. Здесь я пока вижу 90% - код, а про дизайн вааще речь не идёт.
Возьмите все графические компоненты по отдельности и задайте себе вопрос - какую атмосферу несёт конкретно этот компонент?
Стены кирпичные - абсолютная безликая утилитарность, никакой атмосферы, единственная ассоциация - подвал с крысами.
Пистолет - абсолютная безликая утилитарность, никакой атмосферы, никаких ассоциаций.
Враги - безликие нинзя, избитая, заезженная тема, никакой атмосферы, никаких ассоциаций.
Визуализация эффектов - моргание атрибутами всем экраном - всё! Ни те трасс, ни лучей, ни взрывов, ни тёмных комнат, ни мигающих ламп.
Про спецоборудование при таком подходе я даж боюсь заикаться - очки, аптечки, невидимость, неубиваемость, гаджеты к оружию.

Господа, вы хотите так и выпустить эту игру?

Andrew771
12.04.2011, 11:16
Аптечки и здоровье ессно есть, только не прорисованы пока.
Про 90% дизайна - это слишком.
В игре реальный чел ходит по реальным подвалам и воюет с реальными людьми. Никакой фантастики - вот и вся атмосфера. Кстати, темно-синий цвет был для имитации потёмок. А сейчас всё стало в дневном цвете. :)
Визуализация эффектов - ну что можем, делаем. Трассы не получатся, т.к. надо будет замедлять игру в этот момент, пока вспышка не долетит во всех фазах до цели.
Да и вообще, по сравнению с 90-ми годами требования к играм у многих стали как к PC. Но не всё возможно на Спеке.

Black_Cat
12.04.2011, 11:27
Про 90% дизайна - это слишком.Это не слишком - так оно и есть. Направление задаёт именно дизайнер, а всё остальное подлаживается под это направление.


В игре реальный чел ходит по реальным подвалам и воюет с реальными людьми. Никакой фантастики - вот и вся атмосфера.вот и говорю - беспонтово, абсолютно никакой атмосферы.


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

Andrew771
12.04.2011, 11:42
Трасса - это та же вспышка, но разделённая на этапы.
Ну а этапы эти за какое время прорисовывать, чтобы игрок видел, а не просто мелькнуло непонятно? И что делать это время остальной программе, стоять и ждать?

Black_Cat
12.04.2011, 12:02
Ну а этапы эти за какое время прорисовывать, чтобы игрок видел, а не просто мелькнуло непонятно? И что делать это время остальной программе, стоять и ждать?Я уже объяснял http://zx.pk.ru/showpost.php?p=374332&postcount=371
Трасса движется около 1,5 секунды, но поражение защитывается моментально, а падение врага - с задержкой на эти же 1,5 сек.
В это время можешь делать всё что хочешь. При уходе с курса трассы, её отображение прекращается (если нет идей как это привязать к движку).

Andrew771
12.04.2011, 12:08
В реале при выстреле ни один человек не увидит полёта пули, так что зачем нам уходить от реализма. А для врага придется вводить промежуточную фазу "падение", если памяти под спрайты хватит, можно ввести.
Фазы движения 2 я все убрал, т.к. нет под них места. А вставил фазу "стоит-2" для замедления стрельбы (при этом выводятся спрайты для фазы "стоит").

Black_Cat
12.04.2011, 12:40
В реале при выстреле ни один человек не увидит полёта пули, так что зачем нам уходить от реализма.Пойми, всё что есть сейчас - это дешёвка, у игры нет духа игры - атмосферы, а без этого второй раз за эту игру никто не сядет. Игра, должна вступать в контакт с воображением игрока, а эта игра - беспонтовая. Если на РС беспонтовые игры прокатывают ещё из-за богатой 3d графики, то здесь нет ничего - ни графики, ни атмосферы.


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

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

Andrew771
12.04.2011, 13:37
ничего не вводить всё оставит как есть, сейчас же враг падает - этого достаточно
как прикажешь отслеживать его стояние до падения 1.5 сек.?

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

Атмосфера - бродить по темным подземельям. Найти выход к некой цели (которую пока не придумали и не нарисовали).

---------- Post added at 13:37 ---------- Previous post was at 13:35 ----------

Jerri, а в каком эмуляторе ты пишешь? А то EmuZWin не понимает некоторые команды (типа push hl,de), а исправлять их все - чокнешься.

Rindex
12.04.2011, 14:34
БК-0010, ты требуешь слишком многого от 48к. Если-бы автор вначале сразу делал всё под 128к, то и фаз было-бы побольше, и выстрелы для AY, и вообще всё красивее выглядело-бы. Но вы же упёрлись в 48к и всё. Вот и получите то, что уже начали выкидывать идеи и фазы из игры.

Andrew771
12.04.2011, 14:57
Я понял одно, нужно потихоньку закругляться с этой игрой, а то когда долго пишешь, приедается и былой восторг улетучивается. Когда-то казалось, круто сделать на Спеке подобие 3D-шутера на весь экран. Теперь он почти сделан, а недовольство только нарастает.

Rindex
12.04.2011, 15:12
Я понял одно, нужно потихоньку закругляться с этой игрой, а то когда долго пишешь, приедается и былой восторг улетучивается. Когда-то казалось, круто сделать на Спеке подобие 3D-шутера на весь экран. Теперь он почти сделан, а недовольство только нарастает.

Ну не обижайся. Просто 48к как-то больше подходит под всякие логические игры, но ни как под 3D-шутеры. Ты себя сразу ограничиваешь в средствах. Если была цель сделать игру в 3D типа Дума, но обязательно в 48к, то считай затея удалась. Но действительно лучше сделать красиво и в 128к, чем просто, но зато в 48к. Возьми хотя-бы последнюю игру Cray 5. Там и графика отличная, и спрайты героя не только в двух экземплярах, а ещё и с разворотом, и музыка + выстрелы для AY, да и вообще всё классно. И шиш бы они такое сделали в 48к.

P.S. Всё, больше пессимизм не нагоняю.

Black_Cat
12.04.2011, 15:47
как прикажешь отслеживать его стояние до падения 1.5 сек.?
хорошо, никак не отслеживай, просто по завершении цикла генерации трассы - вали врага

Мне кажется, что синий цвет был лучше. Во всяком случае, темные цвета - мрачное подземелье. А при нынешнем ярком желтом какая-то простая бродилка получилась.
1) Я уже предлагал подумать как сделать отключаемые текстуры на стенах, чтоб стена была просто белой..
2) Вместо кирпичей хотелось бы либо приборные стойки, либо стены покрытые биологической гадостью как в Чужих.
3) Продумать тёмные комнаты.
4) Продумать текстуры для пола и потолка.
5) Продумать возможность мигания света.
6) Отказаться от безликих врагов и оружия, сделать харизматичных врагов и оружие.


ты требуешь слишком многого от 48к.если я этого требую, значит я уверен, что требования реализуемые.


Когда-то казалось, круто сделать на Спеке подобие 3D-шутера на весь экран. Теперь он почти сделан, а недовольство только нарастает.Всё замечательно, остаётся чуть подумать как допилить движок чтоб влезли все вышеперечисленные пожелания.


Я понял одно, нужно потихоньку закругляться с этой игрой, а то когда долго пишешь, приедается и былой восторг улетучивается.:) Andrew771, сделать невозможный движок, и не выжать при этом всё что возможно из геймплея - это значит заведомо сдаться.

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

ALKO
12.04.2011, 16:52
Когда-то казалось, круто сделать на Спеке подобие 3D-шутера на весь экран.
а как же WoLf 2004 ?
http://tarjan.uw.hu/scrshootz/ex_ussr/alone_coder/wolfenstein_2004_by_alone_coder_2004_06.png
чем не "весь экран"?

---------- Post added at 15:52 ---------- Previous post was at 15:51 ----------

треть экрана делается в настройках для меньшей нагрузки на проц

Andrew771
12.04.2011, 16:54
1) Я уже предлагал подумать как сделать отключаемые текстуры на стенах, чтоб стена была просто белой..
2) Вместо кирпичей хотелось бы либо приборные стойки, либо стены покрытые биологической гадостью как в Чужих.
3) Продумать тёмные комнаты.
4) Продумать текстуры для пола и потолка.
5) Продумать возможность мигания света.
6) Отказаться от безликих врагов и оружия, сделать харизматичных врагов и оружие.

если я этого требую, значит я уверен, что требования реализуемые.
1. Никак. В памяти хранятся уже отрисованные спрайты, а не каркасы и текстуры. Высчитывать маски если только, поверх этих спрайтов - замедлит сильно. К тому же, враги могут слиться со сплошными стенами.
2,3,4,5. Это можно. Пришли образчик текстуры, попробую вставить. Еще ALKO нарисовал соты, тоже нужно попробовать. К тому же, еще не раскрыта тема колонн, а они зарезервированы.
6. Разве ALKO плохо их нарисовал? Наоборот, мне нравятся. Может, ты хочешь им интеллекта еще добавить? А пистолет тоже красивый и даже шевелится при выстреле. :)
Спрайты все будут доработаны напильничком, когда все будут вставлены.

ALKO
12.04.2011, 16:58
А пистолет тоже красивый и даже шевелится при выстреле.
пистолет может и красивый,но "луч" из атрибутов (и даже из пикселей однобитной графики) будет всё портить.

Andrew771
12.04.2011, 17:00
пистолет может и красивый,но "луч" из атрибутов (и даже из пикселей однобитной графики) будет всё портить.
тогда сделаем только вспышку

ALKO
12.04.2011, 17:05
БК-0010, нагнетающей атмосферы тут точно не добиться.
И дело не в дизайне и даже не в движке.
Всему виной платформа,для которой создаёться данная игра.

jerri
12.04.2011, 17:39
Jerri, а в каком эмуляторе ты пишешь? А то EmuZWin не понимает некоторые команды (типа push hl,de), а исправлять их все - чокнешься.

sjasm

вот смотри во вложении батник запускаю на компиляцию
а смотрю unreal - у меня sna проассоциирован с unreal

Black_Cat
12.04.2011, 18:00
1. Никак. В памяти хранятся уже отрисованные спрайты, а не каркасы и текстуры. Высчитывать маски если только, поверх этих спрайтов - замедлит сильно. К тому же, враги могут слиться со сплошными стенами.
"Никак" - это значит сдаться вместо того чтоб найти решение!


В памяти хранятся уже отрисованные спрайты
ты о экранной видеопамяти?
А если сделать текстуры, которые можно было бы закрывать атрибутами? Знаю что бред, но когда-нить может пригодиться.

Разве ALKO плохо их нарисовал?При чём тут "плохо"? Просто нинзя по умолчанию токо безликим и может быть. А нам нужна харизма! Вон - импы из Doom - харизматичны! Даже курицу нарисуй - будет харизматично! А вот нинзя - безликая, одинаковая штамповка. У курицы харизмы больше, чем у миллиона нинзя.


А пистолет тоже красивыйпистолет не отличающийся от миллиона других пистолетов. Для нинзя - это хорошо, для игры - катастрофа!

---------- Post added at 18:00 ---------- Previous post was at 17:49 ----------


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

Andrew771
12.04.2011, 21:26
вот смотри во вложении батник запускаю на компиляцию
sjasm еще нужен, как я понял? Найду. :)

Давайте, в общем, оперативно добивать проект, чтоб не превратить в долгострой. Я займусь вставкой всех остальных спрайтов - недостающих фаз врага и колонн. ALKO, нарисуй пожалуйста аптечку, можно одну грань, а еще установку по добыче энергии (БК-0010, как она примерно должна выглядеть? И как ее останавливать?). А Jerri, займись генератором лабиринта 128х64. Наверно, его код можно сделать тоже, как и маски, на месте виртуального экрана, а после генерации он уничтожается. А если код небольшой, то можно и в основную программу, чтобы можно было повторно запускать из игры.

Black_Cat
12.04.2011, 22:42
Andrew771, тут либо всё (ч/бграфика+цветные эффекты, BFG+луч+взрыв, существа+луч, приборы-гаджеты), либо ничего. Полумерами тут обойтись не получится. Я просто хочу понять куда мы идём.

moroz1999
13.04.2011, 01:27
Поддержу БК-0010: игре нужен сюжет и дизайн.
Мне кажется, что сейчас самая страшная и рутинная часть работы уже позади, есть движок, и есть враги.
Почему бы не сделать хотя бы разные текстуры в разных уровнях? Можно придумать мини-сюжет и подавать его хотя бы текстом между уровнями, а лучше придумать неглубокий, но свежий сюжет и попросить AAA картинок наконвертить, чтобы показывать между уровнями.
Подвалы - это отлично. Но каков сюжет? Пошел в подвал за баночкой огурцов, а тут внезапно со всех сторон навалились нинзя? :)
Утрирую, конечно, но подача информации - это наше всё. Из любой игры, даже восьмибитной и на 48кб, можно выжать 200% просто засчет подачи материала.

Black_Cat
13.04.2011, 02:34
moroz1999, насамделе большой проект автор, насколько понимаю, не задумывал, а задумывал сделать полноэкранный движок и побыстрому наваять игру для демонстрации его работы. При том работы именно в 48k. Всё быстро закончить и заняться другим движком для другой игры.
Отсюда все изначальные ограничения, которых даже в 128k просто не возникло бы. Одно из ограничений - токо один уровень, и токо одна текстура в нём. Ввиду жёсткого ограничения всего, дать красивостей, чтоб привлечь к игре внимание - нет возможности. Единственно что есть возможность - это придумать необычный сюжет. Но т.к. сюжетные разносолы насамделе в плане не стояли, то возможно и этого не будет. Что останется? Останется голая дема, без сюжета, без особого смысла, демонстрирующая что и на 48k возможно полноэкранное 3d. Да, несомненно, это техническое достижение! Но вот токо юзер играет не в движок, а в игру, и играет не для испытания возможностей движка, а для того, чтоб окунуться в игровую атмосферу, чего собственно пока в этом проекте и нет.

jerri
13.04.2011, 11:40
sjasm еще нужен, как я понял? Найду. :)

а чо его искать то? (http://zx.pk.ru/showthread.php?t=447)


Jerri, займись генератором лабиринта 128х64. Наверно, его код можно сделать тоже, как и маски, на месте виртуального экрана, а после генерации он уничтожается. А если код небольшой, то можно и в основную программу, чтобы можно было повторно запускать из игры.
тут все упирается в размер карты - в генераторе же 1клетка - 1 байт
а в игре у тебя 1 клетка = 1/2 байта

Andrew771
13.04.2011, 13:10
тут все упирается в размер карты - в генераторе же 1клетка - 1 байт
а в игре у тебя 1 клетка = 1/2 байта
Для определения и занесения элемента в нужный полубайт есть в коде процедуры: KLETKA, KOORD, GETKL, PUTKL

Я уже сделал все фазы движения врагов, чуть замедлил стрельбу врагов, а также сделал, как просил ALKO, чтобы при стрельбе враги не махали оружием.
Высылаю исходник. Проверял только на своей старой версии, так что в него скопировал только нужный кусок кода. Пока нет sjasm, не могу проверить. Поставлю его.

Andrew771
13.04.2011, 13:15
Вот как выглядит скомпилированный: см. файл.

Andrew771
13.04.2011, 13:46
Пока нет sjasm, не могу проверить. Поставлю его.
Поставил (точнее, просто скопировал в папку с asm). Ни фига не понял. Файл asm компилит, но выходного файла SNA нет. Что писать в командной строке, чтобы был?

jerri
13.04.2011, 14:47
Поставил (точнее, просто скопировал в папку с asm). Ни фига не понял. Файл asm компилит, но выходного файла SNA нет. Что писать в командной строке, чтобы был?

значит так
что бы было проще сделай как у меня

распаковываешь архив с sjasm куда тебе там удобнее


далее распаковываешь архив из аттача в
...\sjasm\examples\ZX-Spectrum\zxoom

папка examples есть у sjasm изначально

далее там 2 файла

compile.bat



..\..\..\sjasmplus.exe zxoom.a80
pause
qsave.sna


в нем запускается sjasm из вышестоящей папки
и запускается собственно сам снап

и zxoom.a80


DEVICE ZXSPECTRUM48
include "zxoom78a.asm"
DISPLAY "dataend:",$
SAVESNA "qsave.sna",#6000
LABELSLIST "E:/Documents and Settings/LocalService/Local Settings/mass storage/unreal374/user.l"


это набор определений для sjasm

LABELSLIST "E:/Documents and Settings/LocalService/Local Settings/mass storage/unreal374/user.l"

вот в этой строчке прописано создания списка меток для unreal
для себя можешь подставить путь где у тебя unreal

после обработки batnika у меня запускается unreal
и в главной папке появляется снап с игрой

Andrew771
13.04.2011, 15:07
и в главной папке появляется снап с игрой
Заработало! Спасибо! Сейчас 80-ю версию попробую компильнуть.

ALKO
13.04.2011, 15:09
опТЕЧКА

ALKO
13.04.2011, 15:10
И хватит автора переманивать на 128к,ссылаясь на неиграбельность.
48к тоже много чего может утянуть если грамотно всё сделать.

jerri
13.04.2011, 15:50
Заработало! Спасибо! Сейчас 80-ю версию попробую компильнуть.
перед defb должен быть tab или пробел

Andrew771
13.04.2011, 16:18
перед defb должен быть tab или пробел
да, разобрался.
Я всё-таки вернул обратно цвет на темно-синий, чтобы сделать полутьму и вспышки от оружия более весомые по мерцанию (см. исходник в файле). Jerri, сделай пожалуйста красное мерцание при стрельбе игрока (как раньше было), а вспышку от его оружия можно розовую, вокруг ствола как-нибудь, а не лучом. А также шевеление пистолета. Я шевеление вставил, но т.к. экран не перерисовывается, то не знаю, как перерисовать.
При стрельбе врагов нужно сделать красные вспышки у их стволов (вместе с существующим розовым мерцанием).

Andrew771
13.04.2011, 16:21
Сейчас вот такая игра, см. файл.

jerri
13.04.2011, 16:35
сделаю
1.дай скрин с нарисованной вспышкой как это сделать?
2.сколько времени (во фреймах) между выстрелами? (задержка на перезарядку)
3.насчет цвета надо думать, с героем то все понятно когда ему вспышку рисовать
а вот с врагами - можешь указать место в процедуре отрисовки где рисуются враги?
там всего то атрибуты поправить

Black_Cat
13.04.2011, 16:55
Сейчас вот такая игравраги стреляют через бассейны, в то время как их самих не видно, вспышка от выстрела очень долго держится, хотя враг уже давно убит и упал. И вообще, трассу к пистолету делать не следует, он для этого не приспособлен. Трассу можно делать токо если пистолет по центру, как это обычно и делают. А не сбоку, как сейчас.

Andrew771
13.04.2011, 17:04
1. Хорошо, нарисую.
2. Задержка - 2 фрейма.
3. Процедура FIRVRA - вспышка при стрельбе врагов. Ты просто процедуру перерисовки огня FIRE убрал (оставил только ret), поэтому перестало рисоваться.

Исправленный исходник, см.файл.

Andrew771
13.04.2011, 17:22
Трассу можно делать токо если пистолет по центру, как это обычно и делают. А не сбоку, как сейчас.
Будет не трасса, а вспышка вокруг ствола.

---------- Post added at 17:21 ---------- Previous post was at 17:05 ----------


враги стреляют через бассейны, в то время как их самих не видно
Бассейны возможно ниже сделаем (т.е. новые спрайты).

---------- Post added at 17:22 ---------- Previous post was at 17:21 ----------


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

Black_Cat
13.04.2011, 17:39
такого не заметил. Это наверно ты перепутал, когда несколько врагов стреляло одновременно в тебя.имелась ввиду трасса от пистолета - она держится чрезмерно долго

Andrew771
13.04.2011, 17:47
имелась ввиду трасса от пистолета - она держится чрезмерно долго
недолго, один фрейм (не прерываний, а игры).

Black_Cat
13.04.2011, 18:13
недолго, один фрейм (не прерываний, а игры).вопрос не в количестве, а в том, что враг уже умер, а трасса ещё с полсекунды держится. А должно быть наоборот - трасса умерла, за ней сразу умер и враг.

newart
13.04.2011, 19:33
Звук будем делать под обычный спикер, т.к. во-первых на 48к нет AY
Есть. И таких 48-х было когда то полно.

И оружие и стрельба, и щас и раньше - полная порнография.
Обьясню что не так. У игры должна быть атмосфера, а это не возможно без гармоничности всех компонентов игры. Сейчас игра больше похожа на механистический конвейер, куда напихали разрознённые, ничем не связанные компоненты, ни один из которых сам по себе не несёт абсолютно никакой атмосферы. Я уверен, что 90% успешности игры - это дизайн, а вовсе не код. Здесь я пока вижу 90% - код, а про дизайн вааще речь не идёт.
Игру делает кодер, вот и результат - УГ (как и 95% отечественных игр сделаных кодерами).

Rindex
13.04.2011, 19:51
И хватит автора переманивать на 128к,ссылаясь на неиграбельность.
48к тоже много чего может утянуть если грамотно всё сделать.

48к надо только в музеях показывать, а не делать что-то для них. Одного не понимаю, если есть машина получше, зачем что-то делать для старой?

Переведу это так. Есть на выбор хорошая иномарка (допустим Ниссан Альмера) и Жигули-пятёрка по одной цене. Вы какую купите?

Andrew771
14.04.2011, 10:52
дай скрин с нарисованной вспышкой как это сделать?
даю.

Andrew771
14.04.2011, 10:53
Одного не понимаю, если есть машина получше, зачем что-то делать для старой?
Я тоже не понимаю, что вы на это форуме забыли? Есть же IBM PC :)

NovaStorm
14.04.2011, 11:05
Есть. И таких 48-х было когда то полно.
Но не оригиналов же, в ориентации на чистый 48й на мой взгляд смысл есть.[/QUOTE]

Игру делает кодер, вот и результат - УГ (как и 95% отечественных игр сделаных кодерами).
"Озвучено профессиональными программистами", да. Смачный плевок в душу творцам =)

если есть машина получше, зачем что-то делать для старой?
Писюк что ли?

jerri
14.04.2011, 12:08
даю.

вобще то не вижу проблем чтобы так сделать
но опять же нужно как-то обозначить места где красить

как вариант задействовать 2 верхних бита
если они 00, то сделать 01 и наложить цвет выстрела
но опять же хз хз

Andrew771
14.04.2011, 12:43
но опять же нужно как-то обозначить места где красить
Для выстрела игрока это сделать просто. А для врагов - проблема. Нужно знать, какой враг в какой клетке сейчас стреляет.
Варианты реализации:
1. В процедуре WPEIZ. Самое простое, что приходит в голову - создать таблицу: адрес спрайта - выводимые координаты атрибутов. Проверять в этой процедуре состояние "стреляет", адрес спрайта уже известен, потом лезть в эту таблицу и выводить.
2. В процедуре VRAGI. Если враг получил состояние "стреляет", то определить расстояние в клетках от него до игрока, опять же создать таблицу Координаты клеток - Координаты атрибутов для выстрела, лезть в нее и запомнить на будущее атрибуты, которые потом включить процедурой WPEIZ.

jerri
14.04.2011, 15:26
у тебя есть вот такие данные :)

байт вертик.координаты знакоместа в спрайтах:
; 7-6 биты: 01 (64) - занято, 10 (128) - краевое слева, 11 (192) - краевое справа
; 5-0 биты: вертик.координата

т.е 00 у тебя не задействован
так что если что то можно задейтсвовать эти 2 бита
но тогда при отрисовке спрайта с поднятой рукой всегда будет красное пятнушко

ALKO
14.04.2011, 15:56
48к надо только в музеях показывать, а не делать что-то для них.
Если вы не заметили прогресса в вычеслительной технике 128кб озу на ЭВМ тоже не актуально.(даже мобилки оснащаются 256кб и выше (на борту моего сименса ц75 1,5mb ram.Что уже говорить про более современные телфоны?))


Одного не понимаю, если есть машина получше, зачем что-то делать для старой?
Это верно подмечено,долой эти восмибитные гробы.(в смысле за балкон вышвырнуть)
Давайте займёмся GameDev'ом для ПК.

---------- Post added at 14:56 ---------- Previous post was at 14:39 ----------

Andrew771, там где нарисованые скрины выстрелов игрока\противников:
Выстрел игрока более менее,только спрайты нужно инвертировать
и цвет "вспышки" на 1-2 уровня яркости повысить (зелёный или голу...светло-синий короче).
а выстрелы противников я уже описывал
http://zx.pk.ru/attachment.php?attachmentid=26404&d=1302521938

а то делаете: всё сиреневым, а вспышки красным, это выходит,что интенсивность свечения у выстрела меньше,чем отражение того же света во всей среде.

Или это вы хотели показать оружие,стреляющее тёмной материей?

Rindex
14.04.2011, 16:31
48к надо только в музеях показывать, а не делать что-то для них. Одного не понимаю, если есть машина получше, зачем что-то делать для старой?

Переведу это так. Есть на выбор хорошая иномарка (допустим Ниссан Альмера) и Жигули-пятёрка по одной цене. Вы какую купите?

Мда... Ответы конечно...


Я тоже не понимаю, что вы на это форуме забыли? Есть же IBM PC


Писюк что ли?


Это верно подмечено,долой эти восмибитные гробы.(в смысле за балкон вышвырнуть)
Давайте займёмся GameDev'ом для ПК.

Я вот только одного не понимаю, зачем люди сделали Пентеву и Феникс? Да тот-же Пентагон, Скорпион и Профи, чёрт возьми. Для красоты что-ли? А вы как упёртые бараны всё продолжаете лепить под 48к и под эту пукалку под названием биппер. Да хоть сто каналов сделай в нём (сейчас вроде уже 8 или 9-ть сделали), всё равно звучать будет хуже трёх AY-ковых. Вообщем всё ясно, творите дальше всякую шнягу для буржуйского Спектрума с резиновыми клавишами. И клавиши эти не забудте тоже приобрести, а то как-то не цивильно щёлкать на не натуральную клавиатуру.

ALKO
14.04.2011, 16:45
Я вот только одного не понимаю, зачем люди сделали Пентеву и Феникс?
А зачем люди сделали Wii,Playstatio3 и XBOX360?
А вы всё продолжаете лепить под горбатого и под эту тройную пукалку под названием AY.
Всё равно лучше 64 каналов 3d (256 стерео) AC3 dolby digital при 24-разрядном ЦАП звучать не будет

Rindex
14.04.2011, 16:55
А зачем люди сделали Wii,Playstatio3 и XBOX360?
А вы всё продолжаете лепить под горбатого и под эту тройную пукалку под названием AY.
Всё равно лучше 64 каналов 3d (256 стерео) AC3 dolby digital при 24-разрядном ЦАП звучать не будет

Неверное сравнение. Если-бы ты раньше так защищал 48-й Спектрум, то я бы смог это списать на нехватку денег у тебя. Но сейчас есть куча эмуляторов, которые тебе аж до 4096к растянуть память могут.

И не сравнивай всякие писишные мелодии и AY. AY мне по звучанию больше нравится. А если мне уж захотелось не компьютерную музыку послушать, я радио включу.

ALKO
14.04.2011, 17:01
Зачем использовать мощнейшие ресурсы ПК для эмуляции всякого древнего гомна?
Я уже лучше в Dead Space 2 или Batman:arkham asylum порубаюсь,чем буду слушать пиканье и наблюдать за мерцанием огромнейших разноцветных квадратов.

Rindex
14.04.2011, 17:35
Зачем использовать мощнейшие ресурсы ПК для эмуляции всякого древнего гомна?
Я уже лучше в Dead Space 2 или Batman:arkham asylum порубаюсь,чем буду слушать пиканье и наблюдать за мерцанием огромнейших разноцветных квадратов.

Ты понял сам чего сказал-то? Я тебе не говорю делать игру под 4 метра с палитрой больше 15 цветов. Просто как-то тут все уже привыкли к 128-м машинам, и я отлично помню те времена, когда люди вставляли специально AY-музыку, если её не было, в игры. А если ты ещё тогда до клавиатуры дотянуться не мог, то это не мои проблемы. А сейчас-же видна просто громадная тенденция, которую навязал запад (или кто?), что-бы игры были для 48к. Ну тогда мы опять улетаем назад, и уж делайте, раз такие правильные, игры для 16к. Это самый правильный тогда уж стадарт.

Всё, надоело что-то тут доказывать. Можете лепить что хотите.

---------- Post added at 17:35 ---------- Previous post was at 17:12 ----------

Кстати, может я конечно что-то пропустил, но вроде раньше звуки и мелодии как-бы хотели сделать ещё и для GS. Это выходит 48к + GS? Или от этих звуков и мелодий решили отказаться?

Andrew771
14.04.2011, 17:36
т.е 00 у тебя не задействован
так что если что то можно задейтсвовать эти 2 бита
но тогда при отрисовке спрайта с поднятой рукой всегда будет красное пятнушко
это фигово, не пойдет :(


Выстрел игрока более менее,только спрайты нужно инвертировать
и цвет "вспышки" на 1-2 уровня яркости повысить (зелёный или голу...светло-синий короче).
а выстрелы противников я уже описывал
Да, с цветами надо еще работать, пробовать разные. Красный и сиреневый вроде ближе к реализму.

jerri
14.04.2011, 17:51
это фигово, не пойдет :(

можно брать из палитры

также четный фрейм - стреляют враги
нечетный фрейм -стреляет герой
ну чтобы не глушилось все одним цветом

Andrew771
14.04.2011, 21:36
можно брать из палитры
так и делаю.


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

moroz1999
14.04.2011, 23:11
Отлично! Каких только холиваров я не видал, но холиварить 48 против 128 - это эпической глупости занятие!

jerri
15.04.2011, 08:36
так и делаю.


ну это уже навороты. Я думаю, лишнее. Это ж надо отслеживать как-то, а смысл...

это не лишнее это нужное
чтобы выстрелы героя не совпадали с выстрелами врагов
а делается просто

счетчик фреймов игры and #01 и если 1 то обрабатываем выстрел героя
если 0 то не обрабатываем
тоже для врагов но с другим знаком

---------- Post added at 08:36 ---------- Previous post was at 08:34 ----------


Отлично! Каких только холиваров я не видал, но холиварить 48 против 128 - это эпической глупости занятие!

ты сюда пришел постов набить?
или в холиваре поучаствовать?
или есть что сказать по сабжу?

moroz1999
15.04.2011, 12:23
ты сюда пришел постов набить?
или в холиваре поучаствовать?
или есть что сказать по сабжу?Я пришел мягко намекнуть, что есть лучше точки приложения усилий, чем холиварить на такие темы.
По сабжу я уже всё сказал - получается клево, но хочется, чтобы получился совсем хит. А для этого нужна клевая подача сюжета и прочие плюшки, которые можно сделать и в 48, и в 128, но сделать как-нибудь нужно.

jerri
15.04.2011, 15:33
Никто не собирается холиварить
автор сказал 48кб значит 48 хочется ему так
теперь он согласен на ГС :)
разве плохо?

ALKO
15.04.2011, 16:58
Да, с цветами надо еще работать, пробовать разные. Красный и сиреневый вроде ближе к реализму.
Но они и ближе по интенсивности свечения (проверте на ЧБ градации)...
Можно красный и поносно-жёлтый использовать для контраста...


Если не передумали миниган впендюривать:

Andrew771
18.04.2011, 14:46
сейчас работаю над вспышками от стрельбы - для врагов нетривиальная получилась процедура. С jerriевской процедурой не понимаю, как делать вспышки (т.к. перерисовка неизвестно когда), так что на своей старой версии пока делаю.

ALKO
18.04.2011, 15:44
Andrew771, что касается художественной части,то спрайты надо подрихтовать.
При масштабировании произошло искажение.
К примеру (уменьшение в 2 раза)
было
1010101
0101010
1010101
0101010
стало
1111
1111


Я хочу сказать, что пропала полутень (http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D1%83%D1%82%D0%B5%D0%BD%D1%8C), над которой я кропотливо работал.
и "глаза" противников асимметричны (http://ru.wikipedia.org/wiki/%D0%90%D1%81%D0%B8%D0%BC%D0%BC%D0%B5%D1%82%D1%80%D 0%B8%D1%8F) опять же за счёт масштабирования.

Andrew771
18.04.2011, 15:56
спрайты надо подрихтовать
да, это обязательно. Для этого мне придется написать конвертер спрайтов из текстового описания в bmp и обратно.

Andrew771
18.04.2011, 17:43
Вставил наконец вспышки при выстрелах, а также оптимизировал обновления экрана, чтобы при каждом выстреле не перерисовывался экран. См.файл.

Black_Cat
20.04.2011, 17:44
Andrew771, можно изменить движок, чтоб при касании стены не под углом 90 градусов, происходило скольжение вдоль стены со скоростью пропорциональной углу касания. Отсутствие этой функции нарпягает.

newart
20.04.2011, 19:35
Вставил наконец вспышки при выстрелах, а также оптимизировал обновления экрана, чтобы при каждом выстреле не перерисовывался экран. См.файл.
То что игрок сам крутится по часовой стрелке так и задумано? (без нажатия кнопок на клаве)

Andrew771
20.04.2011, 20:59
То что игрок сам крутится по часовой стрелке так и задумано? (без нажатия кнопок на клаве)
???
Клавиши у тебя что ли западают? Или джойстик отклонён всегда?


Andrew771, можно изменить движок, чтоб при касании стены не под углом 90 градусов, происходило скольжение вдоль стены со скоростью пропорциональной углу касания. Отсутствие этой функции нарпягает.
Промежуточный угол только один - 45 градусов. А зачем это нужно? Скольжение - это движение влево или вправо, а если слева или справа стена, то соответственно двигаться нельзя. Но вообще вставить эту функцию не трудно.

Сейчас делаю аптечки. Вот думаю, каким сделать индикатор здоровья. Его спрайт, скорее всего, 1 или 2 знакоместа должен занимать, можно цветной. ALKO, придумай, каким он может быть. :)

Black_Cat
20.04.2011, 21:10
Это в чём он у тебя крутится?

---------- Post added at 21:10 ---------- Previous post was at 21:00 ----------


Промежуточный угол только один - 45 градусовэто щас 45, а потом будет 22,5.. и т.д., дык вот чтоб потом не переделывать всё.


А зачем это нужно?Это одна из самых главных особенностей любой трёхмерной ходилки, без этой особенности вааще никакой 3d ходилки быть не может - это аксиома!

Andrew771
20.04.2011, 21:14
Это одна из самых главных особенностей любой трёхмерной ходилки, без этой особенности вааще никакой 3d ходилки быть не может - это аксиома!
ладно, приделаю на днях.

newart
20.04.2011, 21:39
Это в чём он у тебя крутится?
В спектакуляторе.

Black_Cat
20.04.2011, 23:08
а у меня там же не крутится

jerri
21.04.2011, 03:21
там с джойстиком ошибка
надо делать and #1f

Andrew771
21.04.2011, 10:00
там с джойстиком ошибка
надо делать and #1f
пасиба, исправил.

ALKO
21.04.2011, 14:41
Вот думаю, каким сделать индикатор здоровья. Его спрайт, скорее всего, 1 или 2 знакоместа должен занимать, можно цветной. ALKO, придумай, каким он может быть.
на два знакоместа:
вариант №1 - вывод символов 4х8 (что б уместился символ "%" и два символа показывающих уровень hp [0-99])
вариант №2 - нарисовать два UDG-символа, из которых получился бы крест, покрасить в красный инк с белым папером. При декременте житухи уменьшать цвет папера или затенять плотностью пикселей.

---------- Post added at 13:41 ---------- Previous post was at 13:39 ----------

У меня чего-то не компилятся ваши исходники на EmuZwin...может это из-за ОС...

Andrew771
21.04.2011, 16:36
вариант №2 - нарисовать два UDG-символа, из которых получился бы крест, покрасить в красный инк с белым папером. При декременте житухи уменьшать цвет папера или затенять плотностью пикселей.
вот этот понравился.

Исходники на основе процедур Jerri в EmuZWin не компилятся. Нужен sjasm или адаптирование под EmuZWin. Мой исходник компилится под EmuZWin (я в нём и делаю).

Сделал аптечки (пока без вывода индикатора здоровья). См.файл.
Место в памяти кончилось!!! А еще хотел вставить колонны. Теперь буду думать, где урвать кусок, нужно примерно 1.5 кб. Процедуры Jerri вроде могут выцепить часть памяти, буду смотреть.

Rindex
21.04.2011, 17:09
Место в памяти кончилось!!! А еще хотел вставить колонны.

Что я там говорил про этот вшивый 48к? Вот и получите.

Andrew771
21.04.2011, 17:47
то я там говорил про этот вшивый 48к? Вот и получите.
Не волнуйся, я уже с лёту нашел, как выцепить 2к. Лишние спрайты хранились после многочисленных переделок, удалю. И еще знаю, как оптимизировать данные для вывода.
В своё время В.Медноногов также бился в ЧВ над памятью под конец, читаем историю создания тут:
часть 1 - http://pmg.org.ru/gamedev/epic1.htm
часть 2 - http://pmg.org.ru/gamedev/epic2.htm
Кстати, он вначале хотел сделать типа Doom, но в итоге отказался. :)


Hедели три потратил, прикидывая как Doom делать. Споткнулся на спрайтах героев. При слишком большом приближении к ним, время на их изображение (в 1-ю очередь - на масштабирование) становится сравнимым со временем перерисовки экрана.

А хранить заранее отмасштабированые спрайты - ни каких 128к не хватит. Так что эта идея попадает в долгий ящик - пока достаточного опыта не наберусь или вдруг поможет кто.

Переходим к запасному варианту - HЛО-3 a'la ВарКрафт :)

Rindex
21.04.2011, 17:59
Andrew771, я понимаю того, кто бъётся над каждым лишним байтом из-за того, что не вмещается в 128к. Но бится над этим для 48к, да ещё в ущерб самой игры, я считаю мазохизмом каким-то.

Andrew771
22.04.2011, 09:32
Но бится над этим для 48к, да ещё в ущерб самой игры, я считаю мазохизмом каким-то.
Никакого ущерба игре нет. То, что я задумывал в 1997 году, выполнено на 120%.

jerri
22.04.2011, 09:53
Rindex, это спортивный интерес :)


Andrew771, надо отдать тебе доработанные процедуры вывода изоображения

ALKO
22.04.2011, 14:43
Andrew771, ты псих!!!!
Зачем делать псевдо 3д аптечки?!!
Оно красиво выглядит, но поедает драгоценную память...
Во всех древних квази-3д шутерах аптечка всегда была повёрнута к игроку лицом.(то же касается и всех остальных спрайтов)

---------- Post added at 13:40 ---------- Previous post was at 13:37 ----------

да и к тому же перспектива аптечки не совпадает со стенами (то есть при повороте игрока, точка схода аптечки смещается относительно точки схода стен)

---------- Post added at 13:43 ---------- Previous post was at 13:40 ----------

давайте я займусь цветами.
Только подскажите по каким адресам менять значения байтов.

Andrew771
22.04.2011, 14:51
И что, теперь плоские делать? Кстати, разные спрайты только у ближних аптечек (и то не все), а дальние спрайты одинаковые для различных поворотов. Из-за этого и точки схода не всегда совпадают, но приемлемы. Памяти много не жрут.



Rindex, это спортивный интерес
точно!



Andrew771, надо отдать тебе доработанные процедуры вывода изоображения
Хорошо. Я теперь сделал вывод всех спрайтов (включая оружие и выстрелы игрока и врагов) в одной процедуре - PEIZAS, обновление экрана происходит только один раз за ход. Так что, теперь заморочек со стыковкой твоих процедур с моими не должно быть. Колонны приделаю, потом состыкую.
Еще, если можешь, попробуй выяснить, почему не всегда правильно идет вывод на экран - не всегда маски правильно работают (дыры в стенах и т.д.). Виноваты процедуры или спрайты?

---------- Post added at 14:51 ---------- Previous post was at 14:50 ----------


давайте я займусь цветами.
Только подскажите по каким адресам менять значения байтов.
мы сначала с Jerri состыкуем процедуры, потом будем цвета подбирать. ИМХО, в синей полутьме хорошо. А то когда всё белое или желтое, то антураж пропадает.

Rindex
22.04.2011, 14:54
Rindex, это спортивный интерес :)


точно!

Так вы чего делаете? Игру для всех или что-то просто так, ради спортивного интереса, а там глядишь может чего дельное получится? Если второе, тогда вопросов больше нет.

Andrew771
22.04.2011, 14:54
и то, и другое :)

Rindex
22.04.2011, 14:57
и то, и другое :)

А мне кажется, что второе. Ладно, дерзайте. Надеюсь хоть цивилизация будет сделана как надо, а не ради спортивного интереса.

ALKO
22.04.2011, 15:01
в синей полутьме хорошо. А то когда всё белое или желтое, то антураж пропадает.
дело не только в "синей полутьме"
цвет "выстрелов",бело-чёрные пиксели (вместо чёрно-белых),да и голу...синяя полутьма напрягает глаза.

Black_Cat
22.04.2011, 15:10
Andrew771, а не проще сделать аптечки текстурами на стенах, и чтоб взять их надо ткнуться в стену, а то у тебя и не хочешь брать - а приходится, потому как пройти мимо невозможно. Да, и аптечки должны браться токо когда жизни <100%

Andrew771
22.04.2011, 15:16
аптечки должны браться токо когда жизни <100%
Тогда лучше вот это сделаю.

Black_Cat
22.04.2011, 15:22
Луцче сделай чтоб аптечку можно было не брать по желанию, а то из-за 1% потерянной жизни брать аптечку на 20% не хочется. Неужели текстурами не проще это сделать?

ALKO
22.04.2011, 15:34
мдааа, тут хоть кто-нибудь играл в древние игры жанра fps 3d action, что было представление на что равняться.
Wolfenstein,Doom 1/2/plutonia, Heretic, Hexen, Zero Tolerance, Battle Frenzy[blood shot], Shadow warrior, Duke Nukem,Corridor....Terminator 2029:Operation Scour.
В последнем примере движёк родственнен вашему zxoom'у.
Аналогично прорисованы спрайты в масштабировании.

---------- Post added at 14:34 ---------- Previous post was at 14:23 ----------


Тогда лучше вот это сделаю.
можно подбирать аптечку нажатием определённой клавиши.

Andrew771
22.04.2011, 16:42
можно подбирать аптечку нажатием определённой клавиши.
наверно, это лучший вариант.