oosyrag's Forum Posts

  • That would seem to indicate the specified key does not exist.

    You can check that by seeing if "On item missing" triggers instead.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • The straight answer is to not use the multiplayer sync action when changing layouts, and handle object syncing manually via messaging. This works best for peers being able to wander across layouts locally, you wouldn't necessarily need to sync objects for everyone in the first place. Messages and rooms persist across layouts.

    Alternatively, depending on what you're using layouts for, you might be able to design around using layouts in the first place. Are you using them for memory management? Is everyone changing layouts with the host or separately?

    Another idea (I have not tried this, but it might be the cleanest way) is to use a new signaling room, while staying connected to the signaling server. The host will indicate to peers to leave room, and the new destination room. The host waits until everyone has left, then leaves and creates the new room, on the new layout at the previously designated room id. Peers wait until the room exists before joining (host gets in first) via request room list and on room list. PeerID's should persist, as well as global variables and objects on the host. Well basically everything on the host persists. This is similar to host migration on lost connection, but a little simpler, since the host remains the same.

    A further option is to not use the multiplayer plugin, and to use a server/client design with a third party tool, which isn't really the answer to your question, but can solve a lot of these types of problems.

  • Effectively yes, as an engine, c3 is still a 2d engine with 3d representations.

    Platforming in 3d in particular is supported though, I recall seeing multiple examples.

    Do note that 3d space and collisions can well be calculated manually in a 2d environment, as has been done so since the earliest days of video games, but it's just not all necessarily done for you.

    As with all games and design, it's not "no interacting with anything on the walls", it's how are you going to capture and show or simulate an interaction on the wall? Of which there are many ways.

  • If you're asking what I'm thinking you're asking it's for logical organization, to get the input values assigned to the correct instance variables for each peer object, on the host. You can see the tags being utilized in event 49.

    Associating object with peer, as far as I know, simply destroys that object when the peer leaves the room. I don't know if there's any under the hood optimizations for syncing or interpolation benefits to associating an object.

  • I don't recall if the multiplayer net code was scripted directly, but github.com/AshleyScirra/CommandAndConstruct Ahsley's Command And Construct heavily leans into scripting as a multiplayer example project. The entire project is pretty well documented, check the links on the github.

  • Those are some pretty hefty spikes. dt only works for delays up to 33ms (30fps). My recommendation would be to nail the source of the the lag spikes instead of trying to get it working with them. A rhythm game with that kind of inconsistency is going problematic even if you do get the audio and visual to stay synced after the spike.

  • It really depends on your project. Usually I would use a logical base object for sync purposes, and handle visual animations for each player locally on clienta.

    I would not be surprised if syncing did not work with hierarchies. The multiplayer plugin and containers both predate hierarchies by a lot.

  • Use separate permutation tables or seeds

    Use an offset to your permutation index value.

  • They do. 8 direction is framerate independent as a behavior by itself, but if they set/adjust the vector manually every frame, then it becomes framerate dependent. Multiply the magnitude (sin(movementangle)) by dt*60, or replace 60 by whatever framerate you're testing on that feels like the correct acceleration to you, and it should become framerate independant.

    Edit: Oops! Guess not, sorry!

  • I don't think an ai tool will be a good fit for learning C3, as a niche product with it's own quirks and design. Construct is made to make sense to certain people naturally - if it's a good fit for you, you'll know because it works and clicks. Ai is much better suited for learning and using a mainstream language like javascript (also able to be used in construct though). Construct rewards hands on learning in a way that ai can't replicate and will probably even detract from.

  • You probably didn't add any movement behavior to your object. Try adding either the 8 direction, tiled movement, or platformer behavior.

    Reading the manual and following the guides and tutorials helps too.

  • Uhh I don't think that pack actually has any 45 degree tiles, or I'm blind.

    Here's the filler pieces (on the right) I think you need, along with all their rotations and variations, if this is what you're looking for (example on the left). It's missing all the main turns and corners though, but I think you can figure those out yourself.

    Basically have attachment points for road pieces at each tile in thirds as shown on the bottom, and have all the variations needed for inside and outside road connections.

  • You're using wait wrong - wait only delays the actions, not the event. So each sprite gets looped through on the same tick (instant) and they're all waiting the same 2 seconds, and setting the text all on the same tick again then.

    Try using 'every x seconds' with an incrementing variable instead, picking by IID from 0 to object.count while the variable is less than object.count.

    Or try the timer behavior, you could still use a for each loop, setting the duration for each timer/instance to loopindex*2 seconds, and setting the text on timer triggered.

    Wait is super commonly misused and the name is misleading. If it were up to me I'd call it "delay actions" or "postpone actions" instead.

  • construct.net/en/make-games/manuals/construct-3/plugin-reference/filesystem

    <app>

    This is not a good idea to use, at it can potentially be read-only.

  • The security part is no free access local disk access from browsers without user input, thus requiring picker tags. On export the local safe folders are fine, but the preview runs in the browser, so it won't work.

    Besides that, asynchronous file operations to local files has its advantages and disadvantages, and asynchronous is what we have to work with now.

    Exaggerating something 10 lines of code doesn't help your case much - it went from one to two events. And could probably go back to one if you used the wait for previous action to complete action, but I haven't tried. If you're experienced with large projects then one additional event out of thousands should not make any noticeable impact on anything in your workflow, besides having to learn something new (which you also have an option not to, by using whatever version of C3 you are more familiar with if you want).

    Otherwise if you're going to keep this belligerent approach then I'd just assume you're just rage baiting and not actually looking for help. Then good luck with your project.