Thndr's Forum Posts

  • With save/load, you don't have to save your entire project's state.

    Mostly to reduce the clutter of it's savefile, make a couple families called "No Save OBJECTTYPE" and apply the behavior that prevents saving of that object's data. This way you don't have to record the exact location of all the sprites and static elements, saving the global variables and whatever objects you did not blacklist.

    With webstorage, you just save a key to a value, sort of like a perma-dictionary key. You have to design your own events on what to load into where with this, but it's more of a whitelist option, where you choose what to save. The save/load basically uses this, but it's saving/loading code is already programmed into the C2 engine.

    In the end they both function the same, data is saved and is kept until webstorage/localstorage is cleared.

    So in summary, for saving games:

    Save/Load = Blacklist

    Webstorage = Whitelist

  • Are you previewing in chrome or exporting?

    Are you resizing your playable area in non-integers? (Windowsize for node)

    Are you using pixel rounding?

    Usually upon export since it's a cut image from the spritesheet/tile it has the common issue of grabbing a few subpixels of the transparency around the sprite/tile. Professional games experience this too in their engines and bleed the texture a few pixels outside of the area they're cutting.

    With C2 the best way to avoid that without editing the output compiled image file is to resize based on integer, use pixel rounding, or LQ Render

  • But then it would be a different sprite or different animation frame, in which then you're going to have a default imagepoint on that version to shoot with anyway.

  • shinkan

    Ah, understandable. Due to the other posts and with no real example of what you were trying to do I was misunderstanding what exactly you were having problems with.

    Yeah I agree, quality of life improvements related to animation management and importing should be a thing to improve. Anything related with outside resource management and animation management really, as C2 is the only thing that manages it for C2.

    There are workarounds but for organized asset management like you have, even 2 minutes per animation saved is about 2 hours for just that one spriteset.

  • The image editor could be better, no one is saying otherwise. I personally hate using it myself as it has many features lacking/implimented in a way I don't like. If there are bugs I do agree they should be fixed, but other than a basic image editor it's essentially a UI for importing content. Don't get me wrong, as I would love to see it improve, but the problem here is that it works and there's 100s of programs that do the same thing, but better. That means there's little reason to increase the features of the image editor itself. As long as there are ways to import outside assets quickly there really isn't a need for much immediate improvement; however, over time improvement would be nice.

    I must be misunderstanding something because I'm not entirely sure what issue you had with importing your sprites other than standard organization and cleanup every studio has to go through when importing assets. Did you copy/paste each one manually instead of import sprite strip? Was your sprite strip organized by variable sprite sizes?

    In my opinion, the importing function of the image editor is the most important thing, as they will never make the image editor better than specialised software.

  • Aphrodite Thanks for the info, but I'm interesed to know about the performance and memory usage for using color manipulation.

    Are you not asking about it for old technique clarification and more for changing colors on sprites with the Replace Color effect you can add to an object?

    With the SC Sprites you can do the same with Replace Color in C2, but I've always wondered what kind of performance hit would take to do that.

  • Hm, guess I must've misinterpreted it then. I took it as a function that was introduce to the multiplayer object of it's own, enhancing the current way it works overall for rooms.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Problem Description

    I noticed in the changelog that it mentioned the option of locking rooms when they are full so no one else can join them, but I could not find the option to do that anywhere.

    Wasn't sure if this was a "bug" or if I'm just completely missing the option somewhere hidden. Posting it here just in case

    Also would it be possible to lock a room that is not full?

    Or force-join a room that is locked/full?

    Operating System and Service Pack

    Win7sp1 x64

    Construct 2 Version ID

    r166 - Steam

  • I like the MP plugin but I hope they let people who own C2 still have access to it for free at least with a limited capacity for their projects as I wouldn't need any advanced features. As a hobbyist/aspiring dev I cannot guarantee I'd use the plugin to make money to pay for a subscription cost.

    Two other things I would like to see is if they would release the signaling server software/code and have the ability of the MP plugin to allow people to connect directly without a dedicated signaling server. Heck, if the signaling server was C2 code that'd be perfect.

    Do not know how much they want to give with the C2 package VS Sub VS Paid Plugins though, since MP is hard work.

  • While I think C2 has a lot of the things you can do to make a big game, it could be better in terms of UI options for plugins that would allow more control by 3rd parties on their functionality.

    The tilemap plugin with TILED support is a good example of a first party plugin that needs better support when relying on outside files for the content. A solution for tilemap would be to allow one to paste a CSV into a field for it to use that as a tilemap, as that's exactly how it's stored in the C2's XML. I can open up the XML and change it to my needs, but an in-IDE option to do that with a CSV file/string would make it so you could update realtime what that instance of tilemap is showing. It could be entirely for previewing purpose and have no effect on the object at runtime. (With an option to apply it to the object of course)

    Perhaps that kind of suggestion is possible with the current UI, but it's a rather simple suggestion compared to asking for windows which would be needed for bigger plugins.

  • While copy/pasting an entire layout between projects would be cool to do for quick transfers, as rex said we'd might want to include the arrays and other non-layout objects. Some sort of import module method would probably be the best method.

  • HTML5 tech is new, so it's going to have performance issues depending on the machine and browser used.

    With compatible browsers, if C2 exported ASM.JS functioning code it should increase the logic speed so the only issue would be drivers optimizing the calls.

    If there was plans for an ASM.JS option for plugins/export, I'd be all for that.

  • There is a problem with On Peer Connect> Send Message, as it doesn't process the information until after the objects are synced.

    If you look at the multiplayer demo, as a peer joining a host everything is destroyed and then respawned. if you put a message event in the On Peer Connect, the peer's events won't see it. If you put a wait 0.001seconds before the message, it does.

    It's probably the same problem that the peer is having on-connect, where when it sends the message is too early

    Since I do not like relying on a 0.001 wait just in case there is an issue and it doesn't execute, I've made a SERVER object that only the server keeps. Then for the Peer event group, have a On created: SERVER> Send message requesting a response

    This way the host receives the request, then sends the sync afterward.

  • What I am trying to do is make a function that has multiple parameters depending on the options chosen.

    f.call("action_function",1,"string")
    f.call("action_function",2,"string","string")
    f.call("action_function",#,"string","string",....)
    etc.
    [/code:2zqnrbte]
    
    You can easily make it a string that would have the same text, but then it stops being a command and is a string that doesn't execute. I am wondering if there is a way to make a string into a command entry. If not then that's okay.
    
    This is mostly a question for reference as I've already know of two work-arounds for the issue. One being a temp array/dictionary, and the other using only 1 "string" entry with tokens ("string1|string2|string3")
  • Let me pitch another idea. A lot of talk on performance was focused on final exporting/publishing stage. What about first steps? Ashley; I think a direct scripting access would offer a completely new dimension to C2? What are your thoughts on the subject? (imagine construct editor with additional underlying scripting editor - gamemakers valhalla maybe? )

    The main purpose of C2's IDE is to use as little direct scripting as possible.

    There also is a way to do direct scripting in the software, which is the Browser's run JS function. I have used it to execute actions of JZIP that I made an include plugin for one of my projects. It doesn't work with code minifcation, but it works as intended. However with the IDE you're still stuck with the event system for 99% of what is needed.

    Even with the event system you're not stuck doing nothing with scripting as you can script plugins, in which the plugins work as they should every action you call on them. This is basically how functions work in JS as well as in C2. The event environment eliminates typos from commands (but not from entries), and provides a set amount of actions that each plugin can do. Since you can make your own plugin if you need to, you still have access to scripting at any level you choose.

    Quite frankly if you really want direct access to pure JS code you're better off not using C2 or making your own plugins that do what you need them to do.