The Hive system: version 0.91 released

As you may know, the Hive system is a Python system for nodal logic. It was one of the GSoC projects in 2012.
Here are some updates for those who would like to follow its progress.

The current version is 0.91, which is “early beta”: The core functionality is done, but the HiveGUI is still in the early stages. Most importantly, it has been running mostly externally under Qt,
The porting of HiveGUI as a Blender add-on is a recent development, and the tutorials and documentation have not yet been updated.

Blender add-on

There is now an Blender Hive add-on, it just reached alpha.
You can download the add-on here .Unzip the add-on in your addons folder and enable it in Blender User Preferences.

What the add-on does:
It adds three new icons in the Blender Node Editor:

  • Hivemaps (nodal logic)
  • Workermaps (custom node definitions using nodes and custom Python code)
  • Spydermaps (configuration).

Enable “Use Hive Logic” when you click the Hivemap icon (joystick) in the Node Editor. This will setup a default Hive project inside your blend. Whenever you save the .blend (or start the BGE) the nodetrees are written to Hive text blocks.

Examples

There are currently two Hive project .blends that work with the add-on: Tetris and a moving spider example. Both of them have been adapted from Hive system tutorials. All Hive project .blends can be downloaded here.

The performance will depend on your Blender version:

  • In standard Blender (2.67-2.68), the nodes will display weird, and you can run the BGE only once (afterwards you have to restart Blender)
  • In 2.69 / recent Blender trunk (since revision 59431), the nodes will display weird, but you can run the logic as often as you like. You can download a recent build here.
  • In the Hive branch, everything works correctly. There are pre-compiled Blender builds available, containing the Hive branch + the add-on:
    Windows 32bit(thanks Agoose77)
    Linux 64bit
    OSX 10.7 Lion(thanks Scorpion81)
    To run the moving spider example, you will need a Blender build with FFMPEG.

Current usability:
- In principle, you could create Tetris or some other game from scratch, but are very likely to run into bugs.

  • There are some features in the external HiveGUI that don’t work inside Blender: attribute blocks, interconnection points, text auto-completion and hovering events.
    - Don’t try things like undo or node grouping.

External Hive installation

All installation instructions for an external installation are here
For download, installation and readme files, see https://launchpad.net/hivesystem/+download

Hive system documentation and tutorials

Note that all tutorials and examples are for the external GUI. If someone is willing to make Blender videos, that would be great!
Chapter 1 of the tutorial is the easiest, let me know if you have any trouble.
In addition, the demo shows a complete, 12-step implementation of a Tetris game. It contains about 140 nodes and 70 lines of Python. Compare to this to an average implementation in pure Python (about 500 lines of code) or C/C++ (about 1000-2000 lines of code).

Community input on node design

At some point, community input will be needed on the design of nodes. What nodes would you like? Should they work exactly like the current logic bricks, or do you want them to be different? I can give everyone their own customized version of the Motion Actuator if they like, coding them is no trouble at all. But some community standards might be helpful, just to make sure that people can come to this forum for help about nodes and talk about the same thing.

This will become more relevant once the Hive system has matured a little bit further.
But in the meantime, everyone is welcome to post or send me mockup node diagrams or individual node designs, and I will see if I can implement them already.

I am going to try this when I get home, interesting.

Hi, seem very interesting!:wink:

my dream is a things like this: (see image)
a node system to manage more script .

O_O’ is possible? (meanwhile read other link , but i m very slow to read)

PS: is is not clear in the image , once node is a piece of script

Attachments


Sounds really interesting. I don’t care right now to install everything, but when it gets a little easier to get to the nodes, I’d like to test it out!

It certainly looks good, and I look forward to using it!

You may want to look at PlayMaker from Unity3D for some node ideas (in fact Unity has a few systems like this).

@MarcoIT:

You don’t have to read, you can also watch the Hive system screencast!
Here is a screenshot :slight_smile:


Is this what you were dreaming?

However, the GUI stilll looks ugly, because I am very bad at GUI design…
But I found a very pretty GUI, which I will adapt to the Hive system.

So, hopefully, in a few months, the Hive system GUI looks like this:


@Rubbernuke:

Sorry for not being clear… There will be of course nodes for motion, keyboard, animation, physics, state machines, etc.

What I need to know, how do you want them to work?

The current Motion Actuator runs every tick, do you like it that way?
Or should it only run when it gets a trigger from its controller?

Logic Brick sensors have only 1 output. Therefore, the Keyboard Sensor gives positive (keypress) and negative (keyrelease) pulses.
Hive system nodes have as many outputs as you like. So, a Keyboard Sensor node could have 2 separate outputs, for press and release. Or, do it like the Logic Brick, with 1 output. Or, there could be 2 versions, leaving the choice to the user.

Coding these nodes is very easy. But searching among hundreds of nodes can be confusing to the user!

I think it would be important that you used the existing ui that blender has for node development.

agoose, i think a different look would be refreshing. Something to make it feel more like a programmer’s tool and not an artist’s

The existing ui for node development in Blender is unfortunately in C, and tightly bound to compositing.

I don’t think it would be detrimental to the user if there were hundreds of nodes (bees?) as long as there was a way to search for them (or read the documentation!).

From your example, it would be great for your keyboard sensor/bee/node if you could amalgamate key just released, key pressed, key inactive etc states into one node, as this is not available in logic bricks.

not exactly , i had thinked to a system of little(very little) “icon” which you can close completely (similar to actual LB)

and when you close it , still only one preset visible
also the name must still hidden in my opinion,also need a grid to snap the icon(to make less mess)

the icon should mean a group of things , with 10 group more or less
(graphic/sound/script/physic/action…)

the goal should be make the same thing of actual brick but in less space and with more semplicity…so…

this image below has the same size wich usually has the logick brick at bottom of screen

this is a mix , between logic brick/node/notepad++ :smiley: :wink: :yes:

Attachments


mhh…maybe the “minimize” is not a good idea…!

EDIT: anyway , i not use the much the brick , so, my point of view can be wrong ,
to me seem more interesting the ability to give more “physic” to the script :slight_smile:

Just, please, whatever you do, don’t get into the cutesy metaphorical naming of everything, so we have to explain to confused new users over and over again that a “bee” means a node, a “nest” means a group of nodes, a “flower” is an input etc. They did that over on Diaspora (pod = server, seed = profile etc) and it just gets confusing, especially when comparing to other similar projects (ie a Diaspora pod equals a Libertree Tree equals a server).

Personally I’d much rather have new users, who already understand nodes, node groups, inputs and outputs from other apps, just have the easiest to understand names possible.

I’d be happy to help you with GUI design after exams!

Great!
For the outside-Blender GUI: I am now adapting the GUI from the Coral project (with the developer’s blessing), and I am working on an auto-generated parameter editor based on Qt Quick.
Concerning an in-Blender GUI: Lukas Toenne mentioned that the Blender node editing code is being decoupled from compositing, but I haven’t checked his code yet.
And of course, help on the design of individual nodes is most welcome. It would be great to adapt your multiplayer component to the hive system.

Are you sure that you know what you are talking about?
Every domain-specific node system has their own way to implement node mechanics. A node in a live coding system works completely differently from a Blender compositing node. The confusion is already there.

The hive system is meant to be domain-independent, and it can emulate the mechanics of pretty much any other node system out there. There are currently ten flavors of bees and three flavors of hives. The GUI user will see only a few of them; you are welcome to select one flavor of each and call them “node” and “node group”, but I doubt that it will make things any clearer.

Sounds like a nice plan. One thing; what differs between the GUI inside Blender, and that outside? Does it not run within Blender, or are you referring to the testing implementation / node design?

Also, I beleive Blendiac refers to the sometimes intoxicating names that developers assign their projects, but I think as long as the users of the system are aware of the scope of the project, (How a hive and bee relate) then there oughtn’t be a large learning curve.

Sjoerd,
I would like to help with the node design and development, I’m specially interested in top down designs and I hope I can help. I was last year involved as the GSoC student, and would love to help in what I can.

The more Blender code we can re-use, the better. So, if any of Blender’s node code can be re-used, it would be preferable. Also, please, please don’t write you own math library if you were planning to. There are about 3~5 math libraries scattered through out the Blender source code.

Hi Agoose,

Just a little update: the hive system GUI is progressing nicely, I hope to move it out of pre-alpha within two weeks. After that, I will post it in the thread here.
Are you still interested in helping out? It would be appreciated!
Be sure to have some space in your PM Inbox :wink:

cheers

Sjoerd