Итак, мы (я и
[CCCP] Monster ) начинаем проектировать учебную игру. Если эта тема будет интересна, то мы попытаемся пройти все этапы написания игры и в итоге получить что-нибудь работоспособное.
Сразу скажу, что первый шаг в разработке любого сложного проекта - не программирование, а проектирование. Стало быть, мы будем сейчас проектировать.
Далее, игру разумно строить по принципу модульности - только так можно повысить шансы на выживание проекта, в котором участвует нестабильный коллектив. Стало быть, игра будет разбита на некоторое число модулей, общающихся между собой при помощи заранее определенных
интерфейсов.
Как минимум таких модулей будет два: ядро игры, отвечающее за игровую логику, и её движок, причём ядро игры о движке знать не будет, а будет лишь предоставлять достаточно данных и методов для работы движка.
Сейчас начинается обсуждение базовой концепции. Во-первых, нужно определиться с жанром игры. Во-вторых, с заинтересованными в проекте людьми и их знаниями (особенно в области объектно-ориентированного программирования). Поэтому оставляйте свои заявки и предложения по жанру, желательно с обоснованием. Также описывайте свои текущие навыки в программировании.
Сразу говорю, что проект
учебный, а потому переоценивать свои силы и писать "давайте создадим красоту с реалистичной физикой" не стоит.
__________________________________________________ _________________________________
Сделал прообраз опроса. Теперь ждём, пока
[CCCP] Monster его, возможно, подправит и окончательно утвердит. Желательно, чтобы опрос был многоопциональным, т.е. чтобы можно было выбрать более одного варианта.
Предложенные варианты:
1) Платформер - игра с двухмерной логикой (иногда присутствует несколько слоёв «глубины»). Механика заключается в обработке переходов с платформы на платформу, возможны движущиеся платформы и склоны, т.е. платформы с негоризонтальной поверхностью. При игре имеет смысл обработка только неких окрестностей положения игрока, на оставшейся территории уровня жизнь, как правило, замирает. AI обычно не требуется, однако возможна организация боёв с ботами, аналогичными по возможностям игроку.
Предложили: SIV-PIRATE; отчасти CMogilko.
2) Скроллер - игра с двухмерной логикой. В данном случае понимается не то же, что и под платформером, а игра фактически на одном уровне высоты. Возможно, визуально изменения высоты имеются в наличии - но по механики игры их нет. Сюда можно отнести и самолётики с видом «с боку», т.к. там нет прыжков и учёта силы тяжести, ну и, разумеется, большинство двухмерных аркад с видом «сверху». Такая игра отличается донельзя простой физикой (возможны только препятствия «на плоскости»). Сюда можно отнести все идеи с двухмерными «космосимами» а также с Alien Shooter, т.к. костяк механики у них можно считать похожим. AI уровнем выше «очень тупой скрипт» зачастую не требуется.
Предложили: отчасти CMogilko; fakl; Fey; Баба_Нюра
3) Гонки - игра с двухмерной либо простейшей трёхмерной логикой и видом сверху, но с более сложными взаимодействиями. Сюда можно отнести, как ни странно, немного усложнённые физикой «танчики» и все игры, в которых наличествует езда по миру с множеством препятствий. Под простейшей трёхмерноё моделью следует понимать случай, когда все взаимодействия происходят в параллельной земле плоскости, исключая силу тяжести. NFS с некоторыми допущениями, кстати, во многом укладывается в эту схему. Физика, разумеется, не подразумевает сложных реалистичных расчетов, но вот понятием центра тяжести и даже расчетом поведения отдельно каждого из колёс (а не машины как монолитного объекта) вполне может похвастаться. AI серьёзный, и/или на программиста ложится задачи прокладки вейпоинтов по трассам.
Предложили: Pokibor, !TREY!
4) Космический симулятор. Игра с трёхмерной логикой и аркадным управлением в пространстве. Не подразумевает наличие сложных препятствий и позволяет обойтись простейшим представлением корабля игрока как сферы, для которой столкновение с чем бы то ни было обычно заканчивается крайне плохо. Физика достаточно проста, упор делается на бои в полностью трёхмерном окружении и др. миссии. AI может быть разного уровня, но он должен уметь хорошо ориентироваться в 3D-пространстве и быть способным на показательные манёвры.
Предложили: fakl
5) 3D-Action - игра с трёхмерной логикой, достаточно сложная по всем критериям, однако может быть упрощена вплоть до скроллера с прыжками по сути (Doom). Тем не менее, на серьёзном уровне проект требует больших усилий. Механика сложная, не рекомендуется.
Предложили: [CCCP] Monster
6) Файтинг - игра с двухмерной логикой, но сложными расчетами попадания ударов и прочем. Даже на стадии тестирования необходима вменяемая анимация для понимания, куда какой удар направлен и т.п. Механика не слишком сложна, однако всё-таки не рекомендуется из-за отсутствия гарантий создания вменяемой анимации.
Предложили: GSUR
7) Стратегия - игра с двухмерной логикой либо с простой 3D (различные уровни). Иные варианты реализуются редко, как правило трёхмерность ограничивается визуальной трёхмерностью с разбивкой на несколько уровней высоты. Не так важно, в реальном времени или пошаговая, скорее важны основные сложности - поиск пути на карте и искусственный интеллект. Плюс ещё наличие больших количеств одновременно обрабатываемых объектов.
Предложили: GSUR, Pokibor
__________________________________________________ _________________________________
Список участников:
BeSSyaKa
[CCCP] Monster
CMogilko
fakl
GPower666
GSUR
IMMОRTAL - за гоночный жанр.
pokibor - за гоночный жанр.
razor21
serializer
the_E.N.D.
thsGeo
Vaider
__________________________________________________ ___________________________
Что необходимо знать для полного понимания того, что будет создаваться в проекте:
Скрытый текст:
Для начала нужно научиться программировать на С++ и изучить то, что должен знать каждый программист. В теме со ссылками это есть.
Далее, нужно почитать о механизмах работы Windows.
Особенно рекомендую книгу Джейффри Рихтера "создание эффективных Win-32 приложений"
http://www.filefactory.com/file/ac9846/
Я загрузил ее перевод на хост. Ссылка действительна еще в течение 25 дней.
Из нее нам понадобятся материалы для обязательного чтения (часть 1).
Далее, часть 2 - главы 4, 6, часть 3 - главы 13 и 18, часть 4 - главы 19, 20, 21, часть 6 - глава 26. На главу 26 обратите особое и пристальное внимание - в ней рассказывается о модели оконных сообщений Windows, на основе обработки которой работает любая программа Windows.
После освения этого материала, нужно будет освоение принципов работы графических API - OpenGL или DirectX, в зависимости от того, что мы с вами решим использваоть. Ссылки на учебники и статьи есть также в теме про ссылки для программистов.
Кроме этого необходимы будут знания геометрии, знания о векторах и математических операциях с ними, матрицы и мтаричные преобразования, стереометрия (геоматрия в пространстве) и ее теоремы с аксиомами.
Это понадобится для создания математического аппарата, который реализует игровую логику, часть графики и всю физику.
Красткая шпаргалка здесь:
http://www.gamedev.ru/articles/?id=30038
В результате опроса был определен жанр - гонки
Дальнейшее обсуждение переносится в тему
http://forum.igromania.ru/showthread.php?t=53190
где будет обсуждаться концепция игры