oosyrag's Forum Posts

  • Input states can only be values, not strings.

    Did you try seeing input states interpolation to angle instead of none?

  • If it's repeating anyway, why do you have to have the base texture over the limit? Just scale it down.

  • Are you painting the entire level inside the specified width of a tiled background? That doesn't do anything, the point of a tiled background is that it's supposed to tile and repeat with little to no overhead, so you can have an infinitely wide tiled background as long as the repeating texture is less than 4096.

  • Tiled background is the way to go, and preferred practice. Have you tried reducing the width to 4096 as suggested by Construct?

  • Anything you want handled by the host, should be in the host group. This would normally be most of the game.

  • Does the AI have to play perfectly? If not, then just break down what you would do in any given situation in terms of available information and decision to be made. The key is to really identify why you make the choices you do and translate that into conditions.

    Otherwise, you're gonna need to understand the math behind it or find someone to do it for you.

  • You should do read and follow the multiplayer tutorials.

    You can consider the host to be the "real" game. Syncing refers to updating synced objects' properties (position, angle) on peers to match the host's game state.

    Peers send their inputs to the host via input states or messages, and the host then applies those inputs to the game objects, which are then synced back to peers.

    In a real time game, to hide latency, peers can also apply their inputs to their local copies immediately when pressed by using local input prediction.

    Syncing objects and local input prediction are sometimes not necessary in a turn based game, given that results of inputs are deterministic. That is when the result of any particular input will always be the same on any device. Messages can work fine in this case for peers to communicate with the host either what was input, or the result of what happened after the input (or both). If not using synced objects, the host will then need to forward the same message to all the other peers. Naturally that doesn't apply if there are only 2 players involved.

  • You can have collisions on an animated sprite.

    You don't need them separate.

    I find it is helpful organizationally to separate the underlying collision logic from animations myself. Animations can change shapes, sizes, and origin points which may have an effect on collisions. When dealing with a lot of animation frames or when making changes to animations, it is pretty common to accidentally introduce hard to spot irregularities in regards to bounding boxes.

    Tldr you definitely don't have to, but many people do so as a "best practice".

  • LTS Releases are a kinda a step towards that.

  • There are potential benefits in terms of collisions logic, organization of events, and flexibility of animations. Many things can be done multiple ways. It depends on the preference of the author which way they are more comfortable working with.

    For Demonaire, there are still collisions to account for despite not utilizing physics.

    Speaking in general, for a more extreme example consider a fighting game like Street Fighter, which uses multiple helper collision boxes separate from the animated sprite, such as hitboxes, hurtboxes, and pushboxes.

  • Sorry! My mistake. It was the custom movement behavior that had the accelerate towards position action, not bullet. It should preserve momentum as the object overshoots the target, and gradually decelerate/accelerate back towards the target.

  • Use the bullet behavior. Accelerate towards the player position slowly, every tick.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Mostly useless. An aggregation tool that dresses up search results in an approximation that's just good enough so that if you don't have any idea about the subject you're asking about or generating, could possibly fool you into thinking you got a reasonable result.

    As far as code goes, from the perspective of ignorance, it looks amazing, but if you are familiar with the topic at all...

  • Instead of having the correct answer in the event, you could store it in an instance variable instead. Then for each answer box, check if the textbox.text=textbox.answer.

    Not that there's much difference between 60 events or 6000. You're going to need to input the correct answer for each one somewhere anyways, whether it's in instance variables, events, or an array.

  • A little late, but that is exactly what the permutation table feature of the advanced random plugin is for in C3. A permutation table is a randomized set of nonrepeating numbers.

    + System: On start of layout
    -> AdvancedRandom: Create permutation with 50 values starting at 1
     // Push permutation table values to array size (0,1,1)
    ----+ System: Repeat 50 times
    -----> Array: Push back AdvancedRandom.Permutation(LoopIndex) on X axis
    
     // If the value 25 is in an index below 20, delete that index, and add 25 at a random index between 20 and the remainingwidth of the array.
    ----+ System: Array.IndexOf(25) < 20
    -----> Array: Delete index Array.IndexOf(25) from X axis
    -----> Array: Insert 25 at index floor(random(20,Array.Width)) on X axis