If you use plugins you will not be able to join other players, unless they have the same plugins as you.
Programming within / while playing Neos right now requires LogiX, but that isn't the only option. Neos has a Plugin system which you can use. If you're looking for in-game scripting then this is an item on the Neos Roadmap
A plugin, is a compiled Assembly / DLL written in C# that can be loaded into Neos at runtime.
When creating a Plugin please keep the following in mind:
- Plugins must not enable players, including yourself to bypass Guidelines.
- This includes: Asset Theft, Harassment etc.
- Plugins should follow the general principle of "Do No Harm"
Plugins are limited in several ways right now:
- If you use plugins you will not be able to join other players, unless they have the same plugins.
- There is no built-in distribution system. You are in charge of distribution
- Plugins may break in between builds of Neos and therefore require frequent updates.
Writing a Plugin
To get started writing a plugin follow these steps:
- Download Visual Studio Community edition.
- During installation, check of the .NET desktop development workload which will give you the >NET Framework 4-4.6 development tools
- Create a new Library project
- Add references to some Neos libraries from the installation folder:
- FrooxEngine.dll - Found in NeosVR/Neos_Data/Managed/FrooxEngine.dll
- BaseX.dll - Found in NeosVR/BaseX.dll
- Start writing, you can find a sample project here.
Double check the links/resources section below for additional resources.
Using / Testing a Plugin
You have two options when running Neos with a plugin:
- Using the Neos Launcher
- Using Neos Command Line Arguments
Using the Neos Launcher
Within the Neos Launcher, there is a Plugin Section:
This shows Assemblies / DLL files which are within the "Libraries" folder of your Neos Installation. Copying your compiled Assemblies / DLLs to this location will allow them to show up there. Once they are present in the list, check them and they will be loaded when Neos is Launched using the launcher.
Using Command Line Arguments
The Command Line Argument
-LoadAssembly <path> will load additional Assemblies / DLLs when used to launch Neos. You can find a good way to do this which is integrated with Visual Studio within the Wiki Asset Generator by Epsilion.
Firstly, double check, if you 'need a plugin. Most common scenarios can be done within Neos using LogiX or Components. These items might seem scary for newer users but their possibilities are quite endless. Common things that might need plugins include:
- Integration of Third Party Hardware or Devices - You can potentially use WebSockets or HTTP for this, but if not a plugin may be needed
- Research / Science Applications - If your scenario requires some advanced integration with a science/educational background one may be needed
- Automation - If you need to automate a process within Neos such as batch processing of assets or data
Resources / Links
Open Source Plugins
- Wiki Asset Generator - Generates Wiki Templates and Images for the Neos Wiki(Yes, the one you're reading :))
- PublicFolderDumper - Dumps a list of Public Folders to a CSV File. This was mostly made to prepare for updates to The Directory world by ProbablePrime but has some useful comments
- Frooxius Gists - Lots of Frooxius' GitHub Gists are parts of Neos New and Old(sometimes super old). These show how to make components, LogiX Nodes, Brushes and Tools.
- LeftoverLogixComponentRemover - Cleans up left over LogixInterfaceProxy and LogiXReference components
- FaoLogiX - Faolan's LogiX Improvements and Nodes. Adds things like Collections and GlobalFunctions.
- Faolan-Rad/NeosLibraryTemplate A Neos Plugin Template by Faolan
- Particle Workshop - Advanced Particle editing by New Project Final Final WIP
- Neos Utilities - Misc Neos Utilities by Epsilion.
- Mass Component Attacher - Attach a component to all children of a slot
- Collections Workshop - Edit SyncLinear Fields
- NEOSPlus - Adds new LogiX nodes (Like JSON parsing) aswell as new components (Cloth sim anyone?)
- NeosFileStreamWriter - Alternative to the WriteTextToFile node avoiding opening and closing a file for each write
- OpenvrDataGetter - A simple plugin to get data from the openvr C api
- Do you have more? Edit the article and add them!