Войти
ПрограммированиеФорумГрафика

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

Страницы: 194 95 96 97101 Следующая »
#1410
13:04, 9 дек. 2017

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


#1411
17:45, 11 дек. 2017

ArchiDevil
> И не доберется. По майнкрафту только школьники делают клоны с "улучшенными
> фичами", потому что любимая игра, всё такое.

На самом деле проблема не в том, что "школьники" и "любимая игра", а в том, что нет внятной концепции и опыта.
Целая куча клонов майна, многие с открытым кодом - бери и переделывай. Но нет, все начинают с другого края. Фантазируют про "живой и динамический мир", не желая даже слушать, что это всего лишь один из слоёв.

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

Майн, при всех его проблемах и недостатках, показал, что при наличии таланта и желания, можно даже из гогна сделать пулю. Как пример - моды Индастриал и Билдкрафт, Проджект ред, и много всяких разных плагинов, позволяющих реализовать практически любой жанр внутри кубического мира. Хочешь - квесты пиши, хочешь РПГ замути, а хочешь - шутер с элементами паркура.

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

#1412
2:34, 12 дек. 2017

СерыйМыш
> Целая куча клонов майна, многие с открытым кодом - бери и переделывай. Но нет,
> все начинают с другого края

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

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

#1413
12:16, 13 дек. 2017

Интересней ведь жить, когда нужно выполнить невыполнимую задачу?) (а сколько их было, невыполнимых)
Появилось тут немного времени и сделал видосик:


В 720 предпочтительно смотреть, ибо пока так:)

#1414
20:40, 13 дек. 2017

CriDos
> Интересней ведь жить, когда нужно выполнить невыполнимую задачу?) (а сколько их
> было, невыполнимых)
> Появилось тут немного времени и сделал видосик:

Ну, красава, чё )

Реально удивил. Первый (и весьма нехилый) шаг сделан, дальше проще.
Демка рендера шикарна, не хватает только счётчика fps, иногда казалось, что начинало подлагивать.

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

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

В общем, всё как обычно ) Есть много умных книжек про архитектуру сетевых игр, осталось только собрать из них самые удачные идеи, и реализовать.

Если не секрет, на чём эта красота написана?

#1415
21:30, 13 дек. 2017

СерыйМыш
> Демка рендера шикарна, не хватает только счётчика fps, иногда казалось, что
> начинало подлагивать.
Записывал на старом железе, так что в записи присутствуют рывки.
Да и тестовые конструкции использующие многопоточность ещё не сбалансированы, и не рассчитаны на плавное выполнение.
На данный момент, это не приоритетная задача.

СерыйМыш
> Клиент/рендер почти готов, теперь нужно разобраться с генерацией ландшафта,
> хранением на серверной стороне, сетевым протоколом, разбивкой на чанки,
> оптимизацией обмена данными (сжатие на лету, отбрасывание невидимых объёмов,
> упреждающее чтение и подгрузка в направлении движения).
> Для большей визуальной красоты стоит озадачиться шейдерами, в майне очень
> хитро, и в то же время просто затеняются углы/рёбра между примыкающими
> перпендикулярными гранями, в результате картинка выглядит более реалистично,
> если можно так выразиться.
>
> Как только будет готова механика мира, можно будет заняться физикой
> взаимодействия аватара/нпс с ландшафтом (ходьба по поверхности, прыжки,
> ползанье, лазание, падение с высоты итп), с контролем на серверной стороне и
> оптимизацией трафика, потом придумать менеджер клиентов, определяющий, кому и
> какие данные передавать при изменении состояния отдельных объектов и участков
> мира.
Так примерно и планируется:)
Но у нас с серверной реализацией уже практически всё определено, остальное будем наращивать.

СерыйМыш
> Если не секрет, на чём эта красота написана?
Unity и C# 7.

#1416
22:05, 13 дек. 2017

Ох опять, называют вокселями то, где вокселей и в помине нет.

#1417
22:06, 13 дек. 2017

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

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

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

Я уже писал про это несколько страниц назад. Майн - голимая песочница, без какой-либо идейной составляющей. Есть деревни, нашёл одну - и можно дальше не бегать. Огородил забором, натыкал факелов, сделал защиту от зомбей и криперов, и поторговал с колхозниками, запер одного на ферме, чтоб жрачку растил, накупил у библиотекаря книжек на починку, и всё. На этом ценность деревни закончилась. Дальше тупо шахты, фарм ресурсов, поиск спаунера зомбей/скелетов, ферма опыта. Алмазная броня, портал в ад, поиск крепости, адский нарост, ферма ифритов, фарм опыта, зачарование шмоток, алхимия. Если ещё не надоело, то поиск портала в энд, бой с драконом.
То есть игрового мира в майне как такового нет. Есть набор механик, которыми нужно долго и нудно делать однообразные движения, чтобы стать крутым и убить дракона. В Марио хотя бы принцесса была, которую надо спасти, а тут тупо - ты должен убить дракона, потому что он есть.

Единственный плюс майна - возможность реализовать себя как архитектор, но это всё сублимация. Ну построил ты в креативе бэтлкрузер "Галактика" или собор какой-то там богоматери, похвастался. И чё?
Схемы из редстоуна дают возможность какое-то время занять себя постройкой разных механизмов типа автофермы, курятника-гриль, подъёмных ворот, ловушек и секретных проходов. Но это тоже ненадолго, и тоже только ради того, чтобы показать кому-то и попонтоваться, практическая ценность всего этого изобретательства стремится к нулю, и можно убить дракона, не построив ни одной схемы.

Взять любую из современных/не очень игрушек - там обязательно есть сюжет. Есть цели и задачи, есть способы их решить. Даже при наличии якобы (псевдо) "открытого мира", те же Фаркрай/Скайрим/ГТА и иже с ними ставят конкретные задачи, игрок их решает, и получает удовольствие, при этом не привязан к конкретным рельсам. Хочешь - делай только основную линейку, есть время - изучай весь мир, там много чего интересного понапихано в неожиданных местах. Казуалки и прочие таймкилеры в расчёт не берём, там процесс обычно завязан на спинномозговые рефлексы, и нет цели кроме набора очков. Арены типа Контра/WoT - тоже отдельная песня, там просто надо убить всех и стать самым крутым нагибатором.

В общем, майн приелся, а на замену ему пока ничего не придумали. Хотя идеи есть, и их многие озвучивали. Например, взять хотя бы архитектурное направление - пришёл ты в деревню, а там староста тебе даёт задание - построить дом, и не просто так, а по чертежам. А потом построить церковь. А потом конюшню/свинарник/коровник/курятник, и не просто построить, но и зверей там развести. Чем не цель? Если потом за это ещё и плюшек отсыплют, так и вообще хорошо.
А если придумать, как программно оценить постройку с эстетической/функциональной точки зрения, то можно не давать чертёж, а дать примерный план - изба с двускатной крышей, не меньше сколько-то квадратных метров жилой площади, столько-то комнат, можно два этажа, плюс подвал/погреб. И всё это частично из камня, частично из дуба, и чтобы окошки были, и двери, и лестница в подвал. Или строй церковь, чтоб площадь такая-то, высота не меньше столько-то, чтобы алтарь, хора, три нефа, центральный зал с куполом, колокольня и кельи для монахов.  Вот тогда у игрока будет стимул развивать деревню нормальными постройками, а не странными навесами с кучей дверей, чтобы жители могли размножиться до количества, кратного количеству этих самых дверей, натыканных как попало.
Добавить РПГ-составляющую, чтобы рецепты крафта надо было искать и изучать, а без них кроме каменного топора хрен что сделаешь. И профессии чтобы изучались/прокачивались, и умения, и прочая фигня.
А физику мира сделать такой, чтобы нельзя было прокопать шахту до дна и вывалиться в дырку между жопами слонов на спину черепахи. И чтобы не надо было рыть сеть километровых штолен с 3 по 15 уровень в поисках алмазов. То есть ограничить деструктивное воздействие на первоначальную генерацию мира, и брать не количеством, а качеством.

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

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

#1418
22:29, 13 дек. 2017

CriDos
> > Если не секрет, на чём эта красота написана?
> Unity и C# 7.

Ой, грусть-тоска...
У юньки такой адский оверхед по объектам, что оторопь берёт. Специфичные (заточенные под кубы) правильно написанные движки держат по несколько миллионов кубоидов, при этом нет необоснованного перерасхода памяти, можно всё оптимизировать до усрачки и получить максимально возможную производительность. В юньке гораздо проще сделать Скайрим, чем Майнкрафт. Есть физика объектов, связи, коллайдеры и прочие фишки типа трёхмерного звука, которые не надо писать самому, но всё это очень тяжёлое, и многое попросту не стыкуется с механикой кубического мира. Это всё равно, что строить дачный сортир из типовых бетонных панелей.

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

Низкоуровневые языки и предметно-ориентированные системы рулят.

#1419
(Правка: 23:15) 23:13, 13 дек. 2017

СерыйМыш
> У юньки такой адский оверхед по объектам, что оторопь берёт.
Ну это пока что.
Там дальше обещают кое-что вкусное:

А вообще, у нас уже всё бьётся на чанки == 1 объект юньки, если там >0 блоков + множество различных оптимизаций относительно обращений к памяти и линейного массива блоков.
Но ещё много чего нужно сделать.
Всё остальное в структурах и считается математикой, без излишнего усложнения.
Я люблю простоту во всём:)
Unity для нас большой контейнер готовых возможностей и решений.
Но ведь критически важные места можно и самому реализовать, не теряя возможностей движка Unity(много человеко-часов);)

#1420
23:29, 13 дек. 2017

СерыйМыш
> Низкоуровневые языки и предметно-ориентированные системы рулят.
Согласен, но у нас коллектив шарпистов.
Мне низкоуровневой возни хватит и на сервере, там я в волю смогу разойтись с C++ и Java:)

#1421
(Правка: 23:55) 23:43, 13 дек. 2017

CriDos
> Там дальше обещают кое-что вкусное:
Я вот пока начало смотрю, особенно ничего выдающегося нет - хорошие обертки над известными приемами не больше. Причем этим и С++ грешит.

Вот если бы они оптимизатор векторных вычислений прикрутили, да еще с соответствующими методами для массивов. До сих пор считаю абсолютное значение вектора черти как через Mathf.Abs.

#1422
10:08, 16 дек. 2017

>сделал видосик
Круто! Завидую.

>физику мира сделать такой, чтобы нельзя было прокопать шахту до дна и вывалиться в дырку между жопами слонов на спину черепахи
Добавил в свой цитатник.
Для себя ядавно решил, что внутри моей планеты ниже низа будет некопабельная магма (какая неожиданность!). Но никак не доберусь всё время приходится делать экскурсы в сторону: сначала движку понадобился менеджер БД, потом выяснилось, что нужен самописный менеджер памяти, потом пришла пора собирать новый компьютер, штатные мне не подошли, надо конструировать блок питания самому... Короче, вместо рендера (я с 2006 года никак не дойду до него!) мучу сейчас вопрос: можно ли драйвить IRF4905 сборкой Дарлингтона на КТ315+BD135/КТ361+BD136, и не слишком ли на ней большое падение напряжения чтобы приемлемо быстро его закрывало >_<

>Бесконечные просторы тоже нафиг никому не впёрлись, достаточно сделать зацикленную псевдосферу большого, но вполне себе ограниченного размера.
Аминь, бро.

#1423
13:06, 16 дек. 2017

Cheb
> штатные мне не подошли, надо конструировать блок питания самому
Какие серьезные утверждения. А чем штатные не подошли?

#1424
19:53, 16 дек. 2017

Cheb
> > физику мира сделать такой, чтобы нельзя было прокопать шахту до дна и
> > вывалиться в дырку между жопами слонов на спину черепахи
> Добавил в свой цитатник.
> Для себя ядавно решил, что внутри моей планеты ниже низа будет некопабельная
> магма (какая неожиданность!).

Бедрок, магма - это всё костыли. Самый простой способ ограничить игрока в нездоровом стремлении к центру земли - сделать с определённого уровня повышение коэффициента прочности породы. Причём нелинейное. Например, каждый следующий слой копается вдвое дольше предыдущего. В добавок сделать генерацию полезностей такой, чтобы ниже этого уровня ничего нужного не генерировалось. Тогда игроку тупо надоест безрезультатно долбить пустую породу, и он не станет тратить время. Особо упоротые сдадутся примерно на -12/-14 уровне. Например, обычный блок долбится за 0.5 сек, -1 уровень уже за 1 сек, -2 за 2 сек., - 12 уровень долбится за 2^10=1024 секунды = 17 минут. следующий - больше получаса, следующий - час с лишним.
В крайнем случае сделать -16 уровень тупо непробиваемым. Будет выглядеть гораздо более реалистично.
Или добавить на большой глубине коэффициенты к усталости, имитацию нехватки воздуха и т.п.
Есть много вариантов сделать ограничения красиво и не столь пошло, как неразрушимый бедрок.

Cheb
> Аминь, бро.
Вот тут http://www.gamedev.ru/code/forum/?id=161884&page=93#m1382 я приводил расчёты по размерам карт.

Страницы: 194 95 96 97101 Следующая »
ПрограммированиеФорумГрафика