-
Notifications
You must be signed in to change notification settings - Fork 53
Scripting
Decided to kick start the scripting discussion. The purpose of the wiki is mostly to kind-of coordinate the discussion.
The most important questions are:
- What capabilities should the scripting layer have
- Which scripting language(s) will we support
With that in mind there are two sections on this page, capabilities and language. So feel free to make an edit to add a feature, along with (if needed) a small description.
As for the scripting languages, just follow the format that is present.
-
Event system
Here I imagine more of a system where certain things trigger events, such as player join/quit, chat messages, etc. This to allow creation of scripts that react on these events. An extra would be if these events could be cancelled. (Maybe a quest system can be done with those scripts?) -
Player functions
The scripting layer should have the capability to kick/ban/mute players, send messages to them, change their location? teleport? -
Plugin System The Plugin system should be able to handle player events and player functions all in one and send the information to a user built plugin that can use this information to trigger an event. Very similar to something like Minecraft's Bukkit server: Bukkit
-
Lua - http://www.lua.org/
C# connectors: NLua (LuaInterface) - https://github.com/NLua/NLua
Advantages: Used by a lot of popular games which makes it relatively known in the scripting scene.
Disadvantages: 1-based index can be confusing for some, ... -
Squirrel 3.0 - http://squirrel-lang.org/
C# connectors: Squirrel Interface - https://sqinterface.codeplex.com/
Advantages: -
Disadvantages: - -
Boo - http://boo.codehaus.org/
C# connectors: -
Advantages: .NET
Disadvantages: - -
CS-Script - http://www.csscript.net/
C# connectors: -
Advantages: .NET
Disadvantages: - -
Python - https://www.python.org/
C# connectors: - http://ironpython.net/
Advantages: .NET, High level language, well known in most communities
Disadvantages: - -
.NET Libraries
C# connectors: - Does not apply, Assemblies can be dynamically loaded and reloaded, stored in separate app domains and be scanned for plugin types that can be hooked.
Advantages: .NET, The code would be as if you were coding KMP directly, only with a nice API and dynamic loading of code
Disadvantages: - It's not scripting, meaning that unless a compiler at runtime is used, plugins will have to be compiled and built to .dll first.
Notes: - This is basically how KMP Client Mod works inside Kerbal