Mikal's Forum Posts

  • I am doing an experiment (in C3) using approach 2. One issue is the time to copy the texture over from the canvas. I am doing something pretty simple focusing on using a model just for a C3 Sprite (e.g. w/o 3D physics, etc.) To handle multiple models, but not do multiple canvases, I used Babylon multi-view to have a separate camera per model, then update the viewports so that they all take up one part of a large canvas. I then transfer the single canvas over as a texture to C3 and use it like a C3 spritesheet to just use the viewport area for each model.

    I also did #4 using Spine's webgl lib (with help from R0J0's insight on how they did that before in C2). It was a lot of trial and error, but in the end worked (though Spine's webgl rendering is definitely simpler than Babylon - Spine is more 2D focused than 3D focused.)

    C3 Babylon experiment:

    construct.net/en/forum/construct-3/general-discussion-7/babylon-3d-model-sprite-156532

  • Thanks!

    The format _should_ be whatever Babylon accepts (gtlf, glb, babylon, obj), but I had to hardwire it for glb for C3 preview mode (since Babylon normally uses file extensions to check format, but in C3 preview mode, the file extensions are obscured due to referencing preview blob urls.)

    The conversion to glb does not seem too bad (there are converters out there.) The one pain I have run into is converting fbx models w/ separate fbx animations to glb. I had to load them into blender, combine them together and then export to glb.

    These are early days for the plugin experiment. In general it's similar to the released C3 Spine plugin that I have been working on, mainly for render/image, but all physics, game logic, behavior would be done in C3 with another sprite that the Babylon Model is 'pinned' to.

    What 3D model formats are you interested in using?

  • I am experimenting with a simple Babylon C3 addon. It renders a number of Babylon animated 3D models in a single canvas and then you can use the models as 2D Sprites in C3. You can zoom in and out of individual models and control the camera and animation for each model. It could be useful for a game like Donkey Kong Country w/ 3D model for the character in 2d platformer world. You can apply effects, z order, layer, rotate etc. similar to a sprite.

    Here's a couple examples:

    Single 3D model, attached to a sprite w/ platformer behavior:

    31 model (each rendered separately w/ separate camera control):

  • You are welcome, it sounds like you came up with a good solution.

    If you are interested in C3 encryption, check out this C3 project from macube:

    drive.google.com/file/d/1gZczxGAyAcZQMlCFbAQCEggiMKlllozw/view

  • It sounds like it's too much work, but if I was worried about easy/simple manipulation of text files I would do some light encrypt/decrypt in C3 (determined hackers would get around this.)

    My plugin is for Steam, so it saves to Steam cloud, not typically good for mobile (I would use Playfab for mobile, but there are many other options out there.)

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • Just a warning, depending on local storage to stay the same in nwjs could cause problems (this is what has happened in the past with nwjs upgrading/changing local storage): construct.net/en/forum/construct-2/general-discussion-17/change-web-storage-directory-108793

    Since you are using nwjs (or something similar), how about saving your data (via JSON or dictionary to text) to a file that you directly control into the users directory under your game name or some other known location which will only have the files you want. You can then point Steam at this directory to backup. You can use the nwjs plugin ACEs to write files to the directory of your choice, you can also create directories, etc.

    construct.net/en/make-games/manuals/construct-3/plugin-reference/nw-js

    (My Greengrinds Steam plugin also has methods to save directly to cloud, but I don't think that's necessary in this case.)

  • Nice plugin, I hate doing UI and this is saving me.

    Bug report / fix for Dialog condition isOpened (always returns true.)

    Currently:

    	isOpened(){ return true; }
    

    Possible fix:

    	isOpened(){ return this.isOpen; }
    
  • Looks great, nice work!

  • Runtime 'camera' tilt available also:

  • A new effect to have fun with - SpriteStack shader. A different approach to Sprite Stacking, one sprite w/ effect instead of a stack of sprites. Fun collab with hcatarranaus. Based on work from Securas2010 on Twitter.

    Details here:

    kindeyegames.itch.io/spritestack-c3

  • Nice work, looks great! Thanks for the animation tool, I might play with this a little bit with the FQZ example Andre and I did. I agree in general it's fun to explore and learn with this type of stuff, not quite sure where it's going yet.

    One interesting example that could work with this might be doing something like Donkey Kong Country Returns in C3/C2 do this with 2d tilemap of environment 2d platform behavior and then 3d render of the character pinned to the player sprite and enemies with just per character self sort (e.g. characters cannot intersect geometry, they just do layers, which is fine for DKC style.)

  • Just piling on here, c3IDE & developer mode is the bestest!

    My only wish is that it supported Mac :), that being said the author added a great feature, so I can have a node server on my Mac monitor/serve the c3IDE compiled files on my Parallels Windows VM which is running c3IDE.

    It's really nice.

    Also the c3IDE server is set up not to cache, so c3IDE plugin updates are available on C3 reload.

    On the Mac side I am using nodemon/node/express as my server, which restarts on changes to my plugin dir, so it's also always up to date on C3 reload (no cache issues.)

  • This worked very well, thanks for the nice interface / feature.

    Sped up perf by around 30X versus calling a C3 Event function from C3 JS scripting to access the plugin ACEs.

  • Ah, I think I am beginning to understand... I need to extend IWorldInstance w/ weakmap of functions I want to expose to scripting and register with:

    GetScriptInterfaceClass() {

    return self.IMyPluginInstance

    }

  • How can we call or (expose to call) 3rd party plugin methods from Scripting, similar to how we can call methods for plugins like Sprite, Text, etc. from scripts.

    I have used methods to work around this like call C3 event functions from script, but I benchmarked this and calling a C3 event function from Script has a higher performance cost for my project which drop performance below 10fps. I also benchmarked calling a function with no events and the action of just calling the empty function was also fairly heavy.