Build 295.10 - Release Version

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 everyone,

    The build 295.10 is available in the Please login to see this link. and on Steam.

    Note: compared with the build 295.9 this version addresses a few issues mainly in Android.

    Please login to see this link.

    If any question or issue specific to this build, please post it here, thanks!

    PS: the CF 2.5 patch updates all the installed exporters, as well as the 2.5+ DLC, you do not need to reinstall them.

    Thanks!

  • Wow, this happened earlier than expected -
    and I bet further improvements in this departement are already planned:
    Background shaders now working, more shader support capabilities - there is even an example included for the people
    that directly explains how the handle the OpenGL Y-axis flip behaviour - Nice support !

    - also this specific sleep mode on and
    multiple touch stop issue behaviour was something I personally discovered as a problem for quite some time now

    - Mac Xcode project issue solved, caused by spaces in names of extensions
    Issue noticed and steps for elimination directly suggested by Phi << thanks

    - it was long awaited and finally it's there:
    "Windows-like collisions on other platforms"
    Two years ago I put my work for one Android game project on hold, because there was no good workaround to solve
    a specific custom collision issue for an important mechanic in the game - now my ideas can work properly.

    - all of this is definitely coming handy as well:
    Support for Numeric Value calculation in expressions
    + new "Fixed Value of last created object" expression
    + "Don't include at build time" option for Objects
    + Preload is preserved for sound replacements in Data Elements editor

    - for Windows Runtime: the better font for customized menus is a nice-to-have

    - the Clickteam Fusion 2.5 Developer exclusive option for Android to
    directly generate an Android Studio project is a very useful shortcut
    + Java 11 is now officially supported
    + the new Android display cutouts functionality could be amazing
    Great stuff.

    This was my personal reaction on only a few of the available highlights.

    Hats off, Clickteam!


    + Feature Request

    Could you technically realise an individual on/off property for each object instance with an Effect to maximally influence
    one more Layer below - as an option to avoid the situation to visually affect a lot more layers although it's not necessary
    or if you want an effect isolated explicitely only for the next Layer below ?

    Currently working on ... [SIGPIC][/SIGPIC] ... a Puzzle Platformer

    Edited 5 times, last by Simon (December 3, 2023 at 6:50 PM).

  • Very impressive update!

    Here follows a few questions & requests:

    1. About the crash line, will it be possible to track the call stack of immediate events? Although display the crahsed line is nice but in big & complex projects, usually functions are encapsulated in immediate events like fastloops, and called every where, so it's still a bit uneasy to know which time it's crashed and which line caused, like an invalid param passed to it.
    2. About the include frame feature, it very promising but also limited. As it's a build time feature and transparent to runtime, is it possible to include multiple frames?
    Image for one case: game with three main parts, dialogue scene, explore scene and battle scene, and three part shares the same dialogue system, but the pause menus are different, as those part has specific features. So, I cannot simply include the dialogue system, as menu above it is different, and have to copy dialogue layer everywhere...
    3. Is it possible to add general actions & expressions? E.g., you have to copy & paste the same fade in & fade out routine for different types of objects like active & picture, as the qualifier must be the same type. Although fusion has the same code to handle it in runtime...
    4. Ordering sometimes failed:
    Please login to see this link.
    5. Random crash caught:
    Please login to see this link.
    6. Filtering in extension not work if running the mfa inside steam version of fusion. IDK if this will also affect normal projects, but this case can be reproduced.
    Please login to see this link.

    Quote

    - iterate objects & Iterate objects func: if you iterate a qualifier with fusion's build-in for-each, then you cannot select another object with this qualifier in on for-each event. note that this may not work properly when running in editor in steam version, works find in stand-along

    7. Sometimes `CNC_GetParameter` series macro will get an incorrect result, like shift to somewhere else, and causes the result different from getting from param1 or CValue maunally:

    Code
    const auto rhPtr = rdPtr->rHo.hoAdRunHeader;
    	const auto pResults = rhPtr->rh4.rh4Results;
    	const auto pPos = rhPtr->rh4.rh4PosPile;
    
    
    	const auto pCValue = pResults[pPos + 1];

    How to reproduce:
    Please login to see this link.

    I guess it's because windows runtime works differently from android, the latter will get each param in action / expression, while windows will calculate them all first, as it need to fill long param1 & long param2 before calling action, in this routine something isn't protected and erased out.

    Edited 2 times, last by defisym (July 14, 2023 at 3:45 AM).

  • I'd like to report an issue affecting window scaling on nVIDIA cards.

    If you have "resize display to fill window size" enabled and use the Window Control Object to scale the game's window by 2x, 3x etc., the resulting picture won't be pixel perfect. It seems that the inner window (rhHEditWin) is being filled or resized incorrectly. When it happens, it also affects stuff like Ultimate Fullscreen etc. To work around this, I've been adjusting the game's inner window manually using code in an extension like this (param1 is integer scale value).

    Code
    HWND subwindow = rhPtr->rhHEditWin;
    scaledX = MV->mvRunHdr->rhFrame->m_leEditWinWidth * param1 - (param1 - 1);
    scaledY = MV->mvRunHdr->rhFrame->m_leEditWinHeight * param1 - (param1 - 1);
    SetWindowPos(subwindow, HWND_TOP, finalPosX, finalPosY, scaledX, scaledY, SWP_NOOWNERZORDER | SWP_NOZORDER);

    This chops off pixels on the bottom and on the right but the picture becomes pixel perfect.

    The issue does not happen in DirectX 11 mode or on GPUs other than nVIDIA (as far as I can tell). Because of this, I had to add a toggle in my game and implement a test to tell whether the player needs the fix or not (if the fix is applied when it's not needed, it introduces the same issue it's meant to fix).

    Additional info, including an example MFA and a workaround, is available here: Please login to see this link.


  • + Feature Request

    Could you technically realise an individual on/off property for each object instance with an Effect to maximally influence
    one more Layer below - as an option to avoid the situation to visually affect a lot more layers although it's not necessary
    or if you want an effect isolated explicitely only for the next Layer below ?

    Do you mean a way to disable the effect in the editor only for each object?

  • I'd like to report an issue affecting window scaling on nVIDIA cards.

    If you have "resize display to fill window size" enabled and use the Window Control Object to scale the game's window by 2x, 3x etc., the resulting picture won't be pixel perfect. It seems that the inner window (rhHEditWin) is being filled or resized incorrectly. When it happens, it also affects stuff like Ultimate Fullscreen etc. To work around this, I've been adjusting the game's inner window manually using code in an extension like this (param1 is integer scale value).

    Code
    HWND subwindow = rhPtr->rhHEditWin;
    scaledX = MV->mvRunHdr->rhFrame->m_leEditWinWidth * param1 - (param1 - 1);
    scaledY = MV->mvRunHdr->rhFrame->m_leEditWinHeight * param1 - (param1 - 1);
    SetWindowPos(subwindow, HWND_TOP, finalPosX, finalPosY, scaledX, scaledY, SWP_NOOWNERZORDER | SWP_NOZORDER);

    This chops off pixels on the bottom and on the right but the picture becomes pixel perfect.

    The issue does not happen in DirectX 11 mode or on GPUs other than nVIDIA (as far as I can tell). Because of this, I had to add a toggle in my game and implement a test to tell whether the player needs the fix or not (if the fix is applied when it's not needed, it introduces the same issue it's meant to fix).

    Additional info, including an example MFA and a workaround, is available here: Please login to see this link.

    OK, thanks, I'll take a look when I've some time.


  • 1. About the crash line, will it be possible to track the call stack of immediate events? Although display the crahsed line is nice but in big & complex projects, usually functions are encapsulated in immediate events like fastloops, and called every where, so it's still a bit uneasy to know which time it's crashed and which line caused, like an invalid param passed to it.


    Hmm, not in the current version, I'll add it to the wish list.

    Quote


    2. About the include frame feature, it very promising but also limited. As it's a build time feature and transparent to runtime, is it possible to include multiple frames?

    Image for one case: game with three main parts, dialogue scene, explore scene and battle scene, and three part shares the same dialogue system, but the pause menus are different, as those part has specific features. So, I cannot simply include the dialogue system, as menu above it is different, and have to copy dialogue layer everywhere...


    Well, you could change the menu in the dialog scene if a global value has a different value. This seems a bit over the top, maybe we can do it in a future update though.

    Quote


    3. Is it possible to add general actions & expressions? E.g., you have to copy & paste the same fade in & fade out routine for different types of objects like active & picture, as the qualifier must be the same type. Although fusion has the same code to handle it in runtime...


    Not sure if we can easily change it.

    Quote


    4. Ordering sometimes failed:
    Please login to see this link.


    I'll check later.

    Quote


    5. Random crash caught:
    Please login to see this link.


    I've quickly tested it, your NeoPic extension enters an infinite loop in DestroyRunObject when it calls rdPtr->pData->pPreloadHandler->PausePreload(); which gets stuck in a while loop because this->bPaused is false and doesn't change. Out of curiosity, why did you need me to take a look? Couldn't you see it with the debugger? Or do you think this is due to something the runtime does? (I don't think so)

    Quote


    6. Filtering in extension not work if running the mfa inside steam version of fusion. IDK if this will also affect normal projects, but this case can be reproduced.
    Please login to see this link.


    The runtime of the Steam version is the same as the one of the stand-alone version, no difference.

    Quote


    7. Sometimes `CNC_GetParameter` series macro will get an incorrect result, like shift to somewhere else, and causes the result different from getting from param1 or CValue maunally:

    Code
    const auto rhPtr = rdPtr->rHo.hoAdRunHeader;
    	const auto pResults = rhPtr->rh4.rh4Results;
    	const auto pPos = rhPtr->rh4.rh4PosPile;
    
    
    	const auto pCValue = pResults[pPos + 1];

    How to reproduce:
    Please login to see this link.

    I guess it's because windows runtime works differently from android, the latter will get each param in action / expression, while windows will calculate them all first, as it need to fill long param1 & long param2 before calling action, in this routine something isn't protected and erased out.


    Can't say anything, I don't see very well what you mean and what you do with this code. I'll need to debug your extension code when I can find some time.

  • I'd like to report an issue affecting window scaling on nVIDIA cards.

    If you have "resize display to fill window size" enabled and use the Window Control Object to scale the game's window by 2x, 3x etc., the resulting picture won't be pixel perfect. It seems that the inner window (rhHEditWin) is being filled or resized incorrectly. When it happens, it also affects stuff like Ultimate Fullscreen etc. To work around this, I've been adjusting the game's inner window manually using code in an extension like this (param1 is integer scale value).

    Ultimate Fullscreen have no code to handle multiple monitors which I assume is your case, so it picks the scaling/resolution of the main monitor even if the app is running on the other.
    I actually made a fork of Ultimate Fullscreen object just because of this, check if it happens with this version: Please login to see this link.

    But, if you mean about integer scaling being wrong, yeah, I've seen it.
    I come up with a workaround.

  • Great update with some much appreciated improvements. I've always thought Clickteam strike a near-perfect balance between implementing new features (such as much of 294) and improving/fixing existing ones (such as much of 295). Being able to add/remove qualifiers from any mix of objects is particularly welcome for me. Since there are new properties and expressions, I guess MFAs saved with 295 won't be compatible with 294?

    Below is feedback on things I've noticed so far:


    Properties Window: numeric expressions work for Instance Values, but not Alterable Values

    When you edit a change animation sequence... action, the relevant animation is highlighted, but the up/down keys still behave as if animation #0 is selected



    Properties Sort: It would be nice if after sorting altVals, they remained selected. Otherwise, if you only sort a subsection of them, it's easy to lose track of which ones you sorted

    Properties Sort: A-Z sorting treats all uppercase letters as higher then lowercase letters, which can result in sorting that doesn't really feel very alphabetical:

    Please login to see this picture.



    Maybe it's not possible, but I think it would be great if "don't include at build-time" worked on a per-instance basis. That would be especially useful when combined with the Include Frame feature. We might be using a parent frame primarily for its events, though this parent frame will likely require many objects in its frame just to make those events possible (so that the actions/conditions/expressions have something to reference). But we likely don't want those objects to actually be created in the target frame (which probably already has its own copies of whichever objects are relevant to it). Currently, my workaround for this is to give all the objects in the parent frame an Instance Value of 9999 and qualifier X, and then do [if Instance Value (qualifier X ) = 9999 : destroy] at start of frame in the target frame. Though if we could just check "don't include this instance at build-time" for only the objects in the parent frame, that would be easier (and would probably cut down loading time as it wouldn't require all those superflous objects to load each time, only to be immediately destroyed ).

    As it is now, where it affects all instances of an object, I'm not sure what the "don't include at build time" option does that couldn't pretty much already be achieved by unchecking "create at start" and checking "load on call".




    Could you please make the Paste As Child Event hotkey customisable? People may want to use something else (eg. ctrl-shift-V) for this, and they also may want to use Ctrl-Q for something else (eg. Quit). Also, it makes Fusion look confused and glitchy when you try to use Ctrl-Q:


    Please login to see this picture.


    It's a great feature though. It might be even better if you added a way to do it with a mouse. For example: alt-drag event A to event B to make A a child of B.




    The Paste As Child Event works on comments and groups, which can cause issues. For example, if you select a group and press Ctrl-Q, it will paste your event inside that group while 'ejecting' the group's contents outside of it. Then if you try and close and open the group, Fusion will crash.

    Pasting into an immediate event also causes problems, especially if that immediate event doesn't have any other children at the time:


    Please login to see this picture.


    When you click OK on the above error dialog box, most of the glitchiness disappears, but the event now has an empty child event:


    Please login to see this picture.

    Please login to see this link.
    My Fusion Tools: Please login to see this link. | Please login to see this link. | Please login to see this link.

    Edited 3 times, last by Volnaiskra (July 14, 2023 at 2:36 PM).

  • Thanks for your time & quick reply!

    Out of curiosity, why did you need me to take a look? Couldn't you see it with the debugger? Or do you think this is due to something the runtime does? (I don't think so)

    Apologize for this, but please let me clarify. The example PkR originally sent is an infinite loading loop (as it's an example isolated both crash & memory leak(fixed)), and this example only changes frame when background load finishes, then restart app in next frame, so pause load will not be triggered, due to it's not in loading, as it's originally designed to pause background loading sub thread if lib object is destroyed then resume it when lib object is valid again. So, this routine will not be triggered in this example.

    But if you run it multiple times it will crash at a random position, maybe 1 out of 10 chance, both I and PkR can confirm this. Here follows some screenshots:

    Please login to see this picture.
    Please login to see this picture.
    Please login to see this picture.

    The _LoadFromFile function in P2's call stack is just ImportImage but will create a blank image if load fails.

    Quote

    The runtime of the Steam version is the same as the one of the stand-alone version, no difference.

    Dig further and it seems to be something about 'run app from current frame', works fine if use 'run current frame'. Sorry for locating an incorrect part, as it runs properly in VS, which is also built in 'run current frame' mode (shift + click).

    Here is a video shows the issue, actives should be in different angle if works properly:

    Please login to see this link.

    Background: It's an action trying to iterate objects, saving object's LPRO then call the immediate event (use generate event), and select that object in counterpart of condition. as it's saved in LPRO directly so there's an extra check to know if user passed another type of object:

    Quote

    Not sure if we can easily change it.

    Quote

    Hmm, not in the current version, I'll add it to the wish list.

    Quote

    This seems a bit over the top, maybe we can do it in a future update though.

    Quote

    I'll check later.

    Quote

    Can't say anything, I don't see very well what you mean and what you do with this code. I'll need to debug your extension code when I can find some time.

    Much appreciated! Please take your time.

    Edited once, last by defisym (July 14, 2023 at 3:28 PM).


  • (is this Feature idea realisable?)
    An individual on/off property for each object instance with an Effect to maximally influence one more Layer below?

    - as an option to avoid the situation to visually affect a lot more layers although it's not necessary
    - or if you want an effect isolated explicitely only for the next Layer below

    Do you mean a way to disable the effect in the editor only for each object?


    I mean, there is generally no way to control this in the shader code itself, right?:
    For each different Active in the Frame -this could be very useful to have at least for Effects applied on Active objects-,
    I imagine there would be a property available that we could turn on/off and on will cause the Effect of an Active on current layer to
    only maximally affect the next lower layer directly under it - skip all the other layers further below.¹
    This special feature should support mobile Runtime as well.
    Is this feature realisable at all? I really hope for it, because this is definitely something I would like to see, if there are no effective
    alternate methods available to solve something like this. An example situation with some illumination effect:
    You have your Background graphics on a Layer, then you could have a player character isolated alone on the next top layer
    + one layer higher the Effect that makes the character shine(after if he walked to the Effect location).
    The layer with the Background graphics is not affected by the effect shine at all though.

                                       Thanks for this small update asap. :)

    Update: Compare Alterable String is broken in some cases in this version, I'll post an update asap.

    Currently working on ... [SIGPIC][/SIGPIC] ... a Puzzle Platformer

    Edited 13 times, last by Wodjanoi (July 14, 2023 at 11:15 PM).

  • Launch Screen image Edit button in iOS properties does nothing.
    I clic it and nothing happens, other edit buttons for images work.

    I saw that an option "do not include at build time is available", could we get something similar for the "include another frame" system to not include an object of the frame?

    Currently i'm using "NEVER - create at start" for each object i need for events that i don't want to be added to the frame, but this is difficult to manage and can result in some bugs with the events (an object can be unavailable from the object list when you add a new event until you add it back to the frame).

    This kind of option could be really helpful to create your main engine in a frame with all objects for events, and your level in another frame with the same objects to create your map.

    Edited 3 times, last by Dobermann (July 14, 2023 at 5:28 PM).

  • Whenever page 3 opens - I would soon start to show some fix suggestions for certain Editor Ui elements.
    Actually it was super fiddly to adjust this - some elements are obviously left which I didn't cover though in my example footage,
    but you would get the idea what I mean and what looks wrong there in theory.
    I thought, if Clickteam would like wish to fix this, these image presets I prepared could save you a bit of time and are at least partly helpful.
    Most Ui elements -including the interactive boxes and text inside these boxes (and I also noticed a possibly strange behaviour with a specific line separator element)-,
    are not too tidy anymore in comparison to the older design - could it be that Clickteam was a bit rushy with the Ui elements for the new design because it's a super fiddly piece of work?    ;D
    Additionally I noticed complaints of people about a specific design idea that was removed and I thought, why not ask to bring this back eventually as an option, instead of complaining.
    I mean these people refused to upgrade to Build 294 and missed all the great new features. I thought - really, because of this, ok!? More about this soon.

    Currently working on ... [SIGPIC][/SIGPIC] ... a Puzzle Platformer

    Edited 16 times, last by Wodjanoi (July 15, 2023 at 7:41 PM).

  • Do you mean the same suggestion as Vol, i.e. the same option for each object instance? This could be possible, I'll take a look.

    Yes, exactly what he said! I also don't understand what the new option "don't include at buildtime" could be useful for as there is already other functions to do the same thing (don't create at start + load on call).

    Edited once, last by Dobermann (July 14, 2023 at 10:32 PM).

  • Loving all of the changes! Just one thing though, I don't think that the new "numeric values can be calculated with expressions" feature for the Properties tab is working, here's what happens if I try to do 300*15 for an alterable variable and hit enter:
    Please login to see this attachment.

    It doesn't seem to work with any kind numerical alterable value for any object in the Properties tab. It also doesn't work with Global Values.

    Edited once, last by tobydavis (July 15, 2023 at 4:44 AM).

Participate now!

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