Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the antispam-bee domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/ruwritingagame/public_html/wp-includes/functions.php on line 6121
Игра в Написание Игры – Роман-ностальгия по временам когда программирование было Искусством, а не ремеслом

Предисловие: О чем это вообще?

GameDev, 3D, cross-platform, C++, Visual Studio, Android, Windows, OpenGL ES. Этот блог сложился как практически пошаговая инструкция (обучалка) по написанию собственной игры с нуля. Написать свою игру – моя давняя мечта. И теперь я знаю как это сделать правильно. Есть в голове несколько идей что бы это могло бы быть, окончательно пока еще не определился. […]

Глава 39. Сложные формы (с GitHub-ом)

Следующий шаг – это заменить модели на что-то более актуальное чем просто квадратики. Например, на это: Я выбрал именно эту модель за ее изысканно гнутые формы. Если чо, это 1935 Deusenberg SSJ Speedster, масштаб 1:64. Для этого понадобится расширить функционал ModelBuilder-а и ModelLoader-а. Также понадобятся новые XML таги в дескрипторах чтобы этот функционал задействовать. Здесь […]

Глава 38. Иерархичные модели

Теперь можно подумать и о более сложных моделях, состоящих из нескольких элементов с индивидуальным поведением. Например – машина, где корпус был бы корневым элементом, а колеса – дочерними. Для обоих (корпус и колесо) понадобятся собственные отдельные дескрипторы и классы, обсуживающие их поведение. 1. В Windows File Explorer-е откроем наш корневой (CPP) каталог, сделаем копию a997modeler […]

Глава 37.2. GitHub

Для уверенности, что мы с Вами точно на одной странице, давайте ссинхронизируем наши проекты. Полный текущий репозиторий Проекта можно сгрузить с https://github.com/bkantemir/_wg37 Windows solution, x86: _wg37-main\a997modeler\p_windows\p_windows.sln Android solution, ARM64: _wg37-main\a997modeler\p_android\p_android.sln Важные изменения: Чтобы отвязать проект от каталога C:\CPP, все пути в настройках проекта переведены в относительную форму. Как ..\..\engine вместо C:\CPP\engine. Чтобы облегчить репозиторий, из […]

Глава 37. Оптимизация мешей

Модель полностью готова, но остался еще 1 вопрос: Сейчас модель состоит из 316 вертексов и 144 треугольников (432 индекса), что не так уж и много по сравнению с 3D редакторами. Но все-таки, откуда СТОЛЬКО-то?? Ну, сама коробка например: 6 сторон, по 4 вертекса каждая = 24 вертекса 12 ребер, по 4 вертекса каждое = 48 […]

Глава 36. “Стеклянный” эффект

Модель почти готова. Не хватает только: Слюдяной пленки и Акцизной марки Тут нам даже не придется писать новых шейдеров. Для пленки мы возьмем наш “зеркальный” шейдер (как для позолоченных принтов) с белым шумом в качестве главной текстуры (uTex0) и “странслируем” ее в полупрозрачную 8×1 текстуру glass01.bmp (uTex3), имитирующую стеклянное отражение. Это просто белая прозрачная текстура […]

Глава 35. “Проволочный” шейдер

Здесь я собираюсь добавить золотую ленточку (пломбу). Это будет линия, последовательность точек вместо обычного набора треугольников. Для этого потребуются: Набор новых тагов в ModelLoader Новая переменная lineWidth в классе Material В DrawJob будет нужно перекалибровывать lineWidth в зависимости от дистанции Дополнительный функционал в шейдерах И, конечно, новый model descriptor 1. Скопируем нижеследующий код в Текстовый […]

OpenGL ES vs Vulkan vs Angle

Конечно, меня мучали сомнения по поводу выбора OpenGL ES. Теперь у меня есть и ответы: Vulkan Не будем углубляться здесь насколько он хорош (а он и правда хорош): Однако меня больше интересует насколько он кросс-платформенный. Оказывается, не совсем. А главное, он даже НЕ кросс-GPU !! Он GPU-specific, так что Vulkan программы для AMD и для, […]

Видео. DaVinci Resolve

Настал момент, когда мне понадобилось в моем блоге поделиться не просто картинкой, а видео. Задача разбивается на несколько шагов: 1. Записать (захватить) видео Допустим, у меня на экране анимация, которую я собираюсь записать (захватить). Windows 10 предлагает Capture утилиту для записи дисплея. Это часть Xbox Game Bar-а. Для запуска – нажмите Windows+G. Или можно открыть […]

Visual Studio: the file contains a virus?!

С какого-то момента начал получать от Windows Defender-а такие сообщения: Microsoft Visual Studio: Unable to start program ‘C:\CPP\…\w.exe’. Operation did not complete successfully because the file contains a virus or potentially unwanted software. Типа, не могу запустить программу, потому что она содержит вирус или потенциально нежелательный код. По-началу меня это не сильно расстраивало, потому что […]

Глава 34. “Тюнинг” Материала

Мы ВСЕ ЕЩЕ пытаемся “нарисовать” стык (щель) между пачкой и крышкой как небольшую normal map приложенную к части существующей текстурированной поверхности. На данный момент у нас есть вырезанные фрагменты с их “родными” собственными Материалами. В предыдущей главе мы просто заменили их на зеленый Phong. На самом же деле нам нужны родные Material-ы, только с добавленной normal map. […]