PMG

Форумы по созданию игр
Текущее время: 29 мар 2024 03:13

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Игровой движок, подскажите
СообщениеДобавлено: 21 июл 2010 10:35 
Не в сети
Постоянный
Аватара пользователя

Зарегистрирован: 26 фев 2010 13:18
Сообщения: 85
Всем доброго утро!

Я разрабатываю подобие игрового движка, но, честно говоря, просто запутался и прошу совета в помощи продумывании его архитектуры. Книг различных множество и в каждой автор по своему создаёт движок и на основании его игру, какие-то решения я беру из них, что-то не совсем удобно. Поэтому и делаю свой. Проблема в том, что вариантов реализации вроде много, но я просто запутался как лучше. :-(

Мой вариант такой:

Классы для хранения объектов:
cObj - базой класс для cMesh, cSprite и cPrimitiv.
cMesh - класс для загрузки и хранении сетки модели.
cPrimitiv - класс для создания примитивов (куб, сфера, параллелограмма, цилиндр).
cSprite - для загрузки спрайтов.

cTexture - класс для загрузки и хранения текстуры.
cEffect - -//- эффектов (шейдеров).
cMaterial - -//- материалов.

cObject - класс служит для хранения:
- ссылки на сетку(либо примитив, либо спрайта),
- ссылки на текстуру,
- ссылку на эффект,
- ссылка на материал,
- описание (дополнительные поля, возможно ссылку на класс описания),
- положения в пространстве,
- размер,
- параметры текстуры.
Функции:
- изменения положения,
- рендер,
- и др. (относящиеся в изменению размеров, установка отображения текстур, эффектов и т.п.)

Классы для определения отображения объектов:
cCamera - класс для управления областью просмотра игроком.
сOctree (или cNodeTree, так называется у Адамса) - класс для разбиения пространства на кубы и построения дерева определяющее в каком кубе находятся те или иные объекты. (реализация описана в книге Джима Адамса или на сайте UralDev http://www.uraldev.ru/articles/id/6).

Классы для ввода-вывода:
cInput - для работы с клавиатурой и мышью.
cPlay - для работы с сетью.
cSound - для работы со звуком.
cTimer - для работы со временем.
cFont - для работы со текстом.
cApplication - для создания приложения.
cGraphics - для создания устройства и установка параметров запуска устройства DirectX.
cMenu - для работы с меню.
В разработке класс для реализации физики и AI.

Принцип работы движка прост:
- загружаем модели, при загрузке в физический движок загружается "геометрия" объектов,
- установка параметров отображения объектов (текстура, эффекты),
- запускаем игру,
- запускаем таймер (работы игры с определённой частотой),
- запрос с клавиатуры, мыши, сети, AI - изменение положения объектов,
- обработка физикой объектов - изменение положение объектов,
- обновляем октарное дерево,
- отображение тех объектов, что попадают в область видимости.
...

Фухты, дописал. Если есть, какие ошибки или что не так, напишите плиз, буду очень признателен. Требуется ваше одобрение или критика, а то я запутался в вариантах. :crazy:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Игровой движок, подскажите
СообщениеДобавлено: 22 июл 2010 13:03 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
В основном все правильно. Для затравки достаточно. Теперь надо наметить первую посильную цель и приступить к творчеству. Так сказать рискнуть своим временем и силами...

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Игровой движок, подскажите
СообщениеДобавлено: 22 июл 2010 17:53 
Не в сети
Постоянный
Аватара пользователя

Зарегистрирован: 26 фев 2010 13:18
Сообщения: 85
В принципе половина из этого готова...
Вот и была путаница скомпоновать это вместе, и организовать...
Теперь бы только заставить себя делать, а то лень одолевает, а цель есть и желание :r


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Игровой движок, подскажите
СообщениеДобавлено: 23 июл 2010 10:35 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Лень - это тоже признак того, что не все понятно... Когда все понятно, то просто делаешь... Здесь нужны видимо эксперименты, видимо возможны разные варианты построения кода и не надо бояться ошибиться и сделать с первого раза все правильно.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Игровой движок, подскажите
СообщениеДобавлено: 23 июл 2010 10:38 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 30 авг 2007 01:36
Сообщения: 39
Откуда: подвал
_Dok_, впринципе вы правы. Могу углядеть большую чать архитектуры из Джима Адамса - RPG. Однако важным моментом является то, что это только малая часть движка. Адамс в своей книге принципиально не рассматривает менежмент и рендеринг сцены. Я тоже свой движок писал, однако этот момент так и не смог реализовать - слишком много взаимопротиворечащих требований (от где лучше хранить текстуры до как сортировать меши по материалам и эффектам).

_________________
Да прибудет с тобой инкапсуляция и полиморфизм.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Игровой движок, подскажите
СообщениеДобавлено: 23 июл 2010 14:29 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
GameX32 - на мой взгляд бесмысленно стремиться к полному совершенству. Для начала не надо заморачиваться тем где хранить в каком порядке. Для начала надо сделать проще, а потом уже пытаться думать как оптимизировать. Иначе движок никогда не написать.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Игровой движок, подскажите
СообщениеДобавлено: 23 июл 2010 15:31 
Не в сети
Постоянный
Аватара пользователя

Зарегистрирован: 26 фев 2010 13:18
Сообщения: 85
MagicWolf писал(а):
Лень - это тоже признак того, что не все понятно... Когда все понятно, то просто делаешь...


Не всегда :) есть моменты когда просто лень :)

MagicWolf, GameX32
По-моему, лучше писать движок не просто отдельно, вот "я пишу движок", а для конкретной цели. Если есть цель, то в ходе разработки и понимаешь, что где надо добавить, что где-то убрать или сделать по-другому.
Вообще наработки использовать очень полезно, но вот делать "одно для всего", получается либо очень-очень много наворотов (что перегружает), либо удобно для одного жанра, но в другом не совсем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Игровой движок, подскажите
СообщениеДобавлено: 23 июл 2010 16:41 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Вот и я про это. Нельзя написать вообще, на все случаи жизни. Все равно надо затачивать под конкретное применение и сначало сделать болванку, а потом напильником :)

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB