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!
  • OVERBOY'S TOOLS FOR CONSTRUCT 3

    Helloooo !

    • I've been making games for 10 years using various engines including Construct.
    • They were played by millions of people and showcased by the biggest gaming youtubers of the world. (Markiplier 35M subs, Jacksepticeye 30M subs, DanTDM 27M subs, just to name a few).
    • I'm also a big game jam lover and won the Ludum Dare 3 times.
    • I'm doing consulting/freelancing on Construct 3 projects.

    My Games, Tools and Asset Packs : overboy.itch.io

    I'm currently working on SECRET ROGUELIKE™, for which I created a bunch of tools to extend the features of Construct 3.

    Recently I decided to release some of them and was overwhelmed by the positive response it got, so I'm also sharing this here :D

    • Each tool is detailed on their own page listed below.
    • I'll update this list when i'll release new plugins (You can follow this topic if you want to get notified about major updates and new addon releases)
    • I hope it will help other ambitious C3 devs to achieve their games.

    Enjoy !

    DATA+ 2.0 (Previously JSON+)

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

    The Best Data Management solution for Construct 3 (1 Plugin & 3 Behaviors) :

    • JSON+ allows you to create all kind of variables, arrays and data structures (even at runtime !) for your game objects and comes with a lot of additional ACEs, Utilities and QOL enhancements, to make the whole process as fast and enjoyable as possible
    • It comes both with a JSON+ Plugin and a JSON+ Behavior
    • Example/documentation Construct Project (.c3p), which also includes a few tips and tricks I found
    • (2.0 Bonus) Array as a Behavior !
    • (2.0 Bonus) Dictionary as a Behavior !
    • Everything is detailed on the page.

    ADVANCED SIGNALS & CUSTOM EXPRESSIONS

    overboy.itch.io/construct-3-object-signals-custom-expressions

    Create your own Behaviors using Events : Custom Expressions, Signals and Triggers (3 Behaviors) :

    • ADVANCED SIGNALS Behavior (Per-Instance Functions on steroid, supporting parameters, multiple trigger eventblocks and polymorphism)
    • CUSTOM EXPRESSIONS Behavior, create your own expressions and getter functions for your Objects and Families. You can even execute logic each time you use those expression and thanks to the polymorphism feature, the same expression could work differently for each Object member of the same Family.
    • SIMPLE TRIGGER Behavior
    • It basically allows you to create your own behaviors only using eventsheet. (In fact it's even more powerful than Behaviors on some aspect thanks to the polymorphism feature)
    • All those behaviors also support polymorphism, making the Family feature way more powerful.
    • Everything is detailed on the page.

    UID TO ANYTHING

    overboy.itch.io/construct-3-uid-to-anything

    • Act on your instance and get/set their properties, expressions and variables without needing to pick them first, only thanks to their UID ! (Unique Identifiers)
    • Share logic between objects even if they're not from the same Family and even if they are from different Object Category for example (that's right you can share the same code for Text, Sprite, 9Patch and TiledBackground for example !!)
    • Act differently on 2 or more instances from the same Family or ObjectType within the same event block without doing weird tricks
    • Also allows you to work around a lot of Family and Eventsheet limitations, as detailed further on the page

    UTILS (Free Plugin)

    overboy.itch.io/construct-3-utils

    Good Luck on your projects 💪

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Wow these look extremely powerful! With the JSON as a behaviour, can you add as many JSON behaviours to 1 object and they all act as separate JSON "files" so to speak?

    I've been burnt from past addons being abandoned where I've had to redo huge amounts of events, so I'll give it a think before buying. But yes, you've certainly tempted me with both addons, I can see myself modifying all my through all my events to use JSON+ instead of original JSON just to lessen the picking I do.

  • Bought the JSON+ add-on, being able to have JSON data on the instance as an behavior is amazing, it simplifies picking and also allows to write more performant events as you don't require event sheet loops or picking overhead in a lot of cases. Recommended!

  • 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.

  • Yeah, and also sometimes official plugins might appear, much like dynamic layers when there was skymen's 3rd party layer addon - Assuming the features were identical, the 3rd party addon is probably more likely to be abandoned after this, thus needing to invest time replacing events over to a different addon (especially if an update breaks the abandoned addon). That's just the way it is I suppose, weigh up the risk and reward.

    Smaller addons or effects aren't a big deal to use if they lost support, but I could see myself using both these plugins deeply within my JSON-heavy picking-heavy project, making it a big commitment. Though being a paid addon gives you more hope it will be supported for a long time.

    None of this is a prediction of how Overboy will handle things, but just mixed with excitement and apprehension.

  • Thanks for your comments everyone, i'm glad you find those addons useful !!

    I understand the apprehension, here are some thoughts regarding some points mentionned above :

    • C3 is probably the most stable engine you can think of. You can basically open any 7-10 years old .capx from the Construct 2 era and it just still works in last beta. You couldn't say the same about Unity, Godot, Game Maker or Unreal, yet 98% of the successful games made with those engine are using 3rd party tools in production, even if it's in fact "riskier" to use addons in those engines, or to use those engines in general if backward compatibility break is such a big issue. The truth is that Construct actually lacks 3rd party tools enpowering C3 devs.
    • Ashley is incredibly careful about making sure nothing breaks backward compatibility and he does it very well (it only happenned in very very rare occasion on tiny details and the documentation was available to handle those particular cases long before it happens).
    • ProUI was by far the most complex addons ever made it was doing a huge amount of stuff related to many risky C3 features at the same time. This was a suite of interdependant addons that basically created a full Hierarchy system (among many other things) before it was a thing in the C3 engine and was using a big amount undocumented features of the addon SDK.
    • I have a more "stand-alone" and "simple yet powerful" approach in all the plugins I made so far.
    • My addons also aren't based on API of other services (ads network for example) that evolves over time and need active maintaining.
    • Most of the addons ever made in Construct aren't risky. At the beginning of Construct 3, 5 years ago, there were a few changes in how addons must be written to support the new c3runtime and the worker mode. But since then, nothing changed.
    • Keep in mind every single Action, Condition, Expression, Plugin or Behavior that are included in Construct are in fact addons. Fundamentally nothing really differs between an official addon and a third party addon. They're working on the same base.
    • IMO the most risky thing right now regarding 3rd party tools are effects as WebGPU is being deployed and there is this whole compatibility topic with WebGL1, WebGL2 and WebGPU. But this has to do only with effects and I don't plan to publish Effects, I'm only making Plugins and Behaviors.
    • I've been making games with Construct for 10 years and i'm still here. I'm working on the most ambitious project i've ever made (SECRET ROGUELIKE™) and I developped it so it could be a framework that will allow me to develop even more games on the same base. Construct 3 freelancing/consulting is the biggest part of my freelancing/consulting revenues (more than Game Design and Pixel Art). All in all, chances are high that i'll be still be working with C3 in a few years.
    • All the addons I published so far (and the many more i created for my Roguelike and that i didn't release yet) are low risk. Most of the time i'm working with last beta on my big game and never had to edit anything for them to work while upgrading. When publishing an addon, I'm even more cautious regarding every single details to make sure I won't have trouble with people using them. Most of my addons could have be written exactly the same 3 years ago and still work the same. (Minus the fact i make my best to support the last features of C3, such as TemplateNames, ImagePointZ or BBoxMidX/Y in my UIDToAnything plugin for example : I want them to be on page with last stable C3 enhancements).
    • From my experience, replacing a lot of events is sure annoying to do but isn't that impossible to achieve when needed. I have 6075 event blocks on my project and reworked everything multiple time to implement my addons when I first created them (to replace annoying tricks - non performant/ineffective ways i had to handle things before or just because Vanilla C3 didn't let me achieve what i wanted to do). Even in such big projects, it takes a few hours at most. Also when Scirra release a useful update, that's already what we're doing anyway, replacing old events with better and newest features.
    • The recent dynamic layers were one of the most requested feature for many years and even Skymen (who is a friend of mine and who helped me a lot over the past few years btw) was begging for that feature to be released. His addon was mostly a proof of concept to use with caution because it was using undocumented features and hijacking the engine to work.
    • IMO it wouldn't be in Scirra interest to copy my plugins and make them obsolete anytime soon, there are hundreds and hundreds of features and suggestions that are requested for a long time and that are very important and impossible to achieve no matter how skilled you are at Addon-Making, Eventsheets and Javascript. They probably better put focus on those impossible-to-do stuff or missing spot rather than convincing me right away that developping and publishing high-quality addons for C3 devs isn't worth my time. (even if I already made the plugin for myself, the fact to double-check, polish, publish, market and explain them takes a lot of time). It would be a strong signal to any experienced dev that they should not bother creating premium addons.
    • The top most missing thing for Scirra to be at the same level of the biggest engine out there is more people like you and me, or guys like Skymen/Federico. Community members that dedicate a lot of time and effort to create awesome tools, ressources, spend time helping fellow devs. A game engine = its community. The small (extremely talented) scirra team can't be everywhere. The best way to attract talented and dedicated devs is to make sure it's worth it and safe for them to work within the Construct ecosystem. (Selling tools, making great games, creating Youtube Content). I think the Affiliate Program they just released today (and the Asset Store they released a few month ago) are proofs they understand the power of the community and are moving toward this direction.
    • If someday i leave the community (don't see why it would happen anytime soon), i'll probably open source my tools so other devs can maintain/update them. (if they ever need to be updated which i'm not even sure)
    • I'm using all my addons extensively in my own production, that's why I made them in the first place. I want them to be perfect.

    I took the time to answer those points in details, but I would appreciate if this topic doesn't become a discussion about the history of construct or if it's safe or not to use 3rd party tools in general.

    I went an extra mile and explained a few extra things I discovered/learned/understood over the past few years, I hope it helps :)

    It's up to everyone to decide what's risky or not, what's useful for their game and I prefer that the people that buy my addons are relaxed about that. I'm mostly targeting ambitious Construct 3 dev, who are serious about gamedev/their project and who don't worry too much about spending a few dollars in tools that provide great value and that took a lot of effort and R&D to be made, especially if they know how useful it would be for their productions.

    Thank you for raising those points and for your interest in my tools, I'm very happy to see how well the whole Construct 3 community welcomed them so far.

    If those 2 tools keep doing that well, I'll probably release more of the best tools I made in a few weeks/months ! I still have a lot of exciting stuff 👀

  • Great detail, very good points raised, thanks! The temptation increases.

    Yeah you're right, sorry to have made a random point about addons on your post since its indeed a different topic, upon reflection it's probably very unlikely anything would somehow break these two plugins, even if the recent UID shuffle option was just added, I'm guessing would have still worked fine after (and ofcourse you're deeply interested in C3 so you'd be there to sort it out if it broke). I'm sure these two particular addons are probably not deeply interwoven with weird hacks or anything.

    Back to the topic: Does it work when you add multiple JSON+ behaviours onto 1 object? I am guessing it will work which would be excellent news, but I understand some other behaviours don't work this way (e.g. Physics shares collision filtering choices amongst multiple physics behaviours on 1 object).

  • I'm not sure how UID to everything works. If I don't ever mention the object/family how would I know/ensure the UID is the one I need? Kinda confused about this tool's proposition. Prints of a more practical use cases would help a lot to know upfront. I'm tempting to buy it because instance picking can be quite troublesome and repetitive, even using functions in order to not repeat some of the picking process can be weird to work with but still too much work when you need more complex instance picking. The per class family limitation is also not so convenient.

    I'm considering buying the JSON+ too because I just use array/dictionary for every piece of data. My process to get all the data without too extensive expressions is to initially feed all data into an array and then, a one time event which pass all this data to the family instance variable. The data would be accessed using global variables for the coordinates in order to not hardcode it. Without this, I'd have to mention the array using variables for the coordinates every time I need to get some data and this process seams too ineffective but that's the only way I found to mix the use of a powerful data management and the accessibility of instance variable and avoiding extensive calls.

  • Jase00

    UID is one of the safest feature you could imagine in the whole C3 engine. The UID shuffle option didn't break UID TO ANYTHING in any way.

    The example c3p included in the addon explains the best practices and tips and tricks about using UID in general by the way.

    You can add several JSON+ behaviors onto 1 Object Type but i'm not sure why I would do that in my games. JSON+ allow you to nest as many level of data as you want under the same JSON+ Plugin/Behavior. Let's say you want a JSON+ behavior to handle both the Inventory and the Relationships/Factions of a same object : you would just nest everything related to Inventory under a dedicated "Inventory" Key, like Inventory.EquippedHelmet = "Legendary Helmet", and same for relationship, for example : Relationship.Faction3.Admiration = 0.75. Everything could be under the same JSON+ behavior.

    The main usecase where i would have several JSON+ behaviors on the same Object is if those JSON+ behaviors were inherited from different Families allowing me to make common logic between different sets of Objects.

    For example : if I have an "Entities" Family (with data like Health, Damage Resistances) + a "Characters" Family (with data like Inventory or Relationship), both would have JSON+ behaviors, so an objet that is part of both Families would have 2 JSON+ behaviors

  • RafaelMatos

    In Construct 3, UID are the unique identifiers of your instances. It means that this number is guaranteed to be associated to only one instance in your game. Even Objects from different Families / Object Classes are guaranteed to never share the same UID. Even just created instances can't have the same UID as old instances that were destroyed long before. (instances of Text1, SpriteObject1, SpriteObject2 and FamilyX can't have the same UID.)

    It has always been a really handy feature of Construct for multiple reasons, i probably used them in 90% of my event blocks even before I created UID To Anything that makes them even more powerful.

    The main usecase is that they can act as "Instance Reference".

    You can "store an instance reference" in a number variable "MyUID", and then easily pick that specific instance thanks to the action "Pick by UID".

    To store the UID you want to retrieve later, you need to pick the right instance only once (and set it in a Global/Local/Instance variable for example). "Set MyUID to MyInstance.UID"

    UID TO ANYTHING allow you to do much much more thanks to the UID of your instances, as explained on the page. With this tool, you can do a bunch of actions and conditions but also retrieve expressions or instance variables of your instances only thanks to their UID. (even if you didn't pick those instance in your eventblock, as long as you stored the UID). It also solves a bunch of annoying limitations of the Family features and the Eventsheet in general.

    The UID feature (and, by extension, UID To Anything) can be useful in almost any system you could imagine in Construct.

    For example, let's say you have the "People" Family in your TopDown game, one of this Family feature is that People can target other People (their target). A "People" instance (Instance A) can store a reference of their targeted "People" instance (Instance B) thanks to a number variable called TargetUID.

    If you want to know the distance between Instance A and its target Instance B, you could just use the expressions UIDTo.DistanceTo(People.UID, People.TargetUID). Here People.UID and People.TargetUID are 2 expressions of the Instance A, but they return respectivelly the unique identifier of Instance A and Instance B. Which means you were able to get the data of Instance B without even needing to pick it ! UIDTo.DistanceTo is one of the many expression of the plugin, it allows you to get the distance between 2 objects only thanks to their UID.

    An other interesting thing is with UIDToAnything is that your Target could be an instance from any ObjectType/Family and even any Object Category.

    You could set the TargetUID to an instance of a Props Object (such as a barrel) by setting People.TargetUID to Barrel.UID and it would still work, even if it isn't part of the People Family !

    You could even set People.TargetUID to a Text instance (Text.UID) and your code that get the distance between your people and its target would still work ! Imagine how useful it is for a UI System to be able to share logic between Sprite, 9Patch, TiledBackground, Text and SpriteFonts for example.

    The goal of this plugin isn't to replace everything you were doing in C3 before, but it's an powerful additional toolbox to enhance the capabilities of eventsheet, that can be handy in many common situations and that allow you to work around annoying limitations of the engine.

  • 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.

  • Gonna get the UID one right now. I'm clowning around with families and UIDs all day long because I'm exclusively working on puzzle games where multiple instances of the same object interact with each other non-stop. Where has this been all my life?

    Whatever, bought both. They both sound fantastic.

  • Oh wow, now those are some banger addons :O

    It really shows that they are designed by someone with hands on experience, who knows how C3 ticks, and where its shortcomings are.

    Thanks for making these, and I hope you'll do more in the future.

  • Very awesome, C3 could surely use more dedicated devs and stand alone - straight to the point addons, that don't try to implement 1 million different things (like ProUI, which I used, and got burned as well)

  • Overboy Thanks for the explanation

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