ПрограммированиеФорум2D графика и изометрия

Как реализовывалась графика в старых партийных РПГ?

Страницы: 1 2 Следующая »
#0
12:05, 31 дек 2021

Добрый день!

Поиграл в старую игру меч и магия 4 и стало интересно как там реализован движок.
Изображение


Изображение


Как я понял там перемещение выполняется по клеткам и там не 3D движок, а набор картинок.
То есть клетка состоит из:
1. Текстуры поверхности трава, дорога, вода.
2. То что на поверхности : деревья, горы, предметы, здания, стены.

Есть общий фон неба который меняется.
Есть враги которые перемещаются не только по клеткам, но и по самой клетке.

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


То есть перед собой видно например 4 клетки вперед, еще по 4 клетки вперед слева и cправа.
Изображение
Текстуры просто натягиваются на размер клетки при удалении и приближении.

И там нет плавности перемещения, то есть при движении вперед сразу оказываемся на клетке.
Или все таки есть какие то конкретные технологии реализации псевдо 3D которые использовались?

#1
12:56, 31 дек 2021

Если вкратце, то всё вручную
Есть заготовленный набор спрайтов:
- объект на каждом возможном удалении (по 3)
- стена каждого типа вдоль/поперёк направления взгляда х на каждом возможном удалении
- пол каждого типа на каждой видимой клетке

В игре ты разом видишь 9 клеток, никакого 3д на лету не считается, просто соответстующие спрайты отрисовываются в нужном порядке в нужных местах на экране

https://gamedev.stackexchange.com/questions/92706/how-do-i-draw-l… eholder-style

#2
13:44, 31 дек 2021

Интересно.
Получается реализовать плавное перемещение персонажа вперед так не получится?
В играх где плавное перемещение получается уже полное 3D используется?

#3
14:07, 31 дек 2021

manking
> Получается реализовать плавное перемещение персонажа вперед так не получится?

Не получится.

> В играх где плавное перемещение получается уже полное 3D используется?

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

#4
14:19, 31 дек 2021

Можно поизвращаться с интерполированием, в середине 90х даже были прецеденты, но выглядеть будет плохо
Подобную систему придумали и использовали в своё время из-за технических ограничений, конкретно из-за того, что нельзя было налету эффективно трансформировать спрайты - вращать/масштабировать, только рисовать 1в1 попиксельно на экран

Если ты хочешь чтобы выглядело похоже, но с плавным перемещением, то самый эффективный метод - комбинировать 3д для стен/полов/поверхностей и 2д для объектов и персонажей, как в старых думе/дюке.

#5
13:39, 2 янв 2022

Там атлас со спрайтами для каждого типа клетки в каждой позиции. Поскольку видимость обычно клеток 5, то вариантов не очень много. Объекты поверх поверхностей, возможно, вторым слоем. Хотя, именно в MM3, 4, 5 такое было не особо нужно, я думаю.
Трансформация «на лету» бессмысленна уже тем, что в 3D она же будет сделана намного лучше (это если в наше время), а в 2D — будет многовато жрать процессорных мощностей (актуально во времена DOS).
Делать игру вот таким образом по нынешним временам — огромная и неоправданная морока.
3D и только 3D. По крайней мере, для окружения.

#6
19:31, 15 янв 2022

meekobold
alexyecu_wox2team
У меня несколько схожая проблема. Есть спрайт который меняет свои размеры и положение на экране 60 раз в секунду. Вместо спрайта я хочу воткнуть "гифку". Все это дело в браузере.
Гифки не дают менять свой размер и долго грузится, видимо загружает все кадры.

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

Вариант второй. Сгенерить на сервере 3Д-шар, натянуть на него текстуру, сделать рендер(?) с нужного угла и готовый спрайт отправить пользователю. и так 60 раз в секунду...

Возможно еще какие варианты?

#7
18:33, 16 янв 2022

Ren
> Возможно еще какие варианты?
Нарисовать прямоугольник-"развертку" планеты и отображать её кусок, "протягивая" слева-напрво. Плюс скругленные границы.
planet | Как реализовывалась графика в старых партийных РПГ?
html+js на сколько я помню позволяет нечто подобное.

А вобще, если у тебя пиксельарт (а иначе зачем ты пишешь в этой теме), хватит кадров 10-20 на планету (можно и гифкой), не надо там 60 раз в секунду обновлять

#8
18:45, 16 янв 2022

manking
> Получается реализовать плавное перемещение персонажа вперед так не получится?
Смотря что именно ты хочешь.

Если использовать технологии "прям как в прошлом" (в тех же старых m&m), то нет.

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

А вобще, как уже советовали, делай полу 3д. Окружение (пол, стены потолок) трёхмерные, по факту - это просто кубы с текстурами, а объекты (монстры, деревья, разная фигня типа сундуков) - плоские (по сути тоже 3д, просто вертикальная плоскость, всегда повернутая нормалью к игроку)

(Я такое делал, например вот тут https://gamedev.ru/projects/forum/?id=253631, не сочтите за рекламу, проект заброшен. Там правда было в перемешку - 2д монстры и 3д модельки окружения - но не суть)

#9
21:21, 16 янв 2022

Tortugas
> Нарисовать прямоугольник-"развертку" планеты и отображать её кусок,
> "протягивая" слева-напрво. Плюс скругленные границы.
А есть возможность вырезать круг из прямоугольника "на лету"? Это тоже решение.....

> А вобще, если у тебя пиксельарт (а иначе зачем ты пишешь в этой теме), хватит
> кадров 10-20 на планету (можно и гифкой), не надо там 60 раз в секунду
> обновлять
Нет, не пиксель арт, а 60 кадров в секунду для расчета размера планеты в зависимости от расстояния и плавности изменений

#10
21:44, 16 янв 2022

Ren
>Все это дело в браузере
> А есть возможность вырезать круг из прямоугольника "на лету"?
>60 кадров в секунду
На чем пишешь то, для начала? )

#11
0:27, 17 янв 2022

> html+js
Если javascript с canvas, так можно произвольным образом рендерить на клиенте.

#12
1:29, 17 янв 2022

> Если javascript с canvas, так можно произвольным образом рендерить на клиенте.
https://rextester.com/PBOC9833
Или лучше так: https://rextester.com/NFZ21670
F8 чтобы запустить.

#13
1:43, 17 янв 2022

Tortugas
> На чем пишешь то, для начала? )
JS, да.

FordPerfect
то что надо

#14
10:10, 17 янв 2022

Tortugas
> А вобще, как уже советовали, делай полу 3д. Окружение (пол, стены потолок)
> трёхмерные, по факту - это просто кубы с текстурами, а объекты (монстры,
> деревья, разная фигня типа сундуков) - плоские (по сути тоже 3д, просто
> вертикальная плоскость, всегда повернутая нормалью к игроку)
3D конечно кажется интересней и проще в плане расчета координат, видимости, физики и.т.д.
С другой стороны 2D смотрится по особому, как то по иному и более красочно. Чем то цепляет.


Tortugas
> (Я такое делал, например вот тут https://gamedev.ru/projects/forum/?id=253631,
> не сочтите за рекламу, проект заброшен. Там правда было в перемешку - 2д
> монстры и 3д модельки окружения - но не суть)
Интересная игра, а движок сильно от unity отличается? Исходники не выложены? Язык C# такой же.

А в плане затрат на отрисовку текстуры 3D дороже будут стоить чем 2D спрайты? Чтобы в высоком разрешении и красочно было сделано?

Страницы: 1 2 Следующая »
ПрограммированиеФорум2D графика и изометрия

Тема в архиве.