PDA

Просмотр полной версии : Crawlspsace -- псевдо-3D движок для пошаговых ролевых игр.



Sandro
25.08.2021, 20:26
Поскольку общественность поддержала идею, то проект хоть и медленно, но верно развивается. Поэтому во избежание путаницы (опрос -- это опрос, а обсуждение -- это обсуждение) открываю тему, специально посвященную движку.

Благо, только что что пройден важный этап: в движке теперь есть полноценное текстурирование. На стены могут накладываться произвольные текстуры разрешением 32x64. Правда, однобитные, но и так одна текстура занимает 256 байт, а памяти у нас немного.

Ходить в демке пока ещё нельзя (нет, собственно, обработки лабиринта, да и самого лабиринта), но она вполне работает. Выкладываю во всеобщий доступ.
76016
76015

Manwe
26.08.2021, 10:39
Прикольно, работает :)

Sandro
26.08.2021, 16:35
В общем, для эксперимента я сделал версии, выводящие изображение байтами и даже словами. В общем, работает быстро. В принципе, можно при смене локации первое обновление делать словами в шахматку 2x2, потом добивать байтами опять же в шахматку, ну а дальше уже достраивать двухпиксельными, а потом однопиксельными столбцами. Тогда выходная картинка в покое будет попиксельного качества, ну а если игрок хочет двигаться быстро, то заканчивать текущую грубую стадию и сразу начинать рисовать новую локацию.
Тогда будет движение в реальном времени! Хоть формально и походовка.

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

76023
76022

Sandro
27.08.2021, 19:52
В общем, Progressive Refinement я сделал. Если хочется посмотреть повторно, то надо нажать ноль.
76030

Sandro
29.08.2021, 12:38
Определился с графикой начального этапа для стен. Будет атлас 256x64, т.е. 8 текстур. В принципе, этого пока достаточно. В финишных цветах всё будет выглядеть так:
76032

Sandro
02.09.2021, 19:43
Ну вот, практически осилил рисование стенок под произвольным углом. Нет, в Crawlspace его всё-таки не будет, движок планируется квадратно-гнездовой, но на будущее может, и пригодится. Хотя .. возможно будет опция делать уголки под 45. Ну и взгляд по 8 направлениям, а не по 4.
Возможно.
76047

Sandro
02.05.2022, 23:02
Добавил возможность смотреть на движок в динамике. Передвигаться можно только вперёд и и назад, соответствующими стрелочками. Остальные клавиши в readme.
77265
Ну там ещё внутри полный рефакторинг движка (так и оставлю наверное, пока что устраивает), индивидуальная раскраска текстур и всякие внутренние вещи.

Видео, пожалуй, завтра.

TomaTLAB
03.05.2022, 15:37
Ну и взгляд по 8 направлениям, а не по 4. Перс же будет поворачивать ±90°? Вот пусть и поворачивается за две фазы по 45°.

Sandro
10.09.2022, 15:26
Кстати, и эту тему забыл обновить. Вот, что есть в августовской версии движка:

77770

BlaireCas
10.09.2022, 16:38
Кстати, и эту тему забыл обновить. Вот, что есть в августовской версии движка:

А круто даже. Расчеты на проекции в риалтайм наверное сложняк, там мат.анализ какой-то небось! :)

Sandro
10.09.2022, 17:48
Это не реалтайм :) Движок пошаговый именно за счёт размена скорости на качество. Хотя в нём используется постепенное улучшение картинки, т.е. рендер начинается с низкого качества. И в принципе, можно около трёх шагов в секунду делать, если картинка 64x256 устраивает. Я же вон повыше выкладывал версию 220502a, в ней можно на это посмотреть.

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

BlaireCas
10.09.2022, 22:51
честная трассировка луча
Вот это даже интересно как делалось на БК где даже умножения с делением нету. Так-то понятно - по каждому X экрана идет луч (на игровом поле будто линию рисуем) - ищем пересечения с непустым кубиком поля. Потом мол с какой его стенкой надо определить. А дальше как мол разве не тангенсы/катангенсы нужны чтобы определить в какой именно пиксель стенки попал луч?

Sandro
11.09.2022, 18:29
Нет, не нужны. Для случая, когда взгляд сонаправлен с одной из координатных осей, достаточно теоремы Фалеса о пересекающихся отрезках. Правда, когда я написал пробный рендер на PC, то посмотрел я на некоторые особые случаи трассировки и как-то мне грустно сделалось переписывать всё это на ассемблер. Поэтому пока что я просто посчитал таблицу трасс, да и всё. Потом уберу из неё тривиальные пересечения. Ну а потом, наверное, всё же перепишу на чистую математику. Код выходит довольно простой и быстрый, но местами заморочный. Ну а пока так. Хотя в принципе есть промежуточный вариант с таблицей всего в 128 байт. Возможно, возьму его.

Соейчас мне более интересна полноценная ходьба по карте, а далее -- отрисовка спрайтов.