Overboy's Tools for Construct 3 (Plugins and Behaviors Addons)

6 favourites
From the Asset Store
Casino? money? who knows? but the target is the same!
  • RafaelMatos

    Yes JSON+ would definitely help for that purpose, not only because it would be far easier and efficient to pick and to use, but also thanks to all the enhancements that are provided in JSON+ and listed in the addon page.

    As I explained 2 messages above, it allow you to nest any amount of data under the same behavior. You could replace most if not all your Arrays and Dictionarries with a single JSON+ Object or Behavior if it makes sense in your Project.

    You can create/nest JSON arrays at any Path and JSON+ comes with handy Quality of Life enhancements and ACES for Arrays.

    Does it have autocomplete for existing keys?

  • Does it have autocomplete for existing keys?

    RafaelMatos

    As the Dictionnaries and Arrays Objects you're using, it doesn't have autocomplete for existing keys by default. (This would be impossible to achieve in Construct 3 for any kind of Data Plugin/Behaviors)

    However, I have included my favorite tips and tricks in the example .c3p provided in the Addon Pack.

    One of them is to use Constant Global String Variable as your Keys, especially the keys that you know that you'll use a lot :

    • This way you'll get autocompletion
    • If you want to reorganize or rename your Data/Properties later, it will auto-update everywhere, you won't have to manually edit everything one by one .
    • Also you can Right-Click > Find all references of that global variable easily to find every single place in Eventsheets where you used that Key
    • (Of course, you can also use Local String Variables if you only need that key in a specific scope, for example if all my Inventory Logic is under the same "Inventory" Group in my Eventsheet, i would use local variable instead)
  • > Does it have autocomplete for existing keys?

    RafaelMatos

    As the Dictionnaries and Arrays Objects you're using, it doesn't have autocomplete for existing keys by default. (This would be impossible to achieve in Construct 3 for any kind of Data Plugin/Behaviors)

    However, I have included my favorite tips and tricks in the example .c3p provided in the Addon Pack.

    One of them is to use Constant Global String Variable as your Keys, especially the keys that you know that you'll use a lot :

    • This way you'll get autocompletion
    • If you want to reorganize or rename your Data/Properties later, it will auto-update everywhere, you won't have to manually edit everything one by one .
    • Also you can Right-Click > Find all references of that global variable easily to find every single place in Eventsheets where you used that Key
    • (Of course, you can also use Local String Variables if you only need that key in a specific scope, for example if all my Inventory Logic is under the same "Inventory" Group in my Eventsheet, i would use local variable instead)

    That's exactly what I do and I actually wanted to avoid this extra work somehow XD. Thanks for the quick response.

  • Great work and really well reasoned argument about 3rd party addons, nicely said.

    I will definitely get both of these.

  • DATA+ 2.0 MAJOR RELEASE

    THERE IT IS ! I'm thrilled to announce the new 2.0 MAJOR UPDATE to my Data Management Addon Pack made for Construct 3

    To thank everyone who already bought this pack, and after thinking a lot about how i could improve it as the best Data Management solution for any C3 project, here is what I came up with :

    • JSON+ V2 is here and it is now called DATA+
    • New Addon : Array as a Behavior
    • New Addon : Dictionary as a Behavior
    • JSON+ enhancements : improved a few details on the 2 JSON+ addons (Behavior and Plugin) based on user feedbacks.

    DATA+ 2.0 (Previously JSON+)

    overboy.itch.io/construct-3-json-plus

    In my Roguelike, i've been using JSON+ Behaviors everywhere and keep improving their features to solve all the issues I've ever had regarding Data Management and to have the full power and flexibility that I needed in such a modular Game Project.

    However DATA+ is meant to be a solution adapted to any project (from the most simple to the most complex) and to any C3 dev (from beginners to veterans), and I realized that JSON+ can be a bit overkill for some usecases. Indeed, in some situations Array and Dictionary are good enough. This is why I decided to release those 2 new Addon Behaviors : Array as Behavior, and Dictionary as Behavior.

    This way you can attach as many Arrays and Dictionaries as you want directly as behavior on your Objects and Families ! No need to create a bunch of seperate Objects and painfully picking them !

    (I also added a lot of screenshots on the addon pack page.)

  • BUT THERE IS MORE.

    Last week i was amazed by all the positive comments and messages I got from dozen of C3 devs on various channels (by mail, DM, on Discord and here). It's amazing to know those tools are already used by some devs for whom I have big respect and admiration, on some exciting games made currently made with this engine.

    So I decided to release my new addon for free :

    UTILS (Free Plugin)

    overboy.itch.io/construct-3-utils

    UTILS is an addon adding a bunch of utilities to Construct 3.

    It aims to be that one Plugin that can be useful in any project :

    • by adding a bunch of powerful and flexible Actions, Conditions and Expressions
    • enhancing the capabilities of Vanilla C3 features (Picking system, Hierarchy, Colors, Layers, Math expressions etc)
    • (all features are detailed on the addon page)

    Also, thanks to this tool :

    • no need to copy paste and edit manually all our "utilities" functions in every single project we make
    • no need for each of us to figure out and repeat the same tedious event tricks / complex math shenanigans, on our own, again and again

    UTILS 2.0 100% Funded in 12 hours via C3 Open Collective

    Shortly after publishing this Addon, Skymen suggested that UTILS and its future development (V2.0) could become the first project funded thanks to the brand new "Construct 3 Open Collective" he just created with Armaldio !

    It's a crowdfunding platform for awesome projects and tools released for free for the whole C3 community !

    So yesterday, we went ahead and launched the crowdfunding campaign for UTILS 2.0, and we were just amazed :

    THE UTILS 2.0 PROJECT WAS FUNDED IN LESS THAN 12 HOURS 🎉🎉🎉!!

    Thanks to all the sponsors and backers for their incredible donations to this Plugin !!!

    🏆 GOLD SPONSORS (100€+)

    • Samuel Bromley (500€ !!!) samuelbromley.itch.io

    • Blumgi (200€ !!!) blumgi.com

    • Kind Eye - Mikal (110€ !!!) kindeyegames.itch.io

    SPONSORS (20-100€) :

    • Bilge Kaan (50€)

    • fredriksthlm (20€)

    🙏 BACKERS (5-20€) :

    • Salman Shurie (10€)

    I already started working on UTILS 2.0 and it should be released pretty soon !

    We didn't expect to reach our 2 stretch goals so fast, so we added a 3rd stretch goal if anyone wants to contribute to the future development of this Plugin ! (V3)

    THE PLUGIN : overboy.itch.io/construct-3-free-plugin-addon-utils

    THE CAMPAIGN PAGE : opencollective.com/utils

  • Overboy Hello mate. I just wanted to address some issues. Utils.remap and Utils.o are freezing C3 for me and the array as a behavior is creating a bunch of them. I have no events, I just added it to the object. Here is the print

  • Hello RafaelMatos !

    I fixed the Array Behavior Debugger issue and pushed a 2.1 version of the Data+ Pack including those fixes.

    EDIT : I also fixed the o() and snap() expressions issues for the Util addon and pushed a 2.4 version including those fixes. (as we discussed on Discord the remap() expression was already working fine)

    Thanks a lot for reporting those issues :)

    And thank you for your kind words on itch, i'm glad you find those addons useful ! 🙏

  • Also really tempted to buy, especially UID to anything, but i got burned with ProUI. C3 changes so much its hard to rely on 3rd party extensions.

    Wait, how did you get burned by ProUI? I still use it to this day and have never had an issue.

  • Overboy Thanks for the really cool plugins. I'm still trying to wrap my head around the UID plugin. In order to know the UID you have to place the instance in a layout, right? This wouldn't work for instances created at runtime because you wouldn't know the UID unless you pick it, but if you've already picked it then that plugin is redundant. Am I understanding correctly?

  • Overboy If I switch to using your "data+ 2.0" in place of a "instance variable". Is its value still accessible if I switch to a different layout? as I ask in my post below.

    https://www.construct.net/en/forum/construct-3/how-do-i-8/set-access-value-instance-178581

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • bankthink

    Whether you're using "instance variables" or any "data+ behavior", I would advise against using the Persist Behavior.

    There would be 2 main ways to retrieve your data once you switch your layout :

    You could make the object itself global as oosyrag suggested in their answer to your thread, if this make sense to your game.

    Or create a simple save/load system by storing the data on an other Global Object (putting relevant data in instance variables of this Global Object for example), or just using Global Variable. You could just save/load your Array/Dictionaries behavior data as JSON with single actions (you can store the whole JSON string you'll get into a single String Variable to retrieve it later easily). Same for the JSON+ behavior which would even allow you to have even more control on what you're saving/loading thanks to nested paths.

    All in all, Data+ can definitely help you to create a better save/load system or even simplify stuff a lot if you just go with the Global Object technique but in any case I would advise you to first try to learn how to store and load a instance variable of your object from one layout into an other using Vanilla feature :) Try what oosyrag suggested !

  • Fib Thanks for those kind words !

    In fact, this is quite the opposite, I always advise to get the UID values of any object at runtime only (whether they were created at runtime or not), using the MyInstance.UID expression to get them directly or to store them in variables to access them later. I never "hardcode" UID numbers.

    There are a bunch of reasons for which UIDToAnything is useful, i'll probably add additional screenshots on the itch page someday so it's easier to understand.

    Indeed if you don't hardcode your UIDs, you need to pick the instance to be able to use UIDToAnything, but ONLY ONCE. For example, let's say you have a Entity family (which contain Player and NPC Objects) with a TargetUID number variable. At some point you could set the TargetUID of your Player Object to the UID of a specific NPC.

    Then you could retrieve any info of this target and act on that NPC instance at any time, without picking them anymore, only thanks to the Player.TargetUID variable. For example you could use the UIDTo.DistanceTo(Player.UID, Player.TargetUID) expression that is packed with the Plugin to get the distance between the Player and that NPC without needing to pick the NPC Object.

    Even better than that, you could then set the TargetUID of your Player to an instance of a barrel Object (Barrel.UID) and your game logic would still work even if Barrel isn't part of the Entity Family. This is an other great aspect of the UIDToAnything Plugin, you can have common logic for different Objects Types and even different Object Classes (Sprite and Text for example) without putting them in the same Family.

    (also C3 don't let put Objects from different Object Classes like Text and Sprite in the same Family, so UIDToAnything allows you to workaround this big limitation of the C3 engine, which is very useful when creating a UI System for your game, as you can share the same logic for your 9-Patch/TiledBG/Sprites/Texts etc)

  • ADVANCED OBJECT SIGNALS & CUSTOM EXPRESSIONS

    [Addon Pack]

    I just released a new Addon Pack 🎉 GRAB IT HERE

    A powerful ADDON PACK containing 3 new behaviors for Construct 3 :

    • ADVANCED SIGNALS Behavior (Per-Instance Functions on steroid)
    • CUSTOM EXPRESSIONS Behavior
    • SIMPLE TRIGGER Behavior
    • (all those behaviors also support polymorphism, making the Family feature way more powerful)
    • Example/Documentation .c3p project

    Those are the 3 addons I used in all my systems to create a highly modular and maintainable Roguelike. Thanks to this pack : you can create scalable systems easily, decouple your logic to avoid spaghetti code. It also makes the Family feature way more powerful thanks to the polymorphism support.

    Above all, it allows you to "CREATE YOUR OWN BEHAVIORS" only using the eventsheet.

    (In fact it's even more powerful than Behavior on some aspects, thanks to the polymorphism feature allowing each member of a Family to act differently)

    There is so much use-case and advantages of being able to create Custom Signals, Triggers and Expressions (supporting polymorphism and multiple parameters) I wouldn't know where to start,

    take a look at the addon pack page for more info !

    ADVANCED SIGNALS & CUSTOM EXPRESSIONS

    (I'm currently running a sale/bundle to grab my addon packs with a discount)

  • It seams quite powerful. Some of these use cases you mentioned can still be done with vanilla c3 features but others are quite difficult or impossible to achieve. How is it integrated with the engine? Is it like the Utils? Relying on this just to be broken after some construct's update is always a concern about plugins/behaviors in general

Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)