dop2000's Forum Posts

  • Please study a few examples on how to use the Pathfinding behavior. It's not a good idea to use "find path" action on every tick. And you need to wait for the "On path found" event before moving along the path.

  • These expressions were replaced by scripting and the Date plugin a long time ago.

    If you used them in old projects, they should still be available there.

  • The second-to-last event in your screenshot makes the projectile follow the player every tick - that’s why it doesn’t stay on the enemy.

    Also, why are you using so many movement behaviors? Follow, MoveTo, and Bullet all conflict with each other.

    Instead of the Follow behavior, you can just attach the sprite using the hierarchy. The logic would look like this:

    On start of layout: 
     Add Projectile as a child to the Player (sync X and Y)
    
    On click
    Player Pick child Projectile: 
     Projectile set bullet enabled and launch in mouse direction
    
    Projectile on collision with Enemy: 
     Projectile set position to Enemy
     Enemy add Projectile as a child
    
    
    Every 1 second
    Enemy Pick child Projectile: 
     Enemy subtract from Health
    
  • C2 and C3 are quite different, you should always mention which version are you using when posting on the forum. You did, my bad.

    However, in this case, you can open my example in the free version of C3 and copy/replicate the events in C2.

  • This is not easy to do without families (which are not available in the free version).

    Here is a demo:

    dropbox.com/scl/fi/91g1zzp10wvm536mbcx18/ManyCoins.c3p

  • There already was a similar suggestion:

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

    And I believe your idea (essentially custom expressions) is also quite similar.

  • by creating a function that does all the checks and returns a value to validate or not that check.

    Sure, you could do that with a function. But we’re talking about quality-of-life improvements here. Custom actions can be replaced with functions too, but custom actions are far more convenient.

    A custom condition would automatically pick instances. To achieve the same with a function, you’d have to use For Each or Pick by Evaluate and pass the instance UID into the function - which is much more cumbersome.

    Here is an example:

  • isn't that basically a varible or boolean check?

    No, IsVulnerableToAttack is meant to be a custom condition that can include dozens of checks analyzing various enemy and attack properties. For example, an enemy might be vulnerable to a "fire" attack if it’s an "ice" type or has 0 armor, but also doesn’t have a magic shield, and isn’t in an "immortal" state.

    Putting all those complex checks in a separate block and then using a single Enemy IsVulnerableToAttack condition in your main logic would make the code much cleaner and easier to read.

  • Custom expressions would be great, but the feature I really miss is custom conditions.

    Imagine this condition, which evaluates each enemy instance and picks enemies which are vulnerable to a certain attack type:

    Enemy IsVulnerableToAttack ("fire"): Enemy enable red outline

  • Why do you want to compare the name? You already know the name - it's Bake. It will be Bake for all instances of the object.

    There's no point in checking if the name is still Bake, because you can only change it in the editor.

    You can check the value of the variable, for example:

    Compare instance variable Bake > 15

  • Hi Tom

    We recently created a bundle with Biim Games, and there was no confirmation or even a notification. Not a big deal, but it'd be nice to get notified when someone adds my assets to a bundle. On the itch.io store I actually have to confirm that I agree to it.

    Our bundle ended up on the last page - page 14. So, basically zero visibility.

    New bundles should probably appear on the first page by default.

    Also, there's no way to sort the list - it really needs sorting options like newest/oldest, biggest discount, etc.

  • If you want to set the text to the instance variable (defined on the same object) - you don't need "for each" or "compare" conditions. A single action should work:

    text_bakery Set Text to self.Bake

    or

    text_bakery Set Text to text_bakery.Bake

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • The probability table JSON should be in a specific format. Try this:

    [[5, "Card1"], [3, "Card2"], [2, "Card3"], [1, "Card4"], [1, "Card5"]]
    

    Card1 has weight=5 and is more likely to be picked.

  • Hey everyone,

    Zuma was one of my favorite games back in the day, so I decided to make my own version in Construct 3 and turn it into a reusable template.

    Subscribe to Construct videos now

    I tried to keep the same unique feel and features: smooth curved paths, rolling ball chains, tunnels, powerups, and that classic "bouncy" chain reaction when matching groups of balls.

    You can play a few sample levels in the Arcade.

    If you want to make your own Zuma-style marble shooter, the full template is available on the Construct Store (and itch.io). It includes 4 playable demo levels, a path designer layout, and everything you need to start building:

    construct.net/en/game-assets/game-templates/rolling-marble-shooter-5223

    doptrix.itch.io/rolling-marble-shooter-template-for-construct-3

    Or buy the Marble Shooter Bundle made in collaboration with Biim Games and save 33%!

    The bundle includes the Rolling Marble Shooter Template + 2D Spheres Animation Asset + Customized Input Template.

    Tagged:

  • Do I understand correctly that when you load a saved game or return to a previous location, you re-evaluate all events for each barrier to decide whether to remove it or not?

    That seems way too complicated. I would just keep track of inactive barriers in a separate array or dictionary. When you need to remove one, call a function that marks it as “removed” in the dictionary and destroys it. When loading the game or location, destroy all barriers listed in the dictionary.