Home

Aims

Related work

Current

Publications

People

Downloads

Current work

Click here for the Rendezvous summary.

Click here for latest news.

June 05

We're actually in the middle of testing, results to follow, but in the meantime, there is now a video of Rendezvous at work.

Feb 05 - Knockabout and Rendezvous, what next? LUCID?

After a great deal of coding, a workable implementation of Rendezvous, running over Knockabout - in this case with no profiling only recovery mechanisms based on rules of the Knockabout game - in particular a rule to kick and a rule to change a player's speed and direction, making the player either move to kick the ball so that the ball's position could be rectified, or move to its own ideal position, depending on what seemed better. Interesting results - the consistency wasn't high, but then the whole system is pretty loosely coupled, so that's not a big shock, but it seemed fairly random at different latencies how inconsistent the player's and ball's position would be. Hard to be sure, but I think that's good! Just need to improve the actual inconsistency a bit overall - more rules (will need reflection because otherwise the games programmer is essentially doing all the hard part!), control theory, lots of stuff to look at. Full details on progress in paper 3

Next I think the plan is to go for integrating Rendezvous with Duncan's work on LUCID, which segregates peer to peer based nodes into areas of interest, and in the case of Rendezvous would cut down the necessary network traffic hugely - if it'd work! That's a NOSSDAV paper idea though, with not much time to do it, and at the minute not really a clear enough idea of what it'd be about. Might produce some interesting Rendezvous effects though.

I think looking further in the future, it'd be good to really take a look at the reflection stuff. The Rendezvous mechanism has been through a load of changes in the last month or so working towards the ACE deadline - in particular the removal of reachability needs for calculations. Plus the implementation had a whole load of interesting effects, especially avoiding the profiling issue altogether, which was probably the main focus of big blue ball, and something else we ought to get back to.

Even more work we could do... There's this whole idea about control theory. In the obvious sense - player control directly, AI players and that sort of thing, but much more interestingly as applied to Rendezvous as a whole. If the basic recovery mechanism is the proportional control, and integral control is tied up in the idea of profiling, leading to the intriguing thought that we might not have worked out that we also need derivative control yet, and the prospect of actually being able to tune the Rendezvous mechanism!!

Update - Feb/March 05

Managed to put together the paper for NOSSDAV, and for the first time had an actual many player implementation of Knockabout and Rendezous, with the help of LUCID. There were teething problems of course, but the game itself was fantastic! Really, very good fun, and even held up to people playing in the same room and talking, because goals managed to get rectified quite rapidly (few seconds). Lots of "was that you that scored?" conversations, and grumbling about other people tackling all the time. Very frantic and entertaining. Main issues were with losing your own player altogether (inconvenient) although easier to find now with the new map of the game, and one player who lost touch with the others completely just had his own separate game, which as it turns out is easier and so he scored a lot - depends if it happens at the start though as at the start makes all other views consistent and so the other players tend to be determined to keep the ball on the centre spot! Very hard... More testing - watch this space!

(Note, for older work go to The story so far)



The story so far - previously on Rendezvous

Contents

January - March 2004 - Initial stages
March 2004 - Experiment 1 and its connection to Duncan's work
March 2004 - Pong
June 2004 - After Pong. What we found
Sept 2004 - Rules, Experiment 2: Big Red Ball
Oct 2004 - Big Blue Ball
Nov 2004 - Knockabout: experiment 3 - the football game
Feb 2005 - Knockabout, Rendezvous and LUCID? What next?


January - March 2004

The initial stages of Rendezvous were concentrated on more research oriented goals, seeking out the best means of implementing the Rendezvous concept and comparing it to previous work in the relevant fields. Initially this focussed on rollback and other means of correcting errors, plus event aggregation and methods normally applied to the differences in latencies between cooperating distributed users in games. A great deal of the research at this stage was based on the implementation of collaborative computer games where shared state is used.

Simultaneously, we were also considering the method of implementation of Rendezvous and exactly how it was expected to interact with the system it was trying to correct. Various possibilities were considered - in particular reflection and formal modelling (although we didn't research formal modelling as we have previous background in that area). We also looked into agents and their application in both gaming software and collaborative robotics. Similarly, negotiation of tasks and control theory as the engineering equivalent of a converging application were also investigated.

As time progressed we were looking deeper and deeper into the most appropriate use of experimentation to determine our ideal method of progress. We wanted to form initial results and thorough analysis into both our ideas and our methods before we took any further steps, as our ideas at this stage are unproven. As a means of simplifying our initial experiments we did briefly investigate the equivalences to be found in the field of file synchronisation, where files are stored on a server and can be altered by different people. This, although eventually rejected as a backwards step for the research, brought to light a number of useful theories, especially ideas about the nature of the reflection required in order to make use of a Rendezvous mechanism.

For instance, when we considered the use of a text document as an example, the document could be resynchronised easily if different sections of the document were edited (at least to some extent) but if the same paragraph was altered by two different users, we would ideally want Rendezvous to encourage the user still editing to tend towards the text used by the other user - so spell checkers and inparticular grammar checkers should have an extra level that looked at the differences in two texts and encouraged convergence with underlining and suggestions that were along the right lines! We thought that in fact this required a different degree of reflection - not reflection of the program or the tasks but reflection only of the state. However, the state is affected by the processes performed on it, so the program itself my yet come into the equation.

Research was also carried out into potential conferences and workshops at which this work could be published for future reference.

Much of the work covered in this section is also mentioned in the related work section.

Possibilities - some initial ideas on the experiment
     - non-real time - ie calendar (bit backwards)
     - java RMI or C# equivalent - simulated rendezvous
     - robot, simple position or orientation (etc) rendezvous.

Experiment 1

March - the experiment and its connection to Duncan's work
With the fundamental details of the experiment now in place, I also needed to speak to Duncan, who's broadly working in the same group. He has been working in the area of consistency and entertainment applications with Joe longer than I have as part of his PhD, and he is also working on his own, related, experiments on the locally developed distributed augmented reality game. To summarise, Duncan's work is currently in the area of relevance filtering and trying to perform peer to peer gaming with low latency. Naturally, Duncan has looked into consistency, but for the moment that is not his area and so he's intending to implement a standard TimeWarp consistency method for use with his own experiments. Later, we plan to make use of that by replacing the TimeWarp method (or whatever he chooses) with the Rendezvous equivalent to provide an even greater range of useful results in a second round of experiments on the game.

Duncan's peer to peer system uses a "Can" peer to peer method, which requires new members of the peer to peer group to know someone already within the group (except at the start). Each time a new member joins, the area (within the game) controlled by each member is divided up, so that every member controls an area and makes sure that monsters and so on are functioning. These areas are divided up arbitrarily according to actual cartesian coordinates within the game. However, the players still maintain control over their own actions, so to minimise the communications necessary, if a player is the first to move into a particular area they are delegated the task of looking after that area by the actual owner (the owner doesn't change) until they leave. It doesn't matter if the player is already controlling an unoccupied area, as unoccupied areas have very little activity - just wandering monsters that no one can currently see. The controller of an area must keep track of both players and monsters within an area and make sure that they're all aware of each other as appropriate.

Further to this information about Duncan's current status, we also discussed the Rendezvous Pong experiment at length, and clarified the expectations of it more thoroughly. As discussed before, the arbitrator used in the Rendezvous Pong experiment should initially be completely application specific and its methods completely pre-determined. Later stages will allow it to be extended to cover more generic problems. The functionality to be applied to the Rendezvous Pong arbitrator is described below:

If application A controls its paddle and the ball, and application B controls its paddle...
If the ball leaves A then B experiences disconnection (or delay) before the ball reaches B, then initially B should simulate its own ball in a trajectory as close to the original as possible and A should position the now uncontrolled paddle B in a position in which it is initially ambiguous whether or not B will hit the ball. If B reconnects before the ball reaches the line where paddle B waits, then convergence should be relatively simple. However, if the ball reaches line B, A should see that B has hit the ball - regardless of the (currently unknown) outcome of B. If B then reconnects at this stage, it will be able to tell A whether or not it hit the ball. If B did hit the ball as A has necessarily assumed (hitting the ball wrongly is recoverable, missing wrongly is not) then the two arbitrators must merely manipulate the still travelling ball (and paddles) into a convergent position - as by now they are unlikely to be exactly identical, probably it would be a simple matter to ensure that once A had hit (or missed) they could have completely converged. If, however, B had missed the ball when A had assumed that the ball was hit, the arbitrator for A must then ensure that A does hit the ball on this turn by encouraging the paddle to arrive in the right position without completely taking control (so the paddle cannot move without the player chosing to move it, but the arbitrator could subtley affect the position to ensure that the ball is hit. Once the ball has been hit it would be an easy matter to ensure that B misses.

With this system in place it would still be possible for both A and B to miss, but increasingly unlikely. A and B can still both miss if either A refuses to cooperate with the arbitrator in the situation described above (so essentially A misses on purpose) or perhaps in case of a continued disconnection - in which case it would become unacceptable to continue to guarantee that A hits the ball just in case B missed as this would make the game unplayable. This situation is still under consideration

The plans described do, however, lend themselves well to the planned second experiment, which is intended to incorporate the augmented reality game used in Duncan's work. In this scenario Duncan's relevance filtering and low latency work would almost certainly complement the Rendezvous need for convergence, as the system would be extended to cover a number of players and any relevant factors which might require convergence after a disconnection/latency incident. It is anticipated that ultimately these experiments will be furthered with real life experiments using collaborating robots.

Experiment 1 - the experiment itself

Taking into account our ideas and research so far, we have now formed an experiment to be carried out to demonstrate and test a simplified version of the Rendezvous system.

The idea
     no rollback
     semi-transparent entity to facilitate error corrections between clients
     entity located between processes and shared state
     'encourage' convergence of state
     'encourage' state not to diverge (eg network disconnection - may come later)
     free running clients (not appropriate to consider applications where synchronised clocks are essential as these types of applications should not be operating in the conditions of network latency and disconnection that we wish to deal with

Hypothesis 1:
An arbitrator can ensure convergence of shared state over a range of network latencies (includes race conditions)

Hypothesis 2:
An arbitrator can ensure convergence of shared state after disconnection of clients

The experiment
     Pong!
     C# application both to fit in with other current work in the area (this research group) and to enable possible transfer to mobile phone
     sockets based communication
     artificial delay controller

Stage 1
     moving paddles
     shared ball
           view
           application A controls ball
     arbitrator must keep player uncertain whether ball has been missed or not if definite information delayed

A few notes
     doesn't need to be completely transparent - access to application state if necessary (reflection) - going up rather than going down like normal
     make use of application semantics - may be application specific
     work out how to get application information later
     somewhat equivalent to engine management - ie user input vs engine but the arbitrator knows the engine's limits and the car's limits

The plan
Version 1 of the game should simply be put together in a standard OO way, with the arbitrator clear and distinct but no means for the arbitrator to be generated at the start. Complete knowledge of the game can be assumed. This section should work on the ideal arbitrator and collect results to that end about the difference in timings and positions between Application A and Application B. Classes should perhaps extend different arbitrators to experiment with the ideal model whilst keeping all data clean and available.

Following on from the initial tests with a straight forward OO Pong game, means of creating an arbitrator without prior detailed knowledge of the game code may be considered - including formal definitions, and reflection.

A few future thoughts
Windy pong?
     Pong is quite predictable, it may be too easy to get a perfect arbitrator - what about having gusts of wind to make the ball hard to predict? (this may be implemented as part of stage 1)
Smart Phone Pong
     Pong is ideally suited to the mobile phone, can we make it work across the 1 second GPRS delays?
IPv6
     Another possible extention.

The actual game
So what really happened? Pong was written, and experiments were done to establish the limits of the arbitrator which showed that the limits of the arbitrator were initially related to the size of the screen and speed of the ball (although with spin the speed of the ball was slightly variable so that had to be taken out to make sure - not as predictable as we first thought). On our first trials we showed (a) that the errors without the arbitrator were in the 200-300ms range (as expected) and (b) that the arbitrator allowed us to continue up to 1300ms. With a few modifications we got that from 1300ms - which was because of a badly timed reset when one side thought it'd finished and the other didn't (making the ball flash from one place to another) to around 2800ms - the full length of the screen at normal ball speed. At that stage it was impossible for player A to know whether or not player B had hit the ball at the other end before playing, and so the arbitrator (which was supposed to control player A - or at least encourage at this stage) would have to control player A to be sure, and would naturally end up controlling player A constantly which was obviously no good.

This limit wasn't bad, over the widely expected range of GPRS delays, and the playability (given the stage of development of the game) was reasonable, plus we were reasonably sure that we could work out a new and improved way of manipulating the rules and the arbitrator so that it could continue further. However, at this stage we also started to write a paper for 13th Euromicro Conference on Parallel, Distributed and Network-based Processing and from there began to consider the wider implications of our results. This led to the conclusion of the Pong game (for now - we still hope to trial the arbitrator across GPRS but that we'll be trialling a generic arbitrator rather than this specific one).

 

June 2004 - After the great Pong experiment

From March - June, the Pong experiment was carried out, with a version of Pong created to trial the earliest version of the arbitrator. Although the arbitrator itself was never quite completed, the game has now fulfilled its usefulness by allowing us to try out simple scenarios from which we can now extrapolate to perform the same function on a wider variety of target applications. From here we intend to enter a secondary design phase, calculating carefully the generic form the arbitrator should take. Secondary trials may well begin with a return to the Pong game, but for the moment Pong is complete. These extrapolations are based on results and analysis written up in Rendezvous paper 1, submitted to 13th Euromicro Conference on Parallel, Distributed and Network-based Processing.

Sept 2004 - The Rules and Variables, Experiment 2: Big Red Ball

Various rules on which Rendezvous will ultimately based were developed from the original Pong experiment, details of which are described in Rendezvous paper 2 submitted to WACERTS 04. These rules govern the underlying premise of Rendezvous, including detection of divergence between collaborating states, determination of Rendezvous convergence targets and profiling of each collaborating member in order to anticipate divergence and deal with errors even during delay conditions.

Before implementation of Rendezvous proper, however, certain details of the implementation must be properly determined. In particular, the use of critical variables as a means of detecting a divergence of collaborating shared states, and also the use of profile variables as a means of determining which of a given member's real state details are maintained in profiles in other collaborators. The properties of these variables and their effects on the system as a whole are notable, as although they appear relatively insignificant they in fact underpin the operation of the entire system, thus determining its ultimate behaviour.

Big red ball is an experiment based in the robotics area, with real life variables put into effect rather than those used in a virtual environment as they are prone to manipulation to produce expected, rather than accurate, results unless great care is taken. The robot will push a red ball along towards a target location whilst also maintaining and recording its profile and critical variables, thus enabling analysis of the ideal values of these variables and how they affect the task as a whole.

These results in place, they can be added to existing understanding of Rendezvous as a mechanism and its expected behaviour.

Oct 2004 - Latest update!

Big blue ball almost ready to roll... To be executed with Sony Vaio on Tamiya Juggernaut 2 monster truck (modified - see robotics work) Changed from red ball when it was established that camera found a blue spot easier to see than a red spot.

Joe suggested that perhaps the local node which is detecting potential discrepancies and sending state to others should in fact predict its state and send that information (rather than current information) to delayed collaborating nodes. That way it could time it so that received messages were accurate on their time of arrival (or more likely to be accurate). Any miscalculated delays or disconnections could be dealt with as before.

Nov 2004 - Latest update - the football game

As big blue ball is (still) poised ready to go, we also plan to simultaneously work on the implentation and testing of Rendezvous via a GPRS based multi-player football game. The theory is that the implementation of a more generic form of Rendezvous on this platform, even as we test at a fundamental level for the profile and critical variables on the robotic big blue ball, we can also take a trial and error approach to optimising the use of Rendezvous for GPRS - an ideal example of the target applications for Rendezvous. With these two implementations in place (admittedly, that'll take a little while) we will then have data on the working of Rendezvous and the ideal configurations taken from both ends of the spectrum. Naturally, our concerns about accidentally corrupting data by producing our expected results in a virtual environment still apply, making the blue ball experiments continue to be essential, but with tests performed also taking the opposite approach we hope to achieve more complete analysis and understanding of the problems facing Rendezvous implementation. 

Go to current