I'm planning to use npc and scripting modules to create a programable
bot for educational purposes; think about soft skills, or actors in a
simulation, or stuff like that. The problem is that for most
educators, the idea of installing wonderland and the needed modules,
and start scripting (in javascript or whatever), it's just way too
much. Some of them wouldn't have the skill to do it, some others won't
have the time or interest.
So here comes my project. I'm planning to create a little interface 'a
la scratch' (http://www.youtube.com/watch?v=ix6Hlt8xL3E&feature=related)
to allow to write scripts by dragging and dropping blocks on-screen.
It will be quite simple, at least at the beginning, and I'm planning
to use jquery ui for that. The output of the 'script window' (or div
in this case) will be translated into a series of scripts. I'm going
for a web interface cause it can be hosted (one thing less to install
for educators!).
I am planning on packing up the resultant scripts and write a content
importer that will place the scripts in appropriate places. I think
the structure of the scripts is quite fixed and they live in the user
area, so it should be possible to do... is this right?
I am only in planning stage so I will have to go back to the scripting
tutorials and start messing with the npc modules! And of course, it
will not be all that straight forward in the end.
There are examples of this kind of GUI all over the place, such as the
already mentioned scratch or scratch4SL which translates into LSL (SL
and opensim scripting). So I guess it could also be used to teach
introductory programming, but my target audience right now is
educators, and limited to bots (not general scripting). Making it more
general/flexible would be way to much for me, and I would want to have
it working before the next semester (wishful thinking!)
I'll push the GUI project and the importer to my github when I start
messing with code (hopefully this very week!) so feel free to have a
look if you fancy.
Any feedback will be much appreciated!
cheers,
José
José, Hi. It's great that you're planning to tackle this project. While the block scripting approach might work, I would suggest that you at least consider some alternative UI mechanisms. The place to start is with some user stories. Can you articulate a number of different things educators might want to do with bots? Here are some things on my list:
Nicole, the user stories are a great start and I've been working on
that for a bit. I have sorted a couple of interviews with educators to
help me finalise basic requirements and I was planning to use those
stories as examples to pack with the GUI.
Morris, I went through the scripting classes when they were released
earlier this year, but I still have to catch up with all the bot
functionality. You've done a lot of great work in this area and it
will be great to reuse as much as I could.
You both seem to agree that working in-world would be a better fit.
The wizard sounds great but unfortunately I do not have the time (or
knowledge) to create a module like that.
The scripting editor is a good option but it might be out of reach for
some of my audience, and my intent here is to make the creation of
bots as easy as possible. The idea of the externally hosted,
block-dragging interface is to cater for my target audience: educators
that might know very little (to nothing) about programming.
Regarding communication with the exterior (conversational robot), my
plan is to finish the restful communicator module that I started
earlier in the year (and then abandoned!). That would allow the bot to
communicate with any external service with a REST interface, but then
again, this is a lot of wishful thinking on my part!
I have a tendency to like tools that can be used out of the world, and
that's why my first OWL project attempt ever was the (unfortunately
unfinished!) restful communicator. I generally see advantages in two
fronts:
1. From a development point of view I can work on the tool without
depending on OWL; development is faster, testing is faster; deployment
is easier, and hosting is very flexible.
2. From a users point of view, they will not depend on the world being
available to work with the tool.
The tricky bit then is connecting both sides. But OWL comes with a lot
of goodies like importers that you can extend and make that connection
happen in some cases.
I understand what Morris mentions about the coding cycle for the bot
(trial and error) being clumsy. I do agree completely and should put a
bit more thought on that. I could try to script the drag and drop
mechanism within the scripting editor but that would be very
adventurous, and I really need at least a working proof of concept for
next semester.
What I really need to do is to take a year off work and do all the
stuff that I really want to do!!! If only bills would pay for
themselves! :D
thanks again for the input guys, really appreciated!
José
thanks for the input again; will have a go at the modules and I will
probably have a ton of questions after that; if you don't mind me
disturbing you with all this of course! :)
cheers,
José
1. Is it still needed to modify the xml files to get the avatars named
correctly?
2. what does ICE stand for?
cheers,
José
Yes on the avatar file change. All the avatars have the same name but to sort out the animation events a unique name is required.
ICE is inter-cell event, the event used for all the communications between cells.
Morris
On Nov 9, 2010 8:36 PM, "Josmas Flores" <josmas...@gmail.com> wrote:
Hi Morris, just gone through the scripting tutorials(except for the
walk and the bug ones) and although I have a couple more questions,
will start by just 2:
1. Is it still needed to modify the xml files to get the avatars named
correctly?
2. what does ICE stand for?
cheers,
José
On 9 November 2010 13:08, Morris Ford <morri...@gmail.com> wrote:
> Anytime.
> Morris
>
> On Tue...
Will go through the 2 remaining documents today (hopefully). I have a
bunch of notes from my experiments (also had a couple of mates going
through the classes with me), would you be interested in the feedback
about the documentation? I can send it privately if you want to have a
read.
I started documenting some of the process in the community wiki
(thanks Maggie for adding the Bots_101 page!):
http://faithhold.dyndns.org:8080/JSPWiki/Wiki.jsp?page=Bots%20101
cheers,
José
Yes, your description is spot on. Scripting is great to create content
but it is targeted to developers. Your Robots tab is a great way to
abstract at a higher level, but it is still quite technical (and this
is not a critique, I think you are doing an awesome job).
I am aiming to abstract even further and allow non-technical people to
mess about with the bots.
I would also agree that a tool within the world would be the way to go
but I'm a bit worried about finding problems that will stop me from
getting anywhere (and this is ultimately my own limitations!). So I
might start outside and then translate it into an in-world module at
some stage when I have something already in place.
A couple of questions about the Bug tutorial. You are using Maya and
then exporting to collada... would it be possible to use other tools,
say blender?
Or is the modulator module specific for Maya output? I am assuming
that the modulator module is only used to create this kind of animated
art, right?
And the last one... You are scripting the animation in Maya, but also
scripting the object through the scripting component... I thought the
animations were embedded in the dae file itself... I'm obviously
missing something here but I don't quite get it.
cheers,
José
I'm following the avatar path tutorial and I cannot write to a file;
after creating the path I click on 'write path file' and I get this on
console:
ScriptingComponent : Cell 3 : Script file
http://134.226.112.171:8080//webdav/content/scripts/cubo/startup.js
not found
10-Nov-2010 16:23:13
org.jdesktop.wonderland.client.cell.ChannelComponent messageReceived
WARNING: No listener for message class
org.jdesktop.wonderland.common.cell.messages.CellServerComponentMessage
from cell org.jdesktop.wonderland.client.cell.ModelCell status VISIBLE
Inside setScriptContext
10-Nov-2010 16:27:20
org.jdesktop.wonderland.modules.webdav.common.WebdavContentCollection
getChild
WARNING: In path paths element paths not found
Exception for contentWriteFile
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at properties.contentWriteFile(Unknown Source)
at properties.jButtonWriteFileActionPerformed(Unknown Source)
at properties.access$1500(Unknown Source)
at properties$17.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6267)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.NullPointerException
at org.jdesktop.wonderland.modules.scriptingComponent.client.ScriptingComponent.contentWriteFile(ScriptingComponent.java:1177)
... 33 more
Any idea what is going on? I'm using Ubuntu32.
Is the module supposed to be writing to the global webdav space? any
permission issues maybe? I tried unchecking the 'Global Webdav' box
but same output.
cheers,
José
cheers,
José
the exception in the console is gone but the server output looks like:
[WebdavServlet] Permission denied writing
/home/jos/.wonderland-server/0.5-dev/run/content/paths/path_1 by jos
cheers,
José
thanks for all your help Morris!
Morris, will probably send the feedback directly cause I don't want to
spam the list.
thanks again!
José
and YES! the .net issue is a big one... I tend to look at things on a
positive way and think about it as an opportunity to mess about with
ironruby or ironpython, but won't go there if I can avoid it!!! :)
cheers,
José
The document for the bot program creation is in process. Maybe tomorrow.
On Nov 10, 2010 7:30 PM, "Josmas Flores" <josmas...@gmail.com> wrote:
yeah, only followed the document... you mention a different doc for
the complex one but not sure that's available?
and YES! the .net issue is a big one... I tend to look at things on a
positive way and think about it as an opportunity to mess about with
ironruby or ironpython, but won't go there if I can avoid it!!! :)
cheers,
José
On 11 November 2010 00:23, Morris Ford <morri...@gmail.com> wrote:
> I assume you mean the avata...
José