| 
				
				Что делать с предметами, которые только частично видимы?
				 |   |  
| 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 сектора невидимыми для плавности подгрузки инфы. 
 |  
| 
 | 
 |    |     
		
		 
 |