Thanks Lake for more info on what's been happening. Sounds really
promising! I look forward to seeing/playing with the alpha :-)
J
On 14 May 2013 17:20, Lake Watkins <
nem...@gmail.com> wrote:
> Hey Joel,
>
> Yeah thanks, in some ways there's been a lot of changes to the Unity
> framework, but we've also been able to reuse a lot of your work from before.
> Since I haven't really taken the time to update you and the other
> contributors about recent progress, here's a short list of what's changed:
>
> Voxel Engine: the code for rendering blocks and generating collision meshes
> has been gutted and replaced. We can handle hundreds of thousands of blocks
> in the game world now with much more stability when blocks are created or
> destroyed. New chunks of blocks stream in cleanly to allow for an
> infinitely expanding world. This is more than the 3D Space Map can handle
> at the moment, but for smaller, static worlds it works great.
> Minecraft Support: we've adopted the same file format as minecraft, allowing
> us to load worlds created in that game or related tools (such as MCEdit) and
> save our own world in that format with just a little bit of overhead for our
> own needs. We primarily use MCEdit to mock up pre-generated worlds now.
> PAI and Avatar decoupling: there were a number of tight-couplings between
> the Perception Action Interface and the Avatar class. I think the
> abstraction here was well intended, but the execution created too many
> problems for testing when changes (like new actions) were frequent. The new
> framework eliminates the need for a binding Avatar class by separating each
> concern into a separate component of the game characters. This way, a
> failure in executing a particular animation doesn't propagate up the
> Perception/Action chain and cause planning to fail on the embodiment server
> (like it once did). There were other reasons too, but mainly the fact that
> Avatar touched everything from animations to actions to physics just stood
> out as a red flag to me.
> Protocol Buffers: We're in the middle of providing real support for
> protobuf, but we haven't weaned ourselves off of XML serialization just yet.
> My understanding is that ZeroMQ and ProtoBuf will be the serialization
> methods of choice for future systems in OpenCog, so we've been doing our
> part to support that.
> Behaviour Trees: we've added support for Behave, an implementation of
> behaviour trees for Unity. This saves us a fair amount of work, and lets us
> put trees together graphically pretty quickly.
> Ease-of-Use and Extensibility: Unity doesn't generally support threading,
> especially in standalone executables, so we switched over to using
> co-routines to maintain speed. I've also been working on a variety of
> extensions to the Unity Inspector's editor, both for myself and for future
> contributors. Hopefully this will help new guys navigate the Unity Editor's
> interface more easily while also promoting better coding practices. To give
> everyone an idea, without these extensions contributors would be
> incentivized to publicly expose all of their classes' data members, rather
> than using properties, etc. Unity's just a headache at times.
>
> Aside from the above, I've also outlined a tentative game design that we'll
> be aiming for in the event this ever reaches critical mass (I'll share it if
> anyone's interested). Since my focus has been on making a good testing
> framework (or "experience chamber"), however, I haven't really put much
> effort into gameplay yet. It's really only now that I've had a chance to
> dig into the action interface, so that's what promoted the first email.
>
> One of the conceptual changes I've made in this regard has been to change
> the Unity Game's interface from Noun/Verb to Verb/Noun. I can see that you
> guys were aiming for something like what they did in the Sims, where you
> effectively select the object that you want to manipulate and then choose
> the context-dependent action that you want to perform on it. This is fine
> for games like the Sims which aren't action-oriented, or CAD tools, but most
> action-oriented games today use a Verb/Noun selection scheme where each
> keyboard or mouse input corresponds to a type of action you can take. The
> exact context-dependent action taken then depends on the target. For
> example, before you would select a ball and then select the kick action from
> a menu, which would cause the ball to go flying. In the new scheme, you can
> kick at any time, but a ball's only going to go flying if you're standing in
> front of it. Especially once we started adding more animations for each
> type of action, we found this a lot easier to work with.
>
> A lot of things, like a hierarchy of behaviour trees, followed from that.
> I'd still like to keep Unity as dumb as possible and allow OpenCog to do the
> heavy lifting, so for example I'm not promoting giving actions an explicit
> hierarchy in the atomspace or anything. OpenCog should be able to figure
> out the conceptual relationships of actions on its own - it's just that
> we'll handle the edge cases in Unity when we're not given enough context by
> OpenCog. This isn't really code duplication since we can reuse the same
> trees for NPCs; effectively we can just replace where the Emodiment server
> would plug in to Unity with a NPC Behaviour tree instead, etc.
>
> I hope that clears a few things up. I'll post an updated draft of the
> action descriptors after I add some annotations for Nicky, our super-amazing
> artist.
>
> Regards,
> -Lake