Object Oriented Competition Locating System for Online Gaming
Transcription
Object Oriented Competition Locating System for Online Gaming
OBJECT ORIENTED COMPETITION LOCATING SYSTEM FOR ONLINE GAMING By Keith M. Churchill, 137605 A thesis submitted in partial fulfillment of the requirements for the degree of Bachelor of Computer Science: Software & Computing Carleton University March 9, 2005 Approved by : Dr. Tony White Carleton Honours Project Coordinator : Weixuan Li COMP 4905 - Honours Project CARLETON UNIVERSITY ABSTRACT OBJECT ORIENTED COMPETITION LOCATING SYSTEM FOR ONLINE GAMING By: Keith M. Churchill Supervisor: Dr. Tony White Department of Computer Science The problem with online gaming is the inability to locate competition in a consistent and relevant fashion. PC gamers are often separated by different communication networks such as Internet Relay Chat or complete isolated from fellow gamers altogether. ScrimNet helps unify the gaming communities by providing a centralized service that connects gamers to gamers, using both the resources of the web as well as IRC. This system brings together two distinct communities of gamers into one large community providing a better online gaming experience for the end user. TABLE OF CONTENTS Chapter 1 – Introduction................................................................................................... 1 Chapter 2 – User Interface Design .................................................................................. 3 Chapter 3 – Relational Database Design ........................................................................ 6 Chapter 4 – Web Application Design ............................................................................. 7 Chapter 5 – IRC Application Design ...........................................................................10 Chapter 6 – Final Summary ...........................................................................................12 References ............................................................................................................................I Appendix A – IRC Command Line Interface .............................................................II Appendix B – Relational Database Tables .................................................................. III Appendix C – Web Application Processes ................................................................... V Appendix D – ScrimBot Test Output.........................................................................XV Appendix E – LiveBot Test Output.......................................................................XVIII Appendix F – Contents of CD.....................................................................................XX LIST OF FIGURES Number Page FIGURE 1 – ScrimNet main welcome screen. FIGURE 2 – ScrimNet new user registration process. FIGURE 3 - ScrimNet new user registration process. (continued) FIGURE 4 – ScrimNet account activation email. FIGURE 5 – ScrimNet result of successful account activation. FIGURE 6 – ScrimNet logon process. FIGURE 7 – ScrimNet successful logon. FIGURE 8 – ScrimNet add scrim process. FIGURE 9 – ScrimNet add scrim process. (continued) FIGURE 10 – ScrimNet add scrim process. (continued) FIGURE 11 – ScrimNet list scrim process. FIGURE 12 – ScrimNet list scrim process. (continued) FIGURE 13 – ScrimNet accept scrim process. FIGURE 14 – ScrimNet accept scrim email. FIGURE 15 – ScrimNet accept scrim completed. FIGURE 16 – ScrimNet update user account information. FIGURE 17 – ScrimNet admin functionality. FIGURE 18 – ScrimNet admin functionality. (continued) FIGURE 19 – ScrimNet clan leader functionality. FIGURE 20 – ScrimNet clan leader functionality. (continued) ii V V VI VI VII VII VIII VIII IX IX X X XI XI XII XII XIII XIII XIV XIV GLOSSARY Bot. Short for robot, a computer program that runs automatically. Clan. A clique; a sect, society, or body of persons; esp., a body of persons united by some common interest or pursuit HTTP. Short for HyperText Transfer Protocol, the underlying protocol used by the World Wide Web. HTTP defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. IRC. Short for Internet Relay Chat, a chat system developed by Jarkko Oikarinen in Finland in the late 1980s. IRC has become very popular as more people get connected to the Internet because it enables people connected anywhere on the Internet to join in live discussions. Unlike older chat systems, IRC is not limited to just two participants. JDBC. Short for Java Database Connectivity, a Java API that enables Java programs to execute SQL statements. This allows Java programs to interact with any SQLcompliant database. Scrim. Short for scrimmage. A practice session or informal game, as between two units. iii Chapter 1 INTRODUCTION Due to the increasing and ever growing popularity of online gaming in the computer industry. Many dedicated networks have been established for gaming communities around the world to communicate. The problem lies in the shear number of networks, it is often difficult to locate players that play the same game and or players of similar skill level. Often game clans reside on different networks and it is a constant burden to locate a rival clan. Additionally, some clans do not reside on any IRC network. In this case, these clans often use web forums or email listings for organizational purposes. A few game developers have addressed this problem and have included adequate in-game solutions for locating competition. Most notably, BattleNet developed by Blizzard Entertainment provided full in-game matchmaking. There are many advantages and disadvantages to the in-game solution. For instance, the fact that the solution is part of the game reduces the support for other game titles. Although, the framwork around solution can be easily ported to other titles. On the plus side, having an in game solution greatly speeds up the process of finding an opponent and provides a centralized arena for discussion and game play. Unfortunately, Blizzard is the exception rather then the norm. The majority of games developed today provide the connection method only for online gaming and no way to locate players and or clans. As a result, the gaming communities has been forced to find alternative methods of locating skilled competition. Mainly, communicating on websites using forums, by email or chatting on the many IRC networks which often leads to confusion and miscommunication. 1 The system developed for this project titled ScrimNet, which is based on the terminology of a Scrim, short form scrimmage, facilitates the connection and acquiring of competition among the many gamers spread across various networks using different communication protocols. This system will aid gaming clans in locating and communicating with other clans on remote networks who are looking to play either an official match for one of the many gaming leagues and ladders or locating another clan to hold a practice match known as a Scrim. ScrimNet attempts to solve the problem of competition acquiring by bridging many existing gaming network which currently use the IRC protocol and provide access to a centralized database through several user interfaces. The two main protocols supported are HTTP and IRC. These protocols were chosen since they are mature technologies and are widely supported in both application development and already in use by gaming communities. The majority of avid gamers have access to clients for each of these protocols such as web browsers and IRC clients. Each corresponding protocol has a user interface associated with it. The HTTP protocol uses a web application, while the IRC protocol offers a text or message based interface. 2 Chapter 2 USER INTERFACE DESIGN In general, there are many principles to consider when designing a user interface. Every user interface must be designed with a particular user demographic in mind. It is important to understand the types of people that will use the system. Attributes such as, age/intelligence/origin are all key factors that should be considered. In addition, determining the average users computer literacy is also very important during the design process. Assumptions are often made according to the designers literacy level rather then the users. Gamers, in general cover a wide demographic. When considering only PC gamers the spectrum of users is tightened. With the average PC gamer being male 18-35 with novice level of computer literacy. This demographic should be the primary target for the application. After careful consideration of the users of the system, three distinct criteria should be evaluated, usability, visualization and functionality. Usability referring to the ease of use and how straight forward each process is within the application. Visualization, is the graphic appeal and accurate representation of the status of the application. Lastly, functionality which represents the services the application provides. In the case of ScrimNet the web user interface has been designed for the novice computer user, menus are straightforward and easy to use. The application is divided into four distinct sections, the header, footer, the sidebar, and the main window. The header and footer are self explanatory. They simply provide an area to display information regarding the application. (Fig. 1) The layout of the web application uses primarily html tables arranged in a series of layers. In addition, 3 cascading style sheets are used to enhance the visual appeal. This approach allows the application to have a simplistic design that is easy to navigate and from a developer point of view, maintain, since the content is often generated dynamically at runtime. From a usability standpoint, the navigation menu has been placed in the header of the application so that it is always available to the user. The buttons are clearly labeled as to their functionality. Clicking on any of the navigation buttons will take the user to a particular section of the application and start the requested process. The main screen indicates any instructions that need to be taken or errors that needs to be addressed. Any input that needs to be gathered from the user is done in the form of selections, with the exception of account creation and modification. This makes processes such as adding a scrim or listing scrims on a particular game very easy and straight forward to perform. All of these elements combine, create an easy to navigate web application that can be used by the majority of gamers. On the other hand since the IRC interface is text based, and it relies on a series of command with properly formatted parameters to perform the similar operations to that of the web application. IRC users tend to be very knowledgeable regarding the games that they play as well as general computer literacy. So, this particular interface is geared for a user who is comfortable using a command based interface. The advantages of text based interfaces is that experienced users can accelerate or even automate frequently used processes using scripts commonly found in the most popular IRC clients. Also, users of IRC do not have to leave the chat client in order to interact with users located on a different server or network. The command line interface is described completely in Appendix A. 4 Having multiple interfaces benefits the end user in many ways. It brings together users who use the Internet differently. Novice user who may not even know what IRC is can acquire competition from IRC users and conversely IRC users can draw from the massive web user space. In this way the system as a whole caters to both the novice and expert users, which assist in the adoption of ScrimNet amongst the gaming communities worldwide. This is all made possible from the centralized, interface independent database that ScrimNet maintains. 5 Chapter 3 RELATIONAL DATABASE DESIGN The ScrimNet system uses a relational database to store a variety of information. This information can be divided into three distinct sets of data. The first being data relating the users of the system. Details such contact & logon information. The next set of data, game specific details contains games supported and all the various configurations of supported games. Also, details pertaining to users locating other users. For the purposes of this project they will be referred to as Scrim details. Each set of data has a corresponding set of tables within the database. Furthermore, each set has a unique identifier associated with it. These unique identifiers serve as the primary keys. The supporting set of tables are all indexed by the primary keys. This maintains simplicity as well as minimizes the number of table join operations needed, resulting in faster data access. For complete listings of the tables defined by the ScrimNet database see Appendix B. For the creation of the database I choose the popular database applicatiom mySQL. Mainly since the application is free and supports all the required SQL functionality and offers decent performance. Although any SQL compatible database would serve the same purpose. The data is accessed by the backend systems thought the MySQL Connector/J 3.0 which is a native Java driver that converts JDBC calls into the network protocol used by the MySQL database. MySQL Connector/J is a Type IV JDBC driver and has a complete JDBC feature set that supports the capabilities of MySQL. 6 Chapter 4 WEB APPLICATION DESIGN As I eluded to in the previous chapters, the user interfaces are built upon two backend applications which are coded in Java 2 Enterprise Edition 1.3. Java was chosen primary for its ability to function and operate in multiple environments. The development environment for the web application was done under Linux Mandrake 8.1, using Tomcat 4.1 as the application server and Ant 1.5.4 as the application deployment tool. Complete source code and development tools used can be found on the CD accompanying this report, see Appendix F. The web application is a Java Servlet developed around the delegation event model. Event delegation is a generic model built into the Java language. Extending this model to Java servlet design brings a more generic Java programming style and philosophy to servlet applications. The main Advantage of using this model is having a single entry point for all http get and post requests. As a result, application security and dispatching requests can be handled uniformly through-out the application on a per request level. Each request is forwarded to a specific request handler designed to perform an application process. Once the processing is complete the resulting information is passed to the Java Server Pages which are responsible for the generation of the HTML code seen by the users. This allows dynamic content to be produced upon request from the user. Application security is also handled by the servlet’s front-end controller. Within this controller framework three security levels are defined. The first level is reserved for ScrimNet Members, the second for ScrimNet Clan Leaders and the third for ScrimNet Administrators. When a user first logs into the application, 7 and the username and password have been verified with the database, a serverside session is created containing the user details and security access level. (Fig. 67) Every request from the browsers checks against this access level to verify if the user has access to the particular file/page or area within the application. A registration process is in place for new members to join. (Fig. 2-3) After filling out a form providing contact information and choosing a username and password an activation email is sent to the users specified email address. (Fig. 4) This activation process ensures that the email address provided is correct. (Fig. 5) As a ScrimNet Member, you are able to access ScrimNet main functionality. The simplest of processes is too acquire competition. This is achieved by selecting the list scrims button from the navigation menu. The user will be prompted to select which game they would like to view (Fig. 11). After which, ScrimNet will return all available scrims (Fig. 12). If the user happens to own one or more of the scrim requests, they are able to remove it from this screen. Otherwise, they may click on a scrim which will send an request email to that particular scrim owner (Fig. 13-14). If the owner of the scrim chooses to accept, he may do so by clicking the link within the email to acknowledge acceptance (Fig. 15). This will provide both parties with contact information so that time and location can be determined. At this point the scrim is set to inactive within the system. The other process a ScrimNet member may wish to use is add a scrim request to the system. This process is started by clicking on the add scrim button on the navigation bar (Fig. 8). The user is prompted to answer a series of questions related to the game they select such as map name, game type, etc. (Fig. 9). After selecting the appropriate criteria, the scrim is added to the system. Other users of the system will then be able to see the scrim in the listing and chose to accept. Users with clan leader status can perform all the functions that members can perform, in addition they can manage clan details, add users to a particular clan, change clan name, etc. (Fig. 19-20) Administrators are able to manage all users, promote users to clan leader 8 or ban users who may be abusing the system (Fig. 17). Administrator, also are able to manage a game specific data from within the application such as adding a new game/maps or types of play pertaining to a specific game (Fig. 18). All of the processes come together and produce an application that is easy to navigate and functional. Users are able to quickly logon to the application and search for scrims, or add a new scrim if need be. The event delegation model allows the application to uniformly handle requests from the user and provides centralized security. In addition, this framework allows the application to be extensible and robust. 9 Chapter 5 IRC APPLICATION DESIGN The IRC component of the system is two fold. The first application being the connection for IRC users to interface with ScrimNet know as the ScrimBot. The second application is a relay that broadcast game activity on a particular game server to a particular IRC channel, this application is known as LiveBot. This allows high profile matches to be delivered in real-time to users on IRC chat channels. Communication with the ScrimBot is achieved through a set of trigger commands defined by the command line user interface. These commands allow the same functionality as the web application. Users must first authenticate themselves with the bot in order to gain access to the commands. Once proper authentication is achieve the bot provides the user with a set of commands specific to the users security level within the system. Using the ScrimBot, users can add/view/remove/accept scrims that are added via IRC or the WEB. Confirmation is still maintained through an email process that notify the user of acceptance (Appendix D). ScrimBot is a modular application that consists of three modules. The authentication module deals strictly with tasks such as authenticating users, tracking IRC session data and user session detail. The IRC module provide the means for connecting to various IRC servers and is responsible for the sending and receiving of data from the IRC networks. The parser module processes all the raw IRC data, searches for trigger commands and formats data for the forth module, which provides access to the backend mySQL database and provide functionality such as adding / removing and listing scrims. 10 The LiveBot was an attempt to bring high profile matches and playoff game to the masses of users and fans throughout the gaming communities. The difficulty with this type of application is that each game is designed differently and not all games provide functionality to retrieve game status in real time. This portion of the system could easily have become a project on its own. For the scope of our purposes within ScrimNet, I have made the decision to provide an example using the game ‘Soldiers Of Fortune 2’ since it provide a real time logging feature that can be accessed by the LiveBot. For this application to be successful on a larger scale, the LiveBot would have to be built into the game source code. Since I did not have access to any game source for this particular project, I have left this as a future area of development. Appendix E provides the output of the LiveBot application on a Soldier of Fortune 2 local server. The Principle for this application is that it would gather stats on players at the same time provide IRC users the ability to experience the excitement of high profile matches by very skilled players. This application collects the raw information sent through the logging service and parses and formats the data so that it is meaningful to the users. 11 Chapter 6 FINAL SUMMARY The ScrimNet application serves the gaming communities as a search engine for competition when it is very often difficult to locate other gamers with tools provided by in-game by developers. ScrimNet attempts to reach as many users as possible by provided both web and IRC access. User are able to easily search for competition through very well defined processes and the exchange of contact information take place upon success completion. The LiveBot attempts to capture the excitement of high profile matches to the masses of fans by bringing real-time status of a particular match and broadcasting into an IRC chat channel. This is a difficult task since no two games are alike, and not every games offers the ability to capture game information in the real-time manner. For future revisions of the LiveBot, the best solution would be to program a Mod for each game that would interface with the LiveBot application providing the necessary raw data required to broadcast a match similar to a sporting event. Other features such a game announcers could be supported in future releases. The main accomplishment of the ScrimNet system is the centralized arena for gamers young and old, from novice to expert and to organize matches with each other, which increases the overall enjoyment of online gaming today. 12 REFERENCES: Bergsten, Hans. Java Server Pages: Pocket Reference. O’Reilly & Associates, 2001. Cooper, Alan. About Face: The Essentials of User Interface Design. Hungry Minds, Inc. Hall, Marty, Brown, Larry. Core Servlets and Java Server Pages. Volume 1: Core Technologies. 2nd Edition. Sun Microsystems Press, 2004. Hernandez, Michael. Database Design for Mere Mortals. 2nd Edition. AddisonWesley, 2003. Powell, Thomas. Web Design: The Complete Reference. 2nd Edition. McGraw-Hill / Osborne, 2002. Ramakrishnan and Gehrke, Database Management Systems, McGraw Hill, 2003. Walsh, Aaron, Fronckowiak, John. Java Bible. IDG Books Worldwide, Inc., 1996. RFC 1459 - Internet Relay Chat Protocol, http://www.ietf.org/rfc/rfc1459.txt , 1993. Dictionary.com, http://www.dictionary.com Webopedia, http://www.webopedia.com I APPENDIX A: IRC Command Line Interface [ ] = optional parameter. General Commands: !help [<command>] – displays help for a specific command or list of commands. !logon <username> <password> - authenticates user with the ScrimBot. !logout – logs the user out of the application, destroys session data for user. Members Commands: !listgames [<game id>] – lists supported games, if game id is provided, lists all options for particular game. !listscrims <game id> - lists the scrims for a particular game. !addscrim <game id> <map> <size> <type> - adds scrim to database. !acceptscrim <scrim id> - accepts a scrim, sends email to scrim owner. !removescrim <scrim id> – removes scrim from database. Admin Commands: !shutdown – shuts down the bot. !sendmsg <message> - broadcasts a message to all chat channels. !advertise – advertise ScrimNet in all chat channels. II APPENDIX B: Relational Database Tables TABLE 1 – Scrimnet Tables; +--------------------+ | Tables_in_scrimnet | +--------------------+ | clandata | | clans | | gamemaps | | games | | gamesize | | gametype | | scrims | | useractive | | userdata | | users | +--------------------+ TABLE 2 - users; +-------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+----------------+ | id | int(11) | | PRI | NULL | auto_increment | | user | char(25) | YES | | NULL | | | pass | char(25) | YES | | NULL | | +-------+----------+------+-----+---------+----------------+ TABLE 3 - userdata; +-----------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+----------+------+-----+---------+----------------+ | id | int(11) | | PRI | NULL | auto_increment | | firstname | char(25) | YES | | NULL | | | lastname | char(25) | YES | | NULL | | | clan | char(25) | YES | | NULL | | | icq | char(25) | YES | | NULL | | | msn | char(50) | YES | | NULL | | | email | char(50) | YES | | NULL | | | security | int(1) | YES | | NULL | | +-----------+----------+------+-----+---------+----------------+ TABLE 4 - useractive; +--------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+---------+------+-----+---------+----------------+ | id | int(11) | | PRI | NULL | auto_increment | | active | int(11) | YES | | NULL | | +--------+---------+------+-----+---------+----------------+ TABLE 5 - clans; +-------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+----------------+ | cid | int(11) | | PRI | NULL | auto_increment | | id | int(11) | YES | | NULL | | | clan | char(25) | YES | | NULL | | +-------+----------+------+-----+---------+----------------+ III TABLE 6 - clandata; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | cid | int(11) | YES | | NULL | | | id | int(11) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ TABLE 7 - games; +-------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+----------------+ | gid | int(11) | | PRI | NULL | auto_increment | | game | char(25) | YES | | NULL | | +-------+----------+------+-----+---------+----------------+ TABLE 8 - gamemaps; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | gid | int(11) | YES | | NULL | | | maps | char(25) | YES | | NULL | | +-------+----------+------+-----+---------+-------+ TABLE 9 - gamesize; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | gid | int(11) | YES | | NULL | | | size | char(25) | YES | | NULL | | +-------+----------+------+-----+---------+-------+ TABLE 10 - gametype; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | gid | int(11) | YES | | NULL | | | type | char(25) | YES | | NULL | | +-------+----------+------+-----+---------+-------+ TABLE 11 - scrims; +----------+---------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+---------------+------+-----+---------+----------------+ | sid | int(11) | | PRI | NULL | auto_increment | | game | char(25) | YES | | NULL | | | map | char(25) | YES | | NULL | | | size | char(25) | YES | | NULL | | | type | char(25) | YES | | NULL | | | active | int(1) | YES | | NULL | | | timedate | timestamp(14) | YES | | NULL | | | id | int(11) | YES | | NULL | | +----------+---------------+------+-----+---------+----------------+ IV APPENDIX C: WEB Application Processes FIGURE 1 – ScrimNet main welcome screen. FIGURE 2 – ScrimNet new user registration process. V FIGURE 3 - ScrimNet new user registration process. (continued) FIGURE 4 – ScrimNet account activation email. VI FIGURE 5 – ScrimNet result of successful account activation. FIGURE 6 – ScrimNet logon process. VII FIGURE 7 – ScrimNet successful logon. FIGURE 8 – ScrimNet add scrim process. VIII FIGURE 9 – ScrimNet add scrim process. (continued) FIGURE 10 – ScrimNet add scrim process. (continued) IX FIGURE 11 – ScrimNet list scrim process. FIGURE 12 – ScrimNet list scrim process. (continued) X FIGURE 13 – ScrimNet accept scrim process. FIGURE 14 – ScrimNet accept scrim email. XI FIGURE 15 – ScrimNet accept scrim completed. FIGURE 16 – ScrimNet update user account information. XII FIGURE 17 – ScrimNet admin functionality. FIGURE 18 – ScrimNet admin functionality. (continued) XIII FIGURE 19 – ScrimNet clan leader functionality. FIGURE 20 – ScrimNet clan leader functionality. (continued) XIV APPENDIX D: ScrimBot Test Output Start of [SN]Scr1mb0t buffer: Mon Apr 05 18:19:33 2004 Session Ident: [SN]Scr1mb0t (guest@ghazghkull) <tec9> !help <[SN]Scr1mb0t> [..::Scrimnet Help::..] <[SN]Scr1mb0t> Scrimnet Commands available to you are: <[SN]Scr1mb0t> General Commands: !help, !logon, !logout <[SN]Scr1mb0t> If you do not have a Scrimnet account, please visit http://nazdreg.tec9.ca:8080/scrimnet/main to sign up! <[SN]Scr1mb0t> Help Usage: !help <command>, ie. !help addscrim <tec9> !logon xeno.tec9 xenoclan <[SN]Scr1mb0t> Logon successful xeno.tec9! <[SN]Scr1mb0t> Access Lvl: Scrimnet Admin <[SN]Scr1mb0t> [..::Scrimnet Help::..] <[SN]Scr1mb0t> Scrimnet Commands available to you are: <[SN]Scr1mb0t> General Commands: !help, !logon, !logout <[SN]Scr1mb0t> Members Commands: !listgames, !listscrims, !addscrim, !acceptscrim, !removescrim <[SN]Scr1mb0t> Admin Commands: !shutdown, !sendmsg, !advertise <[SN]Scr1mb0t> Help Usage: !help <command>, ie. !help addscrim <tec9> !listgames <[SN]Scr1mb0t> [..::Scrimnet Game Listings::..] <[SN]Scr1mb0t> [Game ID] [Game Name] <[SN]Scr1mb0t> #4 BF1942 <[SN]Scr1mb0t> #3 SoF2 <[SN]Scr1mb0t> #2 ut2k3 <[SN]Scr1mb0t> #1 Quake3 <[SN]Scr1mb0t> To list all valid parameters for a particular game, user !listgames <game id> <[SN]Scr1mb0t> To list the scrims of a particular game use !listscrims <game id>, ie. !listscrims 1 <tec9> !listgames 1 <[SN]Scr1mb0t> [..::Scrimnet Game Parameters::..] <[SN]Scr1mb0t> Game: Quake3 <[SN]Scr1mb0t> Maps: [q3dm1] [q3dm2] [q3dm3] [q3dm4] [q3dm5] [q3dm6] <[SN]Scr1mb0t> Sizes: [1v1] [5v5] [FFA] [2v2] <[SN]Scr1mb0t> Types: [CCTF] [CTF] [DM] [RA] [Custom] <[SN]Scr1mb0t> These are the valid parameters for adding a scrim, for more information type !help addscrim <tec9> !listscrims <[SN]Scr1mb0t> Invalid parameters, Usage: !listscrims <game id> <tec9> !listscrims 1 <[SN]Scr1mb0t> [..::Scrimnet Scrim Listings::..] <[SN]Scr1mb0t> [#2] Quake3 [Map:q3dm3] [Size:FFA] [Game Type:RA] <[SN]Scr1mb0t> [#12] Quake3 [Map:q3dm1] [Size:5v5] [Game Type:CCTF] <[SN]Scr1mb0t> [#13] Quake3 [Map:q3dm4] [Size:1v1] [Game Type:CCTF] <[SN]Scr1mb0t> To Accept a scrim use !acceptscrim, Usage: !acceptscrim <scrim id>, ie. !acceptscrim 1 <tec9> !addscrim <[SN]Scr1mb0t> Invalid parameters, Usage: !addscrim <game id> <map> <size> <type> <tec9> !addscrim 1 q3dm1 1v1 DM <[SN]Scr1mb0t> Scrim has been successfully added, Thank You for using Scrimnet! <tec9> !listscrims 1 XV <[SN]Scr1mb0t> [..::Scrimnet Scrim Listings::..] <[SN]Scr1mb0t> [#2] Quake3 [Map:q3dm3] [Size:FFA] [Game Type:RA] <[SN]Scr1mb0t> [#12] Quake3 [Map:q3dm1] [Size:5v5] [Game Type:CCTF] <[SN]Scr1mb0t> [#13] Quake3 [Map:q3dm4] [Size:1v1] [Game Type:CCTF] <[SN]Scr1mb0t> [#14] Quake3 [Map:q3dm1] [Size:1v1] [Game Type:DM] <[SN]Scr1mb0t> To Accept a scrim use !acceptscrim, Usage: !acceptscrim <scrim id>, ie. !acceptscrim 1 <tec9> !removescrim 14 <[SN]Scr1mb0t> Scrim #14 has been removed successfully. <tec9> !acceptscrim 2 <[SN]Scr1mb0t> Processing request, this may take a few moments... <[SN]Scr1mb0t> Accept Request has been sent, please wait for acknowledgement via email. Thank you for using Scrimnet End of [SN]Scr1mb0t buffer Mon Apr 05 18:19:33 2004 Start of [SN]Scr1mb0t buffer: Mon Apr 05 18:27:44 2004 Session Ident: [SN]Scr1mb0t (guest@ghazghkull) <tec9> !help <[SN]Scr1mb0t> [..::Scrimnet Help::..] <[SN]Scr1mb0t> Scrimnet Commands available to you are: <[SN]Scr1mb0t> General Commands: !help, !logon, !logout <[SN]Scr1mb0t> If you do not have a Scrimnet account, please visit http://nazdreg.tec9.ca:8080/scrimnet/main to sign up! <[SN]Scr1mb0t> Help Usage: !help <command>, ie. !help addscrim <tec9> !logon xeno.tec9 xenoclan <[SN]Scr1mb0t> Logon successful xeno.tec9! <[SN]Scr1mb0t> Access Lvl: Scrimnet Admin <[SN]Scr1mb0t> [..::Scrimnet Help::..] <[SN]Scr1mb0t> Scrimnet Commands available to you are: <[SN]Scr1mb0t> General Commands: !help, !logon, !logout <[SN]Scr1mb0t> Members Commands: !listgames, !listscrims, !addscrim, !acceptscrim, !removescrim <[SN]Scr1mb0t> Admin Commands: !shutdown, !sendmsg, !advertise <[SN]Scr1mb0t> Help Usage: !help <command>, ie. !help addscrim <tec9> !listgames <[SN]Scr1mb0t> [..::Scrimnet Game Listings::..] <[SN]Scr1mb0t> [Game ID] [Game Name] <[SN]Scr1mb0t> #4 BF1942 <[SN]Scr1mb0t> #3 SoF2 <[SN]Scr1mb0t> #2 ut2k3 <[SN]Scr1mb0t> #1 Quake3 <[SN]Scr1mb0t> To list all valid parameters for a particular game, user !listgames <game id> <[SN]Scr1mb0t> To list the scrims of a particular game use !listscrims <game id>, ie. !listscrims 1 <tec9> !listgames 1 <[SN]Scr1mb0t> [..::Scrimnet Game Parameters::..] <[SN]Scr1mb0t> Game: Quake3 <[SN]Scr1mb0t> Maps: [q3dm1] [q3dm2] [q3dm3] [q3dm4] [q3dm5] [q3dm6] <[SN]Scr1mb0t> Sizes: [1v1] [5v5] [FFA] [2v2] <[SN]Scr1mb0t> Types: [CCTF] [CTF] [DM] [RA] [Custom] <[SN]Scr1mb0t> These are the valid parameters for adding a scrim, for more information type !help addscrim <tec9> !listscrims <[SN]Scr1mb0t> Invalid parameters, Usage: !listscrims <game id> <tec9> !listscrims 1 <[SN]Scr1mb0t> [..::Scrimnet Scrim Listings::..] <[SN]Scr1mb0t> [#2] Quake3 [Map:q3dm3] [Size:FFA] [Game Type:RA] <[SN]Scr1mb0t> [#12] Quake3 [Map:q3dm1] [Size:5v5] [Game Type:CCTF] <[SN]Scr1mb0t> [#13] Quake3 [Map:q3dm4] [Size:1v1] [Game Type:CCTF] <[SN]Scr1mb0t> To Accept a scrim use !acceptscrim, Usage: !acceptscrim <scrim id>, ie. !acceptscrim 1 <tec9> !addscrim XVI <[SN]Scr1mb0t> Invalid parameters, Usage: !addscrim <game id> <map> <size> <type> <tec9> !addscrim 1 q3dm1 1v1 DM <[SN]Scr1mb0t> Scrim has been successfully added, Thank You for using Scrimnet! <tec9> !listscrims 1 <[SN]Scr1mb0t> [..::Scrimnet Scrim Listings::..] <[SN]Scr1mb0t> [#2] Quake3 [Map:q3dm3] [Size:FFA] [Game Type:RA] <[SN]Scr1mb0t> [#12] Quake3 [Map:q3dm1] [Size:5v5] [Game Type:CCTF] <[SN]Scr1mb0t> [#13] Quake3 [Map:q3dm4] [Size:1v1] [Game Type:CCTF] <[SN]Scr1mb0t> [#14] Quake3 [Map:q3dm1] [Size:1v1] [Game Type:DM] <[SN]Scr1mb0t> To Accept a scrim use !acceptscrim, Usage: !acceptscrim <scrim id>, ie. !acceptscrim 1 <tec9> !removescrim 14 <[SN]Scr1mb0t> Scrim #14 has been removed successfully. <tec9> !acceptscrim 2 <[SN]Scr1mb0t> Processing request, this may take a few moments... <[SN]Scr1mb0t> Accept Request has been sent, please wait for acknowledgement via email. Thank you for using Scrimnet <tec9> !sendmsg Welcome to scrimnet! <tec9> !advertise <tec9> !shutdown End of [SN]Scr1mb0t buffer Mon Apr 05 18:27:44 2004 Start of #scrimnet buffer: Mon Apr 05 18:27:51 2004 * Now talking in #scrimnet * Retrieving #scrimnet info... <tec9> !help <[SN]Scr1mb0t> *NEW SCRIM ADDED* {Quake3 -[Map:q3dm1] - [Size:1v1] [Type:DM] } Added by: tec9 <[SN]Scr1mb0t> Welcome to scrimnet! <[SN]Scr1mb0t> [..::Scrimnet v1.0:Type !help to learn more::..] * [SN]Scr1mb0t has quit IRC (shutdown requested by admin_) End of #scrimnet buffer Mon Apr 05 18:27:51 2004 XVII APPENDIX E: LiveBot Test Output Start of #scrimnet buffer: Tue Apr 06 03:56:40 2004 * [SN]L1veb0t has joined #scrimnet <[SN]L1veb0t> [..::ScrimNet::LiveBot **NOW BROADCAST MATCH** ::..] <[SN]L1veb0t> themrok666 has taken the Blue Flag! <[SN]L1veb0t> themrok666 has captured the Blue Flag! <[SN]L1veb0t> D!ce[test] was shot by .'_Luci__'.=AM7's AK74 <[SN]L1veb0t> Trillian{KMF}: u boyz should go get gna or aimbot. L8r guyz <[SN]L1veb0t> D!ce[test]: bah 2 <[SN]L1veb0t> sourw@l was shot by mobes's AK74 <[SN]L1veb0t> mobes has dropped the Red Flag! <[SN]L1veb0t> mobes was shot by DogMan's AK74 [ HeaDShoT ] <[SN]L1veb0t> sourw@l disconnected <[SN]L1veb0t> D!ce[test]: i got gna <[SN]L1veb0t> D!ce[test]: lmfao <[SN]L1veb0t> Trillian{KMF}: i know <[SN]L1veb0t> matai-vos irmaos was shot by Trillian{KMF}'s AK74 <[SN]L1veb0t> DogMan was pumped full of lead by [onex]diumraid's M590 <[SN]L1veb0t> mobes was shot by D!ce[test]'s AK74 [ HeaDShoT ] <[SN]L1veb0t> .'_Luci__'.=AM7 was shot by D!ce[test]'s AK74 [ HeaDShoT ] <[SN]L1veb0t> [onex]diumraid was shot by matai-vos irmaos's AK74 <[SN]L1veb0t> Trillian{KMF}: i am talkin to the other people on ur team <[SN]L1veb0t> D!ce[test]: k <[SN]L1veb0t> themrok666 was shot by Trillian{KMF}'s AK74 <[SN]L1veb0t> mobes was shot by D!ce[test]'s AK74 [ HeaDShoT ] <[SN]L1veb0t> The Red Flag has returned! <[SN]L1veb0t> Trillian{KMF} was shot by D!ce[test]'s AK74 <[SN]L1veb0t> [onex]diumraid was shot by D!ce[test]'s AK74 [ HeaDShoT ] <[SN]L1veb0t> DogMan was shot by .'_Luci__'.=AM7's AK74 <[SN]L1veb0t> matai-vos irmaos was shot by Trillian{KMF}'s AK74 [ HeaDShoT ] <[SN]L1veb0t> .'_Luci__'.=AM7 was shot by D!ce[test]'s AK74 <[SN]L1veb0t> D!ce[test] was shot by Trillian{KMF}'s AK74 <[SN]L1veb0t> D!ce[test]: lolz <[SN]L1veb0t> D!ce[test] disconnected <[SN]L1veb0t> DogMan was shot by Trillian{KMF}'s AK74 <[SN]L1veb0t> mobes was shot by matai-vos irmaos's AK74 [ HeaDShoT ] <[SN]L1veb0t> Trillian{KMF} was shot by themrok666's AK74 <[SN]L1veb0t> [onex]diumraid has taken the Red Flag! <[SN]L1veb0t> themrok666 was shot by .'_Luci__'.=AM7's AK74 <[SN]L1veb0t> DogMan was shot by .'_Luci__'.=AM7's AK74 <[SN]L1veb0t> matai-vos irmaos has taken the Blue Flag! <[SN]L1veb0t> matai-vos irmaos has dropped the Blue Flag! <[SN]L1veb0t> matai-vos irmaos was shot by Trillian{KMF}'s AK74 <[SN]L1veb0t> DogMan was shot by .'_Luci__'.=AM7's AK74 <[SN]L1veb0t> TeaCup is connecting... <[SN]L1veb0t> TeaCup joined the red team. <[SN]L1veb0t> themrok666 was shot by .'_Luci__'.=AM7's AK74 <[SN]L1veb0t> TeaCup disconnected <[SN]L1veb0t> [onex]diumraid has captured the Red Flag! <[SN]L1veb0t> Trillian{KMF} was shot by matai-vos irmaos's AK74 <[SN]L1veb0t> [onex]diumraid was shot by DogMan's AK74 <[SN]L1veb0t> matai-vos irmaos was shot by Trillian{KMF}'s AK74 [ HeaDShoT ] <[SN]L1veb0t> themrok666 was shot by .'_Luci__'.=AM7's AK74 <[SN]L1veb0t> Minimum Payne is connecting... <[SN]L1veb0t> Minimum Payne joined the red team. <[SN]L1veb0t> DogMan has taken the Blue Flag! <[SN]L1veb0t> DogMan has dropped the Blue Flag! <[SN]L1veb0t> DogMan was shot by Trillian{KMF}'s AK74 [ HeaDShoT ] <[SN]L1veb0t> mobes has taken the Red Flag! XVIII <[SN]L1veb0t> matai-vos irmaos was shot by .'_Luci__'.=AM7's AK74 <[SN]L1veb0t> DogMan was shot by Trillian{KMF}'s AK74 <[SN]L1veb0t> Minimum Payne disconnected <[SN]L1veb0t> themrok666 has taken the Blue Flag! <[SN]L1veb0t> mobes has dropped the Red Flag! <[SN]L1veb0t> mobes was shot by themrok666's AK74 <[SN]L1veb0t> DogMan was shot by Trillian{KMF}'s AK74 [ HeaDShoT ] <[SN]L1veb0t> themrok666 has dropped the Blue Flag! <[SN]L1veb0t> themrok666 was shot by Trillian{KMF}'s AK74 <[SN]L1veb0t> Trillian{KMF} was shot by matai-vos irmaos's AK74 <[SN]L1veb0t> matai-vos irmaos has taken the Blue Flag! <[SN]L1veb0t> matai-vos irmaos has dropped the Blue Flag! <[SN]L1veb0t> matai-vos irmaos was shot by .'_Luci__'.=AM7's AK74 <[SN]L1veb0t> themrok666 was shot by .'_Luci__'.=AM7's AK74 [ HeaDShoT ] <[SN]L1veb0t> mobes has taken the Red Flag! <[SN]L1veb0t> themrok666 was shot by .'_Luci__'.=AM7's AK74 <[SN]L1veb0t> matai-vos irmaos was shot by Trillian{KMF}'s AK74 <[SN]L1veb0t> Trillian{KMF} was shot by DogMan's AK74 [ HeaDShoT ] <[SN]L1veb0t> DogMan was shot by .'_Luci__'.=AM7's AK74 <[SN]L1veb0t> mobes has captured the Red Flag! <[SN]L1veb0t> .'_Luci__'.=AM= has taken the Red Flag! <[SN]L1veb0t> matai-vos irmaos has taken the Blue Flag! <[SN]L1veb0t> themrok666 was shot by .'_Luci__'.=AM7's AK74 <[SN]L1veb0t> matai-vos irmaos has dropped the Blue Flag! <[SN]L1veb0t> matai-vos irmaos was shot by .'_Luci__'.=AM7's AK74 <[SN]L1veb0t> Trillian{KMF} was shot by DogMan's AK74 [ HeaDShoT ] <[SN]L1veb0t> themrok666 was shot by .'_Luci__'.=AM7's AK74 <[SN]L1veb0t> .'_Luci__'.=AM= has dropped the Red Flag! <[SN]L1veb0t> .'_Luci__'.=AM7 was shot by DogMan's AK74 <[SN]L1veb0t> matai-vos irmaos has taken the Blue Flag! <[SN]L1veb0t> matai-vos irmaos has captured the Blue Flag! <[SN]L1veb0t> mobes was shot by DogMan's AK74 <[SN]L1veb0t> Trillian{KMF} was shot by DogMan's AK74 [ HeaDShoT ] <[SN]L1veb0t> themrok666 was shot by .'_Luci__'.=AM7's AK74 <[SN]L1veb0t> matai-vos irmaos was shot by Trillian{KMF}'s AK74 <[SN]L1veb0t> DogMan was shot by Trillian{KMF}'s AK74 <[SN]L1veb0t> themrok666 disconnected <[SN]L1veb0t> The Red Flag has returned! <[SN]L1veb0t> .'_Luci__'.=AM= has taken the Red Flag! <[SN]L1veb0t> DogMan was shot by Trillian{KMF}'s AK74 <[SN]L1veb0t> mobes was shot by matai-vos irmaos's AK74 [ HeaDShoT ] <[SN]L1veb0t> DogMan disconnected <[SN]L1veb0t> matai-vos irmaos was shot by Trillian{KMF}'s AK74 <[SN]L1veb0t> .'_Luci__'.=AM= has captured the Red Flag! <[SN]L1veb0t> mobes was shot by matai-vos irmaos's AK74 [ HeaDShoT ] <[SN]L1veb0t> Trillian{KMF}: SOMEONE GO RED <[SN]L1veb0t> [..::ScrimNet::LiveBot **BROADCAST FINISHED** ::..] * [SN]L1veb0t has quit IRC (shutdown requested by admin_) End of #scrimnet buffer Tue Apr 06 03:56:40 2004 Start of [SN]L1veb0t buffer: Tue Apr 06 03:56:49 2004 Session Ident: [SN]L1veb0t (guest@ghazghkull) <tec9> !logon xeno.tec9 xenoclan <[SN]L1veb0t> Logon successful xeno.tec9! <[SN]L1veb0t> Access Lvl: Scrimnet Admin <tec9> !start <tec9> !stop <tec9> !shutdown End of [SN]L1veb0t buffer Tue Apr 06 03:56:49 2004 XIX APPENDIX F: Contents of CD Folder Structure: /src/web – source code for web application. /src/scrim – source code for scrimbot irc application. /src/live – source code for livebot irc application. /build – compiled copies of web/scrimbot/livebot application. /files – development tools used for this project. /screenshots – screenshots from the web application. final-report.doc – this document. build.xml – development build configuration. XX