\vskip -8pt
\contentsline {chapter}{\numberline {\ }Preface}{xvii}
\vskip -8pt
\contentsline {chapter}{\hbox to\@tempdima {\ \hfil }Acknowledgments}{xix}
\vskip -8pt
\contentsline {chapter}{\numberline {\ }Acronyms}{xxi}
\contentsline {part}{I\hspace {1em}Fundamentals}{1}
\contentsline {chapter}{\numberline {1}Introduction}{1}
\contentsline {chapter}{\numberline {2}Logic Programming}{5}
\contentsline {section}{\numberline {2.1}What is Prolog }{5}
\contentsline {section}{\numberline {2.2}Structure of Prolog }{6}
\contentsline {section}{\numberline {2.3}How Prolog works: Unification and Backtracking }{8}
\contentsline {section}{\numberline {2.4}Working on Lists }{11}
\contentsline {section}{\numberline {2.5}Built-in Predicates in Prolog }{12}
\contentsline {subsection}{\numberline {2.5.1}Arithmetic evaluation }{12}
\contentsline {subsection}{\numberline {2.5.2}Arithmetic comparison }{13}
\contentsline {subsection}{\numberline {2.5.3}Cut and Fail }{13}
\contentsline {section}{\numberline {}Exercises}{14}
\contentsline {chapter}{\numberline {3}Distributed Logic Programming}{15}
\contentsline {section}{\numberline {3.1}Object declarations }{15}
\contentsline {section}{\numberline {3.2}Statements }{16}
\contentsline {section}{\numberline {3.3}Examples }{17}
\contentsline {subsection}{\numberline {3.3.1}Hello World }{17}
\contentsline {subsection}{\numberline {3.3.2}File I/O }{20}
\contentsline {subsection}{\numberline {3.3.3}Buffer Producer and Consumer }{21}
\contentsline {section}{\numberline {}Exercises}{25}
\contentsline {chapter}{\numberline {4}DLP and Virtual Worlds}{27}
\contentsline {section}{\numberline {4.1}VRML EAI and DLP }{27}
\contentsline {section}{\numberline {4.2}Design 3D Virtual Worlds for DLP }{27}
\contentsline {section}{\numberline {4.3}Loading 3D Virtual Worlds }{30}
\contentsline {section}{\numberline {4.4}VRML Predicates }{31}
\contentsline {section}{\numberline {4.5}Manipulating VRML worlds: Examples }{32}
\contentsline {subsection}{\numberline {4.5.1}title moving }{33}
\contentsline {subsection}{\numberline {4.5.2}Bus Driving }{35}
\contentsline {subsection}{\numberline {4.5.3}The Vector Library in DLP }{39}
\contentsline {subsection}{\numberline {4.5.4}Ball Kicking }{41}
\contentsline {subsection}{\numberline {4.5.5}Soccer Kicking with Goalkeeper }{42}
\contentsline {section}{\numberline {}Exercises}{44}
\contentsline {part}{II\hspace {1em}3D Web Agents}{45}
\contentsline {chapter}{\numberline {5}Agents}{47}
\contentsline {section}{\numberline {5.1}Simple Reflex Agents }{47}
\contentsline {section}{\numberline {5.2}Decision-making Agents }{48}
\contentsline {section}{\numberline {5.3}BDI Agents }{49}
\contentsline {section}{\numberline {5.4}Extended BDI Agents }{50}
\contentsline {section}{\numberline {5.5}Main Features of Intelligent Agents }{52}
\contentsline {chapter}{\numberline {6}Web Agents}{53}
\contentsline {section}{\numberline {6.1}Introduction }{53}
\contentsline {section}{\numberline {6.2}Intelligent services on the web -- an overview }{54}
\contentsline {section}{\numberline {6.3}Agents in virtual environments }{55}
\contentsline {subsection}{\numberline {6.3.1}Agents in 3D Community Server }{55}
\contentsline {subsection}{\numberline {6.3.2}Information retrieval in virtual environments }{57}
\contentsline {subsection}{\numberline {6.3.3}Adaptive environments -- presenting information }{58}
\contentsline {subsection}{\numberline {6.3.4}Discussion }{59}
\contentsline {section}{\numberline {6.4}A taxonomy of web agents }{60}
\contentsline {subsection}{\numberline {6.4.1}3D-Server-Multiple-Agent }{62}
\contentsline {subsection}{\numberline {6.4.2}3D-Server-Single-Agent }{62}
\contentsline {subsection}{\numberline {6.4.3}3D-Client-Multiple-Agent }{63}
\contentsline {subsection}{\numberline {6.4.4}2D-Server-Multiple-Agent }{64}
\contentsline {subsection}{\numberline {6.4.5}3D-Client-Single-Agent }{64}
\contentsline {subsection}{\numberline {6.4.6}2D-Server-Single-Agent }{66}
\contentsline {subsection}{\numberline {6.4.7}2D-Client-Multiple-Agent }{66}
\contentsline {subsection}{\numberline {6.4.8}2D-Client-Single-Agent }{66}
\contentsline {section}{\numberline {6.5}Research issues }{67}
\contentsline {paragraph}{Demonstrators for agents in virtual environments}{69}
\contentsline {section}{\numberline {6.6}Conclusions }{70}
\contentsline {chapter}{\numberline {7}3D Web Agents in DLP}{71}
\contentsline {section}{\numberline {7.1}Implementation of 3D Web Agents }{71}
\contentsline {section}{\numberline {7.2}Soccer Playing Agents: An Example }{72}
\contentsline {subsection}{\numberline {7.2.1}General Consideration }{72}
\contentsline {subsection}{\numberline {7.2.2}Design of virtual worlds }{73}
\contentsline {subsection}{\numberline {7.2.3}Multiple Thread Control }{76}
\contentsline {subsection}{\numberline {7.2.4}Formalizing Behaviors Soccer Ball }{78}
\contentsline {subsection}{\numberline {7.2.5}Cognitive Models of Soccer Players }{81}
\contentsline {subsection}{\numberline {7.2.6}Controlling Goalkeepers }{85}
\contentsline {subsection}{\numberline {7.2.7}Behaviors of Soccer Player Users }{86}
\contentsline {subsection}{\numberline {7.2.8}Discussion }{87}
\contentsline {section}{\numberline {7.3}Dog World }{88}
\contentsline {subsection}{\numberline {7.3.1}Design the virtual world }{88}
\contentsline {subsection}{\numberline {7.3.2}Behavioral model of the dogs }{89}
\contentsline {subsection}{\numberline {7.3.3}Flock and Distributive Function }{90}
\contentsline {subsection}{\numberline {7.3.4}Implementation }{91}
\contentsline {subsection}{\numberline {7.3.5}Discussion }{92}
\contentsline {section}{\numberline {}Exercises}{93}
\contentsline {chapter}{\numberline {8}Avatars Design}{95}
\contentsline {section}{\numberline {8.1}Avatars }{95}
\contentsline {section}{\numberline {8.2}H-anim 1.1 Specification }{96}
\contentsline {section}{\numberline {8.3}Creating H-anim Compliant Avatars }{100}
\contentsline {section}{\numberline {8.4}Avatar Authoring Tools }{103}
\contentsline {subsection}{\numberline {8.4.1}Curious Labs Poser 4 }{103}
\contentsline {subsection}{\numberline {8.4.2}Blaxxun Avatar Studio }{103}
\contentsline {section}{\numberline {8.5}Avatar Animation Control in DLP }{106}
\contentsline {section}{\numberline {}Exercises}{108}
\contentsline {chapter}{\numberline {9}STEP : a Scripting Language for Embodied Agents}{109}
\contentsline {section}{\numberline {9.1}Motivation }{109}
\contentsline {section}{\numberline {9.2}Principles }{110}
\contentsline {section}{\numberline {9.3}Scripting Language STEP }{112}
\contentsline {subsection}{\numberline {9.3.1}Reference Systems }{112}
\contentsline {paragraph}{Direction Reference}{112}
\contentsline {paragraph}{Body Reference}{114}
\contentsline {paragraph}{Time Reference}{116}
\contentsline {subsection}{\numberline {9.3.2}Primitive Actions and Composite Operators }{116}
\contentsline {subsection}{\numberline {9.3.3}High-level Interaction Operators }{117}
\contentsline {section}{\numberline {9.4}Examples }{117}
\contentsline {subsection}{\numberline {9.4.1}Walk and its Variants }{117}
\contentsline {subsection}{\numberline {9.4.2}Run and its Deformation }{119}
\contentsline {subsection}{\numberline {9.4.3}Tai Chi }{120}
\contentsline {subsection}{\numberline {9.4.4}Interaction with Other Agents }{122}
\contentsline {section}{\numberline {9.5}XSTEP: the XML-encoded STEP }{123}
\contentsline {section}{\numberline {9.6}Implementation Issues }{124}
\contentsline {subsection}{\numberline {9.6.1}STEP \ Components }{124}
\contentsline {subsection}{\numberline {9.6.2}Parallelism and Synchronization }{125}
\contentsline {subsection}{\numberline {9.6.3}Rotation Interpolation }{127}
\contentsline {section}{\numberline {9.7}Conclusions }{128}
\contentsline {part}{III\hspace {1em}Virtual Communities}{131}
\contentsline {chapter}{\numberline {10}Virtual Communities}{133}
\contentsline {section}{\numberline {10.1}Introduction }{133}
\contentsline {section}{\numberline {10.2}Living Worlds }{134}
\contentsline {section}{\numberline {10.3}Agent-based Virtual Community }{134}
\contentsline {chapter}{\numberline {11}DLP for Virtual Communities}{137}
\contentsline {section}{\numberline {11.1}DLP Networking Predicates }{137}
\contentsline {section}{\numberline {11.2}Distributed Communication }{141}
\contentsline {section}{\numberline {11.3}Example: VRML-based Multiple User Soccer Game }{145}
\contentsline {subsection}{\numberline {11.3.1}Distributed Soccer Game Protocol }{145}
\contentsline {subsection}{\numberline {11.3.2}Performance Improvement }{147}
\contentsline {subsection}{\numberline {11.3.3}Implementation }{149}
\contentsline {subsubsection}{\numberline {11.3.3.1}$wsserver$}{149}
\contentsline {subsubsection}{\numberline {11.3.3.2}$wsclient$}{153}
\contentsline {section}{\numberline {}Exercises}{155}
\contentsline {chapter}{\numberline {12}Conclusions}{157}
\contentsline {chapter}{Appendix A DLP Built-in Predicates}{159}
\contentsline {paragraph}{Arithmetic comparison}{159}
\contentsline {paragraph}{Arithmetic evaluation}{159}
\contentsline {paragraph}{Atomic term processing}{160}
\contentsline {paragraph}{Character input/output}{160}
\contentsline {paragraph}{Logic and control}{160}
\contentsline {paragraph}{Stream selection and control}{161}
\contentsline {paragraph}{Term comparison}{161}
\contentsline {paragraph}{Term creation and decomposition}{161}
\contentsline {paragraph}{Term input/output}{161}
\contentsline {paragraph}{Term input from constant terms}{162}
\contentsline {paragraph}{Term output to constant terms}{162}
\contentsline {paragraph}{Term unification}{162}
\contentsline {paragraph}{Type testing}{162}
\contentsline {paragraph}{List Processing}{162}
\contentsline {paragraph}{Miscellaneous}{162}
\contentsline {paragraph}{Java run-time system property predicates}{163}
\contentsline {paragraph}{TCP / IP Networking}{164}
\contentsline {paragraph}{Node::Field Attribute Storage and Retrieval Predicates}{164}
\contentsline {paragraph}{Get / Set Field Predicates}{165}
\contentsline {paragraph}{Get / Set Queue Predicates}{165}
\contentsline {paragraph}{Conditional Queue Lookup Predicates}{166}
\contentsline {paragraph}{Get / Set Array Predicates}{166}
\contentsline {paragraph}{DLP Regular Expression Library Predicates}{167}
\contentsline {paragraph}{Pattern Predicates}{167}
\contentsline {paragraph}{Pattern Matcher Creation}{167}
\contentsline {paragraph}{URL predicates}{167}
\contentsline {paragraph}{Matcher Predicates}{168}
\contentsline {paragraph}{Atom / String Predicates }{169}
\contentsline {paragraph}{DLP / JavaScript Interface}{170}
\contentsline {paragraph}{DLP / XML : Extensible Markup Language Predicates}{171}
\contentsline {paragraph}{Multi-threaded Objects (Syntax Summary)}{171}
\contentsline {paragraph}{DLP Foreign Language Interface}{172}
\contentsline {paragraph}{Vectors / Quaternions (vectorlib)}{173}
\contentsline {paragraph}{DLP / EAI: VRML External Authoring Interface Library (Summary)}{174}
\contentsline {chapter}{Appendix B Source Codes}{177}
\contentsline {section}{\numberline {B.1}Soccer Game: Single User/Multiple agents }{177}
\contentsline {section}{\numberline {B.2}Dog world }{182}
\contentsline {chapter}{Appendix C}{189}
\contentsline {chapter}{\numberline {References\hss }}{191}
\contentsline {chapter}{\numberline {Glossary\hss }}{197}
\contentsline {chapter}{\numberline {Index\hss }}{198}
