Здравствуйте, у меня есть два вопроса по unity3d. Все помнят игру Spore? Там ландшафт на планетах генерировался случайно, случайно генерировались поселения, растения, водоемы и пр. Так же было и в Darkspore (по слухам, сам я не играл). То как деревья делать динамически, понятно - в определенной зоне поставить определенное количество деревьев в рандомных точках. А что делать с ландшафтом, водоемами? Как их по уровню распределить динамически?
Второй вопрос: что будет, если вместо деревьев из редактора юнити делать их простыми модельками? Производительность не уменьшится? То же самое с травой: если делать ее не с помощью редактора уровней, а отдельным объектом каждый раз, то производительность не уменьшится? Если это не безумие, тогда сколько можно расставить таких растительных объектов по локации, чтобы было нормально играть, в случае если: 1) если они просто модельки на карте 2) если они динамические: ну там стрельнул - дерево сломалось, на траву наступил - примялась ? Юнька супер, юнька класс! Блитз мы смоем в унитаз!!
стрельнул - дерево сломалось, на траву наступил - примялась
Это вам к создателям FarCry 2 надо обращаться)) Насколько я знаю, Unity большого кол-ва объектов не поддерживает. Насчет ландшавта вам url=http://gamecreatingcommunity.ru/forum/86-1650-1]сюда[/url] Про динамическое распределение по уровню - Random вам в руки и мануал на шею
ЦитатаDefake ()
что будет, если вместо деревьев из редактора юнити делать их простыми модельками?
Можно. Нужен просто особый материал, при котором стандартный Terrain из моделек делает 2d объекты. В стандартном паке его нет, но деревья можно скачать где-то на форуме. Не помню где, но я качал. Там в паке есть нормальный материал. А вот про траву объектами - это, наверно, только через терраин. Там ведь в разделе травы можно и просто 3д модельки поставить.
Сообщение отредактировал VolkOrievith - Чт, 13 Мар 2014, 15:35
Ну вообще я имел в виду не изменение ландшафта в игре, а про генерацию ландшафта перед входом в игру. То есть чтобы каждый раз локация была новой. Но надобность отпала) А за эту тему - очень спасибо, пригодится =)
Цитата
Насколько я знаю, Unity большого кол-ва объектов не поддерживает
Я проводил небольшой тест - ставил спаунер кубиков и через каждые 0.005f дельта тайма там создавался новый. Когда перевалило за 2100 - резко начало лагать. Но это ведь 2100 объектов, которые единовременно падают, отскакивают, сталкиваются. Ставил после 2100 блок, и тогда, когда все кубики достигали земли и успокаивались, лагать переставало. Значит, статичные объекты, вроде деревьев, не должны ведь занимать столько ресурсов, даже если у каждого будет код?
Цитата
Нужен просто особый материал, при котором стандартный Terrain из моделек делает 2d объекты
Из деревьев делать 2д объекты? Эмм... Я что-то не понимаю?
Цитата
через терраин. Там ведь в разделе травы можно и просто 3д модельки поставить.
А код к каждому объекту травы можно поставить? Скорее всего это не то.. Я хочу добавить и что-то вроде спаунера травы и к каждому мини-кустику простенький код: Есть стадия роста, и есть скрипт умирания, когда траву съедают. Если это будет возможно, то и что-то типа примятия, когда наступаешь на траву Юнька супер, юнька класс! Блитз мы смоем в унитаз!!
Сообщение отредактировал Defake - Пт, 14 Мар 2014, 06:24
Эмм.. А может это исправили в старших версиях? Или может просто сделать, чтобы поддерживались коллайдеры вблизи, а дальние отключались на время? Просто тогда мне не имеет смысла больше изучать unity. Или же вы имели в виду, что unity не может справиться с лагами, когда идет взаимодействие коллайдеров? Если так, то всё нормально, я об этом знаю, и мне не нужны сильные возможности физики. Мне просто нужно много статичных объектов, у которых есть код.
Цитата
Чтобы "колыхалась"? Это делается не кодом, а шейдером
Нет, мне не нужно, чтобы трава колыхалась. (Кстати, до сих пор не знаю, что такое шейдеры.. Надо бы почитать)
Цитата
Для этого вам нужен комп типа такого
Ну почему? Я же не собираюсь делать столько травы. У меня есть несколько водоемов - около них растет травка, на двух полянках, так же есть пару областей из кустарников, и есть лес. Я хочу сделать что-то типа мини-экосистемы. Чтобы травоядные животные могли есть траву. Почему я не могу добавить код каждому растительному объекту? Код ведь совсем несложный, строчек 10-20 (В случае с травой, например. У дерева, скорее всего, сложнее) Юнька супер, юнька класс! Блитз мы смоем в унитаз!!
Сообщение отредактировал Defake - Пт, 14 Мар 2014, 12:19
Вы понимаете что вообще не один 3D двиг не справиться с такой задачей. Во-первых, трава нужна везде одинакова - иначе не красиво. Во-вторых, Вы считать траву не пробовали? И даже не прикинули. Миллионы скриптов - Вы представляете, что это? Трава гнётся шейдером, тригер для коровы - тригером. Правила форума · участникGCC
игнат, по совету скачал Far Cry 2, посмотрел. Ведь тот движок справился. Трава сгорает, а значит на ней есть скрипты, она придавливается, когда по ней проезжаешь машиной. Кусты гнутся, уничтожаются стебель за стеблем, деревья ломаются, всё подвержено пожарам. Там ведь тоже значит много скриптов. Но у меня локация в разы меньше и растительности там тоже не столько же. И почему миллионы? Тыщи две - это просто максимальный максимум. "кустики" травы - я и назвал, чтобы вы не подумали, что я хочу сделать скрипт для каждой травинки. Я имею в виду для каждой единицы травы. Ну то есть как бы кустик)
Цитата
Естественно
Я в смысле, это предусмотрено в движке, что коллайдеры отключаются или это самому писать?
Цитата
Или же вы имели в виду, что unity не может справиться с лагами, когда идет взаимодействие коллайдеров?
Вы так и не ответили. Вы имели в виду это или то, что в принципе юнити не держит большое количество коллайдеров. Как лимит объектов на сцене. Или не всё так плохо? Юнька супер, юнька класс! Блитз мы смоем в унитаз!!
Для сгорания не нужны скрипты на каждой травинке. Нужен один скрипт "включающий" огонь, изменяющий текстуру распределения травы по поверхности и заменяющий текстуру самой поверхности.
Цитата
деревья ломаются
Это тоже можно сделать двумя способами. Как собираетесь Вы (также сделано во многих плагинах "разрушения" для Юнити) - на каждом стволе скрипт, который подменяет единый меш на куски. Или второй способ - единый скрипт, который в реальном времени генерит эти куски. Второй способ сложнее, но думаю в FarCry реализован именно он.
изменяющий текстуру распределения травы по поверхности
трава исчезает и деревья становятся без листьев. Это всё текстуры? waruiyume, seaman, спасибо за огонь, почитаю.
Цитата
единый скрипт, который в реальном времени генерит эти куски
Не понимаю, как это. Ну допустим да, скрипт отлавливает попадание в дерево пули и создает упавшую ветку. А в самом дереве как в этом случае исчезнет ветка? Юнька супер, юнька класс! Блитз мы смоем в унитаз!!
Как-как? Удаляется. Делается динамическая система разрушения объектов. А если будет много времени и средств, то можно всё сделать раздельно. Правила форума · участникGCC
игнат, вот я про это. Как удаляется, моделька-то целостная? Или как раз куча моделек веток и они как-то на уровне собираются вместе? Или же моделька, в которой сгруппированы ветки? Тогда ведь тоже код в кусте нужен, чтобы понять, какую часть удалять
И, кстати, про сгибание травы. Как там дело обстоит?
Цитата
единый скрипт, который в реальном времени генерит...
Так же? (только не пойму, можно ли будет скриптом отловить юньковствую траву?) Юнька супер, юнька класс! Блитз мы смоем в унитаз!!
Сообщение отредактировал Defake - Чт, 20 Мар 2014, 20:19