Set up a project to use SkookumScript

In order to have SkookumScript code running as part of a project, the project must first be set up to use SkookumScript which is called Skookifying a project.

Skookify your project?

Since adding custom SkookumScript code is one of the key aspects of a SkookumScript project, whenever you attempt to open the New Class or Member pane in a non-SkookumScript project, it will ask to setup your project to work with SkookumScript.

SkookumIDE confirm Skookify?

“Skookify your project?” confirmation dialog.

If you click No, your project will remain un-Skookified and will not place any SkookumScript files in your project. The New Class or Member pane will remain disabled.

Click Yes to add the files SkookumScript needs to your project.

This includes:

  • a Scripts folder and a Skookum-project.ini project settings file that details all the overlays for a project
  • a Project subfolder for custom SkookumScript code in the Project overlay
  • compiled script binaries placed in the Content\SkookumScript folder
  • for UE4 projects, the SkookumSript plugin is notified about Skookifying the project (which obviously requires the SkookumIDE be connected to the UE4 editor) and it does the following additional actions:
    • the project specific Blueprints and C++ script bindings (those reflected to Blueprints) are analysed and the corresponding SkookumScript overlays and scripts are generated including the subfolders Project-Generated-BP and Project-Generated-C++
    • DefaultGame.ini is modified to include the SkookumScript compiled binaries in the cooked project data. If DefaultGame.ini is checked into version control, it will first be checked out.
    • It is possible that the analysis and generation of corresponding SkookumSript code could have some problems. Sometimes there can be duplicate names or other issues that may need to be resolved by hand. If this occurs and you have trouble getting your project to generate valid initial SkookumScript code, please seek help at forum.skookumscript.com where the SkookumScript team and other SkookumScript users can lend a hand.

Congratulations! The project is now Skookified and custom SkookumScript code can now be added using the New Class or Member pane.

If you are using version control such as Perforce, you will need to add the Scripts folder and all its subfolders and files to start tracking the project. You do not have to add the Content\SkookumScript folder or files since they are generated by the SkookumIDE. (Auto-adding files generated as part of the Skookify process to version control will likely be added in a future SkookumIDE update.)

Skookum and non-Skookum projects

There are two types of projects as far as SkookumScript is concerned:

  • projects set up to run and be dependent on SkookumScript (Skookified)
  • projects not set up to run or be dependent on SkookumScript

Both types of projects can run SkookumScript code snippets from the SkookumIDE Workbench (REPL) widgets using common engine commands. However, only the projects set up for SkookumSript can run project specific commands related to project specific C++ bindings and UE4 Blueprints. Also only SkookumScript projects can have their runtime executing project specific BP and C++ reflected scripts and custom scripts created for the project.

Feature non-Sk Project Sk Project
Engine REPL
Project REPL  
Project BPs/C++  
Project Scripts  

Removing SkookumScript dependency from a project

If you want to temporarily remove SkookumScript from a project, add a minus sign - to the Script and Content\SkookumScript folders and comment the entry in the DefaultGame.ini that refers to the Content\SkookumScript folder. Then just put them back once you want to resume SkookumScript use.

If you want to permanently remove SkookumScript from a project, simply remove the Script and Content\SkookumScript folders and remove the entry in the DefaultGame.ini that refers to the Content\SkookumScript folder.

UE4 Blueprint and reflected C++ renaming system for generated SkookumScript

A class/struct/enum and property renaming system exists to resolve name collisions during the generation of SkookumScript code from UE4 Blueprints and reflected C++. Skookification of all class/struct/enum and data member names gets routed through the renaming system.

To use it, add entries to your project’s Config/SkookumScript.ini file.

Use the +RenameClasses key to specify a rename rule for a class/struct/enum in the format:

[package_name.]UE4TypeName->SkookumScriptClassName

Use the +RenameProperties key to specify a rename rule for a property/data member in the format:

[[package_name.]owner_name.]UE4PropertyName->@skookumscript_data_member_name`

You can also 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

For example:

+RenameProperties=Hero.My Best Enemy->@my_nicest_enemy
+RenameClasses=Hero->Protagonist
+RenameClasses=/Game/MyBPStruct.MyBPStruct->MyBPStruct2

When you make changes to the SkookumScript.ini file, and change focus back to UE4 editor, the SkookumScript.ini file gets reloaded by the SkookumScript plugin and script files are regenerated based on the changes - then changing focus to the SkookumIDE and compiling applies the changes to the compiled SkookumScript binaries.