что MD поддерживает 3D полигоны
"поддерживает" эт сильно сказано. Ведь для переброски хотя бы одного пиксела в позицию XY, процу нужно выполнить кучу лишних операций. бенчмарк в SGDK - предел оптимизации в этом плане, позволяет залить экран с филл-рейтом 15-20 кадров в секунду. И это при шакальном разрешении 256*160.
15 FPS Даже если вызывать random() один раз на кадр.
я тут подумал, при такой дискретности даже 15-ти кадров должно хватить. Там, где для per-pixel вывода нужно 60 кадров, в потайловом выводе достаточно 60/8. Тем паче при трассировке стен зачастую одна треть экрана пустует (если не смотреть на стенку в упор). Так что, вполне неплохой результат, имхо.
Но оптимизация хотя бы до 30-ти кадров не будет лишней, конечно же.
Добавлено позже: например этот простой движок
По объёму строк он вроде бы и прост.
Но некоторые ф-ции высокоуровневые JS непонятно как перенести в сишку.
К примеру
ray = map.cast(player, player.direction + angle, this.range); или
? inspect(stepX, 1, 0, origin.distance, stepX.y)
: inspect(stepY, 0, 1, origin.distance, stepY.x);и с JS я практически не знаком.
Тут тоже кажется простым на первый взгляд.
Но тоже есть свои подводные камни.
Как например класс векторов надо в массив структур переделать
vector<pair<float, float>> p;
Или как быть с этим?
sort(p.begin(), p.end(), [](const pair<float, float> &left, const pair<float, float> &right) {return left.first < right.first; });
Уже готовая ф-ция сортировки.
более доходчивые примеры пытаюсь найти.