Что делать с предметами, которые только частично видимы?
| |
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) Попробуй может сменить объект на другой? На что можно заменить ДЕРЕВО? Или дом 5х5 секторов? Хотя не известно каким образом у меня будут строится дома - по частям или полностью, но это не меняет проблему. Надо как-то отображать большие обьекты. Quote (First) Или уменьшите радиус видимости? Я делаю онлайн-игру в изометрии. Физически уменьшить радиус видимости не прокатит, потому что любой нуб уберет пару строчек в коде и будет видеть дальше, чем остальные. У меня и так поле зрения игрока ограничено 20х20 секторов. Но есть предметы, которые занимают 1 сектор, а выглядят большими. Деревья например. Похожий вариант у меня на крайний случай - расширить поле зрения до 24х24 и "физически" ограничить видимость до 20х20. Но тогда есть риск того, что это ограничение обойдут и будут видеть дальше, чем можно. А еще это налаживает ограничение на величину обьектов в игре.
Есть еще вариант прописывать к каждому сектору список обьектов, которые ВИДИМЫ на нём. И если хоть на 1 секторе обьект видим, то выдавать этот обьект и размещать его за границей видимости так, чтоб было видно только часть его. Но тогда слишком много каши получится и слишком много запросов-ответов будет, потому что если обьект занимает 3х3 и перемещается, то это надо постоянно отправлять изменения 9 секторов.
ЗЫ:Щас накидаю в пеинте чтоб понятнее было. Вот это очень давняя и не моя картинка, но для того чтоб обьяснить пойдет. Зелёные сектора это радиус видимости персонажа. Соответственно у персонажа есть данные только об этих секторах, а о синем нету. На синем секторе находится красное дерево, но его видно и на других секторах.
Добавлено (03.09.2012, 01:31) --------------------------------------------- Quote (First) ЗЫ: пишу движок игры с нуля на JS.
Зачем? Потому что не нашел подходящего движка. А те, что немного были похожи на то, что мне надо - с закрытыми исходниками. Тоесть покопаться в них и что-то изменить не получится. Но я не на голом же JS пишу. Фреймворки там разные юзаю интересные
Сообщение отредактировал Sektoid - Понедельник, 03 Сентября 2012, 01:37 |
|
| |
First | Дата: Понедельник, 03 Сентября 2012, 08:00 | Сообщение # 4 |
Уолтер Брайт
Сейчас нет на сайте
| Sektoid, хмм... подкинул задачку. Я бы убрал дерево или установил его в другом секторе, но это тоже не выход( Что же делать? А ты много уже начал?
|
|
| |
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 сектора невидимыми для плавности подгрузки инфы.
|
|
| |
|