Давайте напишем ... MMO! Часть 18: Процедурные ландшафты

Опубликовано NowhereMan - пт, 05/15/2020 - 17:52

May 1, 2011

Ну, у меня до сих пор тонны проблем, больших и маленьких, в различных портах проекта. На данный момент я чувствую, что было ошибкой пытаться поддерживать несколько платформ, и переключиться на OpenGL с вариациями в шейдерном языке и поддержкой драйверов. Один комментатор две части назад назвал его "batshit insane". Портирование израсходовало много энтузиазма, который я испытывал по отношению к этому проекту.

Давайте напишем ... MMO! Часть 17: Меньше веселья с шейдерами

Опубликовано NowhereMan - пт, 05/15/2020 - 13:54

15 апреля 2011

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

Давайте напишем ... MMO! Часть 16: Веселые шейдеры

Опубликовано NowhereMan - пт, 05/15/2020 - 05:52

10 апреля 2011

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

Давайте напишем ... MMO! Часть 15: Огромные пространства

Опубликовано NowhereMan - вт, 05/12/2020 - 15:44

24 марта 2011

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

Давайте напишем ... MMO! Часть 14: Переносимость

Опубликовано NowhereMan - вт, 05/12/2020 - 12:33

Я вернулся после недельного перерыва. Меня ненадолго навестила сестра, которая проверила, что я еще дышу, не похоронен в мусоре и не унесен пыльными кроликами. И я выбрал пару дней, чтобы поплакаться о своем прогрессе в OpenGL.

Как вы помните из последней части, я преобразовал свое демо в OpenGL 3.3 и начал портировать его на Mac OS X, только чтобы узнать, что я был введен в заблуждение OpenGL SuperBible и что Apple поддерживает только OpenGL 2.1.

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

Давайте напишем ... MMO! Часть 13: The Cake is a Lie!

Опубликовано NowhereMan - вт, 05/12/2020 - 04:11

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

Непрозрачные: 1,87 мс Прозрачные: 16,49 мс Всего: 18,36 мс Частота кадров: 54 fps
Мне нужна была функция под названием текстурные массивы, которых не было в DX9, поэтому я решил попробовать OpenGL. Моя первая версия, использующая ту же логику, что и версия DirectX (без текстурных массивов), добилась таких результатов:

Непрозрачные: 1.95 ms Прозрачные: 27.19 ms Всего: 29.14 ms Частота кадров: 34 fps
Это было гораздо медленнее для прозрачных данных. Это тот же самый код, который генерирует тот же самый список треугольников, занимающий столько же места, поэтому там точно такой же объем работы. Хотя я не копался в нем, я предполагаю, что есть некоторые дополнительные накладные расходы в Windows, чтобы добраться до вызовов OpenGL, и добавление более тысячи отдельных треугольников замедляет процесс.

Давайте напишем ... MMO! Часть 12: Приключения в стране OpenGL

Опубликовано NowhereMan - вт, 05/12/2020 - 03:18

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

Непрозрачные: 1,87 мс Прозрачные: 16,49 мс Всего: 18,36 мс Частота кадров: 54 fps
Чтобы сделать еще быстрее, мне были нужны массивы текстур. Я подумал, что это ускорит рендер прозрачных деталей еще на 5 мс, что было бы неплохо, но несущественно. Чтобы получить эту возможность, я мог либо перейти на DX 10, либо переключиться на OpenGL, либо посмотреть, смогу ли я сделать все сам в шейдерах с DX 9.

Так как использование OpenGL потенциально могло бы дать мне пользователей MacOS и Linux без потери пользователей Windows XP, я решил изучить его последнюю версию (я игрался с версией 1.1 много лет назад). Я купил электронную копию OpenGL SuperBible и начал работать с ней. Это заняло почти всю неделю.

Давайте напишем ... MMO! Часть 11: Жажда скорости

Опубликовано NowhereMan - вт, 05/12/2020 - 01:05

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

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

Давайте напишем ... MMO! Часть 10: Попытки в искусство

Опубликовано NowhereMan - вт, 05/12/2020 - 00:07

Несмотря на мое намерение реализовать большой мир, который будет страницей в кусочках пейзажей по мере продвижения, я отвлекся на все комментарии по последней части, как на этом сайте, так и на Twenty Sided Blog Самуса Янга. Я провел большую часть недели, пытаясь придумать лучшее видение моего мира.

Как я уже говорил, у меня художественная отсталость, так что это трудно для меня. Единственное исскуство, что я делал после детского раскрашивания карандашами - это фотография. И даже там я никогда не разрабатывал никакой техники. Мое правило - "Ходи в живописные места. Делай много фотографий. Оставляй хорошие".

Давайте напишем ... MMO! Часть 9: Больший мир

Опубликовано NowhereMan - пн, 05/11/2020 - 23:21

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

Мы хотим (полу-) бесконечный мир, а для этого нужна работа. Сначала давайте рассмотрим требования: