Вторник, 19 Ноября 2024, 19:35

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Что делать с предметами, которые только частично видимы?
SektoidДата: Воскресенье, 02 Сентября 2012, 23:54 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Вот допустим у игрока радиус видимости 20х20.
Стенка ЗАНИМАЕТ один сектор, но ВИДНО её на 3х секторах. Тоесть на том, что занимает + 2 сектора, что выше.
Поскольку у меня динамически подгружается вся карта и контент, то получается, что на некоторых секторах игрок должен будет видеть стенку, но не будет её видеть, поскольку её реальное положение слишком далеко.
Че делать?
ЗЫ: пишу движок игры с нуля на JS.


Сообщение отредактировал Sektoid - Воскресенье, 02 Сентября 2012, 23:55
FirstДата: Понедельник, 03 Сентября 2012, 00:54 | Сообщение # 2
Уолтер Брайт
Сейчас нет на сайте
Quote (Sektoid)
ЗЫ: пишу движок игры с нуля на JS.


Зачем? Попробуй может сменить объект на другой? Или уменьшите радиус видимости?

Хоть как-то пытаюсь тебе помочь.

Будет хорошо, если ты выложишь скрин, что бы понять лучше обстановку)
SektoidДата: Понедельник, 03 Сентября 2012, 01:31 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Quote (First)
Попробуй может сменить объект на другой?

На что можно заменить ДЕРЕВО? biggrin Или дом 5х5 секторов? Хотя не известно каким образом у меня будут строится дома - по частям или полностью, но это не меняет проблему. Надо как-то отображать большие обьекты.
Quote (First)
Или уменьшите радиус видимости?

Я делаю онлайн-игру в изометрии. Физически уменьшить радиус видимости не прокатит, потому что любой нуб уберет пару строчек в коде и будет видеть дальше, чем остальные.
У меня и так поле зрения игрока ограничено 20х20 секторов. Но есть предметы, которые занимают 1 сектор, а выглядят большими. Деревья например.
Похожий вариант у меня на крайний случай - расширить поле зрения до 24х24 и "физически" ограничить видимость до 20х20. Но тогда есть риск того, что это ограничение обойдут и будут видеть дальше, чем можно. А еще это налаживает ограничение на величину обьектов в игре.

Есть еще вариант прописывать к каждому сектору список обьектов, которые ВИДИМЫ на нём. И если хоть на 1 секторе обьект видим, то выдавать этот обьект и размещать его за границей видимости так, чтоб было видно только часть его. Но тогда слишком много каши получится и слишком много запросов-ответов будет, потому что если обьект занимает 3х3 и перемещается, то это надо постоянно отправлять изменения 9 секторов.

ЗЫ:Щас накидаю в пеинте чтоб понятнее было.
Вот это очень давняя и не моя картинка, но для того чтоб обьяснить пойдет. Зелёные сектора это радиус видимости персонажа. Соответственно у персонажа есть данные только об этих секторах, а о синем нету. На синем секторе находится красное дерево, но его видно и на других секторах.


Добавлено (03.09.2012, 01:31)
---------------------------------------------
Quote (First)
ЗЫ: пишу движок игры с нуля на JS.

Зачем?

Потому что не нашел подходящего движка. А те, что немного были похожи на то, что мне надо - с закрытыми исходниками. Тоесть покопаться в них и что-то изменить не получится. Но я не на голом же JS пишу. Фреймворки там разные юзаю интересные smile


Сообщение отредактировал Sektoid - Понедельник, 03 Сентября 2012, 01:37
FirstДата: Понедельник, 03 Сентября 2012, 08:00 | Сообщение # 4
Уолтер Брайт
Сейчас нет на сайте
Sektoid, хмм... подкинул задачку. Я бы убрал дерево или установил его в другом секторе, но это тоже не выход( Что же делать? wacko А ты много уже начал?
dddmaxДата: Понедельник, 03 Сентября 2012, 12:43 | Сообщение # 5
был не раз
Сейчас нет на сайте
Можно рисовать все, а то что игрок видеть не должен, закрыть туманом войны.
SektoidДата: Понедельник, 03 Сентября 2012, 17:05 | Сообщение # 6
почетный гость
Сейчас нет на сайте
Quote (First)
А ты много уже начал?

Всмысле? У меня сейчас рабочий движок, но он не грузит дерево, пока синий сектор не будет в радиусе видимости. И меня напрягает когда дерево вдруг появляется ниоткуда при быстром перемещении.
Quote (dddmax)
Можно рисовать все, а то что игрок видеть не должен, закрыть туманом войны.

Мне надо наоборот показать игроку то, что он должен видеть))


Сообщение отредактировал Sektoid - Понедельник, 03 Сентября 2012, 17:05
FirstДата: Понедельник, 03 Сентября 2012, 18:43 | Сообщение # 7
Уолтер Брайт
Сейчас нет на сайте
Quote (Sektoid)
Всмысле? У меня сейчас рабочий движок, но он не грузит дерево, пока синий сектор не будет в радиусе видимости. И меня напрягает когда дерево вдруг появляется ниоткуда при быстром перемещении.


А может, унести его за края сектора? То есть, игрок будет идти, а за краями сектора, где игрок не видеть, появляется дерево и уже свободно перемещается =) Sorry, если не подходит)
TimKruzДата: Понедельник, 03 Сентября 2012, 19:09 | Сообщение # 8
старожил
Сейчас нет на сайте
Quote (dddmax)
Можно рисовать все, а то что игрок видеть не должен, закрыть туманом войны.

Если так сделать, получится
Quote (Sektoid)
что любой нуб уберет пару строчек в коде и будет видеть дальше, чем остальные.


Sektoid, это же простейшая задача. Разбиваешь, например, это дерево на 3 фрагмента, и размещаешь их один над другим в разных секторах. И получится, что сколько фрагментов грузится, столько и показывается. Или дом пять на пять клеток - разбить на 25 картинок (скорей всего выйдет меньше) и разместить их так, как нужно. Тут ещё и сокращение ресурсов получается: можно из дома 5x5 сделать дом 10x3 или 6x15, потому что внутренние фрагменты наверняка повторяются (окна и т.п.). Или из дерева 3x1 сделать деревья 4x1, 5x1 и т.п. - фрагмент №2 (средний в дереве высотой 3) одинаковый.

А если возникает проблема с наложением и расположением слоев, то решение тоже простое: разбить карту на слои, один слой - земля, второй - нижний (ниже игрока, но выше земли), третий - верхний (выше игрока и всего остального); можно сделать больше, типа два нижних (один ниже другого) и два верхних - собственно это, наверное, лучший выбор в RPG (деталей, расположенных в разных слоях, может быть много, особенно в интерьерах). Соответственно, земля рисуется первой, потом два нижних слоя, потом игроки и NPC, в конце - два верхних.


SektoidДата: Вторник, 04 Сентября 2012, 03:05 | Сообщение # 9
почетный гость
Сейчас нет на сайте
TimKruz, как вариант, но тогда с таким же успехом можно сделать так:
Quote (Sektoid)
Есть еще вариант прописывать к каждому сектору список обьектов, которые ВИДИМЫ на нём. И если хоть на 1 секторе обьект видим, то выдавать этот обьект и размещать его за границей видимости так, чтоб было видно только часть его. Но тогда слишком много каши получится и слишком много запросов-ответов будет, потому что если обьект занимает 3х3 и перемещается, то это надо постоянно отправлять изменения 9 секторов.

Тоже типа разбиение обьектов на сектора, но с принципом
Quote (First)
А может, унести его за края сектора? То есть, игрок будет идти, а за краями сектора, где игрок не видеть, появляется дерево и уже свободно перемещается
DinoieraДата: Четверг, 06 Сентября 2012, 22:05 | Сообщение # 10
участник
Сейчас нет на сайте
а теперь вопрос зачем это надо...
по логике игр должно быть так...
Дерево появляется только тогда когда становится видим весь сектор


Помогаю чем могу и прошу взаимной помощи)
DCH - сайт разработчиков игр(новый проект)
SektoidДата: Суббота, 15 Сентября 2012, 01:39 | Сообщение # 11
почетный гость
Сейчас нет на сайте
Ну чтоб более реалистично было. А вдруг это не дерево, а дом 5х5 секторов? И ты идешь-идешь, и тут бац! Дом появился перед носом.

Добавлено (15.09.2012, 01:39)
---------------------------------------------
Пришел к выводу, что такая фича в браузерке не стоит того, чтоб её реализовывать. Увеличится трафик, быстродействие уменьшится, потрачу кучу времени на это.
Сделаю что-то среднее - на секторах будет инфа только о предметах, которые НАХОДЯТСЯ на этом секторе. И если персонаж видит хоть один сектор, на котором находится дом, то грузится дом. + сделаю 1-2 сектора невидимыми для плавности подгрузки инфы.

  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг