SC script language

SC is a script language designed to extend the functionality of compiled applications. The aim of the project was to create a flexible script language that can be quickly integrated and used without much glue code. SC was designed mainly for games, so it should be efficient and not contain unnecessary features.

SC is strictly typized, so it is faster, easier to debug and less error prone. Its syntax resembles C++ or Java. It is very flexible, you can use your own types, classes, function pointers, operators etc. from scripts. SC isn't a standalone language, so it has not implemented data definition functionality, It uses only data types defined in C/C++ code and exported with the provided API.

SC API allows to use SC scripts in C++ applications. It is strongly based on macros and templates, so exporting own types is easy and no error prone. SC API also allows to use some features of SC in C++ code (e.g. managed memory) or call functions written in SC from C++ code.

SDK example game screenshot

What is necessary to start

To use SC you need at least basic C++ knowledge. SC may be integrated only with C++ applications, the current version supports only Microsoft Visual C++ compiler (2005 or above , you can download a free version from Microsoft site).

SC language features

  • high level
  • strongly typed
  • runs on a virtual machine, compiled to bytecode (not interpreted)
  • predictible memory management based on variable scope (no garbage collector)
  • memory usage
    • stack - local fast variables
    • managed - dynamicly allocated, lifetime until are referenced
    • user - used by variables defined in C++ code and exported to scripts, their memory is not managed by SC environment
  • loops (for, while), conditions
  • data used in scripts
    • data types defined in the host aplication, some built in types
    • classes, virtual methods, operators, attributes exported from the host aplication
    • arrays
    • variables
      • local - defined in the script
        • automatic - defined on the stack and destroyed at the end of the scope
        • shared - defined in the script visible to the end of the script and in other scripts
        • static - visible only in the scope of the variable, but initalized only once
      • external - defined in the host application and exported to the script at compile time
    • functions (stdcall or thiscall calling convention) of C++ syntax
    • function pointers
  • suspending script execution, microthreading support
  • runtime type information (rtti)
  • compiling (or loading) code at runtime

SC API features

  • Based on interfaces and macros
  • Most validation done at compile time
  • using SC managed memory in C++ code
  • using SC functions in C++ code
  • defining data
    • Simple types
    • Classes
    • Namespaces
    • Variables
    • Functions
    • Function pointers
    • Aliases

Note

This project is pretty old and is not maintained anymore. You can use it in own projects for learning and fun, but it shouldn't be used where maintenance is needed.

Links