-
доброго времени суток. решил написать FirstPerson игру. столкнулся я вот с какой проблемой: если речь идёт об огромном игровом мире, то он просто обязан состоять из маленьких карт, соединённых между собой. я не могу придумать более-менее нормальный принцип подгрузки и отображения этих карт. Т.е. в какой момент её отобразить. два варианта я придумал:
1 - отображать карту, на которой находится игрок и все карты, на которые можно перейти непосредственно с этой. но так будут неимоверные затраты памяти.
2 - создать так называемые LinkObject. (тоннели и т.д.) он делится на 2 области. при нахождении игрока в первой отображается LinkObject и первая карта. во второй он же и вторая карта. но это геморойно.
очень прошу поделиться идеями по этому вопросу.
-
помоему наоборот, не тоннелирование более геморройно, чем подгрузка соседних карт :) хотя я бы предпочел подгрузку. Да и зачем грузить все соседние, достаточно пары ближайших (локация - квадрат, зачем грузить все куски находясь в одном углу? вот когда подойдем к противоположному углу - тогда и подгрузим), если локации действительно большие.
-
Ты имеешь в виду задать в опциях радиус видения и если расстояние от игрока до места стыковки меньше этого радиуса, то эта карта отображается?
-
Или лучше в редакторе задавать для каждой стыковки свой радиус. А как решена эта проблема в современых играх?
-
> [0] Agent[007] (03.09.08 22:42)
А ты возьми и посчитай затраты памяти...
И поймешь что свобю "огромную" карту можно всю уместить в памяти средненького компа...
-
я имел ввиду при игре на прохождение будет огромный игровой непрерывный мир. в памяти может и поместится, но при отображении будут огромные тормоза. поэтому весь этот огромный мир можно поделить на маленькие карты. все их отображать смысла нет. вот я и хочу, чтобы вы предлагали принципы выборки: что отображать, а что нет.
-
> в памяти может и поместится, но при отображении будут огромные
> тормоза.
Гуглт порталы и BSP-Tree
-
Огромное спасибо. трудновато, но достойно. есть на примете статьи по построению этих деревьев и зон видимости? но не в общих чертах, а на примере программного кода.
-
> [7] Agent[007] (04.09.08 22:34)
Я сам с ними знаком только в теории, пока не приходилось писать 3Д экшены в замкнутых пространствах.
-
-
Огромное всем спасибо. На основе этого принципа решил создать свой. Типа в редакторе карт все полигоны разбиваются пользователем на группы (также для удобства редактирования) и для каждой группы задаётся список видимых из этой области групп. жаль на практике удастся опробовать тока через 8 месяцев. в армии-то компа нету. хорошо хоть есть опера на мобиле. :) Ещё раз огромное спасибо.
-
Огромное всем спасибо. На основе этого принципа решил создать свой. Типа в редакторе карт все полигоны разбиваются пользователем на группы (также для удобства редактирования) и для каждой группы задаётся список видимых из этой области групп. жаль на практике удастся опробовать тока через 8 месяцев. в армии-то компа нету. хорошо хоть есть опера на мобиле. :) Ещё раз огромное спасибо.
-
> Типа в редакторе карт все полигоны разбиваются пользователем
> на группы (также для удобства редактирования) и для каждой
> группы задаётся список видимых из этой области групп.
На gamedev.ru за такое могут побить. :)
Не кошерно заставлять моделлеров вручную порталы строить...
-
ну всё немного не так. в моём редакторе карта отображается как список треугольников, из которых она состоит. каждый имеет своё имя (только на стадии редактирования) для удобства. и все треугольники делятся на группы (и для удобства и для разбиения карты на участки). а задание портала у меня это задание точки стыковки и имя стыкуемой карты. ну и задание его видимости из других зон. вот и всё.
-
Кстати, я по сути сейчас тоже заставляю моделлеров строить порталы. :)
-
Нашел ещё две книги. по описанию вроде хороши. Delphi & Direct3D. если дашь маил, могу выслать всю инфу по ним. сам пока не читал, мамка в магазине тока заказала, потом ещё пока посылка дойдёт... Ты не знаешь, можно найти старый ноутбук < 1000 рублей?
зы: если есть желание, можешь зайти на agent007.hoha.ru там есть очень недоделанная игра, которую я писал для OpenGL. у меня потом винт сгорел. :) но редактор карт похож на планируемый.
-
если сайт глючит, вот прямая ссылка. во время бега по карте мышь жать не рекомендую. там не исправлен баг с захватом drag'n'drop объектов.
agent007.hoha.ru/hf099_5th.rar
-
возник ещё немаловажный вопрос. ты не знаешь, где мона нарыть хорошие статьи по организации диалогов?
-
> по организации диалогов?
лучше брать из жизни. армейской ;)
-
> [18] KilkennyCat © (12.09.08 00:47)
о0 ппц да вы садистъ %)
-
:) так не сами диалоги, а их структуру. Как в различных случаях различные реплики выводить...
-
> [20] Agent[007] (12.09.08 07:37)
Подробнее опиши в чем проблема... Я пока не понял...
-
Я конечно придумал кое-что, но может кто нибудь лучше придумает. есть массив из реплик с заданными ответами. каждый ответ содержит ссылку на другую реплику. осталось задать номер первой реплики в зависимости от ситуации. есть массив условий. при выполнении первого условия один номер первой реплики, иначе проверяем следующее условие.
-
например если квест "убийство" не получен то реплика 3, иначе если квест "убийство" не выполнен, реплика 6, иначе реплика 8.
Может кто знает другой способ.
-
делаешь реплику, и к ней список условий.
Например.
Реплика:
Name = DIALOG_HANSOLO_FIRST
Text = "Привет, меня зовут Хан Соло!"
Условия:
(NPC = NPC_HANSOLO) and (FirstMeet = true) and (ParentDialog = DIALOG_NONE) and (Location = TATUIN_BAR)
Реплика:
Name = DIALOG_HANSOLO_FLY
Text = "Ты можешь полететь со мной за 10000 кредитов, авансом."
Условия:
NPC = NPC_HANSOLO
((ParentDialog = DIALOG_HANSOLO_FIRST) or (FirstMeet = false)) and (Location = TATUIN_BAR)
И так далее.
-
спасибо. попробую что-нибудь придумать.
-
спасибо. попробую что-нибудь придумать. изначально я хотел диалоги каждого нпс в отдельный файл.
-
Можно разбить карту на много маленьких, действительно маленьких, например 100 на 100 метров относительно игрового мира, и отображать все регионы, которые попадают в определенный радиус, например 1 км в игровом мире.