Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Рендер как в Minecraft-е - кто нибудь знает основные "секреты"? (97 стр)

Рендер как в Minecraft-е - кто нибудь знает основные "секреты"? (97 стр)

Страницы: 196 97 98 99101 Следующая »
СерыйМышПостоялецwww26 дек. 20177:52#1440
Cheb
> Это позволяет делать тонкие стены, не выровненные по сетке строения и прочие
> вкусности в то время, как подавляющая часть мира остаётся простой и дешёвой.
Эти вкусности хороши, когда есть редактор контента и шаблоны построек. Как только это переходит в кривенькие лапки игрока, он теряется и не может построить ничего внятного, потому как высчитывать/отмерять толщину стен с шагом 5 мм - это ад и анархия. Все дома, построенные игроками будут кривые, косые и с разной толщиной стен.

> Гугление выводит на
> https://altirosonline.com/blog/announcing-altiros-online-pb
> Интересно.

Раньше мне попадались демки геймплея этого проекта, там достаточно прикольно всё, но в то же время нудновато. Чтобы построить простейшую избу там требовалась уйма времени и куча неочевидных действий.
Нельзя превращать игру в автокад. Основная часть игроков хочет чтобы было "тяп-ляп и готово", и майн в этом плане достаточно удачен. Перфекционистов, которые будут выравнивать стены с шагом полсантиметра - единицы. Другой вопрос, что из кубов сложно построить что-то реалистичное. Тут варианты: либо делать кубическую сетку и блоки разной (заранее прописанной) формы - призмы, панели, цилиндры, конусы и прочие пирамидки/кубики, либо делать произвольные объекты, которые в итоге будут кривые и косые, потому как лень и долго.

Никак не могу вспомнить название движка, там у чувака сделано масштабирование сетки, и можно выкопать поставить блок хоть 2*2 метра, хоть 20*20 см.
Вспомнил. Blockscape называется, оно оказывается уже в стиме в раннем доступе. Вроде бы всё красиво, но примерно год назад ресурсов эта поделка требовала прорву, и играбельность была как у чугунного шара. Наверное стоит посмотреть, что там сейчас вышло.

СерыйМышПостоялецwww26 дек. 20177:58#1441
СерыйМыш
> Наверное стоит посмотреть, что там сейчас вышло.
Глянул мельком. Чувак убрал все красивые деревья, свет и прочие плюшки. Видимо всё-таки современное железо не тащит. То, что осталось надо смотреть более вдумчиво, но прежней красоты нет. Какое-то всё угловатое и неживое.
СерыйМышПостоялецwww26 дек. 20178:18#1442
Посмотрел видосы, чувак походу переоценил возможности современных компов.

Было:
https://www.youtube.com/watch?v=qSmxH3zaOpQ - 2014 год.
Стало:
https://www.youtube.com/watch?v=aHhQaTiHUXo - 2016 год.
https://www.youtube.com/watch?v=MVdwhTCunpE - 2017 год.

Обратите внимание на деревья и траву.
Налицо явная деградация визуальной части.

А за сетку 4*4, прикладываемую рукой к дереву, разраба надо накормить пургеном. Не игра а чёрт-те что. Понятно, что игровые условности там, и якобы игровой интерфейс, но так нельзя. Весь мир какой-то унылый и дохлый, хоть и шевелится.

Правка: 26 дек. 2017 8:28

ChebПостоялецwww26 дек. 201717:07#1443
>https://www.youtube.com/watch?v=MVdwhTCunpE - 2017 год.
ой, ФУУУУУУ!
Деревья должны быть моделями. Точка. Или рассыпаться при подрубании, как в Террарии.
Вот это вот "подрыл - а оно висит в воздухе" ВЫБЕШИВАЕТ. Особенно после AoS, где я один раз заработал четверной фраг, подкравшись снизу и перепилив из минигана мостик с увлёкшимися кемперами. Все четыре понесли несовместимый с жизнью урон типа Аааа-хряп.

>это ад и анархия. Все дома, построенные игроками будут кривые, косые и с разной толщиной стен.
Естественно, шаблоны и префабы во все щели. Испытано на собственной шкуре на примере того же AoS.
Шутер, где надо строить по одному кубику - адЪ. Тоже, конечно, весело по своему - но, блин, 80 минут лимит матча. Восемьдесят! Минут! И все игроки вооружены мосинками, которые инстаджибят при хедшоте, безо всяких намёков на то, откуда прилетело.
Шутер, где каждый класс умеет срать префабами, в десять секунд высирая целый кособокий форт - это реально весело, и лимит матча 15 минут естественнен.  https://www.youtube.com/watch?v=_wJiagkYmgA https://youtu.be/shwgj8sJeco?t=193

Тоо есть, я подразумеваю, что игрок не будет строить по кубику - у него даже не будет такой возможности. Интерфейс типа "миньоны, быстро сообразили мне комнату такую-то вот в этом примерно месте" - и задаёшь общую форму и размер. А уж как это строить и отделывать - пусть у ИИ голова болит. То есть, кроме информации по блокам, должен быть план базы из брашей, чтобы ИИ различал, где полость комнаты, а где - дырка в стене, которую надо заделать. Опять же, внутренние стены-перегородки заданной толщины, которые авто снапятся по границам текущей комнаты, виртуальные линейки и прочие хелперы, автопостроение моста указанного типа из точки А в точку Б .
А ИИ чтобы умел, например, строить железные дороги, добавляя мосты, эстакады и тоннели где надо.

Потом, должен быть на выбор доступен уровень интерфейса типа Master of Magic: "постройте кузницу, мне насрать, где она будет стоять, но чтобы мечи для арми были!"

Копать?.. Взял дезинтеграторную дрель, вжжжик - и готов двухметровый тоннель. Опять же, прообраз - дрель-пушка из AoS
https://www.youtube.com/watch?v=LaXjrHsTgUQ
https://www.youtube.com/watch?v=zIukGalDT9g
https://www.youtube.com/watch?v=qQjsDcdghnQ

Правка: 26 дек. 2017 17:29

ChebПостоялецwww26 дек. 201717:37#1444
З.Ы. Да, должен заострить на этом внимание: если строительство ограничено брашами и префабами, а пещеры при генерации мира получаются не шумовой функцией, а нанизыванием брашей на векторный объект - то ИИ даже не придётся ориентироваться в супе из блоков. Всё уже  разжёвано.

А насверленные игроком дырки - лениво обходятся волной A* и строится навигационная сетка. Причём, ИИ может достаточно тупыми методами проверки целостного объёма (большой цилиндр коллайдить, например) оклассифицировать ноды этой сетки на "коридоры", "комнаты" и "ямы под открытым небом".

СерыйМышПостоялецwww26 дек. 201720:34#1445
Cheb
> миньоны, быстро сообразили мне комнату такую-то вот в этом примерно месте
См. Castle Story. Там идея вроде бы неплохая, но неудобное управление и кривая камера убивают весь геймплей на корню. Сейчас может и поправили, но когда я смотрел - был ужоснах.

Ставил на майн Minions mod. Там можно себе призвать мелких трудоголиков и давать им задания. Вариантов, правда, маловато. Копать шахту 4*4 вниз до бедрока, ровнять площадки/выкапывать боксы, рубить деревья, копать горизонтальные шурфы 2*1, таскать ресурсы в сундук и носить животных/хозяина.
Довести бы этот мод до ума, и на нём потренироваться в написании ИИ, но у меня почему-то ни разу не получилось (пробовал трижды) правильно настроить нетбинс/яву/майндевелоперпак, и, соответственно, не получилось скомпилировать мод из исходников. Видимо плохо старался.

В AoS не играл, по видосам понятно, о чём речь.

И, раз уж тема про рендер, то интересно было бы узнать, как в первых версиях Блокскейпа (2012 года) чувак делал такое приятное сглаживание кубиков. Может есть у кого идеи/наработки на эту тему?

denesikПостоялецwww27 дек. 201710:39#1446
СерыйМыш
>
> И, раз уж тема про рендер, то интересно было бы узнать, как в первых версиях
> Блокскейпа (2012 года) чувак делал такое приятное сглаживание кубиков. Может
> есть у кого идеи/наработки на эту тему?
Вероятно какие то свойские правила выбора сглаженной геометрии куба на основании наличия соседних кубов.
СерыйМышПостоялецwww28 дек. 201721:36#1447
denesik
> Вероятно какие то свойские правила выбора сглаженной геометрии куба на
> основании наличия соседних кубов.

denesik, ты прям лейтенант очевидность )
Понятно, что правила сглаживания проверяют соседние кубы. Вопрос был не об этом, а о механике процесса.
Что он там делал с мешем? Судя по всему добавлял поверхностей, но как? При сборке/подготовке меша - не вариант, будет всё тормозить адски.
Может быть какой-то хитрый ход с вертексным шейдером?
Надо попробовать почитать его старый форум, или где он там про свой движок пять лет назад хвастался.

Кстати, вдогонку к моему недавнему посту - автор Блокскейпа замутил очередной майнкрафтоподобный движок, но игру так и не сделал.
То же самое наблюдаю у Scrap Mechanic. Обещали-обещали сюжет и режим выживания, да так и нет его до сих пор, зато народ вовсю резвится и строит всякие убермашины.
Может есть смысл пойти от обратного? Сначала писать всю механику игры, а рендер взять от любого опенсорсного клона майнкрафта, не особо заморачиваясь с качеством картинки? А уж когда всё будет работать, тогда уже озадачиться красотой. Как жизнь показывает, графон сделать гораздо проще, чем всё остальное.
 

ChebПостоялецwww28 дек. 201721:58#1448
>но неудобное управление
Посмотрел. Парадигма невернаяа: тут по прежнему строительство из кубиков, хоть и отложенное в виде блюпринта.
Есть здравые идеи, конечно, типа соединения двух точек мостиком.

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

Дальше добавляем следующий уровень интерфейса: домик - это одна большая форма (один браш, возможно, составной) у которой задана толщина внешних стен, и затем во внутреннем объёме выделяются комнаты, отделяемые друг от друга дешёвыми и непрочными перегородками.

Далее добавляется конструктор домиков-префабов, которые можно втыкать в местность одним кликом (и с игрой уже идёт куча таких префабов).

А всякие рюшечки, типа зубчатых стен, горгулий и прочего - это элементы декора, которые лепятся поверх брашей за отдельные деньги.

Дальше, должен быть механизм автоматического втыкания домика. С выравниванием по двери, вкапыванием в ландшафт и просто вырубанием в скале, если стены наложатся на оную.
(т.е. у домика должен быть снизу браш "фундамент", который внедряется в грунт, обрезаясь по нужной глубине)
Получаем автоматом реалистичный (а, главное, наглядный) процесс строительства: сначала ИИ выкопает яму, потом заложит фундамент, а уже затем возведёт стены.

>Сначала писать всю механику игры,
Я так и делаю. Пишу роман, чтобы на сюжетных поворотах обкатать основные игровые механики.

Правка: 28 дек. 2017 21:59

denesikПостоялецwww29 дек. 201710:20#1449
СерыйМыш
> При сборке/подготовке меша - не вариант, будет всё тормозить адски.
делаешь это в отдельном потоке и ничего не тормозит
СерыйМышПостоялецwww30 дек. 201710:39#1450
Cheb
> целью геймплея является очередной конструктор-песочница, коих уже тьма, или
> что-то более интересное и конкурентоспособное?

А как насчёт конкурентоспособной песочницы? )
Пару лет назад я писал диздок на такую песочницу. Рабочее название - Архитектор. Основная идея - на старте игрок постепенно развивает свои умения через взаимодействие с неписями и выполнение заданий. В начале игрок находит первого "учителя", тот озадачивает игрока простейшими заданиями - выровняй площадку (даёт простую лопатку, копай), построй забор (из чего строить? - из палок. где палки? - вон деревья, на топор.), загони свиней в загончик (как? - палкой), сделай им кормушку (как? - выдолби из толстого бревна, топор есть), накорми (чем? - свари им жрачку. из чего? - накопай на грядке свеклу и картошку, лопатка есть. как варить? - вот тебе котёл, набери воды, построй очаг из камней, разводи костёр из палок. где камни? - на кирку, надолби булыжника вон там.), и так далее.
Сначала игрока учат выполнять дискретные действия - копать по одному блоку, рубить дерево, отрубать от него ветки, строить забор из отдельных палок, долбить камень.
Затем задания сложнее: построй навес (как? - вот чертёж, нужны средние брёвна, палки, доски. как получить доски? - на пилу) - это первый элементарный блюпринт, по которому игрок строит сам. Построй сарай - более сложный блюпринт, игрок корячится, строит, учителю надоедает, он даёт игроку двух помощников. Игрок учится управлять помощниками, сначала даёт дискретные задания (это бревно сюда, это сюда, напилите досок), затем, когда задания усложняются, можно давать более объёмные задачи (вот здесь - стена из брёвен, брёвна вон из тех деревьев), прокачивается профессия "строитель" до уровня "бригадир". Постепенно задачи усложняются, добавляются новые элементы - двери, окна, мебель и т.д. Идёт начальная прокачка вторичных специализаций - столяр, каменотёс и т.п. С определённого момента игрок получает оплату за свою работу.
Далее прокачка выглядит так: нпс дал задание, озвучил стоимость, дал чертёж. Можно нанять неписей-помощников, они будут строить, причём если уровень неписей низкий, то стоят они дёшево, но ими надо командовать как таджиками - это сюда, это сюда. Более дорогие неписи имеют более высокий скил в профессии, им можно ставить более крупные задачи. Либо можно ковыряться самому, тогда вся оплата останется у игрока, но скил в профессии не растёт.
На определённых этапах неписи перестают всё разжёвывать, и дают более размытые задания - вот тут нужен жилой дом. Как строить? - по типовым чертежам. Где чертежи? - у городского архитектора. Нужно найти архитектора, выполнить пару его заданий на репутацию, подтвердить уровень профессии, купить у него подходящий чертёж, нанять работников, купить материалы, построить, получить оплату. Чем выше уровень профы (строитель-бригадир-прораб-архитектор), тем больше можно нанять неписей, тем сложнее задания можно получить, и тем выше оплата. При выполнении простых одинаковых заданий уровень перестаёт расти, нужно стремиться брать всё более сложные задания.
В теории, в многопользовательском режиме в качестве помощников могут выступать игроки с более низким уровнем профессии. Игрок нарезает задачи, помощники строят, и одновременно качают профу. Можно нанять часть игроков, часть нпс. При росте сложности построек нужны бригадиры, которые руководят "таджиками".
Город может разрастаться по заранее прописанным шаблонам, для каждого вида постройки есть несколько типовых чертежей, и определены места, где эти постройки могут стоять. В некоторых случаях можно сносить старые постройки, чтобы поставить на их место более высокого качества.
В процессе прокачки у игрока скапливается "книга знаний", в определённый момент игрок получает умение самостоятельно комбинировать элементы отдельных построек, получая "авторские" чертежи. При дальнейшем росте игрок получает возможность строить, используя отдельные фрагменты, формируя постройку по ходу дела, и по завершении сохранить результат как авторский чертёж. Естественно, игрок строит не сам, а нанимает работников, причём на высоких уровнях можно делегировать процесс найма "прорабам" и специально нанятым "начальникам", процесс покупки/добычи ресурсов - "завхозу" и т.п.
На определённом этапе игрок получает возможность купить/арендовать участки земли и строить там по своему усмотрению что угодно.
Это часть, касающаяся архитектурного направления.
Примерно в том же ключе прорабатываются другие профы - горное дело, деревообработка, металлообработка, животноводство, пищевая промышленность, инженерные направления (механика, автоматика, машиностроение). На вершине этих проф можно организовывать крупные предприятия, поставляющие в игровой мир ресурсы - стройматериалы, инструмент, оружие, еду, машины и механизмы. В идеале должна быть возможность строить мануфактуры, фабрики, фермы, открывать рестораны и т.п.
При этом для начинающих игроков появляются дополнительные участки для прокачки - можно пойти в найм к нпс, прописанному изначально, а можно пойти на ферму, принадлежащую игроку, и получить задание от наёмного нпс, работающего на хозяина фермы.
За счёт такого подхода убираются "рельсы" в прокачке проф, и мир становится "живым" и "саморазвивающимся". Все нпс имеют определённые модели поведения, завязанные на их скил в определённой профе. Для игроков не должно быть разницы, обращается ли он для прокачки среднего уровня профы к "свободным" неписям, либо к "наёмным", работающим на игрока более высокого уровня и выполняющим его задание.
Основная проблема - в балансировке экономики, постепенном истощении ресурсов, как материальных, так и "людских" (количество неписей для найма должно расти пропорционально потребностям контингента играющих, и соответствовать требуемым уровням, часть нпс заменят низкоуровневые игроки, при этом надо как-то регулировать рынок труда). Задача решается с помощью проработки математических моделей, я этим пока не заморачивался.
Также нужно регулировать взаимодействие между игроками: штаф на случай некачественного выполнения заданий, репутация и т.п. Нужна возможность на время оффлайна превратить своего аватара в нпс, чтобы не страдало общее дело, когда игрок оффлайн, но при этом он не растёт в уровнях и не получает оплату за время отсутствия.

Вот, как-то так.

Правка: 30 дек. 2017 10:40

CriDosПользовательwww7 янв. 201822:51#1451
Всем привет!
Сделал панораму 360 для оценки стиля блоков HardWorld мира.
Со временем, текстуры будут перерисованы, добавятся эффекты шейдеров, тени и "игра со светом".
Панорама: https://kuula.co/post/7lM4j
Эта сцена в редакторе: https://yadi.sk/i/gmu2ncw03RFoQm

Как только перепишем консоль, появится возможность собирать публичные нативные сборки (il2cpp) с демонстрацией движка.

Правка: 7 янв. 2018 22:53

СерыйМышПостоялецwww8 янв. 201813:26#1452
CriDos
> Сделал панораму 360 для оценки стиля блоков HardWorld мира.

Таких демок много, так что пока ничего необычного.

> Со временем, текстуры будут перерисованы, добавятся эффекты шейдеров, тени и
> "игра со светом".

Текстуры 32*32 как-то ни туда, ни сюда. Визуальный стиль напоминает первую кваку. Делайте 128*128 что ли. Да и свет решает. Затенение в углах + тени от солнца, и будет красота.
Не видать прозрачных и неполных блоков. Жду посмотреть.

Интересно глянуть на расход памяти и фпс при разной дальности отрисовки.

Непонятно, зачем вам юнька. Лень писать свои коллайдеры и физику? Так всё равно придётся. У кубического мира много своих особенностей, которые стоит отрабатывать в угоду играбельности.
Пример:
Игрок идёт или бежит, впереди щель в 1 блок поперёк пути. Для игрока будет логичнее, если при ходьбе он будет падать в эту щель, но если при этом он держит кнопку "вперёд", он должен повиснуть на краю, и иметь возможность спрыгнуть или подтянуться и залезть наверх. Если игрок "крадётся", зажав шифт, то для него щель становится препятствием, и он должен остановиться, либо начать скользить по краю как вдоль стены. При беге более логично не проваливаться в такую щель, а "перепрыгивать" её на бегу. Стандартной юньковской физикой это тоже можно сделать, но придётся мудрить, и по сути всё равно писать костыли на разные случаи. Как вариант - вытягивать объект игрока при беге так, что он будет длиннее ширины щели и не свалится, выстраивать невидимую стену, если игрок крадётся и т.п.
Или такой прикол:
В майне при движении вдоль стены по карнизу можно зажать шифт, и "обогнуть" угол, если за углом карниз продолжается, а на самом углу блока нет. Но если просто идти вдоль стены, то обязательно свалишься. Тут тоже можно придумать, как изменить коллайдер, например, срезать внешний угол стены, или удлинить карнизы, но это всё тоже костыли, и непонятно, что будет удобнее - костылить готовый движок, или писать свой.

Опять же, если на клиенте это всё можно сделать на юнити, то на сервере это всё равно придётся писать отдельно, и тут уже начнутся головняки, если физика хоть немного, но не будет совпадать. Игрок будет очень удивлён, если сервер его посчитает читером за то, что клиент по-своему отработал взаимодействие.

ArchiDevilПостоялецwww8 янв. 201814:12#1453
Визуальные эффекты добавляют очень много :)
Вот старье с 2014 года:
https://imgur.com/a/bt6QP
https://imgur.com/zkO9bjr
CriDosПользовательwww8 янв. 201821:45#1454
СерыйМыш
> Текстуры 32*32 как-то ни туда, ни сюда. Визуальный стиль напоминает первую
> кваку. Делайте 128*128 что ли. Да и свет решает. Затенение в углах + тени от
> солнца, и будет красота.
У нас есть контейнеры текстур (альтернатива атласам, на основе EXT_texture_array), которые собираются в рантайме.
Каждый контейнер умеет разные размеры текстур (равный размер в пределах контейнера).
1 контейнер == 1 материал.
В конфигурации блока можно указать контейнер и текстуры из контейнера для любой из сторон.
Так что, в чанке могут присутствовать блоки с разными текстурными контейнерами, материалами и соответственно - размерами текстур.
А сейчас у нас и так 128х:)
Просто мы 32px текстуры ресайзим до 128px и средствами юньти доводим до идеала:)
Там всё равно за пару минут можно применить текстуры любого разрешения (текстур-паки типа).

> Интересно глянуть на расход памяти и фпс при разной дальности отрисовки.
Вот как-то так на следующих железках r7_200, gtx_750, r9_200 + 1100 Far + 8xMSAA: https://yadi.sk/d/nfo8LAjf3RH3uM
Также на стареньком ноутбуке постоянно провожу тесты и различные оптимизации в пределах того, что допускает Unity.
Хотя таких дистанций и не будет в игре.
С оптимизацией GPU и CPU я довольно много провозился и ещё буду возиться, всё же хочется охватить мобильный рынок.
К сожалению, в Unity пока не удаётся реализовать Occlusion Culling относительно специфики блоков и чанков, но идеи есть...

> Не видать прозрачных и неполных блоков. Жду посмотреть.
Как только доработаем приемлемую концепцию освещения, займёмся кастомизацией блоков.

Правка: 8 янв. 2018 23:13

Страницы: 196 97 98 99101 Следующая »

/ Форум / Программирование игр / Графика

2001—2018 © GameDev.ru — Разработка игр