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

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

Xenar 19.03.2012 20:43

Игровой движок общими усилиями
 
Предполагаю написать на C# под Net.Framework и DirectX игровой движок общими усилиями. Как программист я не очень, но 3d maxом пользуюсь 6 лет. Есть базовые понятия и неплохой склад ума, позволяющий выполнять некоторые логические решения.

Предполагаемая структура движка

*.exe - собственно то, что объединит все написанное в одну кучу.

*.core.dll - библиотека для *.exe файла, которая будет являться каркасом приложения (графический интерфейс, элементы управления, ссылки на файлы конфигурации и ссылки на необходимые составляющие элементы игрового движка).

objects - папка с моделями и текстурами (с форматом моделей пока не определился, склоняюсь к написанию собственного).

scripts - папка со скриптами в формате (*ini, *.lua или аналогичном)

sounds - звуки

Это первоначальная задача. На данном этапе можно попробовать реализовать хотя бы это - сделать *.dll библиотеку с основными классами и прикрепить к ней простенький *.exeшник (на подобие dxmut).

Badger_ 20.03.2012 12:03

А зачем? :)

Xenar 20.03.2012 12:15

Цитата:

Сообщение от Badger_ (Сообщение 10168345)
А зачем?

Для дальнейшего использования сего в собственных целях...

Badger_ 20.03.2012 12:53

А в чём проблема взять уже готовый? Тот же Unity3D...

Xenar 20.03.2012 14:55

Не люблю копаться в чужом белье. Проще написать что-то свое, чем изучать чужое. Тем более каждый "писатель" пишет код "под себя" своим методом и со своей "архитектурой"...:sml:

Все же предлагаю взяться за написание *.dll библиотеки с базовыми классами и параллельно писать к ней *.exe.

Badger_ 20.03.2012 17:43

Я предпочитаю время тратить на создание игры используя готовые решения. К тому же кустарный двиг будет хуже тех, что есть сейчас на рынке, начиная с того же Юньки. Движки писать это на любителя, а игры всё же делать интереснее...

Xenar 20.03.2012 17:49

Цитата:

Сообщение от Badger_ (Сообщение 10169028)
Движки писать это на любителя, а игры всё же делать интереснее

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

Badger_ 20.03.2012 18:10

Достаточно много успешных игр делается на UDK, CryEngine, Unity3D и других топовых движках. Так что ты не прав в этом изречении. ;) Например http://www.youtube.com/watch?v=f-2DyMTdDC4 делалась на Юньке. И сколько потребуется времени и сил на самопальный движок, чтобы он начал выдавать такую картинку http://www.youtube.com/watch?v=RMk5xf8DpCE ?

Xenar 20.03.2012 18:36

Цитата:

Сообщение от Badger_ (Сообщение 10169073)
Достаточно много успешных игр делается на UDK, CryEngine, Unity3D и других топовых движках.

Реализовать (выпустить) такие продукты будет весьма сложно. Я не думаю, что лицензия на CryEngine дешево стоит... Если делать проекты, используя готовые решения, то только для себя (не в коммерческих целях)...

Badger_ 20.03.2012 18:43

Лицензия на Unity3D стоит $1500. Но даже на бесплатной его версии с урезанными функциями можно делать и продавать игры. UDK более хапужный но и он последнее время к инди разработчикам повернулся на половину лицом. :) Однако до политики Юнитеха, UDK ещё долго поворачиваться. Так что уже с движками не всё так плохо. А Юнити уже по моему мнению картинку может выдавать не хуже чем тот же UDK. Только Юнитех больше прогеры, чем дизайнеры и у них таких красивых демок как на UDK пока нету (ну вон тот футуристичный мостик сделан на Юньке профессиональным дизайнером для своего портфолио).

Xenar 20.03.2012 18:52

Разработка игры на готовом движке:
1. Кротчайшие сроки сборки
2. Простота в использовании
3. Совместимость со многими форматами

Разработка игры на своем движке:
1. Универсальность
2. Безграничные возможности
3. Полный контроль над авторскими правами

Badger_ 20.03.2012 19:03

Что значит безграничные возможности? И что даёт полный контроль над авторскими правами к любительскому движку, который никогда не дотянет да топовых (среди которых и Юнити)?
Да, универсальность так же у Юньки присутствует. :)

CMETAHA 21.03.2012 16:38

Цитата:

Сообщение от Xenar (Сообщение 10167439)
Предполагаемая структура движка

Это не структура. Это просто набор файлов и папок. Структура - это совершенно другое.
Да и вообще. Не имея опыта создания движков что-то серьёзное не напишешь. Далее, на этом форуме не так много высококлассных программистов готовых реализовать такой сложный проект просто ради себя. За этим нужно идти на специализированные форумы. Ну и наконец, писать что-то своё глупо. Есть масса уже готовых решений на любой вкус. Бери, да пользуйся!

Xenar 21.03.2012 17:29

Цитата:

Сообщение от CMETAHA (Сообщение 10170848)
Структура - это совершенно другое

То, что я предлагаю - является не игровым движком, а базовым каркасом для будующей игры с возможностью внесения\изменения кода\скриптов... По мере написания будут подключаться новые библиотеки, компоненты, файлы и прочие составляющие...

Xenar 23.03.2012 21:53

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

Скрытый текст:
Objects - папка, в которой будут находиться все игровые объекты (модели и текстуры). В папке будут еще две: Models и Textures соответственно. В папке Models будут следующие подпапки: Static - статические объекты и Dynamic - динамические. Статические объекты - это геометрические модели, которые используются в играх как стационарные (объекты не подлежащие деформации, анимации и прочим видоизменениям. Так же они не могут быть перемещены, повернуты и масштабированы в процессе игры). Динамические объекты - это объекты, которые полностью взаимодействую с игровым миром при помощи сложной системы скриптов (персонажи, техника, анимированные объеты, прочие). Я не стану описывать полную структуру папки Objects, приведу лишь краткий список... Примерный...

Objects
---Models
------Static
---------Buildings
---------Other
------Dynamic
---------Characters
---------Vehicles
---------Animated
---------Vegetation
---------Other
---Textures
------Static
------Dynamic

Пакпка Scripts будет содержать в себе все игровые скрипты. Скрипты будут написаны на основе заранее подготовленного кода, и будут представлять собой файлы с доступным для редактирования форматом. Скрипты будут делиться на группы: Main - главные скрипты, необходимые для глобальных данных, Locations - скрипты определенных локаций, Weapons, Vehicles - скрипты с техническими характеристиками оружия, Others - прочие скрипты.

Scripts
---Main
---Global
---Weapons
---Vehicles
---Others
---Weathers

Звуки будут в папке Sounds. Сама папка будет разбита на несколько подпапок: Ambient - звуки окружения, Sounds - игровые звуки, Music - игровая музыка...

Sounds
---Ambient
------Sounds
------Weapons
------Vehicles
------Voice
---Music

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

LINE_BLOD 30.03.2012 15:08

Цитата:

Сообщение от Xenar (Сообщение 10175215)
Предполагаемая структура корневого каталога предполагаемой игры

Нам-то это зачем,все приведенное выше не имеет смысла без самого движка.

Nirnaeth 30.03.2012 16:39

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

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

Физика - важно. Хотя зависит от жанра, опять же.

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

Сам игровой процесс (отношение объектов в ООП, если выберешь этот стиль, что скорее всего - да) - начинать стоит именно с этого.


Приведённая структура папок, действительно, к созданию движка имеет самое последнее отношение.
Сам сейчас занят над чем-то подобным. Начал с важнейшего - алгоритм поиска пути. Взял стандартный волновой алгоритм, и улучшаю его по мелочам пока. Понимаю - дальше будет ещё сложнее. Но у меня много интересных идей :)

Xenar 30.03.2012 17:02

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

P.S. Как программист я не очень. В свое время упустил это. Я художник, моделлер, имеющий богатый опыт работы в 3D Max`е. Если я немного затупляю, или же просто пишу всякую хрень, не имеющую смысла, так и скажи.

Nirnaeth 30.03.2012 17:30

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

Или другой пример - Geometry wars. ИИ врагов примитивен, движения по карте описываются фундаментальными формулами. Зато масса работы с графикой - потому что там в ней вся красота.

Xenar 30.03.2012 19:22

Цитата:

Сообщение от Nirnaeth (Сообщение 10188879)
Надо заранее определить приоритетные задачи

1) Написание *.dll библиотеки, которая будет отвечать за каркас приложения (форма, элементы управления, внутренняя структура). Написание к этой *.dll файла *.exe, который собственно и будет игрой (в будущем).
2)Написание *.dll библиотеки, которая будет отвечать за рендер (работа с устройством, методы рендеринга, прочее). Эта библиотека будет являться неким графическим движком. К ней из вне будут прицеплены прочие элементы этой группы.
3) Написание *.dll библиотеки, отвечаюшей за скрипты. Здесь немного сложнее. Придется делать примитивную структуру этих скриптов. Скрипты в открытом формате (*.ini, *.txt).
4) Проработка геймплея и создание базовых элементов управления этим творением.
5) Графика, текстуры, прочее.
6) Звуки, музыка, прочее.

Ну и хрень собачью я написал. Нда, неверное, не стоит этим заниматься. Особенно на VS2005 под Net.Framework и DirectX.


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

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