Следующая крупная задача, которая наклёвывается - необходимость сортировать все объекты по убыванию расстояния до камеры (так называемый "алгоритм Художника"),
чтобы выглядело всё достоверно, и дальние объекты не перекрывали ближние. (пока этот алгоритм не применен)
Это типа об очерёдности отрисовки слоёв изображений в зависимости от положения оных слоёв в пространстве?
А вот тут я даже не тронута развёртка... даже боюсь представить какая там будет боль в ж...
Хех... меня всё-ж спалили за моделированием, но я отмазался По делу, накосячил в развёртке, поэтому на малые детали осталось мало пикселей, да и пропорции как-то ухитрился профукать. Придётся всю развёртку перемещать, чтобы заполнить пространство разумно.
Следующая крупная задача, которая наклёвывается - необходимость сортировать все объекты по убыванию расстояния до камеры (так называемый "алгоритм Художника"),
Давай ещё больше пафосных названий с большой буквы сортировке спрайтов по экранной Y-координате придумаем Это делают абсолютно все двухмерные игры. Кроме тех, которые прям совсем двухмерные.
Если планируешь многоэтажность, то сначала по Z, а потом по Y.
Давай ещё больше пафосных названий с большой буквы сортировке спрайтов по экранной Y-координате придумаем
Не пафоса ради, а констатация того факта, что появится очередной головняк по сортировке ВСЕХ объектов: - тайлов карты, - итемов, - монстров, - выпущенных снарядов, - взрывов.
Не затратно для CPU (при грамотном кодинге), но если ты годами привык, что OpenGL отрисовывает
всё автоматически правильно (благодаря Z-буферу), то необходимость сортировать всё вручную - да, напрягает.
По сути, при изометрическом виде - удаление до камеры у тайлов получается вот такое (цифра - условное расстояние до камеры)
(по горизонтали - ось X, по вертикали Z)
Сначала рисуем всё, что на диагонали "9", потом все объекты на диагонали "8", и так далее.
Но даже при таком типа "грамотном" подходе неизбежно будут нюансы. Самый наглядный пример - широкий спрайт манкубуса, который с легкостью налезет на более близкие к камере тайлы, т.е. более близкие объекты будут частично затирать манкубуса, что визуально будет весьма раздражающим "артефактом". Я уже подумывал, а не включить ли в BlitzMax OpenGL-отрисовку, со всеми его плюшками и Z-буфером. Надеюсь, удастся избежать этой крайней меры.
широкий спрайт манкубуса, который с легкостью налезет на более близкие к камере тайлы
Я бы сделал как-то так
1. стартовое положение объекта (sortY) = Y центра (центр монстра или центр стены/пола, не центр спрайта)
2. если это тайл пола (не стена, конкретно пола), то sortY -= 64 (вместо 64 взять половину высоты тайла, или просто рисовать все тайлы полов в начале)
3. если это тень, то sortY -= 32
Итемы, монстры, снаряды и взрывы это всё один тип (условно актор или спрайт в зависимости от движка).
Тайлы карты, ну у меня они бы тоже были одним типом, если честно. ООП иерархия где-то такого вида:
- MapObject
- MapTile
- MapWall (?)
- Actor
- Projectile
- Unit (Monster / Player)
- Animated (Effect)
- Switch
- Door
Сортировать по клеткам не вижу смысла, если можно сортировать по вертикальной координате. Если что-то находится ниже визуально, то оно ближе к камере. Это 100%.
Збуфер в данной ситуации не очень поможет в связи с тем, что часть спрайтов у тебя будет прозрачная... ну если только ты не хочешь делать жёсткую прозрачность как в думе (1/0)
Та сборка сделана неважно, много лишнего в ущерб качеству. Карты плоские и однотипные с типичными ошибками новичка в маппинге. Музыка Ходжеса великолепна, но поставлена не по тематике, чисто наугад. Исходя из этого кощунства над святыней было принято решение доработать и привести в надлежащий вид этот проект.
Т.е. вторая часть никакая не вторая, а видоизмененная первая?
Ремастеринг. Не сколько видоизменённая, сколько практически полностью переделанная. Сам автор не узнавал некоторые карты, делалось всё с его ведома. Три карты новые, две пришлось делать с нуля (секретные 7 и 8) 32-я с контекста № 6, была изначально под PSX.
Затрудняюсь с точной датой. Зависит от автора оригинального проекта, если не будет против. Скорее всего не будет. Тогда после тестирования, сейчас баланс нужно подгонять под лёгкий скилл.
BeeWen Следил за его каналом на ютубе. Коридорности там хоть отбавляй было. Скрины залью в соответствующую группу вк) Удачи с завершением и ждём релиза
FoxPlays Работа с высотами - это здорово, но немного не хватает освещения. Местами теней побольше. Кстати, есть так чисто идея для размышлений. Был недавно хайп, про фотку, которая чёрно-белая, но из-за поставленных точек и линий, она становилась цветной (оптическая иллюзия). Что если у текстурок кирпичей сделать контраст поменьше. Скайбокс слишком яркий, и контрастирует, а так будет передавать часть цвета и даже в палитре появятся тона, которых по идее нет в думе + слега темнее окружение. Чисто за счёт визуала. Но это так, чисто для размышления, как говорится. Я так где-то пытался делать уже. И действительно работало.. по крайней мере мне так казалось.