Candescence's Forum Posts

  • Candescence: Thanks! I've had 2 or 3 attempts at making an event-based system myself, but the whole thing failed to hold up with even the basics, and doing it via a behaviour seemed far more sensible and user-friendly.

    And probably a lot more efficient performance-wise, I'd imagine.

  • About freaking time! My previous attempts at making Sonic physics via events haven't gone so well, so to see this one running so accurately and beautifully. It makes me want to get back to using C2.

  • I'd be more than happy to advocate a prefab system if it made picking amongst modular objects with shared behaviour easier, as I've stated earlier in the topic. Prefabs and the parent/child system makes easy changes to individual objects easier in Unity.

    Also, the Rewired asset for Unity is a fantastic example of a control system done right.

  • Edit: Made some extra additions/edits to the list.

    Okay, this is pretty sweet. I'd like to add my own suggestions, though I might've missed things that might've already been suggested:

    Behaviour/AI

    Someone already suggested platformer pathfinding (Notch actually made an A* Mario pathfinding thing once), but to add onto that, I'd also like to see 'off-mesh links' (or in this case, 'off-grid links') that inform pathfinders of unusual methods of moving around an environment, such as teleporters, elevators, etc, and tell the behaviour what to do when they encounter such links.

    Oh, and be able to provide platformer AI pathfinding information for custom behaviour, in case of custom platforming behaviours and whatnot - defining 'actions' that can allow an AI to do things such as crossing horizontal or vertical gaps (dashing, jetpacks, etc.) that they might not otherwise be able to cross or get past certain obstacles.

    Controls

    In my experience, coding up local multiplayer is awkward and requires giving every object control information via variables and additional variables for every button for stuff like knowing when the player has only just pressed a button, etc, and setting up controls for individual players either requires arrays for control sets or manual control definition. And then you have to individually define via variable which player controls which set of objects, which can get messy with 'for each' object picking and making sure they don't conflict.

    I'd like to be able to add a 'player' behaviour/component to an object, that defines that object as being controlled by a particular player (or AI), and only responds to particular controller or specific set of controls. In addition, controls for both keyboard/mouse and controllers for each player can be defined via the editor independently of the behaviour/components, and also modified at runtime (and also whether certain players are using either keyboard/mouse or controller, or both). This would make implementing local multiplayer so much easier. Input systems generally aren't great for game engines in general out of the box, Unity's is kinda awful as well for many of the same reasons.

    Really, being able to easily define certain objects and the objects they contain as being associated with certain players would solve a ton of problems by itself.

    Object Picking and Prefabs

    Also from my experience, if you want certain sets of objects of the exactly same type interacting with each other, such as multiple players who use the same object, aside from the aforementioned controls problem, you also need to do a mess of picking to ensure that certain events don't affect objects that shouldn't be affecting them at any one time, especially if each player has different 'skins' that do different things.

    Lemme provide an example of this: with my last game, I had to consolidate my player/AI characters into two objects, the single main object that handles controls and behaviour, which has to be just one object, because otherwise, even with families, you end up getting into an absolute mess of picking nonsense, and thus I can't use that object as a container for the 'skins' that represent the player, so I have to spawn and assign each skin with its main player object individually, couple each pair with their event behaviours in picking, and then also handle what happens when, say, a player attacks another player. Unfortunately, this still results in an entire mess of picking nonsense, with for each object loops, and then a bunch of picking events during certain inter-player events to tell which skin belongs to which player and vice-versa. And then you get into issues with spawning and what happens with save states, and you can get that it gets especially messy trying to clear out bugs. No, families aren't actually that much help.

    Basically, here's some ideas on how this can be fixed:

    • Don't have containers set entirely in stone. Unity can have child objects (and children within children) and even add or remove children without problems, as long as they're not using said children for something that might cause errors due to their absence. Instead, allow a parent to spawn objects as children (or despawn children), and then check if they have a certain object as a child. This saves a lot of time and grief with sorting out picking when instead more flexible containers can do it automatically.
    • As well, allow for 'child slots' or dummy objects that children can be slotted into, so a child slot/dummy that can represent many different objects that might be in that slot, while performing the same event behaviour. This preserves the existing container behaviour while adding additional flexibility. That way, the designer can create containers with dummy objects that can be substituted by more than one object, and still work fine even if the slot is empty, and if they want to replace an object in a slot with another, they can easily do so with a single action.
    • A 'hierarchy' window that can be used for both assembling containers and sorting z-order, similar to Unity. That would actually be fairly convenient.
    • In events, if two of the same objects do something with each other, be able to distinguish between "Object A" and "Object B", and the groups of objects that they contain. For example, if Object A collides with Object B at a high enough velocity, do damage to Object B, and so on.
  • Wow, I'm gobsmacked! I didn't expect to see something amazing like this. I hope it gets greenlit, because I really want to play this.

  • So, this is what I've been working on lately. And now it's on show at SAGE!

    You can get most of the details on the SAGE page, but right now, I'm looking for an artist/animator, preferably someone who can use Spriter. This thing is also part of a larger effort to build an engine for more original efforts, so whoever is interested, we might be able to do something along those lines as well. We'll see.

    But for now, enjoy the demo.

  • Well, a couple of builds have passed, and no sign of this feature, but I'm holding out hope.

    Though, I suppose making changes to the HUD over multiple layouts hopefully isn't gonna be a big hassle as long as I know what I'm doing.

  • So, I tried merging the Player_Stats, Input and Platformer objects into a single object, and much to my surprise, the end result works... Sort of. Apologies to jayderyu, I was mistaken. I guess I can work with a more bloated set of variables in exchange for better functionality.

    Here's how I have it now:

    <img src="https://dl.dropboxusercontent.com/u/919275/MultiPurposePlat/Screenshots/NewEvents.png" border="0" />

    (Alternatively, the "for each skin" events are packaged with its own seperate "for each MultiPlayer" loop, rather than being sub-events, they seems to work the same either way)

    While, for some reason Agumon works perfectly when there's two or more of them, Renamon and Gabumon, when there is duplicates, results in, well, complications. Neither Renamon or Gabumon can turn around, and Gabumon's attacks, depending on the target, can cause unrelated players to be damaged.

    Well, I think I might be able to fix this by duplicating Agumon's events and modifying them to accommodate Renamon and Gabumon to see if that solves the problem, but I'm not sure. We'll see. Either way, the current solution does work better for 'duplicate characters' when it comes to just one particular character, it seems.

  • I really don't see how that would remotely help at all, unless you're suggesting merging the Player, Input and Character objects completely. Which, aside from this resulting in a ridiculous amount of variable bloat for each object, I still don't see how it would help much, since you still have to deal with the skins.

    Edit: Actually, you know what? I'll give it a shot, and hope it works. We'll see.

  • I had an older topic about this engine, but I think I might as well start a new one, considering it's been a couple of months.

    For context: I have a modular platform engine with multiplayer functionality that can incorporate any number of characters who can interact with each other, using a linked series of objects, starting with two objects for a Player, and a second object to handle that player's controls, enabling customization for controls. The second set of objects is the actual player character and the 'skin' that visually represents that character, both objects are also assigned to families. To make this work, 'for each' loops are used to link the Platform object with the right input object. Certain events that can't go in this specific loop, such as trigger events, go in a separate set of sub-events.

    Well, here's my problem - while this is all fine and dandy when every player character is unique, but if there are two players with the same character, then there are inevitable conflicts. Player 1 will control just fine, but Player 2 will not only control slightly differently, but also hang up at the end of certain animations, which are supposed to transition back to the "main" action. Note that the problem areas are triggers.

    Now, the big question is, how do I get both players to work exactly the same without having to create a whole bunch of new events to work around the triggers?

    .capx here, of the stripped-down version of my engine with just one character with two players, for simplicity. Requires r159, Personal/Business Edition.

    Controls:

    Player 1: WASD for movement, hold Shift for running, mouse buttons for attacking.

    Player 2: Arrow keys for movement, JKL; keys for jumping, basic attack and running, and control for secondary attack.

    Sorry about the lack of comments in the events, but hopefully you'll be able to get a good idea of what I'm trying to do with them.

  • Link to .capx file (required! If link is blocked remove the http and www parts):

    dl.dropboxusercontent.com/u/919275/C2%20Caps/TilemapXRenderIssue.capx

    Steps to reproduce:

    1. Look at the bits that are rendering improperly, for starters.

    2. Set 'Tile X offset' to -2.

    3. Observe issues with tiles completely changing and issues with tiles on the left edge of the tilemap during runtime.

    Observed result:

    In the shot below, you see certain tiles 'bleeding in' to the tiles that are on the left. Note that this is a 32*32 tilemap that is arranged properly. In the tilemap editor, the selection box even covers the bits of the tilemap that it shouldn't cover.

    <img src="https://dl.dropboxusercontent.com/u/919275/C2%20Caps/TileRenderShot.png" border="0" />

    When the tile offset is adjusted to compensate, this causes 'gaps' between tiles on the left side of the tileset and the tiles they're next to, and it completely scrambles the tileset for no particular reason.

    With offset on a negative value, Firefox and IE gets a javascript error:

    "Javascript error!

    IndexSizeError: Index or size is negative or greater than the allowed amount

    localhost/Tilemap_plugin.js, line 315 (col undefined)

    This is either a bug in Construct 2 or a problem in a third party plugin or behavior - please report it to the developer!"

    Expected result:

    The tilemap not rendering the tiles improperly, really. Also, no javascript error.

    Browsers affected:

    Chrome: Yes

    Firefox: Yes

    Internet Explorer: Yes

    Operating system & service pack:

    Windows 8.1 64bit

    Construct 2 version:

        158.2

  • Nice to know my modest proposal has support. We'll wait and see whether Ashley will implement it.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Well, yeah, inheritance would be kind of a given in order to enable ordering, but it's probably not really a problem.

    While having global objects appear on layers by name rather than number would be great, you still have to start another layout to initialize everything when you just want to test stuff, which is annoying. I'd like to at /least/ be able to immediately be able to test stuff and let the engine initialize stuff for me.

  • I think this one speaks for itself. Remember the 'inherited layers' feature from Classic? There are methods of replicating this sort of thing using global objects, but it requires setting up a whole bunch of layers in a certain order for ALL layouts, which can be a pain, and can be time-consuming for testing. I'd much prefer an in-built feature that lets you set up 'global layers' that are loaded on startup, are kept around when changing layouts, and ordering can be sorted on a layout-by-layout basis.

    It would certainly make everyone's lives a whole lot easier, I think.

  • Yeah, remember when I said that the gun sprite was duplicated? Turns out that's a problem with Spriter itself, as the gun sprite in some animations has a different name than what it should be, causing unnecessary replication, and Spriter refuses to let me rename it correctly, instead adding a "_000" or some other number at the end.

    Also, with the latest versions of C2, the plugin and Spriter, the spriter animations simply don't appear in C2, despite all the settings being correct. Here's the cap I'm using to test it.

    As well, I might've missed this earlier in the topic, but to update a spriter file, you have to SCML File property to the .scml file otherwise it won't work if it's set to the .scon file.

    I really hope we'll see an update with fixes to these and the implementation of char maps, as well.