danilaxxl danilaxxl

CollectableItemData.cs

[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]

GoloGames GoloGames

vadya_ivan, рад, что вам игра показалась интересной : )

P.S. Кстати уже доступна бесплатная демо-версия в Steam

vadya_ivan vadya_ivan

Визуал, задумка, музыка , механики, все в цель

GoloGames GoloGames

Ato_Ome, спасибо за позитивные эмоции, будем стараться : )

Ato_Ome Ato_Ome

Потрясающий результат, все так четенько, плавненько)
То ли саунд, то ли плавность напомнили мне игрушку World of Goo, удачи вам в разработке и сил побольше дойти до релиза!)

Cute Fox Cute Fox

Graphics are a little cool, good HD content. But this game doesn't cause nary interest me.
However the game is well done.

GMSD3D GMSD3D

Почему действие после всех условий выполняется?
[step another object]

Zemlaynin Zemlaynin

Jusper, Везде, но наугад строить смысла нет. Нужно разведать сперва территорию на наличие ресурсов.

Jusper Jusper

Zemlaynin, а карьеры можно будет везде запихать?
Или под них "особые" зоны будут?

Zemlaynin Zemlaynin

Это так скажем тестовое строительство, а так да у города будет зона влияния которую нужно будет расширять.

Jusper Jusper

А ссылка есть?

Jusper Jusper

Я не оч понял из скриншота, как вообще работает стройка. У игрока будет как бы поле строительства?

split97 split97

в игру нужно добавить время песочные часы в инвентаре, пока бегаешь наберается усталость и ты очень тормозной мобильный враг просто убевает

split97 split97

в игру нужно добавить время песочные часы в инвентаре, пока бегаешь наберается усталость и ты очень тормозной мобильный враг просто убевает

ViktorJaguar ViktorJaguar

Почему я нигде не могу найти нормальный туториал, где покажут как экипировать предмет (например, меч) в определенную (выделенную под оружие) ячейку???

Логотип проекта Unreal Engine

BSP и браши

О числах, или вместо предисловия

Небольшое отступление, никак не связанное с основным материалом данной подстатьи.
По сути, эта инфа никаким образом не касается создания нашего уровня (и тем более, брашей), использовать ее мы ни разу не будем. Но она может пригодиться вам, когда вы будете создавать свои уровни в будущем.

Итак, немногим ранее я обещал, что скажу несколько слов о подборе чисел для масштабирования объектов. Вот что мы сделаем. Сделайте две копии любой стороны любого уголка, которые мы создали в конце предыдущего раздела, причем масштабы их длинны поменяйте на 1.00 (хотя это не обязательно). Попробуйте сделать из них длинную стенку, совместив торцы (чтобы между ними не было зазора, и чтобы одна стенка не залазила внутрь второй). Теперь поменяйте масштаб длинны одной из них на 1.25. Попробуйте снова совместить их торцы. Удалось? Конечно. Проделайте ту же процедуру для масштабов 1.125, 1.5, 1.75, 1.225 и т.д.. Теперь попробуйте выставить масштаб, к примеру, 1.3. Вот теперь вы их ни за что не выровняете, так как либо между ними будет зазор, либо они будут накладываться, что будет выходить вам боком в виде рябящей текстуры там, где меши будут совпадать. При масштабе 1.8 вы получите тот же результат, а так же при 1.4, 1.7, и т.д., и даже добавка пятерки в конце этих масштабов или изменение размера сетки, по которому рассчитывается минимальный шажок перемещения объектов, тут вам не помогут. Красиво составляться будут только те меши, масштаб которых кратен 2.5, 0.25, 0.025 и т.д., ну, и само собой, целый масштаб, например, 2.00, 3.00 или 4.00, так что пытайтесь придерживаться этого правила при расчете масштабов при создании своего уровня.

Ну а теперь вернемся к нашим баранам, вернее, к брашам.

Браши. Матчасть

Как я уже говорил ранее, для создания красивого декора проще всего использовать много мелких статик мешей. Но вот если вы захотите создать элементарную стену или пол, тут статик меши не катят, так как для создания, например, пола придется создавать специальный меш и соответственно его отмасштабировать, или ровно замостить ним всю территорию, где должен быть пол, что займет много времени и потребует определенных усилий (чтобы все это выровнять, например). И уж тем более, если вы захотите сделать на своем полу, например, коврик, вам придется создавать соответственные меши с отличающейся текстурой. Вот тут нас и выручают браши.

Найдите снова строительный браш, для удобства уменьшите его до размера 256х256х256 и оттяните в сторону (да, браши можно перемещать, как самые обычные статик меши). Мы будем экспериментировать. А точней, эмпирическим методом будем узнавать, как управляться с брашами и какие есть нюансы при работе с ними.

Добавьте несколько кубов в случайном порядке (кто не помнит, делается это с помощью кнопочки CSG Add на панельке CSG слева). Попробуйте выделить один из них. А вот тут выплывает один из недостатков, которые я упоминал в предыдущих частях. Вместо браша вы будете выделять только его грани. Исправляется это двумя методами: первый - в настройках отображения рабочего окна выберите Brush Wireframe (при работе с брашами мы будем бОльшую часть времени проводить именно в этом режиме). Теперь вместо кубов вы увидите их "скелеты"-контуры, которые спокойно выделяются и перемещаются. Второй - пока вы в Unlit, нажмите на браш з зажатыми одновременно Ctrl и Shift. Переместите один из кубов куда-либо, и вернитесь в Unlit. Что? Ничего не изменилось? А вот это, ребята, второй серьезный минус применения брашей - при любой манипуляции с брашами, будь это перемещение, изменение геометрии (об этом несколько позже), или просто удаление, вам необходимо заново компилировать геометрию уровня. Не распространяется это только на добавление новых брашей. Впрочем, перекомпилировать геометрию уровня не так уже и сложно, достаточно нажать одну кнопку на верхней панели окна UDK, подписана она как Build Geometry for Visible Levels, и имеет вид обычного кубика.
<> http://xgm.ru/files/287/48602/01.jpg
Нажмите ее (вам должно вылезть окошко с ошибкой, но не бойтесь, вам просто говорят, что у ваших брашей нет текстур и что надо задать уровню кое-какие параметры, так что смело закрывайте) и убедитесь, что ваши изменения приступили в силу. Делать это рекомендую регулярно. Теперь научимся менять геометрию брашей. Для этого вам нужно перейти в режим Geometry Mode. Сделать это можно, нажав соответственную кнопку на панели Modes слева, или нажав Shift+2.
<> http://xgm.ru/files/287/48602/02.jpg
Кто не знает, мы работали в Camera Mode (иконка с камерой слева от иконки режима геометрии), и, когда нам не нужно заниматься непосредственно геометрией брашей, советую возвращаться туда (это чтоб мне не приходилось регулярно вам напоминать). Как только вы перешли в окошко геометрии, каркасы брашей немного поменялись с виду, а также появилось окошко Geometry Tools, с которого нам пока пригодятся только пункты Edit и Extrude.
<> http://xgm.ru/files/287/48602/03.jpg
К слову, если это окошко закрыть, вы автоматически вернетесь в режим камеры.

Вернемся к брашам. Находясь в режиме геометрии, вы можете спокойно выделять составные части брашей, такие как грани и вершины. Ребро можно выделить путем выделения пары точек, которые это ребро и соединяет. В режиме Edit вы можете свободно перемещать и масштабировать выделенные элементы (вращение не будет иметь эффекта), но понадобится нам только перемещение. Попробуйте потянуть одну из боковых граней строительного браша (или одного из кубов в наличии), чтобы тот стал бруском подлиннее. Теперь потяните другую боковую грань, чтобы превратить его в эдакую толстую доску. Вот теперь, с помощью этого браша, я объясню вам на примере, почему не стоит использовать другие браши кроме куба.

Найдите на панели брашей сферу, нажмите правой кнопкой, в поле Sphere Extrapolation выставите значение 4, иначе сфера будет выглядеть не совсем как сфера. Поместите ее на широкий браш в наличии и добавьте. Присмотритесь (находясь в Unlit, само собой). Сфера состоит из многочисленных треугольничков, и тут два минуса - во-первых, когда вы будете "надевать" текстуры на такой шарик, вам будет очень трудно их выровнять, чтобы они красиво выглядели, во вторых, когда на сферу будет падать свет, он будет рассчитываться для каждой грани отдельно. А теперь взгляните на браши в режиме отображения Wireframe. Не в Brush Wireframe, там мы, ясное дело, увидим просто широкий браш и браш-сферу. Разница между Brush Wireframe и Wireframe в том, что в первом нам для удобства показывают составные браши, чтобы было легче редактировать геометрию, а вот во втором мы видим браши в виде полигонов (кто не знает, что такое полигоны, почитайте какой-то хороший тутор к любому 3D-редактору; а если говорить просто, это треугольные поверхности, с которых состоят 3D-модели), так, как они и выглядят на самом деле (статик меши мы и там и там видим в виде полигонов). И в этом режиме можно заметить, что добавление сферы значительно увеличило количество полигонов на широком браше. На нем изначально было всего два полигона, а сколько стало... Посмотрите сами:
<> http://xgm.ru/files/287/48602/04.jpg
Добавите сбоку еще одну сферу - полигонов станет еще больше, особенно, если сферы будут накладываться. Каждая новая сфера будет еще больше превращать окончательный результат в месиво полигонов. И проблема тут не в том, что результат будет слишком "многополигональным", а в том, что каждый раз компу приходится перерассчитывать все полигоны модели. И рано или поздно ваша машина просто не выдержит этой нагрузки и помашет вам на прощание BSODом, несмотря на то, что в итоге мы получим просто фигуру, состоящую из примитивов. Теперь посмотрите в этом же режиме на геометрию статик мешей и признайте, что такое сделать брашами вам, да и никому другому (разве что какому-то гению) не под силу. Так что оставим брашам простые задачи.

Можете удалять все эту мешанину, поскольку мы будем двигаться дальше. Хотя, широкий браш можете оставить. Верните строительному брашу его законную форму куба и сделайте так, чтобы он полностью или частично налез на наш одинокий браш. Теперь нажмите кнопочку справа от той, которая браш добавляет, называется она CSG Substract (картинку давать не буду, надеюсь, найдете). И наглый красный кубик скушал часть широкого браша, точней, ту часть, которую сам занимал. Таким образом, вы можете дырявить и менять любые браши. Так можно сделать комнату всего тремя брашами - сделать большой браш, немного уменьшить строительный браш и "скушать" внутренности большого браша, а потом задать строительному небольшой размер, чтобы сделать дверь. Почему три браша, спросите вы, мы ведь добавили только один и изменили его. А вот и неправда, перейдите в Brush Wireframe и увидите, что наш браш цел и невредим, а "изъятое" место обозначают другие браши, желтые. Это куда облегчает редактирование, ведь, чтобы поменять параметры дыры или ниши в браше нам не нужно самостоятельно менять его геометрию, достаточно просто переместить или изменить форму желтых брашей, которые редактируются точно также, как и их синие собратья. Впрочем, любые изменения этих брашей также требуют перестройки геометрии уровня.

Если вам внезапно станет интересно, "съедает" ли желтый браш все пространство в себе, или задевает только тот браш, на который его изначально поместили, брезгуя всем остальным, я вот проверил, и ответ, оказывается - второй вариант. Для эксперимента можете "изъять" кусочек с краю одного браша, копировать его и пересунуть так, чтобы копия тоже задевала желтый браш. Перестроив геометрию и перейдя в Unlit, вы увидите, что абсолютно никакого влияния на новый блок желтый браш не имеет. Перемещение его приведет только к изменению первого, даже если вы полностью перенесете его во второй, а вернув обратно, вы увидите, что первый и после такой разлуки подпадает под влияние своего желтого друга. Вот такая странная любовь. Но вот если вы поставите два браша вместе и создадите такой желтый браш, который будет сразу их оба задевать, то он будет и дальше влиять и на первый, и на второй. То же касается случая с тремя, четырьмя, пятью, любым количеством брашей - субстракт браш (от англ. "изъять") будет влиять только на те браши, которые он изменил, когда его добавили.

Ах, да, забыл упомянуть один нюанс при изменении формы строительного браша. Крайне не рекомендую двигать одну вершину отдельно. Почему? Потому что при этом прямоугольники, в которых состоит эта вершина, обязательно превратятся в пары треугольников, чего не исправить, даже если вернуть вершину на место (разве что отменить последнее действие всем известной Ctrl+Z или стрелочкой), и это вызовет проблемы при текстурировании. Так что, пользуйтесь этим только когда вам нужно создать действительно что-то сложное.

Ну и последний момент работы с брашами - экструдирование. Создайте обычный браш, перейдите в режим геометрии, выделите любую грань и в окошке Geometry Tools выберите пункт Extrude (если вы не выделили грань, он будет неактивен). Теперь, каждый раз, когда вы будете пробовать передвинуть грань, двигать вы будете, по сути, ее копию, которая будет соединена с оригиналом ребрами, и которой позже можно будет манипулировать также, как и любым другим элементом браша (правда, перед этим не забывайте переходить в режим Edit). Это очень мощный инструмент для создания более сложных фигур.

Ну что же, пора применить полученные навыки на практике. Так что затирайте все свои эксперименты (удобней всего просто выделить их все с помощью рамки Ctrl+Alt) и возвращайтесь к уровню, захватив попутно строительный браш.

Добавление брашей в уровень.

Что же мы будем добавлять. Во-первых, нам нужно заполнить промежутки в центральной секции, во-вторых, добавить браши в отгороженное уголками пространство, во-третьих, добавить небольшие углубления для воды возле уголков, и последнее - урезать браш-основание, чтобы спереди остался небольшой выступ для балкона (его на скрине не видно, но на нем стоят колонны снизу по центру на картинке). Начнем мы со второго пункта, заодно попрактикуемся с экструдированием.

Итак, переместите строительный браш (я так подумал, давайте для краткости я буду называть его ББ, от англ. Build Brush) к одному с двух уголков, перейдите в режим геометрии и растяните его в ширину и длину, чтобы, когда вы смотрите на уровень спереди, для правого уголка, правая грань должна совпадать с гранью браша основы (может даже несколько выходить, это не важно), задняя должна полностью погружаться в башню, передняя - доходить до изгиба уголка, левая - наполовину заходить в меш уголка, нижнюю можно уровнять с верхом браша-основы, а верхняя должна доходить до половины расширенной области сверху ограждающего меша. Проще всего это делать, ориентируясь по всех трех окнах-проекциях. Не забывайте, что ребра и грани на окнах проекций нужно делать через выделение, так как вы видите только те вершины, что ближе к вам, и выделение щелчком выделит только их. На деле это должно выглядеть как-то так:
<> http://xgm.ru/files/287/48602/05.jpg
Теперь нам нужно как-то заполнить тот маленький промежуток между гранью браша и ограждением. Все ведь понимают, что так его оставить мы не можем, а просто подвинув грань, мы сделаем так, что уголок браша вылезет из ограждения. Вот тут нам и пригодится экструдирование. Выделите переднюю грань и дважды сдвиньте - первый раз чтобы новая грань остановилась где-то на средине промежутка, второй - чтобы наполовину погрузилась в переднюю часть ограждения. Теперь, манипулируйте левыми ребрами новых граней, чтобы те находились внутри стен, крайняя - на где-то на стыке прямого ограждения и изгиба, та, что посредине - где-то внутри изгиба. Делать это все рекомендую в окне проекции сверху. В итоге, что-то типа такого:
<> http://xgm.ru/files/287/48602/06.jpg
Заметьте, что горизонтальные ребра, соединяющие те ребра, которые вы двигали, должны не выходить за стену, во всяком случае, за наружную ее часть. Чтобы вы поняли о чем я, скрин.
<> http://xgm.ru/files/287/48602/07.jpg
Черные линии - границы геометрии стены, все, что вне ее - геометрия расширенных основы и верхушки. И если указанный на картинке зазор между мешем и внутренней границей нам не страшен, поскольку верхняя расширенная часть его прикроет, то если меш выйдет за переднюю, это чревато не самым симпатичным уголком, которые будет выглядывать из стенки, если на него посмотреть извне.

Добавляем браш, копируем так же, как и любой меш, отображаем по Y, перетаскиваем на другой уголок, красиво выравниваем по окну верхней проекции, перестраиваем геометрию и любуемся результатом.
<> http://xgm.ru/files/287/48602/08.jpg

Теперь займемся балконом. Нам нужно будет вырезать большие куски браша-основы у передних углов. Для этого придется менять размер ББ. Чтобы не делать этого вручную, можно сделать следующее - выделите основу (думаю, помните как), нажмите на ней правую кнопку, и в меню выберите "Polygons->To Brush". ББ сразу же склонирует форму и положение этого браша. Теперь, уменьшите его в ширину, чтобы он занимал около трети ширины основы (немного шире, чем браш, заполняющий уголок), если вам нужна конкретная величина - 19 квадратов на текстуре (есть с них толк), в длину он должен занимать столько, чтобы между ним и ограждением было место на маленький бассейн, и чтобы было место где пройти (9 квадратов). Вырезайте. Теперь просто посуньте браш к другому углу и вырезайте его тоже. Итог таков:
<> http://xgm.ru/files/287/48602/09.jpg

Можете сверить размеры по квадратикам))

Теперь приступим к бассейнам. Верните ББ кубическую форму, предварительно поменяв его размеры на 128х128х128. Сделайте так, чтобы верхняя грань браша была на уровне грани основы (удобно использовать вид сбоку). Теперь двигайте этот браш, чтобы он оказался между одним из бордюров и одным из крупных желтых брашей спереди основы (я имею ввиду, выемки, которые формируют выступ-балкон, надеюсь, все поняли). Расстояние между краем основы и ББ выберите около 7-8 квадратов. Перейдите в режим геометрии и редактируйте браш: во-первых, длинна - браш должен быть продолговатым (я имею ввиду, относительно бордюра), и выходить относительно второй части бордюра (которая перпендикулярна к первой) где-то на один квадрат; во-вторых, ширина - между брашем и бордюром должен быть тот же один квадрат, а расстояние к пропасти - 2 квадрата. Когда вас устроит результат, вырезайте. Вот что получилось у меня:
<> http://xgm.ru/files/287/48602/10.jpg
Теперь поворачиваем строительный браш на 90 градусов, немного сужаем (чтобы поместилась дорожка в центре), вытягиваем соответственно длине части бордюра, которой этот браш теперь параллелен. Пробуем сопоставить с уже существующим желтым брашем, чтобы получить жирную букву L, и вырезаем. Если эти два желтых браша не выходит выровнять, чтобы получилась буква L, это значит, один из них (а может, они оба) "выпал" из сетки, по которой и определяется шажок, на который браши сдвигаются (ан нет, пригодилась инфа с начала статьи). Если присмотреться на проекцию сверху при хорошем масштабе, будет заметно, что угол браша не совпадает ни с одним пересечением линий сетки.
<> http://xgm.ru/files/287/48602/12.jpg
Это решается двумя методами: первый - уменьшить размер сетки, делается это с помощью соответственной панельки снизу:
<> http://xgm.ru/files/287/48602/11.jpg
Нажмите на кнопку, выберите размер помельче (например, 2) и выравнивайте. Второй - если нажать на вершину правой кнопки мыши, она автоматически передвинется к ближайшему пересечению линий сетки. Просто выровняйте щелчком правой кнопки первый браш, второй придвиньте максимально близко и щелкните на нем. В итоге, все получится красиво. У меня получилось вот такое углубление в итоге:
<> http://xgm.ru/files/287/48602/13.jpg

Теперь дорожка. Попробуйте выделить верхнюю грань браша основы. Как можно увидеть, это одна огромная поверхность. Для брашей нет возможности применять несколько текстур на одну поверхность. Поэтому, если вы хотите добавить текстуру, отличающуюся от той, что у вас уже на браше, существует уловка - если добавить новый браш так, чтобы одна из его граней совпадала с гранью изначального браша, то эту грань можно будет выделять как отдельную поверхность, со всеми последующими профитами. Эффект ряби текстуры при совместных поверхностях статик мешей на браши не распространяется. Так что, двигайте ББ (надеюсь, вы не меняли его форму или высоту после того, как сделали углубление) в центр, растягивайте на всю длину основы (от подножий башен до края балкона), сделайте немного шире (около 4 квадратов) и добавьте новый браш. Теперь мы можем выделять центральную секцию как отдельную поверхность.

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

Под конец мне начало казаться, что дорожка уж очень дистрофическая (как и углубления по ее сторонам), так что давайте их расширим, благо, пространства между ее границами и бассейнами предостаточно. В итоге, вот какой у меня результат.
<> http://xgm.ru/files/287/48602/16.jpg

Пока с брашами все, но в будущем мы неоднократно к ним вернемся. В следующей части мы все это добро затекстурим. Верней, применим к нему материалы, так будет более правильно сказано.

Раньше планировалось, что в этой части будут сделаны и филлеры в центральной секции, но их куда удобней будет делать, когда уже поставлена дверь и ее окружение.

Смотрите также:


Комментарии

Здесь еще никто не оставил комментарий

Справка