Tagged: Peel Toggle Comment Threads | Keyboard Shortcuts

  • frankiezafe 23:39 on 2016-12-16 Permalink | Reply
    Tags: , , Peel, ,   

    Looking for loops in networks.

    It’s seems very simple, but when i’ve started to search for a programmatic way to solve this, you ends up with a kind of complexity that seems much too high compared to the problem.

    After a bit of research, i found the Rocha Thatte method. It is a very elegant way to detect “cycles” in “directed graphs”. Description in wikipedia.

    This is a js implementation, based on the java version, used to study the implementation.

     
  • frankiezafe 21:29 on 2016-11-16 Permalink | Reply
    Tags: , , Peel,   

    Finding cycles in networks.

    graph_cycle

    Since several days, i was trying to solve a problem that will occur in #peel: how to broke a connection when the connection is part of a “cycle” (i’ve called it “loop” until now). This problem is illustrated here:
    overall-structure-20160930-liberties-002-text

    The beginning of the answer is in wikipedia and uses graph theory >> https://en.wikipedia.org/wiki/Cycle_(graph_theory)

    Can’t wait to start coding that 🙂

     
  • xuv 22:00 on 2016-09-09 Permalink | Reply
    Tags: , , Peel,   

    Polymorph weekly news #6 

    overall-structure-20160930-liberties-002-text

    If you’re following this series of weekly news, you’ve noticed there hasn’t been any for the past few weeks. I apologize for this. It does not mean Polymorph was on hold or that I lost contact with the team, but I just did not have much time to write a post and do the regular interviews of the different participants. But this week, I’m back on track and was invited to participate in the dev meeting with @frankiezafe, @balt and Olm. So let’s summarize this 3 hours meeting in a couple points that hopefully will invite you to dig further and come to the next one. Because, since Polymorph is actually an open source game development platform, you are all welcome to join, anytime you want.

    Out of the many things that have been developed around Ogre for the past few weeks, the last notable one is an addon to handle game controllers. François has finished and tested it with Olm and Balthazar. They’ve even tried to plug in multiple mouse controllers in one machine to see how that would work. But although this could be possible on a Linux machine, it’s not as easy as it sounds. While the idea of creating a game for multiple users on the same computer, each with his/her own mouse, is appealing, the complexity and the limitation in terms of OS choice don’t make it a priority for Polymorph at this time. If a project comes up that requires it, further research will be done in that direction. As for now, the Ogre addon for game controllers works. It’s not going to be an official addon as the Ogre community requires that unit tests must be written for it in order to make it into the official list.  But since it’s open source and the code available here, if someone wants to jump on it and do it, you’re more than welcome.

    The conversation went on about PEEL’s gameplay and especially how the player moves around and manipulates objects. As you can see in the video below, things run smoothly. But an interesting conversation happened between Olm, Balthazar and Francois on how to improve things and make it even smoother.

    François then introduced his plan on how to configure each levels using XML files. Basically, each level is fully described by a tree of options and parameters, which makes it a fast and convenient way to create new levels. Discussion went around the structure of the XML, where to add and define sound parameters and so on. Which then evolved in a whole conversation on how to best use the sound engine (aka Pure-Data) that is now fully part of the Polymorph Engine. Pure-Data, for those who don’t know, is the open source equivalent of Max/MSP. A very powerful realtime sound synthesizer, making the Polymorph Engine a musical instrument in itself.

    As for PEEL, being a minimalist game in  terms of 3D objects and environment, the sound will be crucial to give a sense of space and set the overall mood of the game. We’re taking about spacial sound and realtime sound effects, of course, done with the help of Daniel Perez Hajdu.

    Regarding the development of Polymorph Engine, many questions are still open. What about the compilation on Android? Lacking tools and access to proper Android hardware, Francois has not managed to compile it for this platform yet. There is also big questions hanging in the air regarding shadows. Francois has not figured out how all that works. It might be not so important for PEEL, but the next project will require it.

    And since we are already talking about the next project, @louise will be joining Polymorph next week to start working on the Contredanse application. She will be doing research on the gameplay and work on the integration of the 3D elements in the game engine. While @frankiezafe will be in charge of integrating Bullet (the physics engine) and finding all the help in can get from the Ogre community to get the shadows working.

    So stay tuned, come visit us and pass on the information around you, that’s also a way to show support to this project. And see you next week.

     
  • frankiezafe 19:37 on 2016-09-06 Permalink | Reply
    Tags: , motion, Peel, ,   

    Navigation along the structure.

    After some refactoring, the system starts to behave nicely:

    • objects position, size and orientation are described in an xml, much easier to modify
    • gaps (the space between joints, marked by a white sphere), are rendered automatically by the engine
    • camera rig (a hierarchy of objects including camera and lights) is able to move along the structure, from cluster (orange boxes) to boxes
    • when 2 gaps are vailable in a cluster, it’s possible to choose wich one to solve
    • camera orient itself according to the selected gap

    I have to plug back the resolution of gaps, disabled for now. Moving a segment will cause issue, for sure. More about this very soon!

    The tricky point was to manage the camera correctly when its orientation is not aligned with the world axis anymore. The camera is parented to a node called origin. When the orientation of origin change, the UP axis used to update camera has to be given before calling lookAt for instance.

    Vector3 local_up( 0,1,0 );
    local_up = origin->getOrientation() * local_up;
    cam->setFixedYawAxis( false, local_up );
    cam->lookAt( origin->getPosition() );

     
  • frankiezafe 20:10 on 2016-09-03 Permalink | Reply
    Tags: , , Peel   

    Starting the integration of the new logic in the engine.

    The cluster concept being new (the orange boxes), i need to already review the classes behaviour. The class diagram posted in july is not good anymore.

    Selection_679

     
  • frankiezafe 17:49 on 2016-08-30 Permalink | Reply
    Tags: , , , Peel   

    Puzzle research for peel.

    In the process of searching a “why” 1, the idea of a messed up structure to reconstruct arose. As the other concepts in the game, it’s easy to understand visually, a bit more hard to describe programmatically. Indeed, once several segments will be connected, rotations will be constrained, and hierarchy tree (3d objects parenting) has to be rebuild.

    In these images, the player starts in the left state, and after rotating and connecting all the parts, he/she ends up in the right state. The images show something looking like a level, but i’m planning to add dynamically the next segments to generate the sensation of an endless puzzle.

    The puzzle starts at the bottom.

    overall-structure-20160930-002

    overall-structure-20160930-001

    Axis of liberty: each start joint (in fuschia) has 1 degree of freedom.

    overall-structure-20160930-liberties-001

    Note: cluster (orange wireframe cubes) must be attached to connector or gap (for the 2 first ). Each cluster knows wich joints are presents in it. If a segment moves, the joints move with it, and potentially reach the next cluster.

    By building a slightly more complex structure and trying out joint rotation with connected segments, collision issues starts to show up!

    overall-structure-20160930-liberties-002-text

    First try could be solved by shortenning a bit the segments:

    overall-structure-20160930-liberties-003

    But these issues can not be quickly fixed:

    overall-structure-20160930-liberties-004

    overall-structure-20160930-liberties-005

    overall-structure-20160930-liberties-006

    Enabling and disabling liberties is a crucial point in game mechanics, and will not be easy to calculate… At least, i don’t have the solution popping out right now.

     
  • frankiezafe 16:44 on 2016-08-16 Permalink | Reply
    Tags: , Peel, , reverb,   

    Playing with reverb, linked to camera position.

    For peel, the reverb should increase a sensation of emptiness, and rotations around the tube will make the sound vary. Later this week, Daniel will make investigate this topics.

    patch-network.pd  - -home-frankiezafe-projects-peel-work_cpp-assets-pd_672

    PURE DATA: 33 Reverb and Delay on youtube

    By the way, the new way of puredata to manage addons via deken is great, even if searching is tricky until you know exactly the object’s name you are searching for.

    About freeverb~

     
  • frankiezafe 16:16 on 2016-08-15 Permalink | Reply
    Tags: , , , Peel   

    Game logic on its way: tube is closing correctly, only when top and bottom are aligned. No time to make a video today, so i post a serie of 3 pictures showing the connection animation, programmatically validated.

    screenshot08152016_170838606

    screenshot08152016_170847021

    screenshot08152016_170849021

    For those who like schema, here is , in a very abstract form, the relations between objects.

    class-hierarchy02.pdf

     
  • frankiezafe 16:47 on 2016-08-13 Permalink | Reply
    Tags: Peel, ,   

    First video for peel in #ogre3d!

    All interactions goes via a cross allowing 4 actions.

    • If the player press the top half of the screen, he/she manipulates the top part of the tube.
    • If the player press the bottom half of the screen, he/she manipulates the camera.

    peel – game, first touch and feel from frankie zafe on Vimeo.

    UVs and shading will be solved soon.

     
    • xuv 18:37 on 2016-08-13 Permalink | Reply

      Nice. I see a little inconsistency in the UI though. The left and right arrow rotate the corresponding cube whether the cursor is in upper or lower half of the screen. While the up and down arrow manipulate the camera. It could be confusing. Maybe a different icon for up and down would make it clearer.

      • frankiezafe 11:42 on 2016-08-14 Permalink | Reply

        On the top, the bottom arrow will move the top part down to close the tube. The top arrow would be used to “bend” the tube and see top and bottom part at once. These 2 actions are not implemented yet…
        On the left and right arrows, there’s a difference between top and bottom:

        • bottom: free rotation
        • top: 90 degrees steps

        So, especially on the top part, top and bottom arrows will have very different behaviour then on the bottom. You were thinking about a completly different icon or an adaptation?
        Top bottom arrow with an extra triangle on the bottom for instance?
        I’d like to keep this as simpl as possible.

        I’m also not sure on how to navigate along the tube. For instance, once the puzzle solved, how to indicate to the player that he/she can go up?
        Remap of the top arrow?

        • xuv 02:52 on 2016-08-15 Permalink | Reply

          Ok. The textual description is a little too complicated for me to understand. I guess I’ll see it. You’re on the right track. 🙂

  • frankiezafe 11:40 on 2016-08-13 Permalink | Reply
    Tags: , Peel,   

    Starting to feel the love!
    As explained yesterday by @xuv, #ogre3d learning curve is stiff. This morning, i started to customise the compositor. The idea is to be able to change the background color of only one part of the screen.

    To do so, i just added one node in the compsitor workspace, before the “3d render” node, that do the cleaning and draw a simple quad. This simple quad uses a shader (via a material, ok it seems to be long) that uses 3 colors variables and 2 multipliers variables.

    The shader itself is simplistic:

    vec4 col = texture2D( tex, uv0 );

    if ( uv0.y <= 0.5 ) { col = mix( bg_color, top_color, top_mult ); } else { col = mix( bg_color, bottom_color, bottom_mult ); } fragColour = col;

    screenshot08132016_123358873

     
c
Compose new post
j
Next post/Next comment
k
Previous post/Previous comment
r
Reply
e
Edit
o
Show/Hide comments
t
Go to top
l
Go to login
h
Show/Hide help
shift + esc
Cancel