Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Написание игр _ Замкнутое пространство

Автор: volvo 6.01.2007 1:13

Приветствую всех, заглянувших в эту тему...

Вот, появилась у меня задумка, и одновременно с задумкой - проблема с выбором средства реализации... Дело в следующем... Мне для одного моего проекта (проект, в принципе, не игровой, но поскольку в играх нечто подобное может встречаться часто - спрошу здесь) понадобилась реализация замкнутого пространства с возможностью свободного перемещения по нему... Все бы ничего, если бы пространство включало в себя комнату, скажем, 10*10 метров и 3 метров высоты...

В моем случае все гораздо сложнее - приблизительные размеры помещения оцениваются в 50 (длина) километров и порядка 20 километров высоты, и в этом "помещении" нужно реализовать передвижение человека (ну, пусть будет перемещение камеры на высоте от человеческого роста до, скажем, одного километра) - что будет равноценно перемещению человека на ногах или на вертолете...

Если быть совсем точным, лучше всего объект, который я хочу реализовать, описывается так: полый цилиндр диаметром 20 километров длиной 50 километров, вид изнутри (Олег, ты правильно догадался, именно это я и хочу сделать smile.gif ), с возможностью установки в произвольных местах некоторых объектов (кубов, шаров, более сложных объектов, неважно, главное - реализовать сам объект и перемещение по нему, дальше я разберусь), с возможностью также перемещения "под водой", "в тумане", "в облаках", и т.п. эффекты...

Собственно вопрос: что лучше использовать (для успешной реализации всех перечисленных спецэффектов, и максимально реалистичного отображения объекта)? В принципе, доступными средствами на данный момент являются DirectX или OpenGL, среда разработки - предпочтительно Дельфи (возможно - FPC), но возможен переход на C++ (под OpenGL)... Если у кого был опыт разработки трехмерного мира подобного масштаба - просьба откликнуться, рассказать, с какими сложностями можно столкнуться в процессе разработки, возможно, есть какие-то сторонние (желательно - FreeWare) библиотеки, использование которых облегчит разработку?

Автор: arhimag 6.01.2007 6:37

Впринципе для этого можно использовать http://dronprogs.mirgames.ru/dgle.php, но если хочеться, чтобы фпс было побольше и порыться глубже, то Opengl ИМХО он проще и удобнее, правда от DirectX, имхо, можно добиться большей производительности. А так, и OpenGL и DirectX есть и под Delphi, все зависит от твоего желания, но OpenGL имхо менно для твоей задумки будет значительно проще!

Автор: Lapp 6.01.2007 20:31

Я извиняюсь за вторжение - не считаю себя специалистом в этом вопросе. Но один пункт меня заинтересовал..
Почему ты считаешь, что комната - это мало, а 50 км - много? Ведь ясно, что вопрос только в отношении размеров объема к размеру деталей. То есть, если мы захотим в комнате рассматривать микронные неровности, то задача усложнится больше, чем рассматривание метровых деталей в 50 км..
А если так, то на первый план выступает способ отображения объекта с разными уровнями детализации. И тут полагаться на графические библиотеки, имхо, не стоит. Надо иметь специальный движок, наподобие того, что используется во flight-симуляторах. Наверняка такие движки есть - хотя я их не знаю, как неспециалист.. Мне кажется, такую штуку интересно было бы разработать самому - но это вопрос желания и наличия времени.. - последнего как правило нету sad.gif.
Я правильно понял суть вопроса?

Автор: arhimag 6.01.2007 21:01

то что ты говоришь реализуеться достаточно легко, алгоритм бсп деревьев, его легко редактировать набором констант и блаагодаря этому можно редактировать детализация объектов.

Автор: volvo 6.01.2007 21:23

Цитата
Почему ты считаешь, что комната - это мало, а 50 км - много?
Объясняю, в чем основная проблема: дело в том, что при таком раскладе, что человек находится на внутренней поверхности цилиндра, для него НЕТ скрытого пространства, это во-первых (изгиб поверхности НЕ скрывает, а открывает все то, что на этой поверхности находится) достаточно поднять камеру вверх, и должно быть видно все, что творится на противоположной стороне цилиндра (при условии хорошего освещения и чистой атмосферы внутри объекта, а освещение будет прекрасным, и прозрачность атмосферы должна колебаться от абсолютно прозрачной до густого тумана, поэтому полагаться на скрытие деталей за туманом нельзя, да и размеры объектов могут быть километровыми...), а во-вторых, я вообще не могу никак сообразить, как реализовать то, что камера находится ВНУТРИ, а не снаружи цилиндра, ну, и с физикой дикие проблемы: цилиндр в принципе вращающийся, следовательно сила тяжести направлена не куда-нибудь, а от продольной оси цилиндра "под ноги человеку", это тоже привносит дополнительные проблемы (в частности - представь, как должна вести себя вода в таком мире)...

Так что, готовые движки скорее всего отпадают, буду пробовать делать на маленьких моделях вручную...

Автор: arhimag 6.01.2007 21:58

Volvo , поведай тайну, что это такое?
А по поводу графики, то действительно, это очень похоже на классический пример для бсп деревьев.

Автор: volvo 6.01.2007 22:09

Классический? Ты работал с DirectX ВООБЩЕ когда-нибудь (не на уровне "Hello, World!")? Можно посмотреть твои работы? Аналогично - с OpenGL, ссылку на ТВОИ программы приведи...

Автор: arhimag 7.01.2007 16:41

В directX работал только с directdraw, а для dricetX 3d знаю только теорию, на практике ничего на нем не делал, а вот OPENGL использовал и в достаточно большом количестве, и огромные ландшафты делал!

Автор: Altair 7.01.2007 17:20

Цитата
Volvo , поведай тайну, что это такое?

Можно я? smile.gif
Это будет трехмерное путешествие по миру инопланетного космического корабля!
Прикрепленное изображение
Незабываемое путешествие!