Hi Darkfrog,
This is still rather rough, but the basic idea is that the agent (computer character) implements the CTRNNWatcher interface, when the CTRNN is updated it calls the watchers pre- and post-update methods. In these methods the inputs are given to the input neurons of the CTRNN, and the output neurons outputs can be retrieved.
The input neurons get given their input from sensors (I haven't given this code yet because its changing a lot!!) or can just be set directly. I'm developing a 'range sensor' at the mo for my research project (the sensors need a lot of work, there could be lots of pre-made sensors e.g. light sensors, range sensors, sound sensors etc, but all the sensors are built to the same interface so they can be extended by the game developer).
The output neurons receive their output state when the update method of the CTRNN is called, in my robot simulator these values set the rotational speed of two motors that drives wheels.
The CTRNN can be built from XML and saved to XML (this is a bit rough at the mo but it works), they can also be built from a genotype (this is something for my project but can definately be expanded to allow all sorts of GA's to evolve the CTRNN (this would be especially useful for AI researchers wanting to build robot simulations in jME!!)).
Thats it for the moment, but its something that can be extended

These NN's are very useful (especially for people wanting to build robot sims) so I'm very interested in working on it and maybe creating a more general purpose API

CTRNN background (just in case your not familiar with them)
-----------------------------------------------------------------------------
A CTRNN is a dynamical system so the concept is rather different to that of a bog-standard feed forward (backprop) net. They are inherently recurrent in nature and so the concept of feeding input through a network to find a discrete output is non-existent. Each neuron is updated simultaneously according to this equation:
tau * dy
j/dt = -y
j + sum(w
ij * a
i) + Input
where:
tau = membrane potential or time constant of neuron
y = neuron state at time t
b = neuron bias
a
i(y + b) = activation of neuron n
i, usually sigmoid function (1/1 + e
(-(y + b)))
sum(w
ij * a
i) = sum of all connecting neurons n
i activation * weight to neuron n
j Input = input value to this neuron (if its an input neuron)
The neurons produce a spiking behaviour dependent on the value of tau and so do not produce discrete output. This NN is surprisingly powerful and can be used to control very complex behaviour. As is the case with most recent AI research especially evolutionary robotics.
Tell me what you think.