Comments 7
На хабре было много статей как создать такой движок, но их проблема была в том что они
Были написаны не Вами.
Поэтому я решил переписать, с JS на свой любимый C++, код о котором говорится в начале этой статьи.
За это ставлю плюс.
Псевдо-3D
А почему псевдо? Что рейкастинг, что реймаршинг работают аналогичным образом везде. Только где-то есть фишки а ля тени/отражения и свободное вращение камеры в любую сторону.
А зачем вы shapes каждый кадр копируете по несколько раз? Дорого гонять память. А вообще рекомендовал бы посмотреть как устроен движок например у javidx9, там есть хороший пример как писать подобный движок. Например, вот вам пример с псевдографикой.
там платформо зависимый рейкастинг(он реализовал на сколько помню консольный по ресурсам минимальный основанную на консоли винды свою библиотеку), достаточно пускать по гайду вольфа(тоесть по ширине - стены, пол до горизонта самое простое, можно прикрутить кватернионы, убрать искажения от кватерниона ну и прочее), и рисовать линии, это просто чтобы разобраться а далее на сколько хватит запала, ну тоесть можно прикрутить редактор по квадратикам в карту ну и прочее, если это действительно интересно
я бы посоветовал другой "гайд RSt2ycuV8JA" на гитхабе есть пример к чему можно стремиться, но по итогу даже не знаю, по итогу захочется бсп или воксели
на реддите видел тоже пример, там математическая демка, человек всё реализовал внутри лучи света(прозрачное смешивание, свечение частичек), замок почти 3д, я даже не представляю как такое возможно )
Рейкастинг как раз универсальный. Консольные рутины да, плафтормозависимые, хотя сам olc уже довольно давно сделан универсальным. Но использовать olc где-то кроме как в учебном процессе практически нереально из-за лицензирования. Отсюда вывод - не надо использовать его код, а надо смотреть его пояснения как тот работает.
Псевдо-3D движок за 150 строк кода или рейкастинг для чайников