Tagged: game dev Toggle Comment Threads | Keyboard Shortcuts

  • frankiezafe 22:03 on 2017-01-22 Permalink | Reply
    Tags: , game dev, , , RTT   

    Currently working on PCamera class (a class to manage … camera!). The new samples/0.1/example.cam shows how to create one and render it onto a texture.

    In these images, the pink texture on the cube is the rendering of the camera rotating in the center of the scene, the tall pink cone. It is very ogry to send the camera to the texture:

    RenderTexture * rt = texture->getBuffer( )->getRenderTarget( );
    custom_wp = compositorMgr->addWorkspace( sceneMgr, rt, custom_cam.getOgreCam( ), cwName, true );
    custom_mat->getTechnique( 0 )->getPass( 0 )->createTextureUnitState( )->setTexture( texture );

    There should be a way to make this a bit more handy, I’ll look into it sooner.

  • frankiezafe 13:08 on 2017-01-17 Permalink | Reply
    Tags: , , game dev, , , ,   


    New example ready for skeletons manipulation.

    In the example, the skeleton debugging is enabled by default. It shows the bones hierarchy and the local orientation of each bone.

    There is 3 transformation spaces for bones, inherited from Ogre3D:

    • LOCAL
    • PARENT
    • WORLD

    All methods to get or set orientation, scale and position are sensitive to this value, except the moveBone methods, not yet finished.

    The example shows also the different ways to retrieve information about the skeleton: list of bone’s name, list of bone objects, access via name, id or pointer, etc.

    The beautiful model i destroy if from Sophie Khan and distributed by #additivism.

  • eurydice 11:23 on 2017-01-17 Permalink | Reply
    Tags: , game dev,   



    First little game without pretention done while learning Openframeworks and C++ during my traineeship !

  • frankiezafe 22:28 on 2016-12-07 Permalink | Reply
    Tags: , game dev, ,   


    Triggering sounds when there is a collision between 2 objects is now feasible with the code. A message is sent to pd with the name of the objet and a “contact” flag (left of the image).

    It has been a hell of a fight to get extract “useable” collisions information out the physical engine. There are 3 or 4 ways to listen to them and for each collision you get a LOT of data:

    • number of points
    • localisation of these points on each objet, in local and world cooridnates
    • impulse, frictions, etc

    And, obviously, all this happens for all objects currently colliding…

    The first version of the code will runs on friday evening. It is certainly not the final version. A more serious approach is on its way, but it was too complex (impossible) to finish for tonight.

    And, the sound design is close from 0 🙂

    Stay tune for more!

  • frankiezafe 18:40 on 2016-11-25 Permalink | Reply
    Tags: , game dev, ,   


    Dynamic scenes loading.

    Based on an #XML description of the project, that looks like this:

    • <polymorph version=”0.1″ date=”20161124″>
      • <scenes>
        • <scene id=”3″>
          • <pobjects>
            • <plight name=”main_sun” visible=”1″ debug=”1″>
            • <pnode name=”floor” visible=”1″ debug=”0″>

    and so on, it is easy to load a new scene. The deletion and creation job is managed by a cool object call “PObjectManager” see: http://polymorph.cool/doxygen/classpolymorph_1_1_p_object_manager.html (thanks, doxygen!)

    In the example.1.xml, the key ‘n’ is binded to the method PObjectManager.nextScene().

    A little note: in the scene 1 (the middle one), the pile of plates has been done via a special tag:

    <repeat count=”20″ offset_pos=”0,10,0″ offset_dir=”0,5,0″ offset_scale=”-2,0,-2″ />

    When placed in a pnode, it will generate copies of the object automatically. Similar to array modifier of blender.

  • frankiezafe 17:05 on 2016-11-19 Permalink | Reply
    Tags: , game dev, ,   

    Polymorph package is on its way!

    Until today, polymorph was a collection of Ogre addons, independent from each other. The approach has changed a lot during the development of Tuning score. All extra libraries are now linked into one big package:

    • Bullet – physical engine;
    • libPD – sound engine;
    • OSC – Open Sound Control messages, based on udp;
    • tinyXML – for project loading;
    • SDL – for gamepad and joysticks.

    The package uses a project file format, in XML + provides high-level objects and a base class containing all mandatory methods to manage a game:

    • scene & resources loading;
    • window management and events;
    • keyboard and mouse events.

    A large documentation has to be written, but programming architecture is now fixed.

  • frankiezafe 19:24 on 2016-11-02 Permalink | Reply
    Tags: , game dev, ,   

    Tuning scores, first screenshots of the game.

    Because we present the first prototype to Lisa Nelson and the Contredanse crew very soon, we rushed a lot this week and first results are promising:

    • a bunch of objects are ready to be manipulated;
    • it’s possible to play on 2 different computers seamlessly (identical physical world);
    • each player can change his/her point of view and see what the other is looking at (the eye in the sky);

    And, the most important, the playfulness of being in a “sensitive” virtual environment. Every little movement may have an impact on several objects. And looking at the other propositions is as stimulating as playing yourself.

    There still a lot of things to fine-tune, in the code and the models.

    The next big step is add some sounds, to complete the experience.




  • frankiezafe 19:52 on 2016-09-24 Permalink | Reply
    Tags: , game dev, , ,   

    Demo of physics in polymorph engine.

    A lot of stuff has been fixed since yesterday, but severe improvments are still to be done.

    In the video, only convex hulls and simple colliders (cubes & spheres) are used.

    To add a custom collider on a PNode, you call:

    pnode.load( sceneManager, “General”, “my-high-resolution.mesh” );
    pnode.physics( polymorph::BT_DYNAMIC_CONVEX, “General”, “my-low-resolution.mesh” );

    “my-low-resolution.mesh” will be used to calculate physics.

    Using convex is a problem for the blue thingies: the torus is not empty, but convered by an invisible “skin”. Therefore, other objects can not go through this huge hole… The issue should be solved by using the btGImpactMeshShape, but the shapes are behaving strangly when enabled. They jumps all the time…

  • frankiezafe 20:44 on 2016-09-23 Permalink | Reply
    Tags: , , game dev,   

    Bullet integration.

    Working on a wrapper to ease access to the ogre objects, in a namespace called polymorph 🙂

    For instance, here is how to declare objects.


    // simple nodes
    n0.sphere( sceneMgr );
    n0.orientation( Vector3( 0.3,-0.1,0 ) );
    n0.scale( 2.46 );
    n0.move( Vector3( -12,8,0 ) );
    n0.debug( true );

    n1.sphere( sceneMgr );
    n1.debug( true );
    n1.orientation( Vector3( -0.5,0.1,0 ) );
    n1.scale( 4 );
    n1.move( Vector3( 12,0,0 ) );

    // parenting n1 to n0
    n0.attach( &n1 );

    // nodes with physics
    my_sphere.sphere( sceneMgr );
    my_sphere.orientation( Vector3( 0.3,-0.1,0 ) );
    my_sphere.scale( 2.46 );
    my_sphere.move( Vector3( -12,8,0 ) );
    my_sphere.debug( true );
    my_sphere.physics( polymorph::BT_DYNAMIC_SPHERE );

    my_node.load( sceneMgr, “General”, “ob.mesh” );
    my_node.physics( polymorph::BT_DYNAMIC_FREE, “General”, “ob-physics.mesh” );
    my_node.scale( 5 );
    my_node.debug( true );

    Once done, to move an object, you call:

    my_sphere.yaw( Radian( 0.005 ) );
    my_node.yaw( Radian( 0.02 ), true );
    my_node.move( Vector3( -12,8,0 ) )

    Very soon, custom meshes will be available into Bullet!

    See P.E.2.0/bullet/app for sources.


  • frankiezafe 20:06 on 2016-09-18 Permalink | Reply
    Tags: game dev, , , spacialisation,   

    Sound source linked to Puredata.

    After the work of yesterday, a bit tedious, and a bit of cosmetics in pd, sound sources are now correctly linked with the sound. Pan is controlled by the x coordinates of the source. Source also send the file path to play to the track. The 3 tracks you see there are completely automatised, with the help of yacine sebti.

    About the file format, it’s a bit more tricky: puredata only reads .wav & .aif by default. An addon exists to load ogg (personal choice), but it only takes absolute path!

    Ogre cannot do that (find the absolute path) but boost::filesystem canref. Unfortunately, this part of the boost library is not binded to ogre… Another todo 🙂


    This post is related to this one

Compose new post
Next post/Next comment
Previous post/Previous comment
Show/Hide comments
Go to top
Go to login
Show/Hide help
shift + esc