Tagged: game dev Toggle Comment Threads | Keyboard Shortcuts

  • frankiezafe 20:01 on 2018-04-29 Permalink | Reply
    Tags: , fish, game dev, , ,   

    Little week-end challenge: reproducing the “fish” shader demonstrated by Matt Nava in his talk at GDC last year.

    The shader Giant Squid Studio developed (at 3:50):

    After a few hours (not many), shader in godot:

    The source code is available on github: https://github.com/frankiezafe/Fish-shader

     
  • frankiezafe 20:44 on 2018-03-18 Permalink | Reply
    Tags: , game dev, , ,   

    Starting godot development with a little help to Michal Seta on his OSC addon.

    First impressions are fantastic! Godot’s architecture is prepared with indie programmer in mind: the engine is obviously open source, it is really easy to interact with the core classes of the engine, receive notifications of the main events, and childish to compile!

    A really nice piece of framework!

     
  • frankiezafe 21:09 on 2018-02-14 Permalink | Reply
    Tags: , game dev, , ,   

    Second phase of the work: sending the user inputs from client to server and process the interactions. There is still a small issue with the relative position on the screen of the client, to fix tomorrow, and implementing visual feedback in the client.

     
  • frankiezafe 23:05 on 2018-02-13 Permalink | Reply
    Tags: , game dev, , , , synchronisation,   

    Always the same surprise when one application controls another! In this case, the application on the left is running on my workstation, receiving and visualising the position and rotations sent by the laptop on the right. The laptop is running the physical worlds.

    Tomorrow I’ll remount the mouse control in the client (the one on the left), and it will be possible to play at 2 in the same physical world!

    (done with my crappy webcam, sorry fot the quality)

     
  • frankiezafe 23:24 on 2017-10-12 Permalink | Reply
    Tags: , , game dev, , , , ,   

    same video on peertube

    (a bit more than a technical demo this time)
    After finishing the work on shadows, it was time to play with the different materials possibilities.

    To explain a bit what you are seeing:

    • at the top left, the 3 textures containing the shadow maps;
    • transparent walls (wireframes) are not take into account in the shadow map because they are using a specific material called invisible_for_shadows, i think the name is obvious;
    • the foggy volume above the ground is made of a stack of 25 thin boxes, using another cool material: solid_shadows_no_cast, they receive shadows but don’t cast them;
    • and the balls, using the solid_shadows material and having the standard behavior, but in wireframe, implying that fog is hollowed when you look through them.

    A cool feature is the ability to set the alpha of the shadows material per material. For the jelly fog, the material is looking like this:

    material screen_mat : solid_shadows_no_cast
    {
      technique
      {
        pass standard
        {
          diffuse 0.6 0.7 0.95 0.2
          emissive 0.2 0.3 0.45 0.4
          depth_write off
          scene_blend alpha_blend
        }
        pass pssm
        {
          fragment_program_ref ShadowsPssm_pix
          {
            param_named shadow_alpha float 0.2
          }
        }
      }
    }

    The speed control over the physic simulation (when everything freeze) is modifying the time multiplier of bullet. The call is looking like this:

    polymorph::PBullet::time_multiplier(0.85);

    Complete projects is accessible in the engine, under samples/0.1/example.pssm_shadows.

    I need to rest a bit, it has been a harsh road to get this packed. The last part of the job is to ensure the compatibility low opengl versions!

     
  • frankiezafe 18:50 on 2017-09-17 Permalink | Reply
    Tags: , , , game dev,   

    Not very sexy, but very useful: there are 2 new methods in the bullet wrapper that enables retrieval of an ordered list of the collisions along a ray.

    The job was super easy, thanks to the bullet lib consistency and documentation. The object to use is AllHitsRayResultCallback. Once processed, it returns a list of bodies touched by the given ray.

    The last part of the job was to order this list. The fastest way I thought of was to use an std::map, and use distances between the start of the ray and the hit point as keys. The nice thing with maps is that they are automatically sorted, if you use a native numeric key, such as floats.

    This map is then turned into an array of PBulletRay.

    In the code that use these methods, you can loop over the array, all objects are sorted from the closest (relatively to camera) to the farthest.

    Available in repo (not yet documented nor doxygened)

     
  • frankiezafe 19:40 on 2017-06-17 Permalink | Reply
    Tags: game dev, , ,   

    Working on a two passes material, the shadow pass being potentially added automatically in the material by enabling shadows.

    Here is how it looks:

    material two_pass_shadows
    {
      receive_shadows on

      technique
      {
        
        shadow_caster_material shadowscaster
        
        pass standard
        {
          ambient 0.0 0.0 0.0 1.0
          diffuse 0.8 0.8 0.8 1.0
          specular 0.0 0.0 0.0 1.0 0.0
          emissive 0.0 0.0 0.0 1.0
          alpha_to_coverage off
          colour_write on
          cull_hardware clockwise
          depth_check on
          depth_func less_equal
          depth_write on
          illumination_stage
          light_clip_planes off
          light_scissor off
          lighting on
          normalise_normals off
          polygon_mode solid
          scene_blend one zero
          scene_blend_op add
          shading gouraud
          transparent_sorting on
          
          // SUPER IMPORTANT TO AVOID FLICKERING
          depth_bias 0 -1
          
          texture_unit
          {
            texture rock.jpg
            tex_address_mode wrap
            scale 1 1
            colour_op modulate
          }
          
        }
        
        pass pssm
        {
          scene_blend add
          
          // SUPER IMPORTANT TO AVOID FLICKERING
          depth_bias 0 0
          
          vertex_program_ref ShadowsPssm_vert
          {
          }
          fragment_program_ref ShadowsPssm_pix
          {
          }
          texture_unit
          {
            content_type shadow
            tex_address_mode border
            tex_border_colour 1 1 1 1
          }
          texture_unit
          {
            content_type shadow
            tex_address_mode border
            tex_border_colour 1 1 1 1
          }
          texture_unit
          {
            content_type shadow
            tex_address_mode border
            tex_border_colour 1 1 1 1
          }
        }
        
      }
    }

    There is still issue with wireframe materials for instance ( polygon_mode wireframe ). Another issue is the poor definition of the shadows once the camera is a bit further.

    As shown in this image, there is a clear cut in definition when going from the near texture (green one, 2048) to the second one (red one, 1024). I guess I have to look much closer to the distance steps.

     
    • xuv 03:06 on 2017-06-19 Permalink | Reply

      Nice. We want moarrr screenshots :-D.
      Could you also make the last one work in realtime? Pleeez.

    • FdeCd 08:13 on 2017-06-19 Permalink | Reply

      cool!! And if you had blur that could be fix the definition problem… or not?
      Can’t wait to test it 😉

  • frankiezafe 19:45 on 2017-04-24 Permalink | Reply
    Tags: game dev, , , ,   

    Long time no see, but polymorph engine development is back on track!

    The XML describing a polymorph’s project is now able to configure the Ogre’s compositor, understand the post-processing module.

    The first screenshot is using a custom compositor with this configuration:

    <workspace name="TuningScoreWS">
      <script group="General" workspace="CustomCompositor" />
      <colors>
        <color name="background_center" value="0,1,0" node="0" pass="1" index="4"/>
        <color name="background_border" value="1,0,0" node="0" pass="1" index="8"/>
      </colors>
      <variables>
        <variable name="centerx" value="0.5" node="0" pass="1" index="0"/>
        <variable name="centery" value="0.5" node="0" pass="1" index="1"/>
        <variable name="radius" value="0.9" node="0" pass="1" index="2"/>
        <variable name="ratio" value="1.777777778" node="0" pass="1" index="3"/>
      </variables>
    </workspace>
    

    The required files for this compositor (shaders & nodes) can be found in the samples example.compositor.

    The second screenshot is using a default compositor, where only the background color can be modified.

    <workspace name="Default">
      <colors>
        <color name="background" value="1,0,0"/>
      </colors>
    </workspace>
    

    The documentation about the XML is here: https://bitbucket.org/polymorphteam/pe.2.0/wiki/xml-specifications

     
  • frankiezafe 16:15 on 2017-02-28 Permalink | Reply
    Tags: , , game dev, ,   

    It’s holidays in schools this week in belgium, a good occasion for me to pull out of the grave an old project: disrupted cities.

    4 years ago, the scenes have been generated within blender: city maps, meshes and uvs. I was certain it wouldn’t be too hard to port in real-time, and that’s what i’ve started this morning! The planes are generated at runtime inside the engine, the uvs also, and after a rather long loading, everything runs nice and smooth (see the 2 screenshots above). A huge batch of highres textures, scans of a monotype, are necessary for the visual quality of the rendering.

    The background is not full white, leaving some room for bright events.

    The whole project is about wandering in an abstract city.

    As it is holidays for students, i’ll spend mine working on this, thanks to the devs made since the beginning of the year.

     
    • xuv 17:54 on 2017-02-28 Permalink | Reply

      Nice. Though RT? WTF? Isn’t it PE? Maybe TMA.

    • frankiezafe 19:11 on 2017-02-28 Permalink | Reply

      Video is rendered with blender, but it will be done in real-time with polymorph engine in several days!!! 🙂 – currently generating the levels of the towers.

  • frankiezafe 18:46 on 2017-02-08 Permalink | Reply
    Tags: game dev, , ,   

    I’m currently working on a more user friendly mesh, skeleton & materials converter.

    For the little story, when you export a model from blender, the blender addon outputs xml files. These files have to be parsed by the OgreXMLConverter to produce the final files. *.mesh & *.skeleton files are binaries.

    It’s a tedious process, especially when you want to organise your files in the folder structure of the application.

    The polymorph xml converter wlll make this a bit more handy (when ready):

    • hotfolder: define the folder where the blender exports lands after export;
    • output models: define the folder where the .mesh files will be exported after conversion;
    • output skeleton: define the folder where the .skeleton files will be exported after conversion;
    • output material: define the folder where the .material files will be moved;
    • output textures: define the folder where images will be moved;

    These paths will be saved in a preference file next to the application, to avoid having to reset them each time you open the application.

    A demo will come once it will starts to work. For the moment, only the GTK filechooser is plugged in.

     
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