How would you go about designing a neural network-like system that is not an AI system, but a system for sending/receiving messages between nodes and end points?
It would have to:
Be made up of interconnected major, minor nodes, end points.
Major nodes communicate only the nodes that are directly connected to it.
Major nodes can select which connected nodes to communicate with. e.g. all nodes, major only, minor only, a specific node.
Communications are in two types: 1) simple messages. 2). messages with payloads.
I donât want an AI nor an actual neural net, just something that looks like the diagrams of neural networks with interconnected nodes, pathways, end-nodes. And all these nodes do is send signal/messages back and forth. Which signals are sent, and from/to which nodes theses signals are sent is determined by the player.
I already can imagine how I could do this in C#. But might this be better handled with a state machine like Mecanim, PlayMaker; or a behaviour tree like Behaviour Designer? Or some other technology/Asset.
Iâm not really sure what youâre trying to accomplish (is it something decorative or functional?) Because if itâs functional, then the design begins (and probably ends) with the way that it functions. Youâd have to be much clearer on what this thing is supposed to achieve before anyone could make anything more than a guess.
It is functional. Nodes are connected by âpipesâ that can carry signals/messages/payloads. One node sends a message to other connected nodes. Maybe the message is a warning that the enemy is coming. In turn the other nodes relay that message to their connected nodes. Or maybe the message is âI need sugarâ and the other nodes will send sugar to the node that originated the message. It is one of the main mechanics upon which a game will be built.
There will be thousands or tens of thousands of nodes.
Yes, something like the internet, able to send messages and data. Except the messages and data are sent to directly connect nodes only. The nodes may or may not relay the information to their directly connected nodes. But there will be nothing like sending messages from one node to another remote node on the other side or the network. No targeted addressing nor routing. Just message propagation, to nodes within a certain specified area.
There will be thousands or tens of thousands of nodes.
OK Iâm a bit confused as to the question. You say that you already know how you would code it, so are you asking what would be the best way to display/interact with it? If so I imagine Eve would be a good source of inspiration, seeing as how it deals with huge amounts of information. Maybe something like a star map?
Although again, the way you need to partition information (which depends again on functionality) would be the main driver of how it would look and feel.
If youâre looking for a good way to set up interactivity for this thing in a visual way, I imagine this repository for a node editor (see thread as well) would be a good place to start.
There are many specific protocols and approaches to the message propagation depending on what your traffic profiles look like and how resilient the network needs to be. In real networking this would be to avoid saturating the spectrum and not being able to communicate. However, in a game the effect would be similar (too many messages would kill your framerate).
Thanks. I could probably code it but I donât enjoy the work or reinventing the wheel so I am asking if this could better be done with a state machine or a behaviour tree? Or some other technology/Asset that may already do this.
You really need to define your problems a little more before we can suggest a relevant data structure to use. Have a look through the wiki article and see which one suits you best.
A behaviour tree is a spacific type of data structure that, for the most part, is a one-way street. Thatâs great for making decisions but not so much for back and forth communication.
You definitely need to set out all of the things that you need this system to achieve, and what kinds of interaction youâd like the player to have with it, and brainstorm the best possible ways to present it.
Also, I canât stress enough the need for iteration on this sort of thing. Donât be afraid to âwaste timeâ if this is the core mechanic of your game. Just start with a naiive design and put something together, and iterate on it.