Today, we're pleased to put out a new Stable channel release aimed at fixing a range of saving issues and add or update our support for external tools/SDKs such as Android, iOS and Steamworks. This is a very significant update over 1657, so we wanted to take some time to explain many of the fixes and changes which have been made since last September's 1657 release. Please do read all of the sections which matter to you in this document, as the information they contain will ease your transition to the new version and might explain any issues you see.
One thing to add just now: before you install, please see the Required SDKs FAQ as several SDKs have been updated since 1657 was released and so you may well need to update your installed tools before things work as expected.
You can get the installer for this version by clicking this link or by using the updater within Studio itself. Note that if you're on any version older than 1.4.1657 we'd recommend downloading the installer and doing a fresh install of Studio.
...So, what has changed?
You'll no doubt quickly notice we reshuffled the targets list to put YYC versions next to their VM versions and order the targets a bit better according to usage, plus add in support for more new modules (see below).
You might also notice a very short delay has been added on opening an object form before you can interact with it - which stops accidentally changing the object's properties on double-clicking to open. Also, the default time for tooltips (for a fresh install) is now 4 seconds (4000ms) and not 300ms, so you get much more time to read the popups now. Additionally, the room editor is back to defaulting to the Settings tab, rather than Tiles as it incorrectly did in 1657.
We also fixed free Android testing not working for some Pro license holders and changed the name of the Android module to "Android / Fire" to clarify that the Android module also works fine on Amazon Fire devices.
On the welcome screen, we changed the Open Project tab so it now defaults to your home folder as set in Preferences and the Import Project dialogue so it now defaults to My Documents, rather than always using My Computer on both tabs. We also changed those Open and Import file browsers to disable the right-click context menu unless you're specifically clicking on GM project files.
Another one you'll probably quickly notice is a fix for the news feed not appearing when creating a new project on the Welcome screen - oh, and you should have noticed that your news feed is now a much prettier news feed from our redesigned website, so you not only get Studio news, but you also get access within the IDE to the Learn page for tutorial videos, our support pages, and the showcase!
We fixed a memory management issue which caused some projects with lots of sprites to take longer to load in recent betas (or in some extreme cases to entirely fail to load) and also sorted importing audio and .zip files from Marketplace assets.
Within the code editor, enums now have code completion and syntax colouring so they look the same as macros and we made obsolete the functions/constants for OpenFeint, PocketChange and PlayHaven. None of these are supported any more, so there is no matching demo/extension for them.
For our source control users, we fixed issues with the spawning of terminals for every command, regardless of source control type and the commands being executed, so these are now only spawned when using Git and only for "clone", "push" and "pull" specifically. Carrying on with git-specific fixes, we fixed issues with several git source control commands not working as expected. Because all of the commands are now being performed correctly you may now notice that your project takes a bit longer to load if you're using source control (especially git) and we will be looking into speeding this back up in future releases.
On the menu bar, "clear all breakpoints" now clears breakpoints in room creation code and timelines as well, and within GGS we stopped the texture preview buttons failing if your temp folder path has a space in it.
One Preferences change to be aware of is that we have changed Win8/WP8/PS4/Xbox One YYC platforms to use the Visual Studio path you provide in Preferences > Windows. This means you can more easily control which version of VS is used when building - WP8 needs the older VS2012, for example - but you do now need to be aware which version is set there if you frequently switch between building packages on any combination of these targets, otherwise you might wonder why you get build errors.
However, the real focus of this last round of Beta releases has been that behind the scenes we have done a lot to remove access violations and other memory errors which you might have seen when using Studio, such as access violations and the "Cannot focus a disabled window" message most often seen during a project load dialogue or when multiple IDE instances are open at once. There have also been several fixes to stop the IDE getting stuck trying to shut down, including some specific to Steam users. Note, one of these fixes required us to remove hotkey support for the "targets", "configuration" and "knowledge base" fields (Alt+K/C/T) along the main toolbar. Multiple fixes have been made to stop a cascading AV occasionally seen on closing a script form and sometimes when closing the IDE, plus we fixed a method of getting access violations when closing multiple windows too rapidly, and a fix for AV on trying to close and save changes to a timeline when you've just deleted a moment.
The second focus of these betas has been to increase stability around projects saving and to address code "corruption" issues. So we have now added a range of fixes and preventative measures:
Easy things to spot with the compiler are: a fix for line numbers reported in error messages previously often being out by one; a fix for Linux and Mac OSX YYC Missing _YYGML.h header error; and also a fix for making a Ubuntu .zip when the project has spaces in the name.
An easy in-game change to notice is we've now added YYC stack traces when an error occurs and also changed YYC code error messages where an invalid operator comparison is found so the game now prints the values of the compared variables, both of which should help you pinpoint the code which is causing the problem much better than before.
Fixed asset compiler crash when image size plus the border width is greater than the texture page size you've set, so you'll get a compiler warning instead.
One significant change that you will need to be aware of is that we've also had a Runner extensions clear-out and you'll now find that extensions previously built-in to the runner on Android and iOS have all been removed. Instead, you now control which ones you want re-added, by GGS downloading the extension from the Marketplace if there isn't already a local downloaded copy, then you can import the extension into each project as required. This allowed us to update many of the SDKs and also better maintain them going forward, plus reduce game package size and build times.
You'll find new demos for several of the extensions have been on the demos feed for a little while. Please be aware that not all extensions have been re-added, as some are no longer valid or were too out-of-date to be of use.
There are no functionality changes to the debugger this time, but we have fixed a couple of crashes if you have set a breakpoint in timeline or room creation code. Also fixed some crash issues with watches or when using var = !var (see bugs fixed below).
You'll no doubt notice we have new GGS settings and matching in-game functions added to allow overriding automatically loading all texture pages on game start-up, to select the vertex buffer management method using by the standard drawing path ("Compatible" is Studio up to now), to allow the use of manual vsyncing which might result in more consistent performance, and also to control the sleep margin and avoid seeing higher reported CPU usage. However, please note that all of these require in-game "management" and are only really intended for very large products needing to gain every bit of performance possible in order to avoid running poorly. Most games won't require any of these changes here (and you might actually make performance worse for your end-users, as the requirements and results depend on the individual machine and so what might be good for you is worse for someone else), so please test carefully if you decide to modify any of these settings.
Also, for Windows 10 players we added checking for XInput 1.4 if Xinput 1.3 can't be found, which fixes reports of gamepads not working for some users.
And we fixed url_open() converting // to / in some browsers when not an English language OS/locale. Note that we are getting a few reports of url_open() not working on Windows 10 for some people and so far this has been due to the file association ("default program") for .html files being not set or set to some non-browser application like Notepad. If this function isn't working properly for you, please check your associations.
Several fixes have been added for making Mac OSX builds when using Xcode 7 and we have also added code-signing support to non Mac AppStore builds (AppStore ones are signed by Xcode when submitting) to fix the "the app is damaged" message your customers might see when GateKeeper flags your app as not having come from the AppStore. Of course, we also added a new GGS field for supplying the certificate to sign with.
Mac has also changed to using a new sound engine which should be more reliable. You don't need to make any changes to your project and this fixes an issue with the initial part of some sounds being missing.
We also fixed game crashes occasionally seen on El Capitan machines when quitting/restarting the game, or on startup if the user has selected OS X option to auto-hide the menu bar.
Android has undergone some pretty substantial changes since 1657, so please be aware your setup is very likely to need changing a bit before you will be able to build packages now. First of all, we have changed the package build toolchain to use gradle, as Google are removing the tools we used up to now. This needs the Android Support Repository to be installed in Android SDK Manager's "extras", plus the latest build/platform tools. You will now also get a Lint compiler report of any issues/suggestions the Android tools found during your build. You can find more info on these changes in this FAQ.
Please be aware you will need to specify all dependencies when writing your own extensions now, as gradle doesn't automatically assume that extensions have any dependencies or are related to other extensions in your project.
There is now lots more configuration options added to GGS > Android so you can control min/target API, build tools version to use, etc. We also now cache build information and reuse it if simply changing device or dropping a architecture and building again, which makes subsequent builds a bit quicker. Fixed writing the apk expansion zip file to the correct folder you specified as your output folder, so there's no need to retrieve it from the build cache any more.
Android 6 is now supported and the runner will ask your permission for access to the phone so it will launch correctly on Android 6.0 devices (these permission dialogues are for the runner only, so only you the developer will see them) and we fixed a run issue on Lollipop/Marshmallow where "Always do full install of APK" might give errors because folders aren't created properly.
Runner builds now use your game's own keystore and GGS details, but append "(as YoYo Runner)" to the install name so you can tell which is which. This means ads/IAPs, etc., will now work in a run/debug build, not just Create Exe - however, please note that IAP support is now controlled by the presence of the Google/Amazon extension, not the old GGS checkbox to "Enable IAPs", and also requires different function names if you're making a package to send to Amazon. That GGS "Enable IAPs" checkbox is now gone, as it only ever applied to the Android module anyway.
The PC's IP address and Web Server port are now added automatically into the build manifest so the wifi runner connections already know where to connect to, saving you from needing to enter these details on first deploy, but we also fixed multiple issues with the Wifi Settings button and dialogue so that if connections need to be edited, this is applied safely and correctly. There is also a new Preferences > Android field to specify a fixed IP address for ADB to always connect to each run/build when using wifi/ethernet (this field will override any USB connection attempts also, so only set it if you need to).
Removed some compiler optimisation flags to prevent crashes on Android 5.0.1 and devices now sleep more often when not busy on Android to reduce power usage. The runner now uses relative layouts in order to maintain compatibility with current versions of Android OS - note, this does mean that you might need to update your downloaded copy of several of the ad provider demos (if you use them) before trying to use them in this version. However, if you use our Facebook extension please see this bug report.
We also added a GGS warning when adding Amazon and Google extensions into the same config - you should use two separate configs, as Amazon have submission guidelines around the use of Google services because not all Fire devices will have the Google Play Services app installed and so these users would previously have been shown a "Do you want to install this app?" dialogue. Note that we have also updated the relevant Google extensions to not do this by default and instead return back to you, the developer, whether the app is installed, so you can control at runtime whether to show prompts or simply omit doing any Google services functionality.
Other Notable Fixes:
Please note that running on Android TV is not supported by packages made in the Android target.
Support has been added for Xcode 7+ and iOS 9+ and we added a selection of simulators to the device selector in File > Preferences > iOS, so now you can pick which simulator to launch. There is also a fix for the generated Xcode project failing to build if the project name starts with a digit, as we now convert the leading digits to underscores.
We stopped doing multiple compilations of your project when running on iOS and also removed a lot of the console output, plus we removed the Global Game Settings provisioning profile selector, as for quite a while Xcode has picked this for you anyway. Also added a fix for some newer developer certificates not appearing in the GGS certificates drop-down list. So you should now find build times are considerably shorter than they were in 1657. However, a cache clean is now always performed on the next run/build when moving between YYC/Non-YYC, so bear in mind that next one won't show such a drop in build times.
We made Create Exe just compile the archive and then open Xcode Organizer so you can submit to the App Store or make an ipa as you wish, and because of this change there is now no copying back the archive to the PC, so you won't see a prompt for the output file name shown when clicking Create Exe any more. We also made Run not use the web server, as it has its data file already, and so it now installs a build on your devices that you can run repeatedly and immediately. Run and Create Exe also now obey your "xcode-select" setting (only an issue if you have multiple copies of Xcode installed and you actually change this setting on your Mac).
One new thing you might find useful is we also added a Preference to make your Xcode projects and put them on the Mac, but not build the game package, allowing you to build/run/edit as you wish.
Other Notable Fixes:
There have been several changes required in order to maintain iOS/Safari support, but please note that because of the below loading bar change, all custom bars now run the same setup code as built-in, so if you have issues with custom bars, send a sample to the Helpdesk and we will investigate.
Apple changed the requirement for audio initialisation in iOS 9 and so you now need a Mouse Released event to fire before you attempt to play audio, rather than a Mouse Pressed as it was before. Also fixed audio file loading delays on iOS when using custom loading bar and also added a workaround for an occasional audio initialisation bug in iOS on the first play of an mp3, where it uses an incorrect frequency.
This new beta module has been unlocked for Master Collection users, so if you have Master and you want to check out this module, use Help > Update License or manage your YoYo Account to get the new target.
Please note this is Windows 10 desktop support only at the moment and you need to be running Windows 10 and have Visual Studio 2015 installed and set up also.
We matched Steam's changes in their latest client releases, so you will need to install and use version 1.35a only with 1749. We also changed the initialisation of functions to a more flexible system which better supports using the wrong SDK version - although we still wouldn't recommend deliberately doing this! - or if Steam make a change like this again in future.
We also fixed a game crash when your testing build is being shut down by Steam in order to restart from a version launched by the Steam client.
Additionally, we fixed several functions giving the wrong return value - steam_ugc_get_subscribed_items(), steam_user_installed_dlc(), steam_stat_get_int(), steam_ugc_create_item(), and steam_ugc_download() - and we fixed some potential issues with Steam whitelisting with UTF8 directories with file_exists() on Mac and Ubuntu. Furthermore, a couple of Steam constants had their text case rationalised and a typo in "visibility" fixed, so you might need to edit a couple of constant names when you next build those projects.
And we also fixed the Steam overlay not working on Mac applications.
We've made several changes which have resulted in a performance increase for all variable-handling, especially strings, and more efficient garbage collection on all platforms - and YYC versions have had multiple further changes to increase their optimisations, so you'll hopefully find that YYC packages built with 1749 have received a significant performance boost since 1657. In addition, we fixed a memory leak when calling ini_close() and when writing to ini files.
Further to these general optimisations, SWFs now have far better performance because dynamic geometry paths now use a single vertex buffer for all geometry (regardless of format) rather than multiple buffers, and when using Spine resources we've now changed it so that calling draw_skeleton() from an instance that has a skeleton already we now just use the existing copy rather than creating another freshly-calculated skeleton. We also fixed a crash calling skeleton_bone_state_get() on the root bone and added that Spine skeletons can have their animations set to null in order to reset to default.
In terms of things to be aware of in your projects after updating:
We have changed the random number generator to fix an issue where it wasn't random enough, but please be aware if your existing game uses seeds, you will likely want to call random_use_old_version() on game start, otherwise you won't get the same results you used to.
We have also changed the behaviour for pixel shaders which fail to compile so they no longer show code errors on start-up. We have always had the function to check at runtime if the shader was compiled correctly, so the code error was always unwanted. This does mean, however, that you must remember to use shader_is_compiled() when checking whether to apply your shader code!
There are also fixes for checking if a parent/child exists in the same step as activating that parent/child object and we've also changed the runner so that persistent objects' alarms will still fire if a room change has been triggered by a different object in that step.
Other Notable Fixes:
For a complete list of bug fixes and changes since 1657 please see our full release notes.