Hi all
Have been very excited about trying out C3 as a lot of others might have been. Since im a long time user of C2 and through the years have experienced my share of problems, bugs and general things I would have liked to see improved in C2, these will make the case for which I will judge C3 against.
Its important to make clear that these are my own personal things that I find crucial in regards to C3 and therefore might not be equally shared amongst others as being relevant or of any importance. But these will be heavily deciding factors for why or why not I would consider buying C3. Now some tests weren't possible as the Demo didn't allow it and I will make that clear.
For some time ago, I started a thread in the general section with ideas and suggestions of how to improve C2, since I have kept adding stuff to this thread as well as other people, I will use these as my check list, I haven't checked anyone else suggestions in that thread, so those I test against are those added by me.
All the original suggestions will be written in black and red will be used for things not working or that ain't possible, and green for those that have been added, orange will be used for those that I weren't able to test as the demo didn't allow it. (This will be a rather long post)
In the end you will find my first impression of C3.
------
Video
Frame rate - Would be great if you could get the frame rate of the video.
Not possible
Number of frames - Self explanatory, but the number of frames in the video.
Not possible
Format - there are other ways to get this, but would be handy if you could just get the format through a variable (Less important).
Not possible
Check vs Frame rate / Playbacktime - For some reason there are no way to check vs this.
Not possible
Play at FPS - Play a video at a certain fps, so you can make slow motion and fast forward.
Not possible
File chooser
Path - There are no way to get the path to a file on local disk. Which is strange since you can get the filename.
Not possible
NWjs
Filename - Opposite the File chooser object you can get the path including the filename, but there are no way as far as I can see that you can get just the filename.
Uncertain as I can't get any of the NWjs functionality to work.
Sprite
Add frame - Add a blank frame to a sprite
Not possible
Delete frame - Delete frame at index
Not possible
Insert frame - Insert frame at index
Not possible
Replace frame - Replace frame at index
Not possible
Fill frame - Fill frame with a certain color at index
Not possible
Erase frame - Erase frame at index
Not possible
Video
Missing expression checks - Even though you can check whether a video object is in a current state such as muted, paused etc as an event. These options seems to not be available as expressions in the video section. If you use a "Compare two variables" it would make sense that these were also there, since its actually possible to check vs them as events. At the moment only 3 are available (Duration, PlaybackTime, Volume) so if (Has ended, Is muted, Is paused, Is playing) were there as well it would be nice.
Not possible
Source - Would be nice if you could get the source. Both filename and path to the file. And if there are no source it could just return -1
Not possible
NWjs & Video & File chooser
Syntax consistency - Depending on what functionality you are using, there seem to be different syntax for how you work with files, which is really annoying to say the least. For instant using the NWjs.Userfolder will return the following: "\User\<Name>\"
However setting the source for a video require the exact path "C:\Movie.webm". Which you can get using the open dialog in NWjs, but that require user interaction. Since there are no functionality that allow you to get just the drive letter, filename, or just the path to a location makes working with files a living hell to say the least, and this changes completely depending on what functionality you use.
It is suggested in the C2 manual that you should use the User folder due to permissions, so it would make sense if all the file interactions also worked in a consisting manner, so you don't have to create a different workaround for each function depending on which one you use. Being able to get the drive letter of where a folder or file exist would be very useful. Basically just divided, into the separate parts that follows what you would expect when working with files on a computer. (Drive, folder, File).
Not possible
NWjs & Debugger
Incompatible - While running your project in debug mode its not possible to open any NWjs dialog boxes. Might be considered a bug, but regardless, it would be nice if the debugger and NWjs were compatible.
Uncertain as Nwjs doesnt seem to work
NWjs
Expanding triggers - Would be very useful I think if the following triggers could be added to NWjs.
On file being copied - Trigger when a file is currently being copied. Would be useful for making copy file progress bars.
Not possible
On file copied - Trigger when a file have completed being copied.
Not possible
On file deleted - Trigger after a file have been erased.
Not possible
On file moved - Trigger after a file have been moved.
Not possible
On file being moved - Same as "On file being copied" would be handy for progress bars.
Not possible
C2 General
On exit program - Would trigger when your program is closing. Could be used for saving progress etc.
Not possible
NWjs
Delete folder - For some reason its possible to delete a file, but not a folder. So would be nice If that was possible as well.
Not possible
NWjs
On folder dialog Cancel - Inverse version of "On folder dialog OK"
Working, but was already fixed in C2
On dialog Cancel - Inverse version of "On dialog OK"
Working, but was already fixed in C2
On save dialog Cancel - Inverse version of "On save dialog OK"
Working, but was already fixed in C2
General
Get layer background color - Possible to get the RGB values of a layer"
In general it would be nice if all things in C2 was made in a way, that if you can set a value then you can also get it.
Not possible and it doesnt seem that C3 improves any when it comes to setting or getting variables, its pretty much what you have in C2 some you can and some for whatever reason is unavailable.
Path finding
Change nodes - Possible to change individual node locations when a path have been found, so its possible to manipulate the path before an object moves along it.
Not possible
Audio
Tag property - Possibility to get the tag of an audio file when its playing, ended etc.
Not possible
Any tag ended - Trigger when any audio tag is ended.
Not possible
Form controls
Tab index - Using form controls (Textbox, Buttons, etc) there seem to be no way to set/change the tab index to navigate them. Would be nice if you could specify it in the properties panel.
Not possible
Text objects
Auto size - Would be useful if you could turn on auto size for text objects. So they would automatically adjust to the size of the written text.
Not possible
Change text align during runtime - For some reason its not possible to change this, even though it can be done in design mode.
Not possible
Use background - Make it possible to add a background to an text object and change it color and opacity. There is a plugin capable of doing that, so thought it would be a good idea to just add to the default one.
Not possible
General
Enable/Disable Objects - Should apply to all objects.
An option to enable or disable any object in the properties window and through an action. Object that are disabled would appear as if they were destroyed, without actually being so. The benefit of having an option like this would be to quickly disable and enable objects that you would otherwise have to move off screen. Would be useful for stuff like HUDs or sprites where visibility for instant have been turned off, but are still reacting to mouse inputs like "Mouse over effects" and so forth. And so you would avoid having to reposition objects all the time etc.
Not possible
DragDrop behaviour
Axes angle constrain
The option to choose to constrain the axes to the angle of the object using the dragdrop behaviour. At the moment if you have a sprite and you apply the dragdrop behaviour and want it to only allow dragging along the length of the sprite you can change it to horizontal. But the moment you change the angle of the sprite the constrain doesn't follow along. So being able to change the axes constrain so it always follow the angle of the parent would be very useful.
Not possible
Form objects
On focus - When a form control gets focus this will trigger true.
Not possible
On focus lost - When a form control looses focus this will trigger true.
Not possible
Has focus - When a form control has focus this will trigger true.
Not possible
This is inspired by a 3rd party plugin capable of doing this, so thought it would be good to add so its part of the standard form controls, since its possible.
Collision object
This is not a functionality in C2, so its more of a suggestion.
The idea is to be able to add an empty invisible collision object instead of having to use sprites, which is the normal way of doing it now as far as I know. But doing this uses a lot of memory for no good reason. So what this object would do, is to make it possible to specify an area kind of the same way you would set up a collision mesh on a sprite, but this would be done in the layout, instead of in the graphic editor. The object would work in the same way as a sprite would when it comes to collision detection, but wouldn't be able to hold any form of graphical information, thereby making it possible to use more complicated collision solutions that wouldn't eat up memory for storing empty sprites.
So basically the object simply keep track of a collision mesh, maybe with the ability to manipulate it at runtime and whatever other functionality could be found useful.
Not possible
Rotate objects
The general idea is to extend the rotation of objects. As it is now they rotate around there origin. So adding two new options could be very useful, I think.
Rotate around imagepoint - Instead of rotating around origin, you can choose whatever imagepoint on the object you like and it will rotate around that point. (Could maybe just replace the normal one, as it does exactly the same. And the origin could just be set by default.)
Not possible
Rotate around position - Same as above except you can specify a X,Y position and the rotation will happen around this point.
Not possible
Screen resolution
A way to get more control over the resolution when the "Fullscreen in browser" settings doesn't cut it.
Get screen resolution - The ability to get the screen resolution set in windows/OSX.
Not possible
Set screen resolution - The functionality to change screen resolution to suit what you need. Like you can in pretty much any modern computer game today.
Not possible
On screen resolution change fail - Will trigger if the change fails.
Not possible
On screen resolution change done - Opposite of when it fails, will trigger when the resolution have changed successful.
Not possible
Form controls
Disable tab - Will exclude a form control from appearing in the tab index list so it can't get focus.
Not possible
Delete object warning
This is an improvement or extension to the warning that you get when you want to remove an object from your project. Normally when you do this you get a warning telling you that it will remove all actions, conditions and expressions related to the object. Which is really nice, however when you are working on big projects and you might not recall all the places where this object might have been used etc. The removal can cause some serious problems if you are not careful and normally, at least for me I keep an eye on the number of event in the status bar to see if it changes when I remove an object and if it does I can undo and then check through the project to make sure that it wont cause problems before I do it.
What would be nice and since C2 already have to go through the project deleting the actions, conditions etc. when you press yes. Would be if it in the warning message wrote how many actions, conditions, expressions it would delete, so you would know what impact it would have.
I can't imagine that being a difficult thing as it already "scan" the program when removing it. So it could just "scan" and count the elements without deleting them before pressing yes.
Just a small extension that I think would be handy.
Not possible
Support for multiple aspect ratios
The fullscreen in browser settings are really nice when you want your game to support several resolutions. However a huge limitation occur when you want to support multiple aspect ratios.
For instant the most common used ratios are 16:9 (1680x1050) and 16:10 (1920x1080), however there are no way, as far as I can see that you can make your program support both of these correctly when using "Request fullscreen in browser". And regardless of which method you use (Scale outer or letterbox scale) you are left with black bars either in the top and bottom using letterbox scale or only bottom using Scale outer. Since C2 can already support a single aspect ratio, extending this to be able to support multiple ratios would be a huge improvement I think.
As an extension to the former suggestions regarding "Screen resolution", it would be nice with the following.
Get system aspect ratio - Would return the aspect ratio of the system.
Not possible
Extend the fullscreen browser methods - The ability to tell C2 to target specific aspect ratios, so instead of just "letterbox scale" it would be "letterbox scale - (16:10)", "letterbox scale - (16:9)" and so forth. These methods should also be available in the browser object when requesting fullscreen mode.
Not possible
Bound to layout behaviour update
The bound to layout is a quick way to keep objects within boundary limits. However this behaviour runs into problems if objects that fits the layout are suddenly rotated. In this case the object will start flickering as it tries to stay within the layout. So a minor update to this behaviour could fix it.
Not possible
Fit to layout - When this is turned on, an object will automatically scale to fit the layout in case it becomes to big.
Not possible
Timer behaviour
Adding a few extensions to this behaviour would make it more complete and easier to work with.
Stop all - Would allow you to stop all timers running for an object, regardless of the tag.
Not possible
Pause timer - Would allow you to pause a timer using its tag.
Not possible
Pause all - Same as above but would just pause all timers regardless of tag.
Not possible
Resume timer - Would allow you to resume a paused timer using its tag.
Not possible
Resume all - Would resume all paused timers for the object.
Not possible
Textbox form control
Some of the 3rd party textbox plugins have a select all functionality, so thought it would be handy to integrate that as a standard functionality to the textbox object together with a deselect all.
Select all - Select all text in a textbox
Not possible
Deselect all - Deselect all text in a textbox
Not possible
NW.js dialog tags
When using NW.js "Show folder dialog", "Show open dialog", "Show save dialog" and afterwards the triggers "On folder dialog OK", "On open dialog OK", "On save dialog OK" it would be very useful I think if it were possible to set a tag for these as you can with audio.
As it is now there are no build in functionality to specify which "On ... Ok" will trigger if you use several of them. You can and have to do this using manual variables, but would be handy to simply make it a standard option in the NW.js functionality, I think.
Not possible
Quick navigating functions
This was an old suggestion made, that I still believe would be one of the most useful features in C2. So ill add it here for that reason.
The ability to Ctrl + Click (or whatever hotkey is useful) a function call to quickly jump to the where the function is declared.
Not possible
Reset object variables
The ability to reset an object variables to their default values. Would be very helpful when working with for instant sprites that contain a lot of temporary variables for tracking things, state machines and so forth. Rather than having to do this per variable.
Reset variables - Will reset all variables added to an object to the value they were by default.
Not possible
Smart family
This is not a feature in C2 so should be considered a feature suggestion maybe for C3.
This is basically a normal family, except that it will allow any combination of object to be part of it. An issue with the normal families is if you have features in your program that need to be the same for varies types of object then there are no other way than to duplicate code for each type.
How the smart family would work is to check for similarities between the objects added to the family and only those which are shared by family members would be available. Since for instant UID is available for all objects, it could be used, whereas something like "Angle" might not be, and therefore it won't be available.
Uncertain as families are not available in the free edition
Delete several local object variables at the same time
Currently you are only able to delete one variable added to an object at the time, would be handy if you could select several of them and delete them in one go.
Not possible
Move several objects
I know this have been suggested a lot of times before, but ill add here as well.
The ability to select and move several objects at once in the projects window.
Uncertain as you cant create folders in the free edition. But you can select several objects in the list so assume it works.
Automatic update of function calls
Currently when you have defined a function and later on might realize that you should have called it something else, you have to manually go through the code to find all the places where you call this function from. Would be useful if C2 could automatically do this as it does with any other object when you change their name.
Not possible
Auto/manual sorting of the list object
Would be nice if there were a property for making a list auto sort or to manually do it. This could be either a property you could turn on for the list it self in the properties panel or as an action that you could call in your code.
Action:
Sort list - Would sort the list using a basic sorting method. So "a" would be before "b" and numbers would be before letters etc. Could be expanded so you would be able to use tokenat to customize which parameter of an entry text should be used for the sorting method.
Not possible
Is between value picking
This is just a minor thing, but it would make sense if the "system -> Is between values" were also available as a picking condition for objects.
Since you can pick objects based on variable values, it would be nice if this were also a possibility without having to use other picking conditions.
Not possible
Random setting of Boolean
Yet a minor addition that would be handy I think. At the moment you have the ability to Set a Boolean variable to either True, False. But in cases where it should be random, its easier to use an integer. So adding a new action could solve this.
Action:
Random Boolean - Would set the Boolean to either true or false.
Not possible
Tilemap Set/Get rotation state
You can set the desired rotation state of tiles in a tilemap. However there is from what I can see no way to receive this rotation.
This causes problems when you switch one tile with another and want to keep the rotation of the original tile.
So a nice addition would be to get maybe a numeric value indicating which rotational state a tile is in. Could be a 0 based index, that way it would make it easier to set a new state for a tile during runtime.
Action:
Get tile state - Returns an index telling which state is currently active.
Not possible
Set tile state - The ability to pass an index to a tile at a given tile position and tell it to change state.
Not possible
On variable changed trigger
This is just a suggestion of a feature that I think might be pretty handy.
At the moment you can check a variable against varies values by manually adding these. However think it would be very useful if you had the possibility to create an event condition that would trigger whenever a specific variable changes.
It could work with both global and object variables so when you add the trigger, you get a drop down list where you can select which variable you want the event to monitor for changes.
Conditions:
On variable changed - Trigger whenever the chosen variable changes value.
Not possible
--------------------------------------------------
Last and not least.
Path finding
This have not been working correctly for a long time in C2, so I was very interested in testing that out to see if it have been fixed. And to my big surprise it seems to have been made exactly the same way as in C2 and still only uses one collision map, which means its no better than before.
Is this really the case, you redesign C2 to make it better, well aware that this feature is not working correctly, but you implement it the same way regardless, would it be possible to get an explanation why that is the case or whether you plan on fixing it or what exactly is going on, because it makes very little sense, at least to me?
My first impression of C3
Having tried C3 and testing all these things out and I know its just a Beta still, I have to say that at least for me personally, I find no reason to why I would like to buy it over C2 in its current state.
As stated in a former post im not a fan of working in a browser, however I think C3 does a decent job there, its not as bad as I thought, everything seems a bit more cramped, as you now have the browser navigation panel in the top as well, which causes you to loose a bit of screen space. However that is not crucial in itself, if that were the only problem. However quickly having scrolled through my list above, none of the issues seems to have been improved and again I want to underline that this is my personal view!! and even to me there is a difference in how important I find the above suggestions.
So to me some of the crucial ones:
Path finding that haven't been fixed from what i can see
This alone is enough for me to completely write off C3 as a whole, there are no excuse that i can come up with that would justify why I would get C3 anyway. This is a known problem by Scirra and have been a long time, even before C3 was announced as far as I remember.
If you can Set something you should be able to get it
Again absolutely crucial, its so annoying that you can manipulate and set some variables and state of things, but no way to test or receive them again. This as well is enough for me to not wanting to invest in C3.
Delete image from memory
I haven't actually added this above, but the lack of functionality to manually delete an image from memory is the last crucial thing for me. That this possibility shouldn't be there to save on bandwidth is just not a good enough excuse. Its a fair point, but this should be decided by the developer of the game and not Scirra in my opinion.
So adding everything together, my first impression of C3 is that its C2 in a browser, very few features that I personally would consider important seem to have been added and when i say important, I refer to workflow, C3 doesn't seem to offer anything in regards of reducing the amount of workarounds that you have to do in C2 to make certain things work. The lack of very basic functionality, like changing alignment of text during runtime are still missing which are features that have been available through 3 party plugins for a very long time, why isn't stuff like that added by default in C3, all these things put together it just make me wonder, what is the purpose of C3, what does it actually offer? Maybe these things will be added in time. Who knows, but at this very moment C3 have nothing to offer me over C2.
Now is this a rant, because they seem to have added none of my suggestions in that post?
I still love C2 and working with it and if C3 had been C2 I would have loved that, except that it ran in a browser. But I can still make stuff in C2 and good stuff, so the above might as well be seen as me having a go at C2, my problem is that the difference between these two in terms of features that are important to me, are close to none existing, which will cause me to rant a bit. Not because they didn't add any of my suggestions, but because as any long time user of this forum knows there have been a trillion suggestions to C2, some more advanced than others, but yet even the most basic suggestions from above, which might not even have been suggested by me in the first place, since I just decided to add all mine in a single post as I noticed them, seems to have made it into C3. I would understand huge and really demanding features, that it would be a lot of work adding them all, but a lot of those above isn't, they are basic functionalities that you would expect in any such program in my opinion. When you work with text and you can change alignment during development and 3 party plugin developers have already done it so you can change it during runtime, then this is what you would expect to be the new standard for a new version of construct, but it just isn't. Everything under the hood seem to be C2 in a browser and that is what disappoint me.