Changelog

This is a history of all past releases and updates of the SkookumScript suite (the language, runtime, SkookumIDE and the SkookumScript UE4 Plugin) describing the changes that were made.

Also see the Unreal Engine 4 Plugin - Releases category in the SkookumScript forum for additional details and to see and make comments on releases.

Each release includes a date yyyy-mm-dd and the Unreal Engine version UE4.?? it supported up to at the time of its release. Each release is retroactively applied to several UE4 versions back (usually at least 2 or 3 versions) since most SkookumScript updates are applicable to any UE4 version. Occasionally we go more versions back in an update. If you are using an older version of UE4 that was not updated and you want it to be—just let us know in the update post on the Sk forum.

New SkookumIDE Standard and Pro (2017-02-25 to present)

Robo Recall support

2017-08-15

Robo Recall is now supported!

See here how to install Sk into Robo Recall)

Version 3.0.5279 - UE4.17 support, new Project-Generated-BP overlay workflow and more

2017-08-10 UE4.17

  • In a nutshell
    • Unreal Engine 4.17 now officially supported! (we currently support all UE4 versions from 4.12 up to 4.17)
    • the Project-Generated-BP overlay is now using a new, much more efficient file format (one file per class) which makes especially working with large AAA projects a lot smoother
      • the new plugin will automatically switch your project over to the new format
      • IMPORTANT: During automatic conversion to the new format you might temporarily get compile errors until the reflected script files for all the Blueprint classes you use in your scripts have been regenerated. You might have to open up selected Blueprints in your project to force their reflected script files to regenerate. Once all script files have been regenerated all will be good and you’ll enjoy the more efficient workflow with the new file format
    • files in the Project-Generated-BP overlay are automatically added/deleted/checked out from source control to keep them consistent across your team
    • naming of flattened hierarchy overlay folders changed from superclass.class to class.superclass
      • IMPORTANT: In the (unlikely!) case that you have any overlays (other than Project-Generated-BP) in your project that use a flattened folder hierarchy (i.e. the overlay specification in your Skookum-project.ini file ends in |1, |2 etc.) all folders named superclass.class need to be renamed to class.superclass
    • lots of bug fixes

See full details and discussion on the Sk forum

Version 3.0.5174 - Unreal Tournament support, tweaks and stability improvements

2017-07-17 UE4.16

  • In a nutshell
    • IDE now highlights project classes vs engine classes in a different style, so you can tell which classes you are actually working on (project) vs which classes are generated from the engine
    • Unreal Tournament support (see here how to install Sk into UT)
    • Lots of bug fixes!

See full details and discussion on the Sk forum

Version 3.0.5093 - support for event dispatchers, delegates, Blueprint functions, custom events, name collision resolution and more!

2017-06-30 UE4.16

  • In a nutshell
    • UE4 event dispatchers, delegates and multicast delegates now supported
      • event dispatchers placed in your Blueprint will show up in SkookumScript, and you can invoke them (“broadcast”) just like a closure or method simply by my_character.@my_event_dispatcher("String Parameter" 42)
      • any multicast delegate event declared and reflected in C++ with supported parameters can also be invoked via SkookumScript
      • however, listening/subscribing to event dispatchers and multicast delegate events is not yet supported - stay tuned
    • UE4 Blueprint functions and custom events now supported
      • any Blueprint function or custom event with Sk-compatible signature is now available in Sk to invoke
      • this allows you better integrate with your existing Blueprint scripts, and more easily convert Blueprint graphs over to SkookumScript
    • arrays can now be passed into and returned from SkookumScript graph nodes
    • we created a new class/struct/enum and property renaming system to resolve name collisions
      • in your project’s Config/SkookumScript.ini file, you can now add entries like this: +RenameProperties=Hero.My Best Enemy->@my_nicest_enemy +RenameClasses=Hero->Protagonist +RenameClasses=/Game/MyBPStruct.MyBPStruct->MyBPStruct2
      • you can use the package name (asset path) to resolve name clashes between assets with the same name located in different folders
      • the generic syntax is: +RenameClasses=[/Path/To/AssetPackage.]UE4ClassOrStructOrEnumName->SkookumScriptClassName +RenameProperties=[[/Path/To/AssetPackage.]UE4ClassOrStructName.]UE4PropertyName->@skookumscript_data_member_name
      • when you make changes to the SkookumScript.ini file, and change focus back to UE4Editor, the SkookumScript.ini file gets reloaded and script files regenerated based on the changes - then changing focus to the IDE and compiling applies the changes to the compiled binaries
    • the Sk button in the plugin now changes state based on connection status
    • invocations of Debug.something are now stripped from code blocks in shipping builds, so you can use Debug.assert(some_test?) without slowing down your shipping game
    • lots and lots of optimizations and stability improvements

See full details and discussion on the Sk forum

Version 3.0.4885 - 4.16 support, user defined enums and more!

2017-05-31 UE4.16

  • In a nutshell
    • support for Unreal Engine 4.16
    • support for user defined enums: Blueprint enums are now available in SkookumScript
    • lots of stability improvements!

See full details and discussion on the Sk forum

Version 3.0.4603 - New dormant plugin mode, improved search for members and more

2017-04-16 UE4.15

  • In a nutshell
    • new dormant plugin mode that will not launch the IDE on projects that don’t use SkookumScript (unless the IDE was open the last time you worked on that project) - for improved workflow with non-SkookumScript projects
    • improved search for members - now you can type in the original Blueprint function name to find the SkookumScript equivalent
    • minor Sk syntax change: changed named argument specifier to : from # to match bind, future Map literal and Swift - if this affects your code, all you need to do is change # to :
    • fixed a number of issues, including game module hot loading

See full details and discussion on the Sk forum

Version 3.0.4462 - Stability improvements and easier C++ project setup

2017-04-03 UE4.15

  • In a nutshell
    • lots of convenience and stability improvements for the new Slate UI SkookumIDE
    • simplified C++ project setup - now all you need to add in your game module cpp file is one #include statement
    • stability improvements in Blueprint node exposure system (caveat: it now no longer permissible to pass Blueprint-generated classes as types to methods & coroutines exposed to Blueprints via the &blueprint annotation - doing this will now generate a compile time error - we have disallowed it for the time being as this feature was causing instability for a lot of users - if this change affects your code please use a C++ superclass as the parameter type instead)

See full details and discussion on the Sk forum

Version 3.0.4135 - New Slate UI SkookumIDE Standard and Pro

2017-02-25 UE4.15

Our IDE went into metamorphosis and turned into a beautiful butterfly! Using Unreal Engine’s Slate UI system, we have redesigned it from the ground up for the sexiest, most superpowered workflow ever. And the good news is this new crown of game scripting UIs remains free for everybody in its Standard Edition. The Pro Edition is on sale for $99. Get it before we raise it to its regular price of $199.

Here are the most notable features:

  • Standard
    • live update of running game, even on consoles and mobile devices
    • single-click compile/sync button
    • auto parse (errors underlined with squiggly lines)
    • full contextual autocomplete
    • syntax highlighting
    • lightning fast compilation
    • new error list widget
    • new overlay list widget
    • Slate’s responsive layout and docking system - hide/show, rearrange and/or tear off widgets as you like
    • multiple editor windows can be opened concurrently
    • quick filter bars for class view and member list
    • routines can now be deleted via UI
  • Pro Edition
    • all features of the Standard Edition
    • full visual remote debugger with locals, callstack and breakpoint window
    • setting of breakpoints, halting and continuing execution
    • single stepping through code
  • SkookumScript
    • parser now properly detects duplicate data members
  • Skookum UE4 Plugin
    • switched default project to archived file formats for new SkookumIDE
    • class data variables @@world and @@random now get postfixed with an underscore to not interfere with Object’s @@world and @@random
    • MD5-postfixed Blueprint variables now keep the first four digits of their MD5 for distinction
    • code in enum constructors now column-aligned
    • tweaked SkookumScriptBehaviorComponent so it can be derived from by a Blueprint custom component
    • the Script Class Name field in SkookumScriptbehaviorComponent can now be left empty which means to simply use the UE4 class of the component
    • changed the class compatibility test in SkookumScriptClassDataComponent such that now the Script Class Name may refer to a class not derived from the actor the component is attached to, as long as it is not derived from any class that actor is not derived from
    • modified Actor@instances, Actor@named and Actor@find_named so that it properly works with the change above, and also works for pure Sk classes derived from Actor (it will now gather all actors of the most derived super class known to UE4 and then filter the results)
    • fixed bug in generator that would sometimes export incomplete class hierarchies
    • minor optimization to blueprint exposure class update to prevent assert at startup
    • fixed regex bug occurring only in Marketplace builds

See full details and discussion on the Sk forum

Unreal Marketplace Release (2016-04-25 to 2017-02-24)

Version 3.0.3991 - SkookumScript officially Apache 2.0 licensed, new Object ID language feature!

2017-02-13 UE4.15

In order to make our licensing terms for the free standard version of SkookumScript crystal clear, we have decided to release it under the Apache 2.0 license going forward. Enjoy!

Also, we added a new syntax for Object IDs which quickly allow a lookup of an object based on a class and an identifier name:

object-id = [class-name] '@' ['?' | '#'] symbol-literal

So Enemy@'Robochar1' is the same as Enemy.named("Robochar1">>Name)

You can also use these alternatives:

SomeClass@'SomeGuy'  // specified class
SomeClass@?'SomeGuy' // Allows nil as result
SomeClass@#'SomeGuy' // Returns validated identifier "SomeGuy">>Name
@'SomeGuy'           // Infers desired type or Actor default
@?'SomeGuy'
@#'SomeGuy'

So why a shorthand for looking up actors? A future SkookumIDE Professional will validate these Object IDs at compile time (or even at edit-time) by communicating with the Unreal Engine Editor, so you’ll know if a specified actor actually exists, get an error message when it was deleted, and the autocomplete will suggest available actors, all before the game even runs. Stay tuned!

Object IDs have been automatically enabled for the Actor class and all its sub-classes.

Otherwise, there’s a number of small improvements and bug fixes that you might enjoy:

See full details and discussion on the Sk forum

Version 3.0.3838 - UE4.15 preview, generated overalys use new archive format, language enhancements and more

2017-01-13 UE4.15 preview

  • Skookum UE4 Plugin
    • obliterated the old SkookumScriptComponent from existence
    • changed sequence of raw data resolving: static raw data is resolved first, the synamic raw is resolved whenever a new blueprint asset is loaded/created/modified
    • fixed bug where raw data of dynamic classes was uninitialized after re-load of compiled binaries
    • added sanity check to make sure compiled binaries are loaded before atomics are being bound
    • switched on overlay archive file for Engine-Generated and Project-Generated-C++ overlays
    • changed runtime library settings from DLL to static to remove VS2015 DLL dependencies from plugin DLLs
    • fixed bug where a newly added routine would not immediately show up in the Blueprint editor
    • fixed bug where overlay path was not set correctly in the plugin after project skookification
    • IDE executable now detected in new location in plugin folder, loads newer of either plugin IDE and debug IDE
    • fixed bug where SkookumScriptGenerator did not generate a meta file for UStruct
    • SkookumScriptGenerator will now generate leaner, trimmed down Project-Generated-C++ overlay archives
    • plugin is now initialized earlier in the engine initialization sequence, during the PreLoadingScreen phase, to allow binaries to be loaded and blueprint nodes to be exposed before the PreDefault phase in which the game module might load
    • blueprint exposed Sk routines now get exposed twice, once early on right after loading of the binaries but before loading of the game module so that Blueprint graphs referenced by the game module compile properly (during this phase some parameter types might not yet be known, so they are being substituted with one of their parent classes if that’s the case) and a seond time after engine is initialized to re-expose them with their final fully derived types (at this time fully derived types are enforced with asserts)
    • the binding of atomics is now split into two phases: one right after loading of the binaries where built-in and engine bindings are applied, and a second phase after the game module is initialized (or on world pre-init if no game module is present)
    • made exposing of blueprint functions more robust against initialization order
    • moved final Blueprint exposure pass to FSkookumScriptRuntime::on_editor_map_opened()
    • made final Blueprint exposure pass more forgiving - allow recovery upcasting even in final pass (after asserting though)
    • changed loading phase of library-mode uplugin file to PreLoadingScreen as well
    • static class mappings can be amended in editor builds now as well if the UE4 class name is the same as the Sk class name (i.e. when it is a C++ class)
    • fixed compile errors/warnings in UE4Game Development build
    • changed order of includes for plugin files to (1) plugin (2) UE4 (3) AgogCore/SkookumScript to fix preprocessor redefinition warnings
    • fixed bug where registration of static ue classes would not register project specific ue classes if called once before the project module was loaded
  • SkookumScript
    • the branch command has been slightly changed to make it more robust and powerful:
      • branch now takes an expression not a code block any more, so you can say branch _boom without brackets
      • branch can now spawn arbitrarily large expressions
      • under the hood, the new branch uses a closure to capture any local variables the branched expression is using
      • there is a small caveat: The new branch no longer allows rebinding of captured variables as this was a dangerous and misleading feature of the old branch that could lead to crashes. You can still assign to captured variables though!
      • branch now returns an invoked coroutine instance
    • closures now disallow rebinding of captured variables
    • new incremental live update command (requires new SkookumIDE)
    • allow durational receivers for when and unless
    • fixed crash during coroutine update by allowing active invoked expressions to stay around until end of Sk session
    • i.e. during a live update, coroutines that are already running remain unchanged and will pick up the updated changes when they get invoked the next time
    • renamed SkookumRemoteBase.hpp, SkookumRemoteRuntimeBase.hpp, SkookumRuntimeBase.hpp, SkookumScript.hpp to SkRemoteBase.hpp, SkRemoteRuntimeBase.hpp, SkRuntimeBase.hpp, Sk.hpp respectively
    • renamed SkookumRemoteBase, SkookumRemoteRuntimeBase, SkookumRuntimeBase to SkRemoteBase, SkRemoteRuntimeBase, SkRuntimeBase respectively
    • initialization level refactor: Introduced enum eInitializationLevel, SkookumScript now has 5 clearly defined levels of initialization
    • renamed initialization/deinitialization functions to correspond to the respective initialization levels
    • based on the current initialization level, certain operations are allowed/disallowed with SkookumScript
    • replaced Flag_evaluate with Flag_paused to make it clearer that this is now an optional/deprecated flag
    • added extra deinitialization call for symmetry
    • replaced include guards with #pragma once
    • added override keyword to some virtual functions
    • added name lookup fallback when method/coroutine is not found by vtable index (for cases when live update sent over a new routine but vtable indices have not been updated yet)
    • added SkBrain::register_builtin_bindings() to allow built-in bindings to be bound separately from SkBrain::initialize_post_load()
    • used proper crossplatform macro for representing uint64_t’s: UINT64_C
    • added Boolean type to userdata union for debugging pleasure
    • fixed bug in data member index computation during parse
    • fixed issue with data members with closure type
    • ensured that coroutines and coroutine closures return InvokedCoroutine
    • incremented binary id version

See full details and discussion on the Sk forum

Version 3.0.3376 - UE4.14 and bug fixes

2016-10-21 UE4.14

  • Skookum UE4 Plugin
    • fixed bug where on_detach is called a minute afterdetach
    • fixed bug where WidgetBlueprints were not properly detected as Blueprints by the plugin
    • add rotation conversion operators for Vector3/Vector4
    • fixed a number of linking issues in UE4Editor and UE4Game builds under certain circumstances
    • renamed game_generated to project_generated for clarity
    • removed LaunchDaemonMessages from supported modules as it is causing issues for some users
    • fixed bug where UFUNCTIONs with weak object pointer parameters were incorrectly rejected
    • fixed bug that would not properly handle generated Sk class from blueprint assets with punctuation (e.g. dashes) in the Blueprint asset name
    • fixed glitch where raw arrays couldn’t be grown if necessary
    • fixed bug where an editor-dependent blueprint was loaded for resolving before the editor module was loaded
    • created new branch 4.14!
    • +SkipClasses now properly handled in SkookumScriptGenerator
    • fixed bug where project file generated by UnrealHeaderTool would be named “UnrealHeaderTool” (now properly named like the project)
  • SkookumScript
    • fixed improper handling of ms_sim_ticks in SkookumScript::update_delta(f32 sim_delta)
    • added optional parameter bool * has_signature_changed_p to a number of methods in order to determine if the signature of a routine changed when it is updated with a new revision
    • in SkBrain::initialize_core_classes, bail early if core classes have already been created
    • added ability to generate crc32s from their current state to a number of types in order to be able to identify changes for incremental compilation
    • added methods to generate crc32s of all instance and class data definitions of an SkClass

See full details and discussion on the Sk forum

Version 3.0.3174 - 4.13.0 support plus 600 new auto-generated event coroutines and much faster compile times for C++ projects

2016-09-06 UE4.13

  • What’s new?
    • Auto-generated event delegate callback support: What’s this? Essentially, the already existing event coroutines like _on_take_any_damage_do, _on_take_any_damage_do_until and _wait_take_any_damage are now auto-generated, and many more, about 600 in total!
    • Compile times for C++ projects are now much shorter due to
      1. not compiling engine binding code in the game module
      2. splitting apart the unity header file into one header for each binding class
    • Blueprint nodes will now invoke the properly inherited subclass version of an exposed method or coroutine
    • The SkookumScriptGenerator now is renaming game classes with name ‘Entity’ to ‘GameEntity’ for SkookumScript
    • Fixed a bug where SkookumScript would stop updating under certain circumstances
  • Caution - syntax changes!
    • There a few changes in event coroutine function names and signatures, e.g. _on_begin_overlap_do is now _on_actor_begin_overlap_do.
    • The return arguments of _on_actor_begin_overlap_do_until have also changed from 4.12 up to include the overlapped_actor, so if you are using this coroutine watch out that you won’t pass in the wrong parameters.
    • In the SkookumScript.ini file of a C++ project, you no longer need to specify any engine modules. We recommend to remove any engine modules from your C++ project SkookumScript.ini file so that it only specifies game modules.
    • In C++ projects, to use a SkookumScript binding class, you no longer #include <SkUEGeneratedBindings.generated.hpp> but the class of the specific type you need, e.g. #include <SkUEActor.generated.hpp>

See full details and discussion on the Sk forum

Version 3.0.3078 - Multiplayer support and game DLL hotloading

2016-08-10 UE4.12

  • What’s new?
    • Hot reload of game module now properly recompiles, reloads and rebinds class hierarchy
    • Support for multiplayer mode by allowing multiple game worlds
    • fixed bug in automatic project file generation
    • minor additional bug fixes

See full details and discussion on the Sk forum

Version 3.0.2983 - C++ projects now supported by engine plugin and many updates + FireBot, our brand new C++ project demo!

2016-08-02 UE4.12

You might have been wondering what we mad scientists have been up to recently. Well we did a major overhaul of the plugin so that you can now keep it installed in the engine plugin folder at all times and use it with all your C++ projects as well! That also means it’s now a lot more convenient to use with the Epic Games Launcher version of UE4. Then we created a new C++ demo project that demonstrates the new plugin architecture. And last but not least we fixed a number of glitches making your workflow even smoother!

  • What’s new?
    • The plugin now supports C++ projects without having to be moved into your project. It can remain in the engine plugins folder.
    • No need to modify the plugin or modify UHT’s DefaultEngine.ini to accommodate your project.
    • Instead, there is a new file named SkookumScript.ini. You find it in two places:
      • in the SkookumScript plugin’s Config folder allowing you to specify how the plugin generates bindings for the plugin itself (if used without a :sk:-enabled C++ project, i.e. on a Blueprint-only project)
      • in your project’s Config folder where you specify how the plugin generates bindings for your game module. In SkookumScript.ini, you specify +ScriptSupportedModules to tell SkookumScript for which module to generate bindings, +AdditionalIncludes to specify additional include files to include to make the binding code work (this is sometimes necessary as UE4 header files very often do not include all necessary sub-includes and will simply not compile unless used in a “magic order” which is hard to get perfect), and +SkipClasses to specify the name of classes or structs that you do not want to export to SkookumScript.
    • SkookumScriptGenerator, the module that reads the UCLASS, UFUNCTION etc. macros, now generates a set of bindings each for (1) the engine (SkookumScriptRuntime module) as well as (2) your game module. The engine bindings exist so that the plugin can still function without any :sk:-enabled C++ game module (i.e. on Blueprint-only projects). When a SkookumScript-enabled game module is present, its bindings override the engine bindings (in the SkookumScriptRuntime module).
    • There is a new overlay Project-Generated-C++ for script code generated from the UCLASS, UFUNCTION etc. macros in your game modules, and the old overlay named Project-Generated has been renamed to Project-Generated-BP (existing overlays named just Project-Generated will still work though, but renaming to Project-Generated-BP is encouraged).
    • You need to add some custom code to your game module to enable SkookumScript:
      • In your game module main cpp file add: #include "ISkookumScriptRuntime.h" #include <SkUEGeneratedBindings.generated.inl> and then inside StartupModule() function, add FModuleManager::Get().GetModuleChecked<ISkookumScriptRuntime>("SkookumScriptRuntime").set_game_generated_bindings(SkUEGeneratedBindings::get()); If there’s no StartupModule() function, you need to create one by deriving a custom class from FDefaultGameModuleImpl and use that in the call to IMPLEMENT_PRIMARY_GAME_MODULE (for reference, see the file FireBot.cpp in our new C++ project demo FireBot)
      • In your game module’s Build.cs script file, add the following code to the constructor: PrivateDependencyModuleNames.AddRange(GetSkookumScriptModuleNames(Path.Combine(ModuleDirectory, "../.."))); (see the FireBot sample project’s Build.cs file for the implementation of GetSkookumScriptModuleNames()). You also need to add the function GetSkookumScriptModuleNames() itself to the Build.cs file until we figure out how to just call the version of it that already exists in SkookumScriptRuntime.Build.cs.
      • This should be all that’s needed for you to start using UCLASS(), UFUNCTION() etc. macros and see the respective SkookumScript classes appear in the IDE!
      • In any C++ file that uses generated SkookumScript bindings, specify #include <SkUEGeneratedBindings.generated.hpp>
    • Numerous bug fixes - see detailed change log below:

See full details and discussion on the Sk forum

Version 3.0.2822 - UE4.12 supported on Marketplace, new components plus lots of new features and bug fixes

2016-06-29 UE4.12

  • Features
    • New components! We now have three types of components, the SkookumScriptClassDataComponent, SkookumScriptMindComponent and, coolest of all, the SkookumScriptBehaviorComponent. The good old plain SkookumScriptComponent is deprecated and should be replaced by either SkookumScriptClassDataComponent or SkookumScriptMindComponent`. Read here to find out how exactly these work.
    • Added !new constructor to Entity which allows entities (UObjects) to be created on the fly
    • Added Debug.print_memory_execution() which prints runtime memory usage to the console
    • And most importantly, we added an indispensable feature every respectable scripting language must have: Integer@fibonacci - embedded high-performance Fibonacci series computation technology beating the pants off all other scripting languages on the planet :madsci:
  • Tweaks
    • Added abort_coroutines methods for Object and Mind
    • Refactored generated binding code
    • Changed relative to absolute path in runtime script generator
    • Added C++11 range-based loop support to AList
  • Bug fixes
    • Fixed issue with relative include paths in generated engine bindings that would make the plugin not compile in RocketSync build environment
    • Fixed bug where, when errors are present in the script files, the engine error popup did not let you retry compilation more than once
    • Removed obsolete tests and parent class FSkookumScriptGeneratorBase from FSkookumScriptEditor
    • Fixed issues with project script file generation
    • Do not generate any script files in commandlet mode
    • A number of SkookumScript internal fixes

See full details and discussion on the Sk forum

Version 3.0.2470 - Initial Unreal Marketplace release

2016-04-25 UE4.11

First version of the SkookumScript Plugin sent to the Unreal Marketplace!

Open Beta (2015-01-15 to 2016-04-24)

Version 3.0.2391 Beta - UE4.11 Support, Plugin can be per project or whole engine (all projects)

2016-04-03 UE4.11

  • In a nutshell
    • supports UE 4.11.0-release
    • structural changes for UE4 Marketplace readiness (all binary libs and DLLs as well as SkookumIDE now included in repository via Git Large File System (LFS); FilterPlugin.ini)
    • plugin now allows flexible folder placement (in engine or project plugins folder)
    • Sk binaries now located inside Pak file for better platform compatibility
    • generated overlay Engine-Generated now allows for shallower folder hierarchy to mitigate Windows MAX_PATH issues
    • SkookumScript now disabled (does not come up) when engine is in project wizard mode
    • misc tweaks, 4.11 adjustments and bug fixes

See full details and discussion on the Sk forum

Version 3.0.2234 Beta - Brings SkookumScript to your Android device

2016-02-01 UE4.11

See full details and discussion on the Sk forum

Version 3.0.2079 Beta

2016-01-01 UE4.11 preview

See full details and discussion on the Sk forum

Version 3.0.2020 Beta

2015-12-17 UE4.10

See full details and discussion on the Sk forum

Version 3.0.1956 Beta

2015-12-04 UE4.10

See full details and discussion on the Sk forum

Version 3.0.1897 Beta

2015-11-17 UE4.10

See full details and discussion on the Sk forum

Version 3.0.1856 Beta

2015-11-11 UE4.10

See full details and discussion on the Sk forum

Version 3.0.1784 Beta

2015-11-04 UE4.10 preview

See full details and discussion on the Sk forum

Version 3.0.1773 Beta

2015-11-01 UE4.10 preview

See full details and discussion on the Sk forum

Version 3.0.1703 Beta

2015-10-20 UE4.10 preview

See full details and discussion on the Sk forum

Version 3.0.1528 Beta - UE4.9.1, faster than ever, and auto-complete!

2015-09-07 UE4.9

  • New in this release
    • A cornucopia of internal performance improvements making this release the fastest SkookumScript you have ever experienced.
    • The SkookumScriptGenerator now generates significantly more efficient code, e.g. calling UE4 functions directly whenever possible.
    • The IDE comes for the first time with a (basic but powerful) autocomplete feature. It’s work in progress and we’ll make it better as we go. But it’s already so useful we just had to switch it on!
    • Bug fixes!

See full details and discussion on the Sk forum

Version 3.0.1373 Beta - UE4.9 and full iOS support

2015-08-13 UE4.9 preview

  • Updates
    • iOS platform fully supported!
    • precompiled zip file version of this release supporting UE4.9.0 Preview 3
    • remote connection to IDE on a different device (this is important for iOS) can be enabled by placing a file called ide-ip.txt inside the Content/skookumscript folder of your game, containing the IP address of your machine running the SkookumIDE on it (port 12357 must be open and able to receive connections on that machine). You can find out the IP address that your copy of the SkookumScript IDE is using (or set it) in Engine\Plugins\SkookumScript\Runtime\SkookumIDE\Skookum-user.ini in the [Remote IDE Hosts] section under the name of your computer.
    • enhanced syntax to allow creating a temporary variable as it is passed as a return argument - see List@any for an example: !letter: letters.any(; !idx)
    • enhanced loop parsing so that named loops ensure their name is unique and exit may only be used inside a loop and only reference valid loop names
    • changed SkookumScriptGenerator icon to differentiate it from the runtime plugin
    • a number of minor additional tweaks and bug fixes

See full details and discussion on the Sk forum

Version 3.0.1304 Beta

2015-07-29 UE4.8

See full details and discussion on the Sk forum

Version 3.0.1250 Beta

2015-07-19 UE4.8

See full details and discussion on the Sk forum

Version 3.0.1220 Beta

2015-07-09 UE4.8

See full details and discussion on the Sk forum

Version 3.0.1200 Beta

2015-07-03 UE4.8

See full details and discussion on the Sk forum

Version 3.0.1158 Beta

2015-06-24 UE4.8

  • Updates
    • comments now auto-generated from UE4 function meta data
    • script-only functions on SkookumScript classes derived from Actor now automagically available in Blueprint graphs (in SkookumScript category) via new class SkUEBlueprintInterface
    • automatic dynamic mapping of Blueprint generated classes to SkookumScipt classes
    • outgoing parameters of Engine-Generated methods are now properly passed back
    • updated SkookumDemo scripts and example script snippets in workspace.sk
    • added index operator {} - calls at()
    • added index bind operator {}: - calls at_set()
    • fixed default constructors for VectorMath classes so objects get properly initialized to zero
    • added guard for UCS-2/UTF-16 and skip past BOM on UTF-8
    • as always: performed several fixes and reams of insanely meticulous detail work

See full details and discussion on the Sk forum

Version 3.0.1105 Beta - UE4.8 and updates to binding mechanism

2015-06-15 UE4.8

  • Updates
    • Compatible with the new 4.8.0-release version of UE4
    • Major code refactor, changing how the binding mechanism works
    • Major code refactor, changing the abbreviation for SkookumScript from “SS” to “Sk”
    • Due to these sweeping changes, and the need for separate 4.7 and 4.8 branches, we decided to delete and recreate the GitHub repositories with new separate branches for the 4.7 and 4.8 versions of UE4
    • A number of bug fixes (mostly IDE communication related) and tweaks

See full details and discussion on the Sk forum

Version 3.0.0997 Beta - UE4.8 preview and reflection improvements

2015-05-27 UE4.8 preview

  • In a nutshell
    • engine bindings whose method names begin with is_, has_ or can_ now have a (Skookum naming convention) question mark ? appended to indicate their boolean nature.
    • the SkookumScriptGenerator plugin will now recognize the path depth specified for the Engine-Generated overlay in the project ini file, and generate the script hierarchy accordingly

See full details and discussion on the Sk forum

Version 3.0.0980 Beta - Hooked into UE4 reflection system

2015-05-21 UE4.7

  • In a nutshell
    • hooked SkookumScript into the UE4 scripting reflection system (the same used for Blueprints) to provide you with close to 650 new classes and 6000 new engine bindings (more on the way!)
    • massively reorganized and polished SkookumScript’s core class hierarchy to fit UE4 like a glove
    • moved the SkookumScript UE4 Plugin to the Engine/Plugins folder instead of a project Plugins folder. This allows you to use SkookumScript with any project—whether the project extensively uses SkookumScript, or if you just want to use the SkookumScript IDE Console to run an occasional script snippet. (Running script snippets will become an integral part of your workflow—you and everyone on your team will love it!)
    • made numerous engine events (such as actor overlap) available as specialized SkookumScript coroutines
    • added a new vector math library/overlay
    • made numerous improvements to the IDE (automatic script project switching when connecting to a UE4 project, incremental find, improved menus and tippier tool tips, to name a few)
    • put up the code on GitHub for faster updates and community participation
    • performed several fixes and reams of insanely meticulous detail work

See full details and discussion on the Sk forum

Version 3.0.0844 Beta - Overlay flattening

2015-05-08 UE4.7

  • General
    • added class hierarchy path flattening. Now an overlay can specify a desired class directory depth and any classes deeper than that level use a directory like Superclass.Subclass so that deep class hierarchies can get around the MAX_PATH limit.
    • added optional |# to scripts.ini overlay keys that specifies a class hierarchy directory depth for flattened files
    • ensured that creating a new class in the IDE loads and focuses on the class meta file.
  • Skookum Runtime
    • removed Class -> path methods which are now located in SSOverlay
  • AgogIO
    • fixed ADirectory::parse_path() - it was incorrectly handling directories with extensions

Version 3.0.0740 Beta - Mind classes

2015-04-18 UE4.7

  • Highlights
    • split coroutine updating off of Actor and added to new Mind class
    • changed references to Mind from Actor where appropriate
    • renamed a few remaining .skoo to .sk
    • ensured correct SKOOKUM define is set for different build targets
    • upped version number
    • many other updates
    • Skookum Runtime
      • modified so it can be compiled using the “User” build configuration
      • gave better error info when unable to load Skookum compiled binaries
        • modified so it can be compiled using the “User” build configuration
        • gave better error info when unable to load Skookum compiled binaries
  • Skookum Language
    • added Mind class and subclass Master
    • changed World default updater to Master Mind class
    • changed script Actor to be derived from Entity rather than Object
    • removed LogicalActor and PhysicalActor
  • Skookum IDE
    • updated Log “Member:” double click to be more sophisticated
    • fix to ensure that Log scrolls to latest
    • commented out some dprint calls
  • Skookum Runtime
    • modified so it can be compiled using the “User” build configuration
    • gave better error info when unable to load Skookum compiled binaries

Version 3.0.0623 Beta - Fixes from beta feedback and UE4 integration improvements

2015-03-19 UE4.7

  • General
    • Fixed over a dozen bugs reported by beta testers of the previous beta release – crashes, international issues etc.
  • IDE
    • Added initial tool tip pop-ups to some areas of the IDE

      The tool tips are still a work in progress and likely to be a little annoying by popping up a little too frequently. They will be made more reasonable in a future release.

  • Compiler
    • Changed file extension of SkookumScript files from .skoo to .sk

      This includes most script files .sk, class meta descriptions .sk-meta, object ids .sk-ids and .sk~ids, compiled script binaries .sk-bin, and debug symbol files .sk-sym.

    • Moved Scripts folders up one level – This avoids problems with the Unreal Build Tool.
    • Reorganized source file structure into modules with Public and Private subfolders

      This allows an easier bundling up of the SkookumScript UE4 plug-in and more closely follows the system used by the rest of the Unreal source.

  • Script Library / Bindings
    • Created new class Transform – Still needs fleshing out but basic functionality is there.
    • Added new methods to Actor to use transforms: transform() and teleport_to_transform()
    • Added new method to World: spawn_actor(blueprint_name, where) which allows to create new actors in a given location
    • Renamed a number of methods/variables for consistency with “plain English” naming convention e.g. dir_forward()direction_forward(), teleport_pos()teleport_to_position()

Version 3.0.0527 Beta - Initial Closed Beta to select UE4 users

2015-01-15 UE4.6

  • General
    • First closed beta release of UE4 plugin – some details can be seen here.
  • Script Library / Bindings
    • renamed scripts to new convention: removed get_ and moved set_ to _set
    • Basic UE4 engine bindings

      Simple example bindings including Vector3 class, camera shake, spawning effects, playing sounds

  • Skookum IDE
    • create new dialog creates new classes, methods, coroutines and data members and either copies template as initial file or copies from related existing routine in the hierarchy
    • added template files for !Class.sk-meta, method().sk, and _coroutine().sk
    • made Perforce version control an option and set to be off by default
    • added “Paste result” Alt+Insert and “Copy result to clipboard” Alt+Ctrl+Insert and also to menus
    • added differentiated cut and paste for formatted vs. plain text
    • commented out unused future menu commands
    • modified remote invoke so that result string is sent back as specific message
    • fixed first line indent bug introduced with last check-in
  • AgogIO
    • added Perforce add to AFile
    • added AIni::get_value_dir_default()

Closed Beta Round #1 (2014-11-14 to 2015-01-14)

Version 3.0.0448 Beta - Closed Beta to existing SkookumScript users

2014-11-14 UE4.5

  • General
    • modified enumerations in Syntax(new) to allow for specific integer values (to better mirror C++) and to allow enumerations to inherit from other enumerations
  • Skookum IDE
    • indent / unindent now much more sophisticated / correct and takes into account tabs
    • auto-indent now more sophisticated/correct and takes into account tab characters
    • fixed visual representation of tabs in text files
    • sends indent size and tab stop size preferences from IDE to runtime when connected
    • made offline/online field on Console turn green when connected
    • made all copy/paste use plain text by default and can choose copy with formatting in menu commands
  • Skookum Compiler
    • ensured that compiler errors properly take tab characters into account
    • stores / gets indent and tab sizes in configuration file
  • AgogCore
    • make AString indent / unindent far more sophisticated and tab aware
    • optimized AString so that it is more likely to reuse AStringRef objects -AgogGUI
    • updated ARichEdit indent / unindent to be more sophisticated, tab aware and visually update properly
    • updated edit controls have column values account for tabs
    • fixed setting of tab stops in AEditOS and ARichEdit
    • added copy/paste to differentiate between plain and formatted text