Форум Игромании

Форум Игромании (http://forum.igromania.ru/index.php)
-   Архив (Общеигровые вопросы) (http://forum.igromania.ru/forumdisplay.php?f=173)
-   -   Проектируем ядро игры (http://forum.igromania.ru/showthread.php?t=52299)

pokibor 27.11.2007 13:46

Итак, мы (я и [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
где будет обсуждаться концепция игры

SОNIC 27.11.2007 16:18

pokibor
Согласен, я могу начать с вами в декабре, не против? Я тоже чуть в Delphi7 разбираюсь.;)

pokibor 27.11.2007 16:52

Цитата:

Сообщение от IMMОRTAL (Сообщение 2767533)
pokibor
Согласен, я могу начать с вами в декабре, не против?

Нет, конечно. Но, как я уже сказал, желательно разобраться с объектно ориентированным программированием. Хотя если с ним проблемы - объясним, конечно. Впрочем, в http://forum.igromania.ru/showpost.p...99&postcount=9 [CCCP] Monster вроде дал ссылку на основы ООП...

И, повторюсь, первый шаг - это всегда проектирование игры, а не программирование..

CMogilko 27.11.2007 19:17

Знаю нормально ANSI/ISO C++(т.е. стандартный, консольный, без привязки к среде) и Delphi. ООП знаю на уровне теории, редко получалось применить что-то более менее сложное, не было таких задач, но всё понимаю.
Игра 2D? если да, то предлагаю скроллер(возможно это и имел ввиду SIV-PIRATE), это похоже на марио, вормс и летящие самолётики времён 90х. Благо был небольшой опыт работы с ними.
Цитата:

Сообщение от pokibor (Сообщение 2767729)
И, повторюсь, первый шаг - это всегда проектирование игры, а не программирование..

для начала проектирования нужно набрать хотя бы небольшую команду.

WideWhale 27.11.2007 19:26

А как будет проводится обучение?

pokibor 27.11.2007 20:00

Цитата:

Сообщение от CMogilko (Сообщение 2768649)
ООП знаю на уровне теории, редко получалось применить что-то более менее сложное, не было таких задач, но всё понимаю.

О, не беспокойтесь! По опыту могу сказать, что в мало-мальски серьёзной игре ООП понадобится на полную катушку! :Grin:

Цитата:

Сообщение от CMogilko (Сообщение 2768649)
Игра 2D? если да, то предлагаю скроллер(возможно это и имел ввиду SIV-PIRATE), это похоже на марио, вормс и летящие самолётики времён 90х. Благо был небольшой опыт работы с ними.

Возможно, возможно. SIV-PIRATE предлагал не скроллер, а "платформы и лестницы" (платформер то бишь). Это, конечно, похоже, но всё-таки немного иное. Пока собираем идеи, так сказать "мозговой штурм".
А вот насчёт 2D вопрос не совсем корректен. Как я уже сказал, у нас ядро игры и её графическая часть будут реализованы отдельными модулями, т.е. сама игра может быть 2D по своей логике, а графика будет 3D. Или наоборот. Это мы обсудим в самом начале проектирования, т.к. как правильно замечено
Цитата:

Сообщение от CMogilko (Сообщение 2768649)
для начала проектирования нужно набрать хотя бы небольшую команду.

Того и ждём.

Цитата:

Сообщение от Vaider (Сообщение 2768716)
А как будет проводится обучение?

Обучение будет проводиться в процессе практического участия в проекте. Вы отвечаете в теме, делаете свои предложения, читаете чужие посты, выполняете порученные Вам куски общей работы и учитесь потихоньку на практике.
Если выяснится поголовное незнание каких-то основопологающих принципов - мы с [CCCP] Monster напишем статью или дадим ссылку, где почитать об этом можно.
______________________________________
Ах, да, моё мнение по обсуждаемому вопросу :Grin:
Вообще-то я проникся идеей [CCCP] Monster, высказанной им в аське, и не прочь делать нечто вроде микромашинок. Это позволит отработать примитивную физику, организовать логически-трёхмерный игровой мир (возможно, 3D будет простенькое, но всё же) и вообще обладает некоторым потенциалом для переделки в тот же скроллер.

[CCCP] Monster 28.11.2007 16:07

pokibor

Респект:) Хорошо с народом работаешь:)

Микромашинки, говоришь... Ну чтож. Для начала надо бы диздок составить (а еще до этого все-таки утвердить жанр). Думаю, когда добавится еще пара предложений, соорудим опрос, где проведем голосование по жанру.

Теперь по диздоку. Ну, микромашинки у нас, как предполагается, будут аркадкой:) Нам понадобятся возможности по отображению геометрии открытых пространств и моделей. С точки зрения самой игры - у нас должны быть дороги, и не дороги:) Ну это значит, что на дороге сопротивление движению минимально и противниковский ИИ будет держаться именно трасс. А недороги будут иметь высокое сопротивление движению (зато углы резать можно). Плюс понадобятся триггеры для реализации игрвой логики (вейпоинты, старт/финиш и т.д.).

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

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

fakl

Можно и 3d action сделать, только посложнее это будет. Придется описывать разные энтити, делать расчет лайтмепов и т.д. В зависимости от архитектуры. Хотя можно, как в Сталкере, сделать освещение методом теневых объемов и сгладить их в шейдере (у ATI в SDK есть пример, как это делать). Плюс сложнее сделать ИИ. Он ведь должен ориентироваться в пространстве, бегать и трелять в игрока.

В космосиме попроще всё. Тока вот не знаю че там будет. Кстати, Ламот в своей книге описывал именно создание космосима.

pokibor 28.11.2007 16:25

Цитата:

Сообщение от [CCCP] Monster (Сообщение 2772784)
Респект:) Хорошо с народом работаешь:)

Спасибо! :)

Цитата:

Сообщение от [CCCP] Monster (Сообщение 2772784)
Микромашинки, говоришь... Ну чтож. Для начала надо бы диздок составить (а еще до этого все-таки утвердить жанр). Думаю, когда добавится еще пара предложений, соорудим опрос, где проведем голосование по жанру.

Думаю, да. Тогда ещё распишем плюсы и минусы всех предложенных жанров и пусть народ сам выбирает.

Цитата:

Сообщение от [CCCP] Monster (Сообщение 2772784)
Теперь по диздоку. Ну, микромашинки у нас, как предполагается, будут аркадкой:) Нам понадобятся возможности по отображению геометрии открытых пространств и моделей. С точки зрения самой игры - у нас должны быть дороги, и не дороги:) Ну это значит, что на дороге сопротивление движению минимально и противниковский ИИ будет держаться именно трасс. А недороги будут иметь высокое сопротивление движению (зато углы резать можно). Плюс понадобятся триггеры для реализации игрвой логики (вейпоинты, старт/финиш и т.д.).

Меня сейчас скорее заботит представление машин и столкновения с препятствиями. Видимо, логически машинки проще сделать как набор отрезков, по которым и будет рассчитываться столкновение. То есть это будет нечто вроде плоского многоугольника + положение центра тяжести, и всё. Рассчитывать колёса или брать скорость движения по центру тяжести, в принципе, не суть важно - движение по дороге и столкновения происходят на разных уровнях (уровне колёс и уровне "стенок" машины).
А вот над реализацией препятствий думаю... возможно, удасться вывести единый класс геометрического объекта с обработкой столкновений в движении, тогда и машины, и препятствия будут наследовать от него.
AI и связаные с ним вещи - это дело десятое, не имеющее непосредственного отношения к логике мира игры.

Цитата:

Сообщение от [CCCP] Monster (Сообщение 2772784)
С точки зрения графики также было бы неплохо сделать системы частиц, которые будут пылью и дымом, но это позже и в перспективе.

Движок вообще в далёкой перспективе. При тестировании ядра он может быть и простеньким 2D, а дальше улучшим.

Имхо, космосим как-то уж слишком просто и не познавательно. Хотя, конечно, может его и правильнее для начала будет делать.

GSUR
Будут проблемы с визуализацией, даже тестовой. Файтинг сразу подразумевает неплохую анимацию персонажей.

hоly_shiter 28.11.2007 19:25

Цитата:

Сообщение от pokibor (Сообщение 2774263)
Пишется основа и разрабатывается формат уровня.

Хотелось бы побольше узнать об этом и о разработке редактора уровней.

pokibor 28.11.2007 20:52

Цитата:

Сообщение от GPower666 (Сообщение 2774299)
Хотелось бы побольше узнать об этом и о разработке редактора уровней.

Ждите практики :sml:
А вообще редактор - приложение, в котором удобном способом рисуется уровень и сохраняется в необходимый формат. Мне, честно говоря, не ясно, что именно вызывает вопросы. Задача-то банальная и решается "в лоб"...

hоly_shiter 28.11.2007 21:04

pokibor
Меня интересует пример создания такого приложения.

pokibor 28.11.2007 21:08

GPower666
Задавайте вопросы конкретнее. Если Вы ожидаете, что сейчас за пару минут Вам напишут пример редактора уровней и игрушку для работы с этим редактором, то ошибаетесь. Редактор - элементарное с точки зрения сложности программирования, но довольно долгое по времени написания приложение, особенно если он предназначен не только для внутреннего использования.

hоly_shiter 28.11.2007 21:13

pokibor
Может тогда создание редактора будет описано в конце статьи, после создания игры? Всё таки элементарно создание редактора для тех, кто в программировании разбирается, а не для таких ламо, как я.

pokibor 28.11.2007 21:32

Цитата:

Сообщение от GPower666 (Сообщение 2775051)
pokibor
Может тогда создание редактора будет описано в конце статьи, после создания игры? Всё таки элементарно создание редактора для тех, кто в программировании разбирается, а не для таких ламо, как я.

Когда дойдём до этого этапа, обязательно редактор сделаем.

[CCCP] Monster 28.11.2007 23:42

pokibor

Мне кажется, что GPower666 думает, что создать редактор можно к любой игре, даже к Нид Форс Спиду последнему. Если я не прав - хорошо. Если прав, то огорчу - написать редактор можно только в том случае, если известен формат данных уровней, в котором игра их хранит и подгружает. Если этого нет - то редактор написать невозможно.

hоly_shiter 29.11.2007 01:22

[CCCP] Monster
Как я уже отметил выше, вопрос создания новых форматов и... ээ... "расшифровки" нестандартных меня очень интересует (да и остальных, думаю, тоже).

[CCCP] Monster 29.11.2007 11:55

GPower666

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

[CCCP] Monster 30.11.2007 16:12

Создал опрос, почистил тему от неактуальных более постов. Голосовать можно больше чем за один вариант.

WideWhale 30.11.2007 17:18

Я буду участвовать. Из языков я знаю средненько Basic и совсем чуть чуть C++

[CCCP] Monster 30.11.2007 17:44

Vaider

В таком случае тебе следует как можно плотнее познакомиться с С++. Возможно, мы будем давать технические задания на разработку простеньких функций или классов. Загляни в тему со ссылками - там ты найдешь все, что тебе нужно.


Часовой пояс GMT +4, время: 06:04.

Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.