The journal

Notes from the workbench.

149 articles on building software and understanding how it works.

New common framework

Most of DotNetEngine has moved into OpenSim.Region.ScriptEngine.Common, turning it into a general execution framework. DotNetEngine now only converts and compiles — Common does the running, and future engines get loading, threading and maintenance for free.

ScriptServer

ScriptServer is "almost done": everything works except script-to-OpenSim communication. It lets script execution happen on a remote machine entirely outside OpenSim.exe.

Communication

Notes on the protocol between region and script server: region initiates, a custom binary protocol streams async function calls in both directions, and replies are matched by ID. TCP client/server is already up.

Major rewrite number 2

Lots of alien squid-like drawings in my notebook later: the plan is to move the ScriptEngine into a separate daemon, independent from the region. Scripts stop moving when objects do, can run on separate servers or clusters, and can even be rented out.

Perfect code

Commercial development forces a program linearly from idea to product. A hobby programmer works differently: programs are rarely finished, often scrapped at 70-80% — and that is exactly where the learning happens. Some thoughts on the difference.

Pure C# support

The ScriptEngine now mixes LSL and C# in the same script — and if a script starts with //C#, the LSL preprocessor is skipped entirely for 100% pure C# support. A few naming rules apply for events.

Starting my own company

I quit my job and started my own company as an independent consultant. Development slows down while I get it off the ground, but the plan is for the company to fund my OpenSim work going forward.

Test

Testing posting from Windows Live Writer.

Small stresstest

114 scripts loaded in-world, one AppDomain each, most of them firing timer events every second or every five — and my 2.8GHz Prescott doesn't break a sweat. Screenshots of the world and the performance graphs.

So where are we now?

A summary for those who skip the techie details: LSL script support works, hundreds of scripts run simultaneously across multiple cores, events are queued, and the remaining gaps are clearly listed.