PMG http://forum.pmg.org.ru/ |
|
Игровой движок, подскажите http://forum.pmg.org.ru/viewtopic.php?f=4&t=8022 |
Страница 1 из 1 |
Автор: | _Dok_ [ 21 июл 2010 10:35 ] |
Заголовок сообщения: | Игровой движок, подскажите |
Всем доброго утро! Я разрабатываю подобие игрового движка, но, честно говоря, просто запутался и прошу совета в помощи продумывании его архитектуры. Книг различных множество и в каждой автор по своему создаёт движок и на основании его игру, какие-то решения я беру из них, что-то не совсем удобно. Поэтому и делаю свой. Проблема в том, что вариантов реализации вроде много, но я просто запутался как лучше. Мой вариант такой: Классы для хранения объектов: 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 - изменение положения объектов, - обработка физикой объектов - изменение положение объектов, - обновляем октарное дерево, - отображение тех объектов, что попадают в область видимости. ... Фухты, дописал. Если есть, какие ошибки или что не так, напишите плиз, буду очень признателен. Требуется ваше одобрение или критика, а то я запутался в вариантах. |
Автор: | MagicWolf [ 22 июл 2010 13:03 ] |
Заголовок сообщения: | Re: Игровой движок, подскажите |
В основном все правильно. Для затравки достаточно. Теперь надо наметить первую посильную цель и приступить к творчеству. Так сказать рискнуть своим временем и силами... |
Автор: | _Dok_ [ 22 июл 2010 17:53 ] |
Заголовок сообщения: | Re: Игровой движок, подскажите |
В принципе половина из этого готова... Вот и была путаница скомпоновать это вместе, и организовать... Теперь бы только заставить себя делать, а то лень одолевает, а цель есть и желание |
Автор: | MagicWolf [ 23 июл 2010 10:35 ] |
Заголовок сообщения: | Re: Игровой движок, подскажите |
Лень - это тоже признак того, что не все понятно... Когда все понятно, то просто делаешь... Здесь нужны видимо эксперименты, видимо возможны разные варианты построения кода и не надо бояться ошибиться и сделать с первого раза все правильно. |
Автор: | GameX32 [ 23 июл 2010 10:38 ] |
Заголовок сообщения: | Re: Игровой движок, подскажите |
_Dok_, впринципе вы правы. Могу углядеть большую чать архитектуры из Джима Адамса - RPG. Однако важным моментом является то, что это только малая часть движка. Адамс в своей книге принципиально не рассматривает менежмент и рендеринг сцены. Я тоже свой движок писал, однако этот момент так и не смог реализовать - слишком много взаимопротиворечащих требований (от где лучше хранить текстуры до как сортировать меши по материалам и эффектам). |
Автор: | MagicWolf [ 23 июл 2010 14:29 ] |
Заголовок сообщения: | Re: Игровой движок, подскажите |
GameX32 - на мой взгляд бесмысленно стремиться к полному совершенству. Для начала не надо заморачиваться тем где хранить в каком порядке. Для начала надо сделать проще, а потом уже пытаться думать как оптимизировать. Иначе движок никогда не написать. |
Автор: | _Dok_ [ 23 июл 2010 15:31 ] |
Заголовок сообщения: | Re: Игровой движок, подскажите |
MagicWolf писал(а): Лень - это тоже признак того, что не все понятно... Когда все понятно, то просто делаешь... Не всегда есть моменты когда просто лень MagicWolf, GameX32 По-моему, лучше писать движок не просто отдельно, вот "я пишу движок", а для конкретной цели. Если есть цель, то в ходе разработки и понимаешь, что где надо добавить, что где-то убрать или сделать по-другому. Вообще наработки использовать очень полезно, но вот делать "одно для всего", получается либо очень-очень много наворотов (что перегружает), либо удобно для одного жанра, но в другом не совсем. |
Автор: | MagicWolf [ 23 июл 2010 16:41 ] |
Заголовок сообщения: | Re: Игровой движок, подскажите |
Вот и я про это. Нельзя написать вообще, на все случаи жизни. Все равно надо затачивать под конкретное применение и сначало сделать болванку, а потом напильником |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |