work in progress, please feel free to contribute!

The original tutorials#

This four part tutorial was originally written by Jordan Slott for 0.5 preview 2 (end of 2009).

It is about time to migrate it out off the wiki, so in the process, I hope we can make some improvements to an already excellent tutorial!

The new content#

The new content will be totally based on the original tutorials. The process to complete it will be to add the new bits first (read further down) and then copy the original material.

The new empty module#

It is hosted in github at empty module and it can be used as explained in the README file.

If you don't like git/github, it can also be downloaded as a zip file by using the Download button in that page (highlighted in yellow in the following screenshot):

Here's a screencast on how to use the empty module

Part 1: #

Link to the original tutorial

Class diagrams for Part 1#

The Shape Cell Managed Object:

The Common classes, server and client states:

The client side, a Cell and its Renderer(a Jme renderer):

There is also a factory class that wires the new Cell into the insert object menu.


Typical problems found when creating your first module.
  • If your new cell does not appear in the object menu:
    • make sure you have created the CellFactory at the end of Part 1.
    • make sure that factory class is annotated with @CellFactory.
  • Your new cell appears in the object menu but after clicking it, it does not show in-world:
    • make sure all your classes are public, and extending the appropriate super class.
  • If all the code seems fine but the class does not compile (with errors in the class name):
    • make sure all your imports are as expected. If you use automatic import, it can grab classes from the wrong place.


The forthcoming additions to the tutorials are:
  • Class diagrams to get a better view of the bigger picture
  • A new empty module with:
    • more up to date classpaths (if you are using netbeans)
    • stored in a source control system so it can be modified
    • addition of JUnit as a library and a Test target for ant {TODO}

Part 2: #

Link to the original tutorial

Part 3: #

Link to the original tutorial

Part 4: #

Link to the original tutorial

This tutorial is concerned with passing messages from client to server so that the server can update all the other clients that are connected to it. If an object can change its shape but it does not send a message to the server stating that the shape has changed, there is no way for the system to know that it has to update all the other clients that are connected. The following screencast explains this problem with two clients(on the same machine) connected to the same server.

Importance of messages between client and server

Add new attachment

Only authorized users are allowed to upload new attachments.

List of attachments

Kind Attachment Name Size Version Date Modified Author Change note
ShapeCellMO.png 13.7 kB 1 27-Jan-2011 17:22 Josmas Flores ShapeCellMO
ShapeCell_and_Renderer.png 25.0 kB 2 27-Jan-2011 17:27 Josmas Flores ShapeCell_and_Renderer
common_Classes.png 9.0 kB 1 27-Jan-2011 17:23 Josmas Flores common_Classes
empty_module_zip_download.png 44.8 kB 1 09-Jan-2012 16:51 Josmas Flores
« This page (revision-15) was last changed on 09-Jan-2012 18:23 by Josmas Flores