C3 Architect Request list

  • Animmaniac Great list hopefully these are the type of features C3 adds or enables us to make yourself

  • Try Construct 3

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

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

    Like a dummy object, but I would add the ability to import an object at runtime.

    Maybe not dummy but more like a component.

    As for the import at runtime... Yeah. It depends of the C3 workflow (?) really, and I can think of only two possibilities:

    1. You could make components made of previously defined objects - in this case this would be like a container, that holds included objects - So you can add to layout just the plain sprites or components (sprite1+sprite2+tiled background for example)

    2. Component is just an empty name/place/thing and everything you want to add to the layout is made of whats inside of current component. You can't add a plain sprite to the scene, because by itself it's doing nothing. But instead you need to add a component - which contains: sprite, collision, behavior - and this makes an object complete and ready to use

    Either way if that kind of control be possible in C3 than "wow".

  • newt

    I like that suggestion. That's one of things about IDE control that I would like non Scirra developers able to do. IDE plugins.

    Animmaniac, shinkan

    We are soooo much on the same page. Much of the document that I'm writing is trying to tackle those issues. Not in a way that Ashley needs to re-write everything. but in a core way that those requests can be done. Either by Ashley or someone else.

    I have SceneGraph Object to be minimalist for such a use, and Behaviour drawing so that Sprite rendering can be done from a behaviour. I also listed behaviours and plugins to be able to draw and manipulate widgets.... so yeah. I think we are soooo much on the same page. However I can put most if not all in either as sample use or engine feature that I have overlooked. I also added Quadtree collision and Circle and Box collision objects.

    Great list, some covered. but good examples. Some need to be written up as they own section. Some are harder and I think will be added to a Wishlist. I would love Editime operations in a field, but I don't even see that in Unity . However I do see that in JavaFX.

    Keep them coming and please feel free to edit the document if any of you feel any part can be written better. I know I sure take no pride in my grammar.

  • Animmaniac jayderyu Nice.

    My additional suggestions, also those I remembered throughout the years:

    • Disable Solid between selected objects only
    • Solid behavior to work with movements behaviors
    • Platform pathfinding
    • Possibility of saving Array state in game/preview and then being able to view that saved table trough visual editor
    • Array import form external file ( like csv, excel table )
    • Option to display Array in the layout and in the runtime
    • Proper Audio Browser, with insert sound that will automatically create audio tag
    • Menu creator that lets create in game menu's easiliy
    • Option to set keybinds and change resolution in game by default
    • Support for In's, Main's and Out's for animations
    • Pick n nearest/furthest objects ( fopr example "Pick 3 nearest" )
    • Curve editors to supplement math, or some sort of default math to help those who don't really know how to do it well ( like doing a cigar shape pattern etc)
    • Load layout from external file at runtime and in ide
    • Simplified controller plugin ( especially for the sticks, just use degrees and then number )
    • Looping layout
    • Streamlined parallax editing
    • Pick object by TAG
    • SVN support
  • I'll die a happy man if Spriter can have a dedicated interface within C2, less plug-in, more bolt-on. Thoughts lucid?.

    Definitely. There's a few requests I have for the plugin system (and it seems from the blog post Ashley is thinking in this direction already). I'll go ahead and respond to thread topic as well, with general requests for c3.

    I don't have time at the moment to read back through the thread so I apologize if I'm rehashing anything.

    capx based edit-time ui creation

    I would like for the edit-time ui programming to be a alot more like runtime programming and eventing. You could include in the plugin directory something like a small limited capx that serves as the ui for your plugin when double clicked or hovered or whatever you set in the edittime. For instance, you could make a capx that has drag and droppable sprites, dials, combobox boxes, etc. There could be an editor ui plugin or system actions that let you set values that can be passed to the edittime of the plugin. Same thing for plugin input parameters. It'd be cool to be able to create an interactive ui for ACE parameters using a capx. You could make it so users could input your color parameters with a color picker, and some numeric values with sliders, dials, spinboxes, etc, instead of typing.

    But the real power would come from being able to combine several parameters within a single control. You could make a mini-capx that creates a visual speed (easing) curve editor that sets each control point and curve parameter, or see a preview of an animation at the time you're sliding to between 0 and animation length, or anything else you could create in C3 for game use, would be useable in the parameter input ui. You could make particles show an animated preview using the parameters you're setting with sliders, or a scrolling background showing you the speed that you're setting with an 8 direction behavior.

    To avoid plugin UIs becoming too huge and bogging down the editor, there could be a simple restriction that you can only use a shared set of useful ui images for sprites, like triangles, dots, and all ui element type plugins, any images from the current project, and maybe a super small allowance for custom ui images. Maybe it could have a file-size or event limit as well, so they can either be loaded quickly or stored in ram. I believe Ashley mentioned in the blog the idea of being able to make plugins out of events, so if something like this was implemented, it'd make sense to give these same abilities to event sheet based plugins.

    plugin access to create lists like the animation name or function name list

    This might already be possible, but it would be good to be able to add to a combo_box or autocompletion list at edit-time, so for the Spriter plugin for instance, you'd be able to choose animations, entities, character maps, etc from a drop-down list.

    additional variable types

    Some of this could be made into plugins and behaviors for C2, but it would be a lot cleaner if it were built in. I'd like there to be dictionaries and arrays as regular variable types for object private variables and global variables. I'd also like to see objects as variable types, and any combination of the above, like a dictionary of arrays of objects as a private variable to another object.

    new function object and variable objects

    I'd like a function object that can take objects as parameters as well, and a special 'variable object' that you use a proxy to objects used as parameters or variable objects called into it. They would have all the commands that are common to many objects like create, destroy, set width, height, scale, angle, x, y, etc. You could then use this object as a proxy for the object using all the associated actions, conditions, and expressions are. The function object (and may even the global and private object variables) could also specify a specific object type, so you could make a parameter specifically for "sprite" or "particle" types, and then only those would be valid as parameters. In these situations you would get a variable object of that specific type and have access to all of it's functions even though you weren't sure which specific 'sprite' or 'particle' object type you were dealing with. Variable objects could also have set private variable by name, and if the object had a variable by that name it would be set.

    behavior universal data sharing

    For behaviors, I think it would be extremely useful if there was a concept of universal data sharing. Let's take the 8 direction behavior, the platform behavior, and the physics behavior, which all have the action setVelocityX, and an expression called velocityX (or something similar). Of course, any plugin could ignore the universal settings and keep their own local copies if needed, but each plugin would have access to a setGlobalVelocityX (always pixels per second), and getGlobalVelocityX, and others for rotation speed, etc. Now if you move a sprite with 8 direction behavior, physics behavior knows it's moving at that speed, and behaves accordingly, and vice versa. Or if you want to switch from platform behavior to 8 behavior on a certain event, when you switch over control it will automatically set it's velocity. As an alternative to the functions like setVelocityX, etc, you could just set the behavior to participate or ignore each value, and it would automatically make the velocity calls by checking the x, y, angle, etc, each tick and using those to determine velocity. I also like the idea of being able to set whether to update those values when you use common world object commands like setX or setAngle, so if you manually control your character with commands like setX or angle, the object will have appropriate momentum with any plugins. This universal data sharing for behaviors would also work well with the variable object concept, as you could also have a universal set of commands that could do something similar to all behaviors.

    more granular SOL access and object picking

    I'd also like to see some additional picking features, like splitting up a single object type into multiple selections, that you could call by a custom tag or index. One example usage would be having an array of objects, all with physics behavior and you want to make a rope bridge. You could just run a loop and say plank[loopindex] create hinge to plank[loopindex+1]. Or if you had a function with the object parameters "attacker" and "defender", then you could access two of the new Variable type object and be able to easily refer to one or the other in any actions, conditions, and parameters. For example, you could say : Set VarObject[attacker] position to VarObject[defender].x, VarObject[defender].y

  • lucid

    Thanks for the wonderful write up. I added it to the document. Either as new features or to just re-inforce why certain featured. Very well written. Thanks

  • I have a single one:

    For....

    in C2 you can state start and end number.. For 0 to 10..

    I miss the Step (with default setting at 1)! Where you can type +2 so it will count up 0 2 4 6 8 10..

    or For 10 to 1, step -1 then it will go backward 10 9 8 7....

    YES it is possible to add more event lines to make it go the way you like, but it would be better to make it simpler!

    The "Step" I am referencing to is from my experience with basic.

  • lucid

    It's cool, to integrate capx file into IDE, i.e. gui controller (plugin) in event sheet which could be loaded into editor.

    So users could have their custom C3 gui interface.

    Event sheets are composed by events and plugins, and any plugin might composed by other plugins and some events. Run at edittime (editor) and runtime (application).

    Or editor is just another kind of runtime.

  • 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.
  • +1 to everything in this thread.

  • I love these kind of topics, it really shows the power of a great community (whitch is a result of Scirra treating it's users really well).

    I agree with the ideas before this post, and I'd only like to add one little thing (I guess it will be possible with the customizable editor):

    • Dark GUI for the whole editor to make it easier for the eyes during longer developments.
  • That's an excellent discussion guys! I can't bring anything really useful that hasn't been said already, but I would like to second the work you're doing!

  • Candescence

    Hey thanks for the suggestions. Seems farther down the road of suggestions there is less to put into the document. These suggestions are great, because I get to look at them and think. Can the document suggestions currently support this idea... yes, great just add it as a sample. No... hmmm what does it need.

    As an example

    AI Platforming: You could use the current AI for finding paths and then navigate them yourself. however I find that the A* used as it is now; Is more for object avoidance. Where as platforming AI would be based on following a predefined path. I wrote a NodePath for this reason. However and this is the important part. I found when I wanted to make it a Behaviour. I had a serious lack of visual tools. Such as being able to create the visual pathing in the level. So right now it's kinda a hit/miss. Can it be made. yes, can it be made easy for people to use. No

    Object Picking and Prefabs

    Yep. Same problem. I put it in the architect list that Objects can be referenced directly, saved and used later rather than having to pick every time. Even lucid posted about more granular SOL picking. I also added prefabs to the doc.

    However. Unity2d system does not use Object Hiearchy as part of layering. Unity 3d did as a model of forced 2d. However the "new" SpriteRenderer class has sprite sort level which now handles that. So it doesn't matter where SpriteRenderer is in the object heirarch anymore. It's sort level.

    As for child dummies. I added a SceneGraph Object to base where most extra features of SceneGraph are all based on behaviours rather than being their own plugin. That way you enhance a GameObject with Sprite Render rather than everything being there own object.

  • Here's few more:

    • Ladder object ( don't know if it's poss in c2 currently ), and some sort of way to easily make top down platforms to make paths for players, instead of need to build "walls".
    • Properties column should have some tabs for Project and current layout preferences. Currently need to select "Projects" tab from right col, the scroll to the top to select main folder in order to display Project properties, and hen swipe mouse across the screen is cumbersome.
  • Here's one that probably all of us have forgotten already:

    Create object by name

    And few more:

    • scale, offset, rotate, tile (on/off) object texture (per instance would be really neat!)
    • import few textures for one object (diffuse, normal, mask... in example)

    If C3 would get this prefab/gameobject/component/dummy thing (would be nice if we could make up some proper name to use xD) and some interaction be possible in editor (something like events that run in editor not the runtime *) then some kind of helper object would be nice. Just an object that can have position and some variables to hold.

    *this would be really great for things like:

    You want to make a grid of objects that is based on two variables GridWidth and GridHeight. So instead of making events and preview the game every 5 seconds to tweak your grid, You could only change these variables in editor and the grid will be created in editor based on these variables.

    It's hard to explain for me (non english person) But closest to it would be something like "Exposed variables" from UE4.

Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)