Давайте напишем ... MMO! Часть 22: Что-нибудь такое

Опубликовано NowhereMan - вс, 06/07/2020 - 16:20

15 июня 2011

Почему под курсором темно?

За последний месяц или около того, я работал над тремя различными аспектами проекта:

  1. Как представить мой пейзаж в форме астероида. Он должен эффективно храниться, быстро рисоваться и при этом быть модифицируемым пользователем.
  2. Движение по ландшафту с различной степенью детализации.
  3. Освещение.

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

Я семь месяцев в этом проекте. Я говорил себе, что как только я сделаю эти три вещи, я смогу построить реальный мир и увидеть его в первый раз. Но мне не терпится. Я очень устал от рендеринга сцен из Minecraft снова и снова. Я думаю, вам, читателям, тоже становится скучно, так как трафик неуклонно падает. Не так много людей интересуются деталями реализации!

Может полярные координаты помогут?

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

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

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

Мир 1: Земля

На что-то это похоже...

Вот видео.

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

Затем я добавил воду и окрасил поверхность по высоте, чтобы бвло похоже на траву и песок. Я разбросал несколько деревьев, чтобы закончить пейзаж. Наконец, были скопированы кусочки зданий Minecraft, чтобы предположить, как это будет выглядеть в мире. Те же самые куски Minecraft используются во всех этих мирах, и определённо не помешало бы немного обрезки. Я просто вырезал диапазоны по x, y и z, так что с ними попали вода и деревья.

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

Так как блочные объекты больше не внедрены в блочный мир, они могут перемещаться. Это значит, что я могу сделать дирижабли или корабли на воде, которые можно построить из блоков. Нет причин, по которым нельзя было бы сделать целые плавучие города, если захочется.

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

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

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

Жаль, что это не тот мир, который я хочу построить! Слишком похоже на Minecraft. И я с самого начала чувствовал, что если вы собираетесь строить воображаемый мир, он должен демонстрировать некоторое воображение! Кому нужен другой плоский ландшафт?

Мир 2: Голые астероиды

Мир голых астероидов

Вот видео.

Это проект, о котором я говорил последние несколько месяцев. Полубесконечное кольцо астероидов (несколько миллионов), каждый из которых имеет детальный пейзаж. Диаметр каждого астероида около 1 км. На них (или внутри них) можно строить блоки в стиле Minecraft, растения и, возможно, другие вещи. Они должны медленно вращаться в космосе, и вы должны уметь строить корабли, чтобы перемещаться между астероидами.

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

Эти "астероиды натурального вида" - мрачные места. Я могу сделать разные астероиды разной формы, но они все равно выглядят неинтересно. Если вы видели один из них, вы видели их все.

Без гравитации двигаться будет немного больно. Вам нужно будет иметь средства управления для изменения ориентации, и ходьба и полеты будут требовать гораздо больше суеты.

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

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

Мир 3: Зеленые астероиды

Мир зеленых астероидов

Вот видео.

Мы могли бы решить эти проблемы с применением back-story (BS). Можно сказать, что древняя раса колонизировала эту солнечную систему, оставив в каждом из этих астероидов генераторы гравитации и разлагающиеся биосферы, и разрушила города. Игроки могли собирать строительный материал и генераторы гравитации из существующих сооружений.

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

Если бы была гравитация, я мог бы держать аватары ориентированными на землю. Это означает, что ходьба и полеты снова естественны, хотя ваша ориентация будет быстро меняться по мере того, как вы будете двигаться. Скоро я попробую.

Если двигаться под поверхностью, можно увидеть, как строятся эти астероиды. Каждый из них представляет собой шар, деформированный картой высоты. 1-4 этих шара расположены достаточно близко, чтобы пересечься, образуя огромную бугорчатую массу. Затем я добавил сферу воды вокруг каждого центра. Это дает озёра (с видимой кривой!), где рельеф погружается ниже линии воды.

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

Мир 4: Корабль поколений

Жизнь в консервной банке

Вот видео.

Так как я не мог сгенерировать "естественно" выглядящий полый астероид, я решил построить "корабль поколений". Это шаблон из старой фантастики, где кораблю-колонии требуются сотни (даже тысячи) лет, чтобы добраться до места назначения.

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

Я добавил большие окна по бокам, но не уверен, что это хорошая идея. Они разбивают пейзаж и мало что добавляют к виду.

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

Мир 5: Газовый гигант

Острова в небесах

Кто-то в комментарии на этом сайте (или по электронной почте) предположил, что мир может быть плавучими островами в атмосфере газового гиганта. Если вы помните, что предлагали это, пожалуйста, свяжитесь со мной, и я отдам должное. Я не могу найти комментарий.

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

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

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

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

Я также сделал это довольно темно-синим. Я думал о газовых гигантах вдали от солнца и ушел от этого. Это выглядело бы более дружелюбно с пухлыми белыми облаками и нормальным небом.

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

Все вместе?

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

Так что, может быть, мне стоит сложить все эти элементы вместе. Почему бы и нет? Это просто "программирование".