Конференция "Игры" » большая карта должна состоять из маленьких!
 
  • Agent[007] (03.09.08 22:42) [0]
    доброго времени суток. решил написать FirstPerson игру. столкнулся я вот с какой проблемой: если речь идёт об огромном игровом мире, то он просто обязан состоять из маленьких карт, соединённых между собой. я не могу придумать более-менее нормальный принцип подгрузки и отображения этих карт. Т.е. в какой момент её отобразить. два варианта я придумал:
    1 - отображать карту, на которой находится игрок и все карты, на которые можно перейти непосредственно с этой. но так будут неимоверные затраты памяти.
    2 - создать так называемые LinkObject. (тоннели и т.д.) он делится на 2 области. при нахождении игрока в первой отображается LinkObject и первая карта. во второй он же и вторая карта. но это геморойно.
    очень прошу поделиться идеями     по этому вопросу.
  • antonn © (04.09.08 00:24) [1]
    помоему наоборот, не тоннелирование более геморройно, чем подгрузка соседних карт :) хотя я бы предпочел подгрузку. Да и зачем грузить все соседние, достаточно пары ближайших (локация - квадрат, зачем грузить все куски находясь в одном углу? вот когда подойдем к противоположному углу - тогда и подгрузим), если локации действительно большие.
  • Agent[007] (04.09.08 06:51) [2]
    Ты имеешь в виду задать в опциях радиус видения и если расстояние от игрока до места стыковки меньше этого радиуса, то эта карта отображается?
  • Agent[007] (04.09.08 06:57) [3]
    Или лучше в редакторе задавать для каждой стыковки свой радиус. А как решена эта проблема в современых играх?
  • @!!ex © (04.09.08 07:16) [4]
    > [0] Agent[007]   (03.09.08 22:42)

    А ты возьми и посчитай затраты памяти...
    И поймешь что свобю "огромную" карту можно всю уместить в памяти средненького компа...
  • Agent[007] (04.09.08 09:44) [5]
    я имел ввиду при игре на прохождение будет огромный игровой непрерывный мир. в памяти может и поместится, но при отображении будут огромные тормоза. поэтому весь этот огромный мир можно поделить на маленькие карты. все их отображать смысла нет. вот я и хочу, чтобы вы предлагали принципы выборки: что отображать, а что нет.
  • @!!ex © (04.09.08 13:31) [6]
    > в памяти может и поместится, но при отображении будут огромные
    > тормоза.

    Гуглт порталы и BSP-Tree
  • Agent[007] (04.09.08 22:34) [7]
    Огромное спасибо. трудновато, но достойно. есть на примете статьи по построению этих деревьев и зон видимости? но не в общих чертах, а на примере программного кода.
  • @!!ex © (04.09.08 23:16) [8]
    > [7] Agent[007]   (04.09.08 22:34)

    Я сам с ними знаком только в теории, пока не приходилось писать 3Д экшены в замкнутых пространствах.
  • Sapersky (05.09.08 20:50) [9]
    Здесь есть статьи с псевдокодом:
    http://www.devmaster.net/articles.php
    У Henri Hakl ( http://www.devmaster.net/articles/graphics_alg/ ), точно помню, были примеры для всех описанных алгоритмов на Delphi + Direct3D8. Не могу нигде найти ссылки, но если надо, могу выложить.
  • Agent[007] (05.09.08 23:46) [10]
    Огромное всем спасибо. На основе этого принципа решил создать свой. Типа в редакторе карт все полигоны разбиваются пользователем на группы (также для удобства редактирования) и для каждой группы задаётся список видимых из этой области групп. жаль на практике удастся опробовать тока через 8 месяцев. в армии-то компа нету. хорошо хоть есть опера на мобиле. :) Ещё раз огромное спасибо.
  • Agent[007] (05.09.08 23:46) [11]
    Огромное всем спасибо. На основе этого принципа решил создать свой. Типа в редакторе карт все полигоны разбиваются пользователем на группы (также для удобства редактирования) и для каждой группы задаётся список видимых из этой области групп. жаль на практике удастся опробовать тока через 8 месяцев. в армии-то компа нету. хорошо хоть есть опера на мобиле. :) Ещё раз огромное спасибо.
  • @!!ex © (06.09.08 07:18) [12]
    > Типа в редакторе карт все полигоны разбиваются пользователем
    > на группы (также для удобства редактирования) и для каждой
    > группы задаётся список видимых из этой области групп.

    На gamedev.ru за такое могут побить. :)
    Не кошерно заставлять моделлеров вручную порталы строить...
  • Agent[007] (06.09.08 07:54) [13]
    ну всё немного не так. в моём редакторе карта отображается как список треугольников, из которых она состоит. каждый имеет своё имя (только на стадии редактирования) для удобства. и все треугольники делятся на группы (и для удобства и для разбиения карты на участки). а задание портала у меня это задание точки стыковки и имя стыкуемой карты. ну и задание его видимости из других зон. вот и всё.
  • @!!ex © (06.09.08 09:17) [14]
    Кстати, я по сути сейчас тоже заставляю моделлеров строить порталы. :)
  • Agent[007] (06.09.08 11:48) [15]
    Нашел ещё две книги. по описанию вроде хороши. Delphi & Direct3D. если дашь маил, могу выслать всю инфу по ним. сам пока не читал, мамка в магазине тока заказала, потом ещё пока посылка дойдёт... Ты не знаешь, можно найти старый ноутбук < 1000 рублей?
    зы: если есть желание, можешь зайти на agent007.hoha.ru там есть очень недоделанная игра, которую я писал для OpenGL. у меня потом винт сгорел. :) но редактор карт похож на планируемый.
  • Agent[007] (06.09.08 12:04) [16]
    если сайт глючит, вот прямая ссылка. во время бега по карте мышь жать не рекомендую. там не исправлен баг с захватом drag'n'drop объектов.

    agent007.hoha.ru/hf099_5th.rar
  • Agent[007] (06.09.08 18:40) [17]
    возник ещё немаловажный вопрос. ты не знаешь, где мона нарыть хорошие статьи по организации диалогов?
  • KilkennyCat © (12.09.08 00:47) [18]

    > по организации диалогов?

    лучше брать из жизни. армейской ;)
  • Renegat © (12.09.08 01:01) [19]
    > [18] KilkennyCat ©   (12.09.08 00:47)

    о0 ппц да вы садистъ %)
  • Agent[007] (12.09.08 07:37) [20]
    :) так не сами диалоги, а их структуру. Как в различных случаях различные реплики выводить...
  • @!!ex © (12.09.08 10:22) [21]
    > [20] Agent[007]   (12.09.08 07:37)

    Подробнее опиши в чем проблема... Я пока не понял...
  • Agent[007] (12.09.08 16:19) [22]
    Я конечно придумал кое-что, но может кто нибудь лучше придумает. есть массив из реплик с заданными ответами. каждый ответ содержит ссылку на другую реплику. осталось задать номер первой реплики в зависимости от ситуации. есть массив условий. при выполнении первого условия один номер первой реплики, иначе проверяем следующее условие.
  • Agent[007] (12.09.08 16:24) [23]
    например если квест "убийство" не получен то реплика 3, иначе если квест "убийство" не выполнен, реплика 6, иначе реплика 8.
    Может кто знает другой способ.
  • @!!ex © (14.09.08 12:39) [24]
    делаешь реплику, и к ней список условий.
    Например.

    Реплика:
    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)

    И так далее.
  • Agent[007] (14.09.08 15:47) [25]
    спасибо. попробую что-нибудь придумать.
  • Agent[007] (14.09.08 15:56) [26]
    спасибо. попробую что-нибудь придумать. изначально я хотел диалоги каждого нпс в отдельный файл.
  • keal (23.09.08 11:12) [27]
    Можно разбить карту на много маленьких, действительно маленьких, например 100 на 100 метров относительно игрового мира, и отображать все регионы, которые попадают в определенный радиус, например 1 км в игровом мире.
 
Конференция "Игры" » большая карта должна состоять из маленьких!
Есть новые Нет новых   [134430   +4][b:0][p:0.001]