p.s.
Разработка игры с нуля может оказаться одним из самых сложных путешествий. Учитывая объём вложенных усилий, разработку игр можно сравнить с изготовлением автомобиля. Она комбинирует множество различных областей знаний, которые в противном случае не пересекались бы, а это значит, что создателю игры зачастую приходится быть мастером на все руки. Немногие другие проекты могут похвастаться тем, что нашли способ комбинировать расчёты сложного освещения, точное моделирование физики и внутреннюю работу полноценной, стабильной и самодостаточной экономичной модели в нечто целостное. Это лишь некоторые из тех профессий, которые приходится осваивать, и в быстрорастущем мире игр постоянно появляются новые. Среди всего этого шума со временем постепенно начинают проступать некоторые закономерности. Поскольку игры доступны уже нескольким поколениям, а некоторые из них не представляют себе мир без них, определённые ожидания начинают формироваться в рамках духа времени. Захватывающие дух изобретения и технические демонстрации вчерашнего дня стали обыденностью сегодня, маяками, освещающими будущее. Быть в курсе этих тенденций и не отставать - вот что отличает хорошего разработчика игр сегодня, и вот тут-то мы и приходи на помощь. Хотя эта книга не научит вас всему, она даст вам серьёзное преимущество, не только расширив ваш арсенал приёмов и идей, но и поставив чёткую цель на будущее, которая всегда будет способствовать развитию и прогрессу во что-то большее и лучшее.
В первых двух главах вы узнаете о создании простой, но мощной игры в стиле RPG, построенной на основе гибких архитектур, используемых в современных играх. Затем эта же игра получит дополнительную графическую мощь, поскольку мы рассмотрим построение эффективной системы частиц, легко расширяемой и поддерживающей множество различных графических опций. Далее вы быстро освоите практические аспекты и преимущества создания нестандартных инструментов, таких как редактор карт, для изменения и управления ресурсами игры. Также будет затронуто использование SFML-шейдеров, прежде чем мы полностью откажемся от библиотеки SFML в главе 7 «Шаг вперёд, уровень вниз – интеграция OpenGL», используя чистую библиотеку графики OpenGL и самостоятельно выполняя рендеринг на экране. Далее мы рассмотрим и реализуем передовые методы освещения, такие как карты нормалей и карты отражений, чтобы придать игровой сцене графическую выразительность с помощью динамического освещения. Конечно, не существует света, который не отбрасывал бы тени, поэтому глава 9 «Скорость тьмы – освещение и тени», рассматривает и реализует карты теней в 3D-пространстве, позволяя нам создавать реалистичные трёхмерные тени. Всё это завершается финальной оптимизацией игры, которая не только сделает её максимально быстрой, но и предоставит вам все необходимые инструменты и навыки для дальнейшего совершенствования.
Хотя эта книга призвана вдохновить вас стать мастером на все руки, она также поможет вам стать супер-мастером в некоторых областях, позволяя вашим играм выглядеть и выполняться максимально хорошо. Нас ждёт долгий путь, так что не забывайте брать с собой амбиции, и, надеюсь, мы ещё увидимся на финишной прямой. Удачи!
Эта книга предназначена для начинающих разработчиков игр, которые уже имеют базовые знания библиотеки SFML, промежуточные навыки работы с современным языком программирования C++ и уже создали одну-две игры самостоятельно, независимо от их сложности. Знание современной библиотеки графики OpenGL не обязательно, но может быть плюсом.
Глава 1 «Под капотом - установка бэкэнда» охватывает использование нескольких ниже-лежащих в программном стеке архитектур, которые будут поддерживать нашу игру.
Глава 2 «Время игры! — разработка проекта» посвящена фактическому построению и запуску игрового проекта книги с использованием архитектур, описанных в главе 1 «Под капотом - установка бэкэнда».
Глава 3 «Да прольётся дождь! — построение системы частиц» рассматривает сложности реализации эффективной и обширной системы частиц.
Глава 4 «Имейте готовое снаряжение - создание инструментов игры» дает представление о создании нестандартных инструментов игры путем настройки их бэкэнда.
Глава 5 «Заполнение пояса с инструментами - еще несколько гаджетов» завершает реализацию редактора карт, который можно использовать для размещения, редактирования и других манипуляций с фрагментами карты, сущностями и излучателями частиц.
Глава 6 «Добавление последних штрихов - использование шейдеров» объясняет и использует недавно переработанный рендерер, позволяющий легко использовать шейдеры, реализуя цикл день/ночь в нашей игре.
Глава 7 «Один шаг вперед, один уровень вниз - основы библиотеки OpenGL» погружает нас в глубины технических тонкостей использования низкоуровневой библиотеки графики OpenGL, проводя нас через рендеринг базовых фигур, их текстурирование и создание переперемещения по миру.
Глава 8 «Пусть там будет свет - введение в продвинутое освещение» знакомит с концепциями освещения игрового мира в трех измерениях, с использованием карт нормалей для создания иллюзии дополнительных деталей и с добавлением зеркальных бликов для создания сияющих поверхностей.
Глава 9 «Скорость темноты - освещение и тени» расширяет движок освещения, реализуя динамические, трехмерные тени от точечных источников света, отбрасываемые во всех направлениях одновременно.
Глава 10 «Чтение, которое нельзя пропускать - финальная оптимизация» завершает книгу, заставляя нашу игру выполняться в разы быстрее и предоставляя вам инструменты для ее дальнейшего совершенствования.
Прежде всего, необходим компилятор с поддержкой новых стандартов языка программирования C++. Также необходима библиотека SFML, поскольку она используется при построении нами игры. Для глав 7 и выше также требуются последние версии библиотек графики GLEW и GLM. Любые другие отдельные инструменты, которые могут быть использованы в этой книге, упомянуты в отдельных главах, в которых они используются.
https://www.packtpub.com/en-us/product/mastering-sfml-game-development-9781786466846
https://github.com/PacktPublishing/Mastering-SFML-Game-Development
https://www.packtpub.com/sites/default/files/downloads/MasteringSFMLGameDevelopment_ColorImages.pdf