oosyrag's Forum Posts

    I know, right? I've optimized the hell out of Sombrero (which developers are also encouraged against in Scirra blog posts, while those developers then receive the blame for poor game performance) and I'm 99% sure there is absolutely nothing I can do to improve performance farther, and the performance is nowhere near far more complex games, including other 2D games, because of some limitations that seem endemic to C2 more than general HTML5/JS/WebGL performance limitations.

    To be fair, advising against premature optimization or overzealous refactoring is pretty common practice even outside of construct, and generally good advice in most situations. The Scirra blogs also do clearly state the exceptions to this as well, and also give clear information about what to look out for for you to make your own basis for deciding about when and how to optimize.

    The biggest thing missing is probably fine control of memory management, which is handled mostly through smart use of layouts.

  • Not sure what your question is...

    Create a debug text object. Set text to renderer.

    Now your user can see if they are using webgl or not.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads

    Maybe off-topic? But since Ashley brought up the poor multiplayer plugin... it is actually pretty feature complete, I think people just have trouble wrapping their head around multiplayer concepts. They have some preexisting assumptions about how it should work, and walk away discouraged before realizing the multiplayer plugin is pretty adaptable.

    Someone mentioned missing directly connecting instead of via signalling server, but utilizing a signalling server is pretty much superior any way you look at it (users ARE directly connecting to each other, the signalling server just takes the work out of making that connection). For example if you want to connect to someone by IP, use that as your room name instead.

    The second big thing is understanding lag and latency and the fact that no two users will ever see the same thing at the same time. The tutorial spends a lot of effort explaining this and the implications AND the solutions, but I think it turns off a lot of people. This isn't something you can just wish away or ignore when developing multiplayer games, but people go in to it not realizing how important it is. This is no shortcoming of the plugin itself, rather the users. The plugin actually has tons of built in behaviors to make things like interpolation and lag compensation easier to handle for the developer.

    I think the last thing is that many people envision server-client architecture for their game, which isn't exactly how the plugin was positioned but it is perfectly capable of doing so. Probably could use a specific tutorial to set up such a system (kind of like how there are two basic tutorials for top down shooter and side platformer - one can be foor peer-peer and another could be for client-server). Doesn't mean it is superior to a fully featured backend service, but those are out there already with working plugins.

    Back on topic - while the multiplayer plugin might be under utilized, I think it is still a huge selling point, especially for "serious" developers down the line if some of the other issues get addressed. Even as a feature checkbox, I think not having it would be a fair reason for a prospective customer to turn to another engine.

    TLDR: Basically wanted to say voting on features is important regardless of utilization, it usually is a fair metric of what people are looking for, regardless of weather or not they are capable of utilizing it.

    Since I haven't weighed in on this thread yet, just going to mention in my opinion the two biggest priorities for "serious" developers down the line would be exporting (already/soon to be addressed) and monetization (ad service support/tutorials).

    Also I think an official perlin noise plugin/function/support is something a lot of people are looking for and trending recently, but I suppose a voting system would show if it is or not.

  • Bot logic and control should be handled by the host, and relevant objects synced - then each peer will get a copy automatically.

    Basically, the host should currently be creating and assigning synced objects for peers as they join. If you're adding a bot, instead assing your own "botID" in place of the peer ID on creation of the synced object, and reference that ID when creating events for your bot. You probably also want a instance variable boolean "Bot" is true or false, this will let you easily sort your bot specific events to affect only bot instances.

  • You can use the renderer and rendererdetail system expressions to display that information.

    https://www.scirra.com/manual/126/system-expressions

    [quote:2wgj5u0v]renderer

    The name of the renderer used to draw the game, currently either canvas2d or webgl. See Technology for more information on canvas renderers.

    rendererDetail

    The name of the graphics hardware in use to draw the game, such as "NVIDIA GeForce GTX 660" or "Adreno 330". This is only available in WebGL mode in certain browsers and platforms; unsupported browsers/systems will return "(unavailable)". Projects should not rely on this string having any exact contents, but it can be useful to diagnose which GPU is in use in dual-GPU systems, or to look for keywords and apply default graphics settings based on the type of hardware.

  • Suggestion: Post a capx example of what you have so we can see how you implemented your drag and drop. Without this, we can provide suggestions but they may not even be applicable to your situation.

    Also what do you mean in number 1? Do you want the object to snap to a target?

  • Wrapped container transformations are a nice new feature, but it might be useful to have an easier way to unwrap or select individual pieces again. If the project is of any significant size, it becomes more difficult to locate the individual sprites in the project bar to manipulate them.

    When the container is "wrap" or "all" selected, the first place I look to is in the properties bar, but there is nothing of help there currently. I imagine maybe a list of objects in the container and the "Select mode" options would be welcome there, or perhaps all of the container sub properties as well.

  • I believe you want Destination Out on your "window", which should be on top of your tiled background. If you're having trouble, try isolating those two objects on a layer and use the "Force own texture" property on that layer.

  • And generally speaking if you're really worried about performance and the pet is cosmetic, it is probably perfectly acceptable for it to clip through walls and head straight for the player. The chances that this would occur should be relatively rare if you keep the leash distance short.

  • There are tons of ways to implement it, but the first way that comes to mind for me is to use a trigger for pathfinding. If pet > certain distance from player, pathfind to player location, trigger once while true, only if not currently moving/pathfinding. On pathfinding complete, check again if in range of player or not. This way pathfinding only runs once when you get out of range, and only again if it reaches its destination and is still out of range. This would work best if you used a slight random offset from player as the target, or a larger cell size.

  • Yes, you can use the text append action for utilization in a loop, where you use loopindex in place of your array.at y value.

    Edit: with the condition that the current value is not 0.

  • Thanks newt.

    Seems like it would be a good idea not to require users to be on a beta/unstable release just to use C3...

  • For each X: Set text to "array.at(array.curx,0)& array.at(array.curx,1)"

  • I only see chrome 56 in the play store, but C3 requires 57. Is it just me/my android version? Running cyanogen. Sorry if this has been brought up before, I haven't been looking through all threads in this forum.

    Edit:56, not 36

  • Use a GAMESTATE global variable - 0 is normal, 1 is pause. Have your trigger function set GAMESTATE to 1

    Have a separate counter event.

    If GAMESTATE is 1

    Every X seconds - Do Countdown

    -- Cooldown < 1 - Set GAMESTATE 0

    Edit: Didn't see mpplant already replied. Yeah basically what he said