Beta versions are not as thoroughly tested as stable

Beta versions are not as thoroughly tested as stable

Beta branch

Construct 3 r321

Tiled background tile randomization; increase free edition scripting limits; new script APIs & more

06 December, 2022 ()

Email Me New Releases

Don't miss out on the latest and greatest new features in Construct 3

Notes

This release introduces a useful new feature for Tiled Background! Tile randomization is a new option you can enable that will randomly offset and rotate each tile, while blending the edges to keep a seamless appearance. With the right art style this is a great way to break up repetitive tiling. This option is built-in to the Tiled Background object, and a similar result can be achieved for other kinds of content with the new 'Randomize tiling' effect.

We're also pleased to increase the free edition scripting limits! Previously you could only go up to 75 lines of code (50 as a guest) with the free edition, with further limits on the number of script files and scripts in event sheets. We're now increasing this to 500 lines of code in the project (250 as a guest) with no other limits on number of script files or scripts in event sheets. Construct now has fantastic support for coding which is highly competitive with other tools, and we're excited to allow more people to try out the impressive features and performance of JavaScript coding in Construct with the increased free edition limits.

Other updates include a wide range of new script APIs to set or get pairs of values at once for convenience. For example as well as setting and getting the X and Y positions of instances individually, you can now also use setPosition() and getPosition() to set and get both at the same time. There are also some new options for timelines, tweens and the Animations Editor. The Properties Bar can now autocomplete string instance variable values in a similar way as when typing expressions. And as ever there are some bug fixes.

Last but not least, developers interested in writing custom effects can now write WebGL 2 variants of their shaders, as well as making use of some new WebGL 1 extensions. This allows taking advantage of more advanced shader features where supported. We'll be updating the effect SDK and publishing some preliminary documentation shortly to help developers get started with that.

Like this Release?

Let us know with a thumbs up!

UpvoteUpvote 41 DownvoteDownvote
Launch r321

Changelog iconNew Features

Not favoritedFavorited Favorited 21 favourites
Tiled Background: tile randomization option to break up repetitive appearance

Changelog iconNew Additions

Not favoritedFavorited Favorited 8 favourites
Timelines: option to change Sprite animations via 'Initial animation' property
Not favoritedFavorited Favorited 8 favourites
Tween behaviour: add 'Repeat count' option
Not favoritedFavorited Favorited 8 favourites
Animations editor: option to resize all animations in an object type
Not favoritedFavorited Favorited 15 favourites
New 'Randomize tiling' effect
Not favoritedFavorited Favorited 4 favourites
Project statistics dialog: add total lines of JavaScript code
Not favoritedFavorited Favorited 4 favourites
Account dialog: add allowed lines of JavaScript code when using free edition
Not favoritedFavorited Favorited 14 favourites
Properties Bar: suggest string instance variable property values (similar to expression autocomplete)

Changelog iconChanges

Not favoritedFavorited Favorited 11 favourites
Increase free edition scripting limits to 250 total lines of code in project for guests, or 500 if logged in, with no other restrictions
Not favoritedFavorited Favorited 10 favourites
Layout view: don't show polygons of Sprite instances with disabled collisions

Changelog iconBug Fixes

Not favoritedFavorited Favorited 5 favourites
Event sheet view: could incorrectly leave behind references to deleted objects if used with a call function expression
Not favoritedFavorited Favorited 5 favourites
Layout View: use project near/far distance, and set minimum/maximum zoom levels accordingly
Not favoritedFavorited Favorited 4 favourites
Expressions dictionary: did not always resize correctly on first show
Not favoritedFavorited Favorited 2 favourites
Tweens: minor error produced by some easing functions (regression r310)
Not favoritedFavorited Favorited 3 favourites
Timelines: runtime crash using 'keyframe reached' conditions (regression r319)
Not favoritedFavorited Favorited 5 favourites
Hierarchies: possible crash when saving a hierarchy that was generated at runtime
Not favoritedFavorited Favorited 4 favourites
Tilemap brush editor: crash setting tiles 45 and 47 of a 47 tile auto tiling brush (regression r320)

Changelog iconPerformance Improvements

Not favoritedFavorited Favorited 16 favourites
Somewhat improve performance of autocomplete in very large projects

Changelog iconSDK updates

Not favoritedFavorited Favorited 13 favourites
Add support for WebGL 2 shader variants for effects
Not favoritedFavorited Favorited 9 favourites
Enable WebGL 1 extensions OES_standard_derivatives and EXT_shader_texture_lod (where available)
Not favoritedFavorited Favorited 6 favourites
Add editor setting to limit editor/preview to WebGL 1, to help test shader variants
Not favoritedFavorited Favorited 6 favourites
Add effect category "tiling"

Changelog iconScripting updates

Not favoritedFavorited Favorited 5 favourites
Add ILOSBehaviorRay methods getHitPosition(), getNormal(), getReflection()
Not favoritedFavorited Favorited 5 favourites
Add setVector(), getVector() methods for 8 Direction, Car & Platform interfaces
Not favoritedFavorited Favorited 5 favourites
Add IPathfindingBehaviorInstance.nodes() iterator
Not favoritedFavorited Favorited 5 favourites
Add IAnimationFrame.getOrigin(), IImageInfo.getSize()
Not favoritedFavorited Favorited 4 favourites
Add ILayer.getScrollPosition(), ILayout.getScrollPosition()
Not favoritedFavorited Favorited 4 favourites
Add ILayout methods setSize(), getSize()
Not favoritedFavorited Favorited 4 favourites
Add IWorldInstance methods setPosition(), getPosition(), setSize(), getSize()
Not favoritedFavorited Favorited 4 favourites
Add IRuntime.getViewportSize()
Not favoritedFavorited Favorited 5 favourites
Add getImageSize() for Sprite & Tiled Background interfaces
Not favoritedFavorited Favorited 6 favourites
Add getTextSize() for Text & Sprite Font interfaces
Not favoritedFavorited Favorited 4 favourites
Add ITiledBackgroundInstance methods setImageOffset(), getImageOffset(), setImageScale(), getImageScale()
Not favoritedFavorited Favorited 4 favourites
Add ITilemapInstance methods getMapSize(), getMapDisplaySize(), getTileSize()
Not favoritedFavorited Favorited 4 favourites
Add IDrawingCanvasInstance method getSurfaceDeviceSize()
Not favoritedFavorited Favorited 5 favourites
Add "repeatCount" to the options available when starting a tween

Share Construct 3 Release r321 Now

  • 17 Comments

  • Order by
Want to leave a comment? Login or Register an account!
  • Thank you so much for the webgl effects options, this is very much appreciated. dfDy and dfDx can be so useful and performant for certain shaders! With these features, a useful new addition for effect uniforms would be arrays. For example for sending in a lot of light positions or a matrix.

  • good but, I was very disappointed, I thought the number of events had increased.

  • A feature of Construct is the event system. But you increase the number of lines of code in the free version. I don't understand it.

      • [-] [+]
      • UpvoteUpvote 0 DownvoteDownvote
      • DiegoM's avatar
      • DiegoM
      • Construct Team Construct 3 Developer
      • 0 points
      • (3 children)

      When you compare code and events, events handle a lot of the heavy lifting so you can do a lot more with a few events than what you can do with a few lines of code. In fact, a few lines of code won't get you very far.

      The free version is meant to serve as a test drive and with the previous limit to the lines of code you could use, it wasn't really good enough to try out the feature.

      • Beginners come to C3 to work without code. This distinguishes C3 from other programs. If the user knows JS enough to test it, then he has already worked in another program that does not require constant "Scripting updates". But I have no experience in promoting such programs, maybe I'm wrong.

        Load more comments (2 replies)
  • Stellar update !

    Regarding "Properties Bar: suggest string instance variable property values (similar to expression autocomplete)"

    It would be amazing if we could right click an element in the list of suggested values to open a context menu

    - Right click > Replace Value : it would allow to modify the string of the selected value (pop up menu ? or maybe it would be better and faster if the selected value cell would turn into a text input field with the value already blue-highlighted/selected)

    => It would replace the previous value with the new value everywhere it was used : both in all instance properties + in all places in eventsheet where this string value was used for this variable

    It would enhance the enum emulation aspect of this feature :)

    Later this right click context menu could be useful for other things such as :

    - Right Click > Select all instances with this string value

    - Right Click > Find all references of this string value

  • Best update!

  • I'm looking forward to see what the shader god will be able to do with the support of webGL2 shaders. Very nice!

  • Thank you for this update, it fixed the issues I had with opening project that was saved on oldest version of construct (R308)

  • I love it when businesses increase the free access to features, etc. That's extremely generous of you guys and I'm always happy to promote Construct any time I can. Now there's even more incentive!!

  • Scale does not working anywhere

  • Load more comments (2 replies)