forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты C++ (http://forum.boolean.name/forumdisplay.php?f=56)
-   -   Exotic Engine (http://forum.boolean.name/showthread.php?t=11826)

Igor' 09.08.2010 22:12

Ответ: Exotic Engine
 
Вложений: 1
Сделал потдержку скриптования постфилтров, пишем шейдеры и скрипт и всё новый пост фильтр готов, никокого лишнего кода.

Пример блума:

Код:

<?xml version="1.0"?>

<Register>
 <ScreenTexture register="screen" />
 <RenderTarget register="bright0" width="ScreenWidthDiv2" height="ScreenHeightDiv2" format="R8G8B8" wrap="Clamp" filter="Linear" />
 <RenderTarget register="bright1" width="ScreenWidthDiv4" height="ScreenHeightDiv4" format="R8G8B8" wrap="Clamp" filter="Linear" />
 <RenderTarget register="ds0" width="ScreenWidthDiv2" height="ScreenHeightDiv2" format="R8G8B8" wrap="Clamp" filter="Linear" />
 <RenderTarget register="ds1" width="ScreenWidthDiv4" height="ScreenHeightDiv4" format="R8G8B8" wrap="Clamp" filter="Linear" />
 <Shader register="blurX" file="XBlur.ps" />
 <Shader register="blurY" file="YBlur.ps" />
 <Shader register="bright" file="Bright.ps" />
 <Shader register="bloom" file="Bloom.ps" />
 <Float register="threshold" value="0.1" />
 <Float register="scale" value="1.0" />
</Register>

<Pass>
  <SetRenderTarget register="ds0" slot="0" />
  <SetTexture register="screen" name="screen" />
  <SetFloat register="threshold" />
  <SetShader register="bright" />
</Pass>

<Pass>
  <SetRenderTarget register="bright0" slot="0" />
  <SetTexture register="ds0" name="screen" />
  <SetShader register="blurX" />
</Pass>

<Pass>
  <SetRenderTarget register="ds0" slot="0" />
  <SetTexture register="bright0" name="screen" />
  <SetShader register="blurY" />
</Pass>

<Pass>
  <SetRenderTarget register="ds1" slot="0" />
  <SetTexture register="screen" name="screen" />
  <SetFloat register="threshold" name="threshold" />
  <SetShader register="bright" />
</Pass>

<Pass>
  <SetRenderTarget register="bright1" slot="0" />
  <SetTexture register="ds1" name="screen" />
  <SetShader register="blurX" />
</Pass>

<Pass>
  <SetRenderTarget register="ds1" slot="0" />
  <SetTexture register="bright1" name="screen" />
  <SetShader register="blurY" />
</Pass>

<Pass>
  <SetTexture register="ds0" name="downsample0" />
  <SetTexture register="ds1" name="downsample1" />
  <SetTexture register="screen" name="screen" />
  <SetShader register="bloom" />
  <SetFloat register="scale" name="scale" />
</Pass>


Igor' 11.08.2010 08:01

Ответ: Exotic Engine
 
Закончил написание експортёра скелетной анимации, также самой анимации в движке:

Код:


                // add animation
                int addAnimation( const AnimationSet& anim , int bone = -1 );

                // set animation blend weight
                void setAnimationWeight( int id , float weight , int bone = -1 );

                // get animation blend weight
                float getAnimationWeight( int id , int bone = -1  )const;

                // set animation playing speed
                void setAnimationSpeed( int id , float speed , int bone = -1 );

                // get animation playing speed
                float getAnimationSpeed( int id , int bone = -1  )const;

                // is animation playing
                bool isAnimationPlaying( int id , int bone = -1  )const;

                // play animation
                void playAnimation( int id , int bone = -1  );

                // pause animation
                void pauseAnimation( int id , int bone = -1  );

                // stop animation
                void stopAnimation( int id , int bone = -1  );

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

ARA 11.08.2010 10:17

Ответ: Exotic Engine
 
Скажи, будет ли поддерживаться экспорт скиннинга-плагина Bones Pro 4?
Если да, аниматоры будут тебя на руках носить =)

Igor' 11.08.2010 12:39

Ответ: Exotic Engine
 
Цитата:

Сообщение от ARENSHI (Сообщение 157962)
Скажи, будет ли поддерживаться экспорт скиннинга-плагина Bones Pro 4?
Если да, аниматоры будут тебя на руках носить =)

А что это такое? В первый раз о таком слышу...

ЗЫ Вот записал видео теста анимации http://www.youtube.com/watch?v=z46TVjqr3Lc
ЗЫЗЫ Вот ещё одно но с настроеной прозрачностью стекляной защитки на шлеме http://www.youtube.com/watch?v=j6lNqRv4WvE

Igor' 13.08.2010 16:30

Ответ: Exotic Engine
 
Вложений: 1
Новый скриншот:

Igor' 15.08.2010 00:05

Ответ: Exotic Engine
 
Вложений: 1
Первая своя модель, сделаная ведущим 3D-Дизайнером проекта =)

Mr_F_ 15.08.2010 15:27

Ответ: Exotic Engine
 
за эффектами и светом не видно модели. и мне кажется у него со лбом чето не то.

Igor' 19.08.2010 02:48

Ответ: Exotic Engine
 
Цитата:

Сообщение от Mr_F_ (Сообщение 158492)
за эффектами и светом не видно модели. и мне кажется у него со лбом чето не то.

О да, а эпики то и незнают что из за такого то освещения моделей не видно :-D, ориентировался при настройке освещения в сцене на Gears Of War.

All
Разрабатывается фраймворк для создания игр Client-Server, конечно большенство классов будет специально для разработки шутеров и экшенов, но это по сути не будет мишать делать тот-же рейсинг, так-как есть класс транспорта.

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

Код:


        class GameEntity : public GameClass {
        public:
                enum {
                        FIELD_SPAWNED = EX_BIT(0),
                        FIELD_KILLED = EX_BIT(1),
                        FIELD_ACTIVE = EX_BIT(2),
                };

                GameEntity();
                virtual ~GameEntity();

                // set name
                void setName( const String& name );

                // get name
                String getName()const;

                // get name hash
                int getNameHash()const;

                // get class name
                virtual String getClassName()const;

                // is player
                virtual bool isPlayer()const;

                // is character
                virtual bool isCharacter()const;

                // is pickup
                virtual bool isPickup()const;

                // is trigger
                virtual bool isTrigger()const;

                // is vehicle
                virtual bool isVehicle()const;

                // is server side entity
                virtual bool isServerEntity()const;

                // is not dead
                bool isAlive()const;

                // is active
                bool isActive()const;

                // is spawned
                bool isSpawned()const;

                // spawn
                virtual void spawn();

                // kill
                virtual void kill( GameEntity* attacker );

                // activate
                virtual void activate();

                // touch
                virtual void touch( GameEntity* caller );

                // use
                virtual void use( GameEntity* caller );

                // set health
                virtual void setHealth( int health );

                // get health
                virtual int getHealth()const;

                // take deamage
                virtual void takeDeamage( GameEntity* attacker , int deamage );

        protected:
                String name;
                int    nameHash;
                int    state;
        };

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

.Squid 19.08.2010 02:54

Ответ: Exotic Engine
 
Што такое deamage?

Igor' 19.08.2010 04:59

Ответ: Exotic Engine
 
Цитата:

Сообщение от .Squid (Сообщение 158900)
Што такое deamage?

Это мой кривой английский :-D, а так это повреждения =)

Dream 19.08.2010 13:18

Ответ: Exotic Engine
 
Цитата:

Код:

        // is player
                virtual bool isPlayer()const;

                // is character
                virtual bool isCharacter()const;

                // is pickup
                virtual bool isPickup()const;

                // is trigger
                virtual bool isTrigger()const;

                // is vehicle
                virtual bool isVehicle()const;

                // is server side entity
                virtual bool isServerEntity()const;


ооо да. это так красиво! столько мусора в базовом классе, имхо

Igor' 19.08.2010 14:56

Ответ: Exotic Engine
 
Цитата:

Сообщение от Dream (Сообщение 158928)
ооо да. это так красиво! столько мусора в базовом классе, имхо

Посмотри сколько так называемого мусора в таких базовых классах у дядек из Valve,Epic Games...
ЗЫ Иногда я просто удивляюсь некоторым людям с этого форума...

HolyDel 19.08.2010 16:48

Ответ: Exotic Engine
 
не универсально.
вдруг я хочу сделать игру про колобков, некоторые из которых телепаты. где bool GameEntity::isTelepathy()?

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

Dream 19.08.2010 16:49

Ответ: Exotic Engine
 
а я не перестаю удивлятся некоторым движкоделам, которые в случае чего говрят смотреть на движки дядек из Epica и Valve

Igor' 19.08.2010 17:35

Ответ: Exotic Engine
 
Цитата:

Сообщение от HolyDel (Сообщение 158969)
не универсально.
вдруг я хочу сделать игру про колобков, некоторые из которых телепаты. где bool GameEntity::isTelepathy()?

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

Ок, будем мыслить логически, нам нужно узнать к какому типу оносится наша интития к классу GameVehicle или например к классу GameCharacter так-как например у триггера тачем может воспользоватся только либо чарактер, либо транспорт в котором находется чарактер, и тут встаёт вопрос как это сделать как можно удобнее чем многочисленые проверки на пренадлеженость класса к типа чарактера или транспорта так-как у всех интитий наследуюемых от GameEntity свой ClassName, таже если мы будем хранить SuperClass у всех своих интитий нам придётся долго рекурсией проверять не пренадлеженость интитии или её супер класса к типа чарактера, для этого и нужны такие функции базовые как isCharacter,isVehicle, так-как GameTrigger,GamePickup,GameCharacter и т.р базовые классы игровой логики, твой же калабок будет отнаследован либо от GameCharacter если это будет персонаж управляемый ИИ либо от GamePlayer если им будет управлять игрок а то что это именно твой колобок можно будет узнать по getClassName() функции которая возвращает имя класса интити или по хешу названия класса.
На доступном языке объяснил?

Цитата:

Сообщение от Dream (Сообщение 158969)
а я не перестаю удивлятся некоторым движкоделам, которые в случае чего говрят смотреть на движки дядек из Epica и Valve

Привожу в пример Epic Games \ Valve из за того что таким как ты безполезно что-то обяснять, приходится приводить примеры.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot