Вопрос

Я хотел бы знать, как создать fps-игру с SDL lib?

Есть ли книги, которые объясняют примерами?

Это было полезно?

Решение

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

Шаг первый, вам понадобятся хорошие навыки отладки для такого проекта. Получить код, завершенный Стивом Макконнеллом. Прочитайте все это. Затраченное время окупится больше всего, что вы могли бы прочитать / поэкспериментировать.

Возьмите в руки исходный код какой-нибудь игры. ЛЮБАЯ игра. Убедитесь, что вы видите что-то простое, прежде чем увидите что-то большое и сложное, и имейте в виду, когда вы смотрите на любой игровой код, в котором может быть объединенная команда, УЖЕСТИТЕ больше времени, чем вам когда-либо. Дело в том, чтобы увидеть структуру кода.

Получите справочник по 3D математике, он не должен быть ТОЧНЫМ, но вам нужно будет знать такие вещи, как точечные продукты вперед и назад, уметь выяснить, как создать матрицу для вашей камеры в мире. и т.д. (даже если вы пишете 0% кода рендеринга)

(правка) Вот отличная книга по 3D математике Математика для программирования трехмерных игр и компьютерной графики, второе издание (серия по разработке игр) Это не то, чему вы учитесь в колледже, это скорее нечто среднее между триггером и более продвинутыми практическими концепциями: как создать набор инструментов для себя простой физики, эффективного обнаружения столкновений и т. д.

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

Читайте о практическом проектировании системы. Ваши различные системы должны будут блокироваться. Хорошо обдумай это. Ваша система может быть просто хорошей в C или в C ++, именно МЫСЛЬ, которая вкладывается в то, как будут проходить ваши данные / элемент управления, будет иметь значение, а НЕ то, насколько идеально вы будете эмулировать шаблоны проектирования (хотя они очень полезны, а также грубые)

Основы искусственного интеллекта, а не "настоящие" AI, но функциональный AI; Существует большая разница. Конечные автоматы хороши для начала и достаточны для простого FPS.

Узнайте немного об оценке и планировании. У вас не будет времени сделать все, что вы хотели бы сделать, чтобы правильно сделать FPS. Вам придется как сортировать, так и учиться сортировать; это две разные вещи, последняя сложнее. Опыт - самый лучший учитель здесь. (хотя у легендарного Макконнелла тоже есть книга по этому вопросу)

Иметь систему, чтобы вставить свой игровой процесс в свой уровень. Если вы просто программист, то лучше всего написать плагин для уже существующей программы редактирования, такой как 3DS Max. Я очень рекомендую Макса вместо Майи для программиста. Скрипт Maya хорош, но больше ориентирован на умных непрограммистов. Я считаю, что 3DS Max должен больше думать о том, как программист должен создавать и редактировать свой мир.

Вы можете потратить ГОДЫ на создание инструментов, чтобы позволить вам сделать это правильно, поэтому вы хотите делать вещи таким образом, чтобы вы могли редактировать быстро и точно Если вы делаете свой собственный редактор, включите его в свой игровой мир. Если ваш мир не TRULY 3D, и вы хотите сделать много уровней быстрым, вы можете сохранить данные уровня примерно так, что сэкономит вам много времени. Где X - стена, остальные буквы - игровые объекты, которые простой парсер может преобразовать в игровые объекты и мировые координаты.

 xxxxxxxxxxxxxxxxxxxxxxxx
 xx..........P..........x
 xxxxxxx...........I....x
 xR....xxx...........E..x
 xx.................0xxxx
 xxxxxxxxxxxxxxxxxxxxxxxx

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

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

Другие советы

Загрузите источники Quake 3 по адресу filehack и узнайте из них.

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

-SDL - это библиотека 2D-графики, вы не можете написать FPS в 2D, поэтому вы должны использовать 3D-библиотеку, либо DirectX, либо openGL

-SDL имеет возможность "синхронизировать" с openGL, используя его для графики, но в этой теме не так много помощи онлайн

Я предлагаю вам зайти на Lazyfoo.net, который является абсолютно удивительным ресурсом для начинающих по программированию игр с использованием SDL, он показывает вам, как рисовать на экране, а также учит, как применять это в программировании игр. Пройдя через это, вы сможете сделать клон тетриса или большинство других игр 2D-типа

После этого вы будете готовы к 3D (это гораздо сложнее, требует лучшего понимания математики и требует гораздо больше кода для выполнения более простых задач), если вы пойдете с openGL, ознакомьтесь с учебными пособиями NeHe, они В настоящее время вы работаете над новым набором, использующим SDL с openGL, поскольку более ранние учебные пособия, хотя и полезны, довольно плохо написаны и используют Windows (win32) API

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

Несмотря на то, что они не относятся к SDL, NeHe OpenGL - отличное место для начала, чтобы узнать о том, как делать 3D.

Если это ваша первая игра, вы, вероятно, захотите прицелиться ниже, чем FPS. Написание простой 2D-игры «Тетрис» с использованием SDL научит вас всему, что вам нужно знать об этой библиотеке.

Практически все, что написано в TItle «Уловки гуру по программированию игр» " собирается показать вам, как сделать игру FPS. Лемот любит их.

Изменить: забыли эти заголовки.

Я нашел этот сайт некоторое время назад, когда я играл с SDL , вы Здесь вы найдете примеры программ, которые вы можете загрузить здесь

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top