игры

Давайте напишем ... MMO! Часть 21: Свет и тень

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

24 мая 2011

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

Давайте напишем ... MMO! Часть 20: Еще прозрачность

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

18 мая 2011

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

Давайте напишем ... MMO! Часть 19: Опять прозрачность

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

10 мая 2011

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

Давайте напишем ... 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 и начал работать с ней. Это заняло почти всю неделю.