Jase00's Forum Posts

  • People messing with undocumented internals causes disasters. This has happened. Who gets the blame, takes the reputational damage, and has to spend hours picking up the pieces and helping desperate customers whose projects are ruined? Us.

    This sucks and Scirra doesn't need this headache. But, isn't it a similar situation to any support request that Scirra receives: if a project has correctly-made third party addons and sends it to Scirra to fix, Scirra wouldn't touch these until the addons are removed?

    And if the person dissects their project to remove the addon and it happens to fix the issue they had, then Scirra prob would say "that's not C3's fault, try asking the addon dev"?

    Yeah there will be the confused individual, much like how people got angry at C3 with that recent Chrome bug that crashed when you typed a function name. Whilst stressful, it's not Scirra fault and the rest of the community stood up for Scirra during this time. Informed people were annoyed at Google, not Scirra.

    If there was 0 blame thrown at Scirra from users that are confused about a hacky addon breaking, would that ease this situation?

    I really appreciate that we have a last resort to achieve things, sometimes minor things like the 3D FOV stuff. Yeah, Scirra is likely to add this one day especially if in demand and not a major project, but priorities matter and this may be months/years and may not ever come. Feels very hopeful to have a chance to have a feature even if it has a risk of breaking.

  • Could you share a screenshot of your project statistics? Right click your project's name, view statistics.

    This will tell us how big your project is.

  • In an ideal world, I wouldn't touch third party addons with such a risk attached to them, but I want to make the game that I envision, that's what matters most of all.

    There was a missing setting that I mistakenly reported as bug (as it was deemed a feature request). It's not an big feature, just a setting not exposed.

    Might get lucky and post the suggestion and it gets upvoted, but what if it's a niche feature, yet required for my project? No chance. It seems risky to "wait months and it might get added".

    But then I contacted an addon dev and they solved it within minutes! But the solution uses undocumented stuff and they warned me of the risk. But, it solved my issue, and I can now continue making my game.

    The addon dev is my line of support for this solution. They warned me of risk, I know to go and pester the addon dev if a C3 update breaks the solution they gave me.

    Would always immediately switch to the Scirra-provided solution if it gets added.

  • I gotta admit it's kinda spooked me too.

    I had some suggestions that aren't popular and may not get implemented by Scirra, so community members have assisted, where their solution uses a few undocumented things, mild things but it gets the result I need.

    I know the risk, can break any time, but it's nice to know I could try to ask the community to help again if it did break.

    Whereas if an update for C3 dropped and it obsfucated those things, then this would permenantly prevent me from having the result I previously had.

    I guess if this really has to happen, I will need to resist urge to update and remain on last working version of C3, but I like being a beta tester and playing with cutting edge stuff!

    I get the risk but would feel painful if things broke, not because a new C3 feature broke it and could potentially be fixed, but because an active choice to obsfucate thing permanently breaks it, would feel very hopeless.

  • If you are building often because you need to test nwjs features, then you can use the remote preview tool here:

    construct.net/en/forum/construct-3/general-discussion-7/construct-nw-js-desktop-app-131317

    Not sure if it's the perfect solution, I'm not sure if you have a huge project with 100's of MB of images and this tool might download the huge project every time you preview, but might be what you are looking for.

  • Please comment Ashley . It seems a lot of work is going on by Mikal to help expand C3. The least you can do is take a minute to respond.

    I do agree, but no need to ask Scirra to comment, they'll see it, it's the most upvoted suggestion ever!

    I feel if they gave special treatment to someone that works very hard, then this would set a precedent to always comment on any 3rd party dev that works hard, else upset certain devs if they worked very hard but then Scirra avoid commenting. Better to treat everyone equally and however Scirra choose to handle suggestions (whether they check them out every month or 2 or whatever).

    We are all excited and at the edge of our seats to see a response - it will come!

  • (My apologies for weird formatting, couldn't get newlines to appear properly when I wrote this out).

    I wouldn't use UIDs, as they differ depending on when objects are created

    Say player 1 plays a game, then goes back to title screen and decides to host. And player 2 has freshly opened the game and joins immediately. Then player 1's UIDs will be higher numbers than player 2's. Even more true if you use the project setting to randomise UIDs.

    Its best to make your own ID system with instance variables.

    If you want a very basic "on click, send mouse x and y" then have some events:

    On click, and Is host

    multiplayer>broadcast message:

    Tag: ClickXY

    Message: mouse.x & "," & mouse.y

    ----------

    On click, and Is host (negated)

    multiplayer>send message:

    Tag: ClickXY

    Message: mouse.x & "," & mouse.y

    ----------

    Lets say you clicked at x=100 and y=200, the above expression will send a message that might look like this, two numbers with a comma between:

    100,200

    ----------

    Then add another event block for "on message ClickXY received", when it's host, let them broadcast the message so it reaches other players (if more than 2 players exist in your game).

    And on message ClickXY received (no need for "is host" as we want this event to apply to anyone), set instance variables for storing the coordinates, say we have variables called XMouse and YMouse:

    Set XMouse to float(tokenat(multiplayer.message,0,","))

    ----------

    Set YMouse to float(tokenat(multiplayer.message,1,","))

    ----------

    The tokenat() expression looks at the message (say the message is 100,200 ) and uses a comma as the separator, and the number 0 or 1 is "which part of the message to get", 0 being before the comma, and 1 being after the comma. "Float" means that we want this message to be read as a number rather than text (If you send messages that you want to store as text, you can remove "float()")

    Hope this helps!

  • It's beyond me as I do not know anything about addon development, but, are you using developer mode? Maybe you already are, but wanted to mention just in case!

    construct.net/en/make-games/manuals/addon-sdk/guide/using-developer-mode

  • Could you show a screenshot of your events, please?

    Common mistakes are using wrong slash if it's in a subfolder (pretty sure it's gotta be like "folder\splashsound"). This doesn't matter if you don't use folders though, if you have sounds at the base of the "sounds" folder, can just type "splashsound".

    And also don't include the extension, so if you have splashsound.mp3, don't type ".mp3",just simply splashsound.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Heh, this had come up before on the older suggestions platform:

    construct.net/en/forum/construct-3/general-discussion-7/suggestion-custom-data-feature-176502

    I agree, does feel like there needs to be a way to deal with variables between families.

    It seems the best way currently, is to forget instance variables, and use JSON or dictionaries as a form of instance variables.

    That's typically what I've ended up doing, it has its pros and cons, but personally I think there are far more pros to use a dictionary than instance vars!

    • You can "dynamically add new instance variables during runtime" (dictionary keys)
    • Can throw the dictionary into a family if you need to create logic relating to 2 dictionary instances and still get any keys needed or do loops (can do dictionary.get on both a dictionary or a family of dictionaries).
    • Can get the names of keys in a loop, unlike instance vars where it's impossible to get names.
    • Can get the keys as expressions, which cannot do with instance vars.

    Cons being picking the dictionary and storing uids and such, and if you want to use containers to avoid picking, then can't add dictionaries to a family container. Boo.

  • This came up on the suggestions platform, and Ashley wrote a response there. Might be something that could eventually be added, but it's a complex area for Scirra to modify:

    github.com/Scirra/Construct-feature-requests/issues/1

  • One thing I'd note, is, you have a 240hz monitor, and get around 70% gpu usage. Can assume if you divide by 4, that would be a more common result (so around 17% gpu usage for 60hz monitors).

    Maybe performance is fine but is struggling to render so quickly!

    To lower gpu usage overall, be mindful of any effects you use. You could also make a "quality" system by using System>Set Canvas Size, where you'd get a blurred result but allows people with weak GPU's or high refresh rates to be able to get a more stable FPS.

    Your cpu seems pretty good for 240hz.

    I'd recommend switching your refresh rate to 60hz to observe performance, so you have good idea of what most people would experience.

  • Tbh there's lots to read here, but I'd love to see some c3p files with measurements, just for some visual feedback like "woah, functions really are X times slower" and such.

    I haven't done a vampire survivor style of game, but I've done an elaborate platformer system, where, depending on the weapons you have equipped, it can change your characters movement set, such as granting you a double jump if any of your weapon slots specifically have a weapon that grants you this, but also some weapons only grant you a buff if you are wielding it, etc.

    This worked very well with up to 12 players, all behaving independently (altho I also did a custom platformer movement that was quite collision-heavy, which is the crux of performance for me).

    What I've learned is, arrays are my best friend. I personally don't feel the use of arrays/dictionaries require much boilerplate stuff, especially if you use containers, as containers save on picking and such and only leave you needing the occasional "for 0 to array.width" (I use "for" when cycling an array, as I like to be able to use "stop loop", which you cannot use in an array's "for each element".

    Tho I may be completely off topic since not focusing on huge numbers of enemies and such, but overall, I am definitely a fan of an abundance of arrays attached to things, feels like you can manipulate and bend everything super smoothly, getting the result I desire.

  • I remember being anti-browser, like surely an app can't be feature-rich if it's confined to a browser. Google docs was good example although an unfair example, felt like a weaker version of Office.

    But then it dawns on you, Discord is web based, even the installed version is web based and can be compared to exporting your game in NWJS.

    But eventually I learned, it really doesn't matter. Much like a successful video game, does anyone judge that FNAF is made in CF2.5? Does anyone judge Undertale being made in GameMaker? No? Right, because it's the actual game itself and how it's designed that's important. Doesn't matter if its made in assembly, JS, Scratch, whatever, it just needs to be a good game.

    So, yeah, C3 is designed very well, does what C2 could do with exception of very few differences, such as LAN preview (but we have remote url which has more benefits, no port forwarding or virtual LAN servers like with C2 if you wanna share a link). If C3 was made in Scratch, that'd be both impossibly impressive and really doesn't matter, because it works and does the job it sets out to do.

  • It's stolen from Clickteam btw but they had it coming.

    Wouldn't say stolen, but would say inspired.

    Clickteam, for a long time, had that "tick box grid" system, with an extremely basic "list view" in MMF. Even subevents were an addon that came wayyy later (I think when MMF renamed to CF2.5). Don't even understand how I lived without subevents for so long!

    Construct Classic certainly hit the ground running with its event sheet system, and the rest is history.