Popular Posts

Thursday, July 7, 2011

Introducing NEURO

If you've been around IRC or the HardDrop shoutbox for any reasonable length of time, chances are you've heard me go on about something called NEURO. NEURO (NullpoMino End-User Relational Overlayer, which sounds more like a backronym than it is) is the event framework that connects all the different parts of NullpoMino 8. It will allow us to create plugins to expand the functionality of the game without any sort of foray into the code of the game itself.

How will this work? Well, as amusing as it sounds, the actual game of NullpoMino is a NEURO plugin itself.

NEURO is the center of the NullpoMino universe.
The great thing about NEURO is how it makes NullpoMino far more modular than we could make it otherwise. We want to have achievements in the next version, for example. How can we do this? Well, a plugin for achievements can subscribe to events such as when games end, for example. Then, it can use the statistics stored within to update its own internal state, and perhaps award an achievement.

Or, suppose you want a leaderboard plugin. It makes sense that you might want to see the server's leaderboards from anywhere in the game, and NEURO will let you do that. The nice part is that it will also allow the plugin to not exist at all, that is, the only plugin which is required for NullpoMino to run is NullpoMino itself. So, if you feel the leaderboard plugin is taking up too much CPU or bandwidth (for whatever ungodly reason that might be), you can simply disable it or uninstall it, and the game will continue to work.

What this means is that people can have the plugins which they feel are important to them, and they can just as well not care about the plugins they don't need hanging around. We can write functionality in bits and pieces and users can choose whatever they like.

Hopefully, this will turn NullpoMino into something more than just a game of Tetris. On TOJ, you can chat with people on your friends list, even when you are playing single-player. With NEURO, this functionality becomes very simple, and you don't even have to be playing on the server to begin with! You'll be able to chat with other players even in the middle of offline, single-player modes, because NEURO handles the network communication and it can use it even when the game itself isn't.

The other nice thing about NEURO is that I've planned it to come in two flavors, Light and Full. The Light version will only allow the game itself, or perhaps a presence plugin to allow other people to at least see when they are online. The Full variant will allow arbitrary plugins, and will also have an overlay which can be brought up at any time (since NEURO handles game inputs). The overlay will allow the user to interact with all the different plugins. This makes it very easy to, say, answer a chat message quickly in between games of Speed Mania. You can do things like that in TOJ, so why shouldn't NullpoMino feature the same ability?

The NEURO system was co-designed by DrPete and me with this in mind. You'll have to thank him for some of the ideas, and he posed irssi's plugin system as a simple and good plugin system to follow.

8 comments:

  1. Cool, so nullpomino will be like HEBO mini/lite (i don't quite remeber which) where you can disable and enable plugins? We will be able to make our own plugins?

    ReplyDelete
  2. Well, the plugins in Hebo Mini were actually core functionality plugins, like ARS and Devil-Doom mode. You can already do this in Nullpo 7 and prior by editing the lists files, and you can write your own modes if you want.

    This is for even greater flexibilty. For example, if you wanted something that kept track of your improvement in Grade Mania 3, you could write a plugin to sit in the background and record your end-game stats from that mode. (A more generic version of this plugin will probably be released with NM8.)

    ReplyDelete
  3. The plugins will have to be coded in java or NEURO will have it's own programming language?

    ReplyDelete
  4. This will probably increase the amount of players online because they will be able to see someone else playing single player and be able to make a match and stuff. Pretty awesome. Will the plugins have to be written in Java?

    ReplyDelete
  5. Nah, everything will be in Java. Or, at least, you can do whatever to interface with NEURO in Java and then write the backend in something else, if you want. (i.e. you can write in C/C++ if you use JNI to call do it.)

    ReplyDelete
  6. We will be able to import 3rd party plugins into the game?

    ReplyDelete
  7. Easily. That was part of the point of designing the system the way I did.

    ReplyDelete
  8. 3rd party plugins will ever be included in the full package?
    So, neuro basically makes the modding scene into nullpo, right?

    ReplyDelete