A modern instant messenger is composed of various features which include public conversations, private conversations, user picture and signature. When it’s time to innovate and make an instant messenger that is so special that it is both interesting and standing apart from whatever program already available on the market, it is not too obvious to figure out what extra features could be attached. It feels like almost everything had been already thought of and implemented in some other application.


However, Bavardica is my attempt to make a communication platform like no other. Bavardica, derived from Bavardage, which actually means talking in French, has got mostly two assets over regular instant messengers. Firstly, there is the permanent presence of artificial beings that interact with other users. Secondly, the application relies on a two-dimensional lspace which represents a small world in which the users are inhabitants represented by animated characters. This project is a good chance to set the scene of what could become an innovative virtual world.


Many areas of web entertainments are involved in the Bavardica Project. In its initial form, Bavardica was basically a chat application, but as it is evolving, Bavardica also fits in the following fields.

Artificial Intelligence

As taught to me by Dr Phil Grant, the main objective of AI (Artificial Intelligence) is to try to make computers perform tasks that humans tend to be good at. The actual name “Artificial Intelligence” was coined by John McCarthy in the 60’s. There are a lot of topics which might nowadays be considered as part of the general subject of Artificial Intelligence. But for our current purpose, we shall only consider the themes of natural language understanding and representation of knowledge.

Now, what does it mean for a machine to be intelligent? Alan Turing thought about this problem in the 50’s and came up with the following test: A human would ask questions to both a computer and a human in some other rooms; if the interrogator is not able to figure out (from the answers) which is the machine then the computer is said to behave in an intelligent manner. A very early attempt to build a program which would pass the Turing test was the ELIZA program (by Joseph Weizenbaum). ELIZA was mimicking a conversation with a psychologist and was quite impressive at first glance. However, it was missing a common sense and an actual understanding of natural language (which are both pretty hard to acquire from a computer point of view). Nevertheless, many programs of this kind followed. They were based on tricks like:

o The repetition of user’s statements verbatim (subject to pronominal adjustments)

o  Preceding the repeated statement with the introductory “Why do you need to tell me”

o  Asking “Why do you ask that”, which, in effect, change the topic or the level of the conversation.

Later on, Colby and Al wrote a program called PARRY based on ideas in ELIZA which had more complex properties like elements of emotion and more knowledge of grammar. It was intended to mimic a paranoid patient who believed he was being persecuted. In a real experiment, 33 psychiatrists were asked to rate the degree of paranoia of patients who were communicating through typed transcripts. Three of them were from human patients and two generated by PARRY. None stated that they thought there was anything unusual. Later the psychiatrists were told that some of the transcripts were machine generated, but they were, on the whole, unable to recognise which ones were from PARRY. Of course this whole situation is a bit odd anyway, as human paranoids behave in strange ways. The point here is that it may be difficult to differentiate a human talk from a machine talk (Phil Grant).


Moreover, throughout the time, AI systems are becoming more and more advanced, in fact, more intelligent. Currently, one of the strongest programs of this type is ALICE (Artificial Linguistic Internet Computer Entity) by Richard Wallace. According to Wikipedia, that’s a program inspired from ELIZA that engages in a conversation with a human by applying some heuristical pattern matching rules to the human’s input. The program uses an XML schema called AIML (Artificial Intelligence Markup Language). I use a similar model for implementing the AI feature in this project.


      Virtual worlds:

A virtual world can be defined as a synthetic reality, an environment that is completely generated by a computer system and that is completely transportive in that the participant controls an avatar immersed in an artificial world, according to the book Networking and Online Games (Armitage, Claypool and Branch, 2006). It says that virtual worlds are intended for his users to inhabit and interact. Sometimes, the user can also manipulate elements in the said world and therefore experience a kind of telepresence. As the rate of people using virtual worlds is increasing by 15% every month and as there are nearly 600 million people worldwide registered in virtual world today (according to K Zero, a virtual word consultancy service), I felt that it would be a good plan to learn about this trend and give it a try. In its current form, Bavardica is a virtual world in the sense that each bavard (avatar) is aware of the other bavards and of the scene boundary.



  In a web browser, operations like timing, streaming, playing music forth and back, playing a list of music files etc. are not at all trivial using basic html and javascript. One big advantage of a browser plugin like Silverlight is that it gives much more ease about operations on media files. The book 'Accelerated Silverlight 3' had been really valuable by teaching me how the System.Windows.Controls.MediaElement control provides media playback capability. That control can handle both audio and video in a variety of formats like mp3, wmv, asx, etc. There is even a support for third-party codecs and for new media formats such as H.264, Advanced Audio Coding and mp4. Furthermore, the media element in Silverlight has a lot of properties, methods and events that allows a lot of control over the media. Some of the properties are AutoPlay, CurrentState, CanSeek, IsMuted, Position, NaturalDuration, NaturalVideoHeight and Volume. The methods of the MediaElement control include Pause, Play, SetSource and Stop. Some of the events are CurrentStateChanged, MediaEnded, MediaOpened, MediaFailed, the later allowing some more error handling in case the media cannot be found or in the case the format is incorrect.

This control allows us to bring a symphonic soul to this project. So another aspect of the Bavardica project is the audio streaming, that is now in its most basic form with an mp3 music file playing in the background during the conversation. There are also sound effects that serve as alerts informing that a new user just logged in or that someone just left a new message.


We will now proceed and describe how the application has been build.