jwilkins's Recent Forum Activity

  • I'm developing a game that uses multiple lanes of collision for both players and enemies (similar to a beat-em-up PoV) that I have been migrating from Construct2 to 3. The plugin I used in C2 allowed for solid collision filtering as well as jumpthru object that also were filtered.

    I incorrectly assumed that the collision filtering system for C3 would also allow for this, but if it does I haven't been able to determine a way to make it work. I'd argue this is pretty frustrating since most projects using the jumpthru behavior are going to also make use of the Solid behavior, so it would only make sense they have some parity in features.

    Is this something that is planned for the future? I otherwise really like the simplicity of the collision tags system, but it's pretty disappointing to see this not extended to other collision behaviors.

  • newt Thank for the suggestion! I can envision what your proposing giving me a similar effect, however how would I guarantee the particle object covered the space entirely in a specific amount of time? The beauty of this plugin effect is that it did that for me.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • I'm working on an NES/GBC style game with lo-fi visuals, for the most part I don't need to use too many effects. I recently moved this project from C2 to C3, and I had been using a 3rd party dissolve effect for weather transitions:

    imgur.com/gallery/mHUQvds

    Just focus on how the storm clouds dissolve in, they basically just populate in pixel-by-pixel (the amount they dissolve in is handled by tweening the dissolve value)

    Now I'm no good with effects, and I just need a lo-fi aesthetically consistent replacement for this effect. I'd like something as similar to this C2 effect as possible, but anything that doesn't mess too much with alpha or color changes I would be open to as well.

    Either a replacement effect, or any suggestions on how I can recreate something like this with C3 effects would be appreciated!

  • Hey everyone, specifically Eren and dop2000, I'm in the process of converting a C2 project to C3 and installed the 1.7 version of Eren's C3 runtime compatible litetween. It installs fine, but every project I try to use it in freezes at a black screen. Using the inspector I have verified it is Litetween, specifically I see these errors:

    Uncaught (in promise) ReferenceError: trim is not defined

    at lunarray_LiteTweenInstance.parseCurrent (577feb3e-94ff-462a-92d8-2355a9af4552:84)

    at lunarray_LiteTweenInstance.addToTweenList (577feb3e-94ff-462a-92d8-2355a9af4552:134)

    at new lunarray_LiteTweenInstance (577feb3e-94ff-462a-92d8-2355a9af4552:29)

    at Function.New (jsutil.js:9)

    at BehaviorInstance._CreateSdkInstance (behaviorInstance.js:2)

    at Instance._CreateSdkInstance (instance.js:6)

    at C3Runtime.CreateInstanceFromData (runtime.js:47)

    at Layer.CreateInitialInstances (layer.js:6)

    at Layout._CreateInitialInstances (layout.js:17)

    at Layout._StartRunning (layout.js:13)

    I know I could update to the Scirra built tween system, but this is a large, long term project that makes good use of Litetween, any chance you can take a look at this?

    EDIT: My apologies, I failed to check for a thread before updating this one. Currently this plugin only works in Classic Script mode.

  • Quick update, I did get this to work in the C3 trial, which is both good and bad news. Good in that I now know it is possible, bad in that I now have to determine if I want to take on the massive task of moving this project to C3...

    But I do have another question that can help me determine my course of action here. For anyone who has used a lot of the collision tags/filtering in C3, how is it performance wise?

    I ask because I assume that the Platform2 plugin is more efficient than the C3 tags, mainly because rather than tags it uses binary bit flags. I won't pretend to know anything about computer science, but to me this seems more efficient.

    As an example, my project oftentimes has layouts with 200+ objects, including 50+ solids, and 20+ platformer objects. It still manages to stay at 60FPS doing 80000ish collision checks a second. Does this seem in-line with the C3 collision tags system?

  • I have a long term project I have been working on for several years with C2 that heavily relies on the Platform2 plugin made by Colludium. I've been reluctant to move the project to C3 because I believe it would be a heavy lift to convert it, but I'm also not sure that the C3 Collision tag system even can cover my needs.

    Before weighing in, please take a look at this gif to see what I am doing.

    To further explain, my game utilizes up to 8 "lanes" of collision, platformer/solid objects in lane 3 only do platformer/solid collision events with other objects in lane 3. Enemies, players, and some other objects are able to move freely between lanes which updates their collision filtering to accomdate.

    Having looked at the documentation for the collision tags in Construct3, I'm not really sure it's robust enough to handle this, as it appears that you can't have say, multiple enemies/players (Platform objects) filtering for multiple Solids, or am I misunderstanding this system?

    EDIT: Should also mention I did try to get this working in the trial version of C3 but couldn't get it to replicate what I was looking for.

    Tagged:

  • Having a lot of trouble with this. I'm building a pretty bog-standard dialog system for an RPG. It reads text from an array based on keys (I edit the array as a JSON in a separate program I've built and then export that, then I load the JSON into an array at the start of the project.)

    The dialog system appends text to the front of the spritefont object based on an index so you get that simple text filled-in-one-letter-at-a-time thing that looks nice.

    This works pretty great, until we fill up the spritefont object, because what I would like is for the system to "erase" the top line of text and the continue to append as normal, and I cannot seem to figure out how to erase just that line of text before moving forward.

    To slightly complicate matters a bit more, I am trying to build this in such a way that I don't use set values for things like character height, because I may try localizing it and using different spritefont objects for other languages. As such, it needs to accommadate any number of character heights/widths.

    Any suggestions on this issue would be appreciated!

  • As a quick note for anyone that finds this post in the future, my attempt to set a secondary speed limit check before running the direction input with a variable didn't end well.

    This works fine when the player is on the ground, but if the player is in the air, the moment they hit the secondary speed limit they cease almost all horizontal movement, and drop like a stone.

    I guess this makes sense when you think about how momentum in the platformer object is applied when jumping, the moment you let go of the directional key your horizontal movement is cut drastically, and re-pressing it before you land doesnt net you the same horizontal movement bonus.

    Cut your losses and update the Max Speed value :/ it's not elegant, but it will of course work.

  • I would use option 1. It's the safest option, because mixing Platform with other behaviors or directly changing its position may cause different issues.

    Use Timer behavior to reset maximum speed after a knockback.

    Start a Timer for 0.3 seconds, set max speed to 200, apply vector. On Timer event set max speed back to 50.

    I played with my bottom option a bit more and got it to work better, I have a "MaxWalkSpeed" variable that is checked against the platform objects speed, if the player is moving slower than the MaxWalkSpeed value, the input doesn't go off. This prevents the player from moving themselves faster than the walk speed, but lets me set the actual platform Max Speed to a much higher value.

    I haven't tested it as rigorously as I'd like though so I will keep your idea in mind in case this ends up having too many issues.

    I'm honestly a bit surprised this wasn't considered when the platform behavior was developed, SO many games hit players with forces that exceed the speeds of their characters movement, why there isn't a built in option to do that is beyond me.

  • So, firstly I need to note I am not using the built-in Platform behavior of Construct2, rather I am using the "Platform2" behavior by Colludium, which has mostly the same actions and events, but includes collision filtering. This is going to factor into why I cannot use the Bullet behavior to accomplish my goal.

    So my game is a brawler (Think River City Ransom) and I want attacks to register knockback. i.e. I smack you with a club, your horizontal speed gets updated to move you backward.

    This almost works out-of-the-box, except for one issue, the knockback is limited to the object-being-knocked-back's MaxSpeed value. I.e. I smack you for 200 knockback speed, but your maxpeed value is set for a measly walking speed of 50, thus throttling that big smack to a measly whiff.

    There are a couple of obvious ideas that come to mind that I have tried so let me explain why they won't work:

    1. Update the MaxSpeed value on hits: This is a no-go. How do we know when to reset the MaxSpeed to walking speed? We could wait until the player stops or goes slower than the walking speed, but this takes control away from the player during these moments when they'd rather "lean in" to the momentum or push back against.

    2. Throw in the Bullet Behavior and update that instead: I tried this and it worked really beautifully until we collided with the Solid2 (Platform2 solids) objects, it clips through and once the bullet behavior stops moving, it traps the character in the solid or jumps them to the top.

    My last option is to run a check before the players Platform2 Control Input fires, to see if they are exceeding a "walkspeed" local variable. This would effectively be a secondary MaxSpeed value, and then I would set the MaxSpeed to an amount above what I expect the highest knockback value to be. In practice I am not happy with the results of this, so I'd love to hear other suggestions.

  • Oh wow, I don't know how I never noticed that picking condition before! I have a lot of animations I will have to set up that image point for, but that's minor, I think this will work, thank you!

  • Thanks for the reply!

    In this case BBoxtop is going to give me the same result as Y, so those could be interchangeable. The origin is the top-left of the Tiled Background, so regardless of angle both will be the same. The image is just to show how I currently check if the player is on top of the tiled background, and how that doesn't work if the object is angled.

    I did consider your approach of using "overlap at offset", but for reasons that are too long winded to get into here, that's not an option. Asumme that the player object we need to check for is possibly always overlapping the tiled background, and is large enough that we need to be checking a specific point rather than the collision data of the player object.

    Now, the easy way to do this of course would be to pin a single pixel object to the player at the correct relative location for the check, and if I have to I will do just that. But I'd really rather not as my player objects already have a lot of pinned objects I am keeping track of, and because my player objects are also enemy objects there are a lot of them in each layout, so adding this overlap checker object can add a lot more objects to the layout.

    I'd really rather use some math on the check to determine if the relative point is empty or not in other words.

jwilkins's avatar

jwilkins

Member since 17 Dec, 2016

None one is following jwilkins yet!

Trophy Case

  • 7-Year Club
  • Regular Visitor Visited Construct.net 7 days in a row
  • RTFM Read the fabulous manual
  • Email Verified

Progress

10/44
How to earn trophies