Welcome to our brand new Clickteam Community Hub! We hope you will enjoy using the new features, which we will be further expanding in the coming months.

A few features including Passport are unavailable initially whilst we monitor stability of the new platform, we hope to bring these online very soon. Small issues will crop up following the import from our old system, including some message formatting, translation accuracy and other things.

Thank you for your patience whilst we've worked on this and we look forward to more exciting community developments soon!

Clickteam.
  • Hello, I have heard that people like to decompile MFAs and it's really easy with stuff like CTFAK which I'm glad Clickteam attempted to takedown but unfortunately is easily accessible on GitHUB.

    The reason I ask is because I really don't want that to happen to my game.

    So if anyone knows, how can I encrypt it the way Emil "Ace" Macko(FNaC) and Raulio20(LEGO FNaF) do with their games apparently, please help me.

  • You shouldn't be that scared because it doesn't output exactly the original mfa, it recreates it and lots of data is gone, making it a broken mess, some hidden object data that gets lost makes so it never behave as the original even if manually "fixed".
    Also, they target much older builds.

    But I know there are things that I know these tools aren't able to handle.
    Add emoji to object's names, global variables, frame's names, app info (author, copyright, aboutbox, description, company, etc)
    Make some "Never" events in Global Event Editor with random conditions like Compare Two General Values comparing a emoji or some Japanese text to another (these would be copied to all frames automatically).
    If you got Dev, simply place a Dev extension in the frames that you want more protected, again add some Never events on Global Event Editor referencing them.
    Use Unpacked EXE and set Compression Level to maximum. Using DX11 also might protect your custom shaders.

    There might be other ways as well.

    Edited once, last by NaitorStudios (February 4, 2023 at 2:09 PM).

  • Sorry for going slightly offtopic, but this bit caught my attention and I wanted to confirm something about the way Fusion works.


    Make some "Never" events in Global Event Editor with random conditions like Compare Two General Values comparing a emoji or some Japanese text to another (these would be copied to all frames automatically).


    Is copying to all frames a side effect of using those tools, or is it the actual way Fusion compiles it?

    If it's the latter, this greatly reduces the benefits of Global Events. I always assumed that Global Events are only saved once in the file so you could save space by putting code in them. If that's not the case, Global Events are only a QOL improvement rather than an optimization. I think this should be made clear in the documentation.

    Does this also apply to "Include another frame"? If I have 100 frames which include one other frame, does this mean there will be 101 duplicates of that frame in the EXE?

    How about Global Objects? If I have a 1000 instances of a Global Object in different frames, does it save all 1000 of them, including duplicate animations etc. individually?

  • Is copying to all frames a side effect of using those tools, or is it the actual way Fusion compiles it?


    It copies global events and behaviors to all frames that have access to them during building.
    There isn't a separated eventsheet on the exe for these. It's more of a organizational measure than optimization, but, it also allows you to have less places to edit something that will be shared across different frames.
    You can think about behaviors for example, what does it help? For starters, you can copy behaviors between objects, and that automatically retargets the to the new object as the "self" reference.
    And of course people might also use it as "widgets", to be able to simply drop a object and have some events, which can be easily edited, specially if you make these global as well.


    Does this also apply to "Include another frame"? If I have 100 frames which include one other frame, does this mean there will be 101 duplicates of that frame in the EXE?


    Include frame will copy over objects and events to the target frame, but there's something you're not getting...
    No, it doesn't meant it will physically have 101 duplicates of the frame, because it identical objects are just referenced from a original instance, so having 1 or 30,000 won't increase the same amount if compared going from 0 to 1 instance.
    But it does include the references for the objects that exists on another frame. Most stuff on Fusion is just referenced, it would be just dumb to have each instance being unique objects...
    In fact, global objects exists since Klik & Play I believe, and that's also why if you have two different objects of the same kind but with the same name, Global Events will apply to both.

    How about Global Objects? If I have a 1000 instances of a Global Object in different frames, does it save all 1000 of them, including duplicate animations etc. individually?


    First of all, no duplicate of images are stored at all, this is a core optimization of Fusion, it's also the reason if you replace a image or color through events, it affects all instances.
    (I even tinkered with this on a older build, allowing me to replace images from backdrops, which unfortunately doesn't work anymore)
    On app properties, Info tab, it has a section that shows you how many images you have in total, and copying objects will not increase that number, even duplicating sprites or copying them over to other objects will not change that.
    It only includes a single instance of a unique image.
    The only thing that it will store individually, and it's totally unrelated to optimization, is in case you have multiple global instances and you set their variables to different data, so when switching frames, this data is kept.
    But, having global instances in multiple frames can be problematic, because it have no way to tell which instance it should keep the data on.
    Also, destroying the object will clear its global data.

    Edited 3 times, last by NaitorStudios (February 5, 2023 at 12:31 PM).

  • Thank you for the reply. From your response I was able to gather the following:

    1. Other than ease of use and less clutter in the editor, there's no real difference between having Global Events and not having Global Events and just pasting those events in each frame.
    2. Events in "Include another frame" are duplicated for each frame, however objects are stored as pointers.
    3. Graphics are not duplicated.

    Out of curiosity I made a quick test with two MFAs that had a frame of about 50 objects and ~1200 events. In the first MFA I added 20 blank frames. In the second MFA I added 20 blank frames and set them to include the frame with 50 objects.
    Here are the results:
    Compiled EXE
    Original: 1.97MB
    Include: 2.37MB.
    With the Unpacked EXE option:
    Original: EXE is 938KB, DAT is 419KB
    Include: EXE is 938KB, DAT is 835KB

    Better than I thought, hopefully it will manage similarly when there's more stuff in the main frame...

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!