Page 2 of 2

Re: CobbleStones Game Engine

Posted: Wed May 21, 2014 3:32 pm
by AReichl
I have a question - why did you choose PhysX and not e.g. Bullet?

Re: CobbleStones Game Engine

Posted: Wed May 21, 2014 4:09 pm
by Seven
I wrote wrappers for most of the physics engines available (newton, bullet, ode, physx) and had them user selectable at runtime. When all was said and done, I got better performance from PhysX using hardware mode and decided to select a single engine to fully flesh out. I still need to add ragdolls and joints, but it seems fairly simple to do.

Re: CobbleStones Game Engine

Posted: Thu May 22, 2014 8:03 am
by AReichl
hmmm - ok.
I only asked because after comparison of physics engines i decided to go for Bullet (PhysX was NOT on my list, hehe).
What about "portability" ? I have the impression, that Bullet would give you the most "flexibility" here. And newer versions also should have some kind of hardware acceleration (not totally sure about that point).
My wish would be, that maybe at a later time you add at least a wrapper for Bullet again (i think you can forget about Newton and ODE).

Re: CobbleStones Game Engine

Posted: Thu May 22, 2014 11:16 am
by superpws
Hi, it's seems nice project! What is the license of it? (if you haven't decided then I recommend zlib or MIT). Regarding github, you should add .gitignore of C++ in your root of repository, that way your .obj/.log wouldn't be uploaded next time you push your repository because .obj/.log etc are pretty much useless to share.

Re: CobbleStones Game Engine

Posted: Thu May 22, 2014 7:28 pm
by Seven
thanks for looking at the project. I havent given any thought to the license so will need to do that.
as for the git stuff, i have no experience in that but will check into it.

Re: CobbleStones Game Engine

Posted: Mon May 26, 2014 3:06 pm
by Seven
added some preliminary AI to the character system. Now includes a standard state machine along with a goal system. The goals are maintained in a list inside the 'brain' and attempts to select the current goal based on the situation. Next step is to add multiple goal managers to the brain and switch between them at runtime as needed.

below is an example of the followObject goal.
when the goal is entered, it checks if the character is facing the target object. If it is not, it auto adds a turnandface goal, which is moved to the front of the stack and exectued. Once it returns, this goal continues and moves that character towards the target object. If the character gets too close to the target object, it auto generates an idle goal, which now becomes the active goal. In this case, the character will stop movement and begin and idle animation. Once the idle goal has timed out, the system returns to the follow goal and the character starts mvoement towards the object again.

the end result is that a single goal added to the character

Code: Select all

 
character->getBrain()->getGoalManager()->addGoalBack(new CSAI_Goal_FollowObjectId(character->getBrain()->getGoalManager(), "Follow", false, 921, 100));
 
sets a series of events in motion that produces a semi intelligent character action.
I still need to add a CSLevel class to hold the world 'blackboard' of information.
as things are completed, the trigger system will send messages to the CSLevel and update the blackboard.
Objects will then be notified that something has changed int he world and they can update as needed.
These message will be sent to the brain classes as well, so that the setFinished() functions of the goals can be updated as events happen.
a good example would be a followobjectid() goal. if the player 'releases' the character from helping him, the event would be sent to the blackboard and down to the
brains. the goal would then 'finish' and be removed from the list, as which point the character will return to whatever goal he was assigned prior to the followobjectid goal.

Code: Select all

 
    ////////////////////////////////////////////////////////////////////////////////////
    void CSAI_Goal_FollowObjectId::enter()
    {
        CSObject* target = getLevel()->getObjectPointer(getTargetObject());
        if (!target) { setFailed(true); return; }
                if (!me()->isFacing(target->getAbsolutePosition()))
                    getGoalManager()->addGoalFront(new CSAI_Goal_TurnAndFaceId(getGoalManager(), stringc("TurnAndFace"), false, target->getId()));
    }
 
    void CSAI_Goal_FollowObjectId::update(const float &elapsedtime)
    {
        CSObject* target = getLevel()->getObjectPointer(getTargetObject());
        if (target)
        {
            me()->lookAt(target->getAbsolutePosition());
            if (vector3df(me()->getAbsolutePosition() - target->getAbsolutePosition()).getLength() <= getDistance())
            {
                me()->setVariable("Stop", "1");
                getGoalManager()->addGoalFront(new CSAI_Goal_Idle(getGoalManager(), "Idle", false, 5));
            }
            else
                me()->setVariable("Forward", "1");
        }
    }
    void CSAI_Goal_FollowObjectId::exit()
    {
        me()->setVariable("Stop", "1");
    }
 

Re: CobbleStones Game Engine

Posted: Thu May 29, 2014 10:33 pm
by Seven
added CSBlackBoard for world event memory
------ add event to blackboard - defaults to not true
------ poll blackboard as desired to see if event has happened
------------ example : if (getBlackBoard()->getValue("Talked To Seven")) { do something with that knowledge }
also
if event is set to true, blackboard sends event message to announce it occurred
------------ example : getBlackBoard()->setValue("Talked To Seven", true);
---------------- blackboard fires event to world to let everything know that you talked with seven.
.
.
so far so good. Running multiple tests now. will add ability to save, load, copy blackboard in order to have a persistent world

Re: CobbleStones Game Engine

Posted: Wed Jul 30, 2014 9:26 pm
by Seven
new and improved....

https://github.com/SevenGameMaker/CobbleStones

cleaned up the github repository and added tester projects to provide clean testbeds for gui components.

tester3 project contains all of the code for the gui enhancements.
reminder : tester3.exe requires that the media folder be two levels up from the exe
../../media
this is due to the room model hardcoded for that path :(

very interested in feedback on the tester3.exe
you can either use the prebuilt exe or copy the code into a new project and build it.
let me know if it doesnt do something that you would expect it to.

I will continue the programming and should have something very nice to contribute soon

Re: CobbleStones Game Engine

Posted: Sat Aug 02, 2014 2:21 pm
by Seven
CobbleStones windowing system is now mostly complete. I still need to add drag and drop capability for inventory type systems but should have complete today.

in the mean time, the Tester3 project shows off all of the windowing system functionality.
I restored back to original irrlicht library so no changes at all in that. (I added a clientwindow to the system to allow better clipping instead of exposing the absoluteclippingrect)
I think that I have added a good chunk of the functionality of the Microsoft windows...... we'll see.
double click titlebar for min / max,
resize as desired, resize microsoft window and desktop will resize
right mouse in scene viewer for movement
the menu is just for testing - no functionality in this demo.

the tester3 project is self contained so no need to grab the entire cobblestones project.
reminder - it expects media folder to be two level up from the exe (not my fault, the room file demands this)

check it out at
https://github.com/SevenGameMaker/CobbleStones

you can grab just the tester3.exe from the bin folder if you like and drop it into an irrlicht bin folder. as long as the media is two levels up it should run.

and let me know what does / doesn't work for you.

** updates :
...... added splitter windows
.......added 3d camera
.......added height to toolbar
.......modified toolbar to accept any guielement

*edit
latest and greatest uploaded 8-5-2014

modified pic to reflect changes
https://github.com/SevenGameMaker/Cobbl ... tones1.jpg

Re: CobbleStones Game Engine

Posted: Sun Nov 23, 2014 6:13 pm
by Seven
I have been updating and loading.
latest is uploaded today.

so far so good....