NoobLauncher is served two ways. It’s an development framework in cubescript, the built in macro language of the open souce cube 2 game engine. And it’s a whole set of addons provided by plugins.
Why does NoobLauncher exists? At first, I tried to make things possible with a limited language. Secondly, there are many simple scripts and only a few bigger applications written in cubescript. Because of the global namespace the scripts can interfer with each other. The same counts for the bigger collections. Both have no software architecture at all.
What’s needed to make a good piece of software using a limited language? The same as in every language – ideas and software architecture. You just have to apply technologies that exists elsewhere. At first I implemented a plugin loading mechanism, to make the software modular. To avoid problems in the plugins, I provided a mechanism for handling the global namespace and for persisting information. Also there is an abstraction layer for making guis easier and more consistent. Because keys are also limited resources an input handling system is nessesary, too. Finally an register/subscribe event system makes core components and plugins play well together.