Tokinsom's Forum Posts

  • I think your response just proves my point that we need more control over this lol.

    The "simplest" implementation is just having the inherited family effects show up in the objects' effect lists, allowing us to reorder all effects as needed at the object-level regardless of where they come from.

  • Ashley

    Currently, family effects are ordered before its objects' effects, which can result in effects that do not stack as intended.

    Please consider the following example:

    Since the 'brightness' effect belongs to a family, and the 'replace color' effect belongs to the the object inside the family, the result is a sprite with brighter original colors, not brighter replaced colors as it should be.

    Would it not make sense for family effects to be ordered AFTER its objects' effects, so that the object's own effects are accounted for?

    Ideally, we would have the option to choose if family effects should go before or after, since the above case will not always be what is intended. However, I would argue that it is much more often the case than not. Thoughts?

  • No need to upscale your source art. That is a very bad idea.

    What you're looking for is "Fullscreen Quality" in the project properties, with "Pixel Rounding" off.

    Setting Fulscreen Quality to high will upscale your pixel art as usual, but everything will move, scale, rotate, etc. on "sub-pixels" giving a much smoother overall appearance. The amount of "sub-pixels" will depend on how much you scale up the window.

    That's the simple explanation, at least.

    It has a few drawbacks and will annoy pixel purists but most players these days would prefer the smoothness.

  • UIDs are pretty much the only way to reference instances outside of manually giving them IDs, so I'm not really sure what else I can do.

    Aren't instance UIDs stored in the layout XML? Is it not possible to just put them on a "do not use" list and then recreate them with those same UIDs in the same fashion as when the layout first loads?

  • Ashley

    The "recreate initial instances" action was created years ago as a result of numerous discussions here on the forums about how to best handle open-world metroidvania style games without every single room being in its own layout.

    I've used it extensively for both open-world and linear games alike, and it's one of my all-time favorite features Construct has to offer (I know right?)

    However, one major drawback with using it is that pre-placed objects (as in, objects placed in the layout editor that are expected to have a static UID) which are destroyed and recreated do not preserve their original UID, making it impossible to reference them for the purpose of linking/pairing objects, save data, loading object states, etc.

    I've resorted to making my own ID system using "for each (ordered)" which has its own drawbacks (I only get IDs at runtime) and then using manually set IDs / tags using private variables when this won't suffice.

    All that said, would it be possible to somehow reserve UIDs so that pre-placed objects which are destroyed and recreated using "recreate intial instances" get the UID they started with?

  • Ashley Thank you for the quick response. I just edited the original post with one other suggestion (resampling only the text as if 'fullscreen quality' was set to high). Is that within the realm of possibility?

    As for the gpu memory, I'll have to look at my debugger again but I recall the memory usage skyrocketing when 'fullscreen quality' was set to high and I maximized the window. I mean, it's not an unacceptable amount due to me using pixel art, but it was certainly higher than with it set to low.

  • Ashley

    I've opted to use text objects instead of spritefonts for a number of reasons, but primarily for translations.

    Problem is my game's resolution is 640x360 (large pixel art) and unless I set 'fullscreen quality' to high -- which has undesirable effects for the rest of my art amd drastically increases VRAM -- the text ends up being quite blurry at runtime.

    That said, would it be possible to get some anti-aliasing options for text, maybe even an option to disable it entirely so that it is less blurry at smaller sizes / lower resolutions? An option to resample only the text as if 'fullscreen quality' was set to high could work too, if that's possible.

    I can post to the suggestions platform if so, but I wanted to inquire / discuss possible solutions beforehand.

  • Ashley

    Thanks for clarifying. I had assumed the "Is touching..." collision checks were already occurring since having objects with platform & solid behaviors with no events increases the collision count in the debugger.

    I know you guys have to take great consideration into any features like this anyway. I've been here since the beginning :) Just wanted to see if I was on to something.

    On the subject though - is there a general amount of collision checks we should try to stay under? You mentioned millions per tick is extreme, and I'm over here thinking numbers like 50,000 per tick is too high lol.

  • Ashley

    This occurred to me while messing with wall-tracing enemies / weapons that use a lot of collision checks with solids + solid tilemaps...

    The platform behavior already has "is touching wall" and "is on floor" which to my knowledge are handled in the behavior's script and simply return true or false -- using them in events does not create extra collision checks.

    If it also had "is touching ceiling" then we would be able to check if it's overlapping solids on all 4 sides without the need for "Is overlapping at offset", drastically reducing the amount of potential collision checks with solids.

    Better yet, if there was an offset parameter to "is touching..." and all the basic movement behaviors had them, then we can eliminate event-based collision checks with behaviors<>solids completely, since they'll just be checking if a particular existing overlap from the script is true or false.

    Considering a large portion of overall collision checks are simply to see if objects with behaviors are interacting with solids in some way, I think this could be rather beneficial. Thoughts?

  • For proper fire you're gonna want to look into things like masking / overlays, scrolling textures (like offset in TiledBG object), particle spawners, blend modes, etc.

    This is in Unity but you get the gist: youtube.com/watch

  • If you use events to make a typewriter effect for text/spritefont, and add BBcode tags to it, the BBcode tag itself will be typed out / visible until the closing bracket is complete.

    The built-in typewriter behavior fixes this by processing the BBcode tags before typing out the text. However, I can't use it because the speed of the typing effect is based on the length of the string, which is undesirable for my game and, well, any game for that matter. Suggestion thread for that here.

    That said, is there some workaround I can do to have my own typing effect process the BBcode tags before typing out the string? I've tried using a combination of intermediary text object & .PlainText but it didn't work.

  • It's pretty simple actually, and a 3D engine isn't going to make this particular thing any easier since the perspective in games like Zelda is just an illusion; adjusting a real z coordinate would just make the player grow towards the screen (and slightly upwards at a 3/4 perspective).

    The goal is to just have 2 y coordinates. 1 for the actual Y position, and 1 for the Y position + fake jump height. The latter is also used as a displacement from the object's shadow, aiding the illusion.

    Here's a clip from my Illusion of Gaia practice engine:

    gph.is/g/Zx1nqA7

    The "hard part" is making a custom jump mechanic with events, but there are some examples around the forum, typically in R0j0hound's examples. vy, gravity, a loop for detecting the landing, and you're good.

    As for stairs, that's all fake too. The player just moves diagonally when going up side-view stairs, and moves upwards as normal when going up front-view.

  • jobel I'm not referring to the objects, just the "add action" categories. Here...The one function (blacked out) in "Functions" is a brand new one, but the ones under "Functions (Built-In)" were all converted. I see no reason they can't go in the same category because they've been converted and have nothing to do with the old object anymore.

  • Ashley

    When I go to call a function via the new Function(Built-In) object, there are both "Function" & "Function (Built-In)" categories in the add action window. It seems the former is new functions, and the latter is functions that were converted from the old object.

    I'd rather not have two categories though, and it seems redundant since they're all part of the new function system now. Why continue to separate them after conversion? Is there a way for me to fix this on my own through editing project files?

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Lol Ashley's link to 3 year old suggestion topic.

    Family folders will help us organize, or more specifically categorize, our families. No need for senseless arguments. People shoot down ideas around here for no reason other than feeling superior cause they can tolerate not having it.