PDA

Просмотр полной версии : Проектируем ядро игры


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
pokibor
Согласен, я могу начать с вами в декабре, не против?
Нет, конечно. Но, как я уже сказал, желательно разобраться с объектно ориентированным программированием. Хотя если с ним проблемы - объясним, конечно. Впрочем, в http://forum.igromania.ru/showpost.php?p=2752199&postcount=9 [CCCP] Monster вроде дал ссылку на основы ООП...

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

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

WideWhale
27.11.2007, 19:26
А как будет проводится обучение?

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


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

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

А как будет проводится обучение?
Обучение будет проводиться в процессе практического участия в проекте. Вы отвечаете в теме, делаете свои предложения, читаете чужие посты, выполняете порученные Вам куски общей работы и учитесь потихоньку на практике.
Если выяснится поголовное незнание каких-то основопологающих принципов - мы с [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
Monster;2772784']
Респект:) Хорошо с народом работаешь:)
Спасибо! :)

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

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

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

Monster;2772784']
С точки зрения графики также было бы неплохо сделать системы частиц, которые будут пылью и дымом, но это позже и в перспективе.
Движок вообще в далёкой перспективе. При тестировании ядра он может быть и простеньким 2D, а дальше улучшим.

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

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

hоly_shiter
28.11.2007, 19:25
Пишется основа и разрабатывается формат уровня.
Хотелось бы побольше узнать об этом и о разработке редактора уровней.

pokibor
28.11.2007, 20:52
Хотелось бы побольше узнать об этом и о разработке редактора уровней.
Ждите практики :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
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

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

GSUR
30.11.2007, 17:53
Я бы хотел попробывать себя со своим Delphi7.

Bessyaka
30.11.2007, 20:05
Если нужен будет моделлер, то я к вашим услугам.

WideWhale
30.11.2007, 23:46
А когда мы начинаем?

pokibor
01.12.2007, 00:15
А когда мы начинаем?
Дайте время на голосование! Уж день-то оно точно должно продлиться. Начнём не раньше, чем кончится голосование. Кстати, я смотрю, сейчас 3D Action лидирует, в связи с чем у меня возникают вопрос - а люди вообще читали внесённые в первый пост замечания по голосованию? Или они настолько в себе уверены?

serializer
01.12.2007, 01:27
Физика, разумеется, не подразумевает сложных реалистичных расчетов, но вот понятием центра тяжести и даже расчетом поведения отдельно каждого из колёс (а не машины как монолитного объекта) вполне может похвастаться. AI серьёзный, и/или на программиста ложится задачи прокладки вейпоинтов по трассам.Какой кошмар :eek: . Сначала говорили о 2Д проете "для новичков", а теперь 3д да еще с расчетом поведения отдельно каждого из колёс . Для новичков, имхо, это слишком круто. Ведь в простой гонке в роли препятствий участвуют в основном бордюры (имеющие в основном bb(ограничивающие объемы) в виде прямоугольников) и "внетрассовая поверхность" (например, трава). А если так хочется реальной физики, к irrlight'у (вы же на нем собрались писать) есть полно модулей.
3D-Action - игра с трёхмерной логикой
Для кого этот вариант придуман? Конечно, большинство хотят именно 3д, но он самый трудновыполнимый и врядли удастся его реализовать. Поэтому совет, уберите его.
ЗЫ. Если получиться, чем надо помогу.
ЗЫ.
Есть еще один вариант: Градостроительный симулятор - что-то на подобии стратегии с другим геймплеем, когда игрок отстраивает город и всячески улучшает его.

hоly_shiter
01.12.2007, 01:37
большинство хотят именно 3д, но он самый трудновыполнимый и врядли удастся его реализовать.
Что там сложного, объясните.

GSUR
01.12.2007, 05:06
Кстати, я смотрю, сейчас 3D Action лидирует, в связи с чем у меня возникают вопрос - а люди вообще читали внесённые в первый пост замечания по голосованию? Или они настолько в себе уверены?
По мне так стратегия для начала будет не плохо,конечно в 3D не обязательно, разве Стар без вращения камеры плох!?
Ну и файтинг будет в самый раз, ну помаемся с анимацией, зато сами потом гордится будем. (супротив 3д экшена не че не имею).

WideWhale
01.12.2007, 09:07
На счет 3D можна например вместо машин сделать простые прямоугольники. Будет на много проще. Идее конешно не очень, но все таки.

pokibor
01.12.2007, 10:14
Какой кошмар :eek: . Сначала говорили о 2Д проете "для новичков", а теперь 3д да еще с расчетом поведения отдельно каждого из колёс . Для новичков, имхо, это слишком круто.

Если я что-то говорю - уж наверное я подумал о том, что я говорю. Это вовсе не "слишком круто" - разве что Вы это понимаете как-то черезчур широко, тогда как я прямо написал - никакого реализма.


Ведь в простой гонке в роли препятствий участвуют в основном бордюры (имеющие в основном bb(ограничивающие объемы) в виде прямоугольников) и "внетрассовая поверхность" (например, трава). А если так хочется реальной физики, к irrlight'у (вы же на нем собрались писать) есть полно модулей.
Кто Вам сказал, что мы на Irrlicht будем делать? Движок ещё даже не обсуждался.
А про колёса я имел ввиду следующее: допустим, одним колесом машина заехала на поверхность, скорость движения по которой меньше, чем по поверхности, на которой находятся остальные колёса. Ясное дело, её при этом развернёт. И для рассчёта такого разворота понадобится только знание цента тяжести. Вот и вся "сложная" физика.


Для кого этот вариант придуман? Конечно, большинство хотят именно 3д, но он самый трудновыполнимый и врядли удастся его реализовать. Поэтому совет, уберите его.
Я честно всё написал про 3D Action как есть. Если народ либо не читает, либо так уверен в себе - его проблемы. 3D Action тоже можно определённым образом упростить.


Есть еще один вариант: Градостроительный симулятор - что-то на подобии стратегии с другим геймплеем, когда игрок отстраивает город и всячески улучшает его.
1 - поздновато.
2 - в таких вещах требуются серьёзные экономические модели. Среди нас симуляцию жизни города вряд ли кто нормально напишет.

GPower666, много что сложного. Например, слишком тесное взаимодействие движка с самой игрой. В случае 3D Action'а не так просто реализовать логику игры отдельно от движка и при этом не дублировать данные. Правда "не так просто" вовсе не значит, что "невозможно".

Vaider, на самом деле примерно это и предполагается. Только не в виде именно прямоугольников, а скорее в виде некого выпуклого многоугольника.

WideWhale
01.12.2007, 10:20
на самом деле примерно это и предполагается. Только не в виде именно прямоугольников, а скорее в виде некого выпуклого многоугольника
Я думаю это также зависит от наших возможностей. Кто то может сделать вполне приличную машину а кто то не может и сделать тотже
выпуклый многоугольник

SОNIC
01.12.2007, 10:46
сейчас 3D Action лидирует
просто люди перегнули планку - это новичкам не осилить.
А вот файтинг реально, не используя углубленную физику.
Предлогаю найти персонал сначала, закрепить первый пост, вставить в него имена желающих, чтоб всё было организованно.

Bessyaka
01.12.2007, 11:21
Я думаю с хорошим учителем можно и 3D Action сделать - нет ничего не возможного. Но все таки начинать надо с чегонить попроще. Платформер или скроллер в самый раз!

WideWhale
01.12.2007, 11:23
Я думаю все таки лучше что нить посложнее. Ни чего страшного если мы потрудимся над ним подольше. Зато мы лучше поймем как делать игры.

SОNIC
01.12.2007, 11:35
Я думаю все таки лучше что нить посложнее.
наоборот)
Я думаю с хорошим учителем можно и 3D Action сделать - нет ничего не возможного
так тебе то нужно опыт извлекать, а не учителю:)
Но все таки начинать надо с чегонить попроще.
согласен
Платформер или скроллер в самый раз!
это тоже сойдёт, но лучше файтинг примитивный, но "свой"

а на чём собираетесь писать?

CMogilko
01.12.2007, 11:45
а на чём собираетесь писать?
Я щетаю, что можно писать каждому в чём хочет, а соединять в DLL, ведь и так планируется помодульна разбивка задач и оговорённые интерфейсы.

pokibor
01.12.2007, 12:29
CMogilko
Планируется примерно так, да. НО! DLL, как известно, поддерживают только функции. Всякие изощрения вроде классов работают только в Visual Studio, что с учётом обилия пишащих на Delphi людей бессмысленно.

Однако, как я уже говорил, для начала будет стадия проектирования. В ней никакого языка конкретного не понадобится, хотя заголовки интерфейсов я всё-таки предпочту писать в стиле C++.

Дальше же, когда будем разбираться с конкретными ТЗ, решим с языком.

[CCCP] Monster
01.12.2007, 13:54
pokibor

Я еще добавлю, что идея разработки с использованием разных сред и компиляторов будет подразумевать то, что люди, которые подключатся к разработке не в начале ее, а в середине, вынуждены будут иметь у себя на машине несколько компиляторов, чтобы смотреть, пробовать и работать с кодом, который будет нами за это время выложен, что не есть очень удобно. Ну и, как ты уже справедливо заметил, у нас есть ограничения по механизмам абстракции на стыке DLL и EXE. Кроме того, механизм модульности несет одну важную трудность, связанную с динамической памятью. Это не очень страшное ограничение, но при написании может вызвать затруднения, если не знать этого. Дело в том, что если вы выделили блок памяти в DLL (функциями new или calloc/malloc), то освободить ее вы должны в этой-же DLL(вызвать функцию Delete или free для указателя на ваш объект). Если вы попытаетесь освободить память, выделенную в ЕХЕ или другой DLL в коде своей, то это приведт к ошибке нарушения доступа.

Далее. Если у нас все-таки победит 3D Action, то нужно сказать, что они бывают двух разных типов, игровой мир которых по-разному реализуется. Есть такие, которые представляют собой чисто коридоры. Открытые пространства там могут пристутствовать, но они строго ограничены, и на самом деле являются закрытыми пространствами, а иллюзия пристутсвия неба реализуется путем рисования 6 сторон куба с текстурами неба перед тем, как нарисовать сам игровой уровень. Яркие предстваители - Quake, Half-Life. Второй тип представляет собой экшены на открытых пространствах, такие как Operation Flashpoint и Far Cry. Отличаются пониженной детализацией игрвого мира (вследствие его размеров) и остутствием повсеместной технологии применения лайтмепов. В Фар Крае, как я помню, лайтмепы юзались только для поверхностей островов. Кроме того, объекты типа растительности, домов, камней и проч. делаются объектами, а сам уровень - поверхностью.

Я думаю, что следует делать экшен первого типа - попроще в реализации. Во-первых с точки зрения базовых физических возможностей (сила тяжести, твердые стены и пол, чквозь которые нельзя провалиться). Это реализуется клипнодами - фактически, копия уровня, только воспринимается физическим движком. Во-втроых, игровые объекты, так называемые Entity. В отличие от простых элементов мира, типа стен, пола, камней, и т.п., энтити - это объекты мира, могущие взаимодействовать с игроком, монстрами или между собой. Ентити бывают двух типов. Первый тип - осязаемые энтити, которые меют некоторое объемное воплощение в игровом мире (т.е. имеют конкретную длину, ширину и высоту). Такими являются двери, кнопки, триггеры, статичные модели объектов и т.п. Второй тип - неосязаемые. Этот тип представляют такие элементы игровго имра, как, например, источники света, точки респавна монстров, источники звуков на карте и т.п. Они не имеют конретного объема, для игрвого мира у них есть только координаты точки, и действие, которое они производят. Все это придется реализовать и нам.

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

WideWhale
01.12.2007, 17:15
Меня мучает еще один вопрос. А будет ли какаю нибудь сюжетная линия или просто будем бегать и убивать?

pokibor
01.12.2007, 18:18
Vaider
По-моему, пока даже не началось проектирование, говорить о сюжете дико рано. Я понимаю, что Вы не прочь побыть сценаристом, но всё-таки в нашем случае речь не идёт о полноценном проекте (когда сюжетная составляющая также указывается в диздоке).
Тем не менее, у меня есть одна не так часто используемая идейка, которая может затрагивать геймлей в случае побеждающего 3D Action'а (если всё-таки решимся делать его, хотя лично мне не сильно хочется). Но даже об этом говорить пока рано.

thsGeo
01.12.2007, 19:16
Опыт в программировании 5 лет: ~4 года на Delphi, ~2 месяца на C++, потом узнал про с# и перелез на него. В короткие сроки могу прокачать знание C++, чтобы принять участие в разработке. Знаю ООП + линейную алгебру :cool: Поверхностное (к сожалению :frown:) знание DirectX.

thsGeo
01.12.2007, 19:28
Вопрос жанра интересен, но 2D все-таки довольно странно. Да, можно получить знания по проектированию, но в графических технологиях не очень.)) 3D - сложно, но интересно и познавательно.

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

Лично я за космосим, но в стиле Космических Рейнджеров.

CMogilko
01.12.2007, 19:56
я щетаю, что надо было делать открытое голосование и не учитывать голоса тех, кто не учавствует в разработке проекта и тыкнувших в 3д экшн.
и, по моему, надо сделать список учавствующих в разработке.

WideWhale
01.12.2007, 20:45
CMogilko
Да я тоже так считаю, а то все заходят и голосуют за самое интересное
и крутое.

Feanor62rus
01.12.2007, 21:21
На чем писать собираетесь? Какой движок? Самописный или какой нить OGRE, Irliht и им подобный бесплатник? Физику собираетесь делать?
Чисто из праздного любопытства... Я конечно понимаю, что глупо задавать такие вопросы на стадии, когда еще с жанром то не определились. Но все-же... может какие-то мысли уже есть?

pokibor
01.12.2007, 21:29
Feanor62rus
Это учебный и групповой проект. Все подобные вопросы будут решены после стадии проектирования ядра игры.

Всем
Итак, попытаюсь создать список участников в алфавитном порядке:
BeSSyaKa - только в качестве моделера, или есть навыки в программировании?
[CCCP] Monster
CMogilko
GPower666
GSUR
IMMОRTAL
pokibor
serializer - расплывчатое "Если получиться, чем надо помогу"
thsGeo
Vaider

Никого не забыл или лишнего поставил?
P.S. [CCCP] Monster - спасибо за закрепление первого поста! Добавляю инфу в него и править буду в нём же.

Bessyaka
01.12.2007, 21:34
pokibor
Ну я в общем еще знаю Visual Basic на школьном уровне, начал изучать Delphi, в перспективе C++.

fakl
02.12.2007, 20:22
так же возьмите и меня
есть кое-какие теоретические знания по написанию игр, но практики мало, так что этот проект будет хорошим практическим занятием для меня,
знаю с++,делфи

VladiT
03.12.2007, 06:22
Здравствуйте.
Когда то я учил Delphi + OpenGL а, потом забросил и стал заниматься разработкой браузерных игр. С тех времен осталась только программка просмотра моделей сделанных в 3D max или в любых других 3д редакторах, где возможно экспортировать файл с моделью в *.ASE.

Взять можно от сюда: http://jobaction.narod.ru/East.rar.

Там находится:

/WinSS.exe собственно файл для запуска программки.

папки:
/model тут модели для отображения.
/Utilits здесь находится утилита для преобразования файла *.ASE в *.emdl(Это расширения для моделей)
/pascal здесь находятся исходники на Pascal`e(Delphi 7).

Работает она так.
Делаете модель напр. в 3д максе(Желательно чтоб модель содержала мало полигонов) и экспортируете ее в *.ASE.
После заходите в Utilits и запускаете EConvert.exe, открываете ранее экспортированную модель и ждёте... Делал все в лоб, поэтому придется подождать все зависит от размера модели.
После загрузки жмем преобразовать и снова ждем....
Все далее сохраняем файл в папке /model под именем cub.emdl (Внимание! модель загрузиться только с таким именем! Что бы это изменить надо имя модели вывода менять в исходниках).
И, наконец запускаем WinSS.exe и... вы ни чего не увидите так как камера находится внутри модели жмете назад и камера начнет уходить от модели, кнопки 1 и 2 включают и выключают сглаживание нормалей.

Вот и все.
Возможно, кому ни будь это пригодиться для обучения(Хотя это и старо).

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

pokibor
03.12.2007, 13:06
Итак, подведём итоги. По побеждает по опросу "не рекомендуемый" 3D Action (к счастью, не добравшийся до 50% голосов, что теоретически даёт возможность провести "второй тур" :sot:), гонки на втором месте.
Ограничимся такими результатами. Собственно, предстоит решить: всё-таки будем заниматься такой довольно сложной штукой, как 3D Action, либо же более простыми гонками с максимум 2,5-мерной логикой (2,5 - это потому что силы можно чётко разделить на действующие в горизонтальной плоскости, и действующие строго по вертикали).

В случае гонок первым делом следует начать разработку физической модели, которая, по сути, и будет основным делом, рассчитываемым ядром.
В случае 3D Action всё куда серьёзнее - сразу нужно продумать систему хранения физической стороны уровня в ядре, её связь с движком, а также действующие физические законы. Это для начала, потом пойдёт ещё много всего... Итак, решаем: 3D Action или гонка. Слово предоставляется участникам проекта.

Всё-таки я за гонку, хотя на 3D Action также имею определёные планы.

SОNIC
03.12.2007, 13:15
Итак, решаем: 3D Action или гонка.
В реале я фан этих жанров, но даже если ты сам создашь эту игру, они всё равно мало что поймут(имхо). Следовало начинать с чего-нибудь полегче.
Всё-таки я за гонку
предпологаю оч. примитивный симулятор.

Как будет происходить процесс?

pokibor
вообще-то я не просил меня записывать), но раз уже сделал то я не против.

pokibor
03.12.2007, 13:24
Как будет происходить процесс?
Проектирование будет общей задачей, мы же всё-таки на практике собрались учить! Я сейчас рассчитаю уравнение для столкновения двух отрезков, движущихся равноускоренно, за заданый период времени.
В результате должн выдаваться момент времени, в который произойдёт столкновение, и точка этого столкновения.

SОNIC
03.12.2007, 13:49
Я сейчас рассчитаю уравнение для столкновения двух отрезков, движущихся равноускоренно, за заданый период времени.
В результате должн выдаваться момент времени, в который произойдёт столкновение, и точка этого столкновения.
Равно-ускоренное движение, как я понимаю, для симулятора?
ЗЫ обнулить голосование или не считать действительным.

WideWhale
03.12.2007, 13:51
возможность провести "второй тур
Да может лучше проведем второй тур тока там помимо двух лидеров взять еще и проигравшего?И чтоб голосовать можно было за одного.

pokibor
03.12.2007, 14:02
Равно-ускоренное движение, как я понимаю, для симулятора?
Для простейшей физики. Сейчас вот думаю, ограничиться равноускоренным движением точек (тогда при вращении будут срезаться по прямой дуги) или всё-таки моменты включить?

ЗЫ обнулить голосование или не считать действительным.
Я пока не модератор.
Да может лучше проведем второй тур тока там помимо двух лидеров взять еще и проигравшего?И чтоб голосовать можно было за одного.
На третьем месте стратегия и платформер, так что тогда двух проигравших. Однако отрыв экшена и гонки от остальных весьма существеннен, чтобы его учитывать. Впрочем, тут последнее слово остаётся за [CCCP] Monster.

SОNIC
03.12.2007, 14:25
или всё-таки моменты включить?
моменты включить

Я пока не модератор.
тебя и не просят))

[CCCP] Monster
03.12.2007, 15:37
Для простейшей физики. Сейчас вот думаю, ограничиться равноускоренным движением точек (тогда при вращении будут срезаться по прямой дуги) или всё-таки моменты включить?


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

Я думаю, что можно пересоздать опрос и провести снова, только на этот раз открытый. Отвести на него один день.

fakl
03.12.2007, 20:18
НЕ пойму почему никто не хочет космический симулятор, ведь проектируется он легче чем 3Д экшен, но польза от него будет очень большая, т.к там тоже идет приращение к тридэ, физика там может быть не на слишком высоком уровне( как ра для новечка, мало чё понимающего в матрицах)

pokibor
03.12.2007, 20:59
НЕ пойму почему никто не хочет космический симулятор, ведь проектируется он легче чем 3Д экшен
Возможно, людям просто не нравится жанр. Да, он проектируется легче (с физической точки зрения), чем 3D Action, но и у него есть свои подводные камни.

т.к там тоже идет приращение к тридэ, физика там может быть не на слишком высоком уровне( как ра для новечка, мало чё понимающего в матрицах)
Эм... не хочу Вас расстраивать, но всё "тридэ" на матрицах построенно, причём 4x4. То есть писать что-то в 3D и при этом не знать матриц, нереально. Разве что движок достаточно высокоуровневый использовать.

Feanor62rus
03.12.2007, 21:27
А не проще вам заюзать какой нить бесплатный физический движок, типа Newton или ODE и им определять столконовения обьектов? Это сильно упростит работу(ведь не надо заново велосипед изобретать), но убьет определенную обучающую часть проекта. Плюс ко всему на них можно сделать очень неплохую физику автомобилей(ведь вы же вроде гоночки собрались делать), правда там придется свои джоинты писать.

pokibor
03.12.2007, 21:29
убьет определенную обучающую часть проекта.
Вот потому-то такой вариант недопустим. Мы могли бы и в конструкторе каком собрать, но тогда смысл темы?
P.S. Что-то активность народа на нуле. Кто-нибудь принимать участие в обсуждении собирается, или на практике учиться никто не хочет?

the_E.N.D.
03.12.2007, 21:32
pokibor
Я бы поучился. Вот только из ЯП знаю только Pascal, а Photoshop и 3DsMax знаю совсем не в совершенстве.

CMogilko
03.12.2007, 21:47
Что-то активность народа на нуле. Кто-нибудь принимать участие в обсуждении собирается, или на практике учиться никто не хочет?
1) вы очень быстро между собой обговариваетесь
2) не совсем понятно, какие гоночки мы делаем, что там будет. В первом посте всё очень абстрактно, а из первых 3х страниц я понял, что там будет заворачиваться машина, если заедет колесом на траву. Больше ничего о проекте я не знаю.

pokibor
03.12.2007, 21:52
the_E.N.D.
Дадим ссылки и научим.

CMogilko
Проблема обрисована выше, сейчас я спрашиваю мнений по ней.
Повторное голосование ещё не окончено, потому я пока не рискну выдавать начало диздока.

the_E.N.D.
03.12.2007, 22:01
pokibor
Тогда я согласен участвовать. Учится я всегда любил)))
Вот только могут возникнуть проблемы ближе к Новому Году из-за сессии...

CMogilko
03.12.2007, 22:04
Проблема обрисована выше, сейчас я спрашиваю мнений по ней.
я щетаю, что надо дискретно. Если брать маленький интервал времени, то всё должно быть точно. А вычисления проще и можно не так строго обсчитывать.

pokibor
03.12.2007, 22:26
я щетаю, что надо дискретно. Если брать маленький интервал времени, то всё должно быть точно. А вычисления проще и можно не так строго обсчитывать.
Могу сказать, что почти согласен с Вами, однако могут быть проблемы с определением нормали столкновения и силы реакции опоры.
Собственно, сейчас тестирую на это дело свою извращёную идею со сферами.

[CCCP] Monster
03.12.2007, 23:18
pokibor

Что-то мне подсказывает, что все-таки сначала надо составить диздок:) Мы ведь еще не знаем, какие объекты и в каком исполнении нам понадобятся. Будут ли там здания, в которые можно будет заезжать, как они будут реализованы, будут ли там другие объекты подобные. Как будут поверхности реализованы? И так далее. Диздок поможет сформировать целостную картину. А вот обработка столкновений - это в данном случае некоторый вид частности. Мы этот вопрос решим, но давай сначала определимся с проблемой в целом. Тогда это даст на возможность выбрать действительно наиболее эффективный для задачи механизм.

pokibor
03.12.2007, 23:54
[CCCP] Monster
Верно, верно, ну так я и не говорю, что начал игру делать. Так, спрашиваю по проблемам мнение

[CCCP] Monster
04.12.2007, 00:36
Я тут пока проблему столкновений вынес в отдельную тему, продолжим там. А то ждесь это немного глаза мозолит.

А здесь вернемся к диздоку

thsGeo
04.12.2007, 17:50
Про диздок. Сначало надо бы концепт написать, все в общих чертах, основные фичи, смысл, элементы etc. Потом, после обсуждения концепта, написание диздока. Это можно делать несколькими способами:
1. Все потихоньку обсуждают и популярные идеи вносятся в диздок.
2. За диздок ответственен один человек, именно он имеет решающий голос и может идти против общего мнения.
3. Назначаются несколько ответсвенных, либо пишут вместе (надо часто договариваться), либо каждый свой раздел (договариваться можно реже), считаясь с мнением на форуме.

[CCCP] Monster
04.12.2007, 23:09
thsGeo

Совершенно согласен. Думаю, можно обзий концепт обсудить всем вместе, а детали диздока, такие как игровой мир, трассы, машины, доверить отдельным людям. По скольку проект учебный, то можно конечно говорить, что вон та машина будет у нас Феррари Ф50, и у нее будет куча всякого. Но нам все-таки важно, сколько она будет, скажем, стоить по игровым деньгам, как быстро разгоняться, тормозить, какая максималка, можно ли ее получить, скажем, другим путем и т.п. все в таком духе. Аналогично по трассам. Правила игры и концепцию обсудим все вместе.

Эхх, жалко идея только что пришла. Я вспомнил про игру "танчики" на Денди:)

В результате опроса был определен жанр - гонки
Дальнейшее обсуждение переносится в тему
http://forum.igromania.ru/showthread.php?t=53190
где будет обсуждаться концепция игры

Teos Megalio
19.04.2010, 04:16
1)Насчет гонки: может добавить пешеходов которые переходят через улицу. Не важно какая игра 2 или 3Д. Гонки очень зациклились на соревнованиях, а фактически в них мало что вносят существенного.
2)Насчёт Экшена: можно зделать игру про подземелья, как метро 2033, этакий ужастик в стиле Хоррор. Даже со средней графикой можно сделать довольно интересную игру.
Сам я не программер.

Enchantner
19.04.2010, 11:51
Teos Megalio, товарищ, вы дату последнего поста читали? :)