/*********************************************************\ * Mr. Aidas Bendoraitis (aidas.bendoraitis@gmail.com) * * * * Proposal for the "Summer of Code" presenting the project* * "Online Multilanguage Multiplayer Halma Game" * * * * O * * / \ * * O---O * * / \ / \ * * O---O---O * * / \ / \ / \ * * O---O---O---o---o---o---o---O---O---O * * \ / \ / \ / \ / \ / \ / \ / \ / \ / * * O---O---o---o---o---o---o---O---O * * \ / \ / \ / \ / \ / \ / \ / \ / * * O---o---o---o---o---o---o---O * * \ / \ / \ / \ / \ / \ / \ / * * o---o---o---o---o---o---o * * / \ / \ / \ / \ / \ / \ / \ * * O---o---o---o---o---o---o---O * * / \ / \ / \ / \ / \ / \ / \ / \ * * O---O---o---o---o---o---o---O---O * * / \ / \ / \ / \ / \ / \ / \ / \ / \ * * O---O---O---o---o---o---o---O---O---O * * \ / \ / \ / * * O---O---O * * \ / \ / * * O---O * * \ / * * O * \*********************************************************/ /*********************** Synopsis ************************/ Halma (also known as Chinese Checkers) is a board game for 2, 3, 4 or 6 players. Its rules are simple, so it can be played by 7 year-old children as well as by adults. The most important thing is that the competition is very attractive. Halma is played on a board with a six-pointed star. Its objective is to move all ones marbles across the board to occupy the star point directly opposite. A player can move one step at the time or jump over adjacent marbles. I would like to accept a challenge designing a protocol for the multilanguage multiplayer Halma game with a built-in chatting system, and implementing it using AJAX on the client side and PHP+MySQL on the server side. I have chosen AJAX on the client side because I consider those technologies to be the most accessible for dynamic web applications as most modern browsers support AJAX without any additional plug-ins. /***************** Benefits to Google ********************/ I think that Google is one of the innovators of AJAX technologies. Gmail and Google Maps are based on AJAX. Therefore there wouldn't be any surprise if Google got its Games based on the same technologies. Halma game could be the first Google game ever. Games are "addictive" applications and they are a very good field for advertisements. As it is an open-source project, Google will be able to use all the source code or some of the components in their development. Moreover, if my project is successful and my skills are evaluated well, Google may suggest me more game development projects. /******************* Deliverables ************************/ - A white paper for the game protocol - An engine that loads XML data from a server and processes it or sends some data to the server (according the configuration). - A working Halma implemented using the previously described data transferer (see "Project Details" for details). /******************* Project Details *********************/ The features of the game should be: - The game works on IE 5+ and FF 1+ (backward compatibility is ignored). - No popups, no frames, and one window for the game. - Valid XHTML. - Connected informational pages (i.e. "Rules") can be achieved through AJAX if JavaScript is enabled, and through simple browsing otherwise. This is needed because the robots of search engines should be enabled to index those pages into their databases. - Each player is able to play one match at a time. - Multilanguage interface support. - Different halls for players speaking different languages. - The ability to choose the size of the board in the number of possible positions (the original game board has a six-pointed star with 120 positions, but there may be simplified or multiplexed versions of the board with 72 or 180 positions appropriately). - The ability to choose the number of players at the board. - The ability to sit down at a new or existing board. - The ability just to watch others' game. - The player registration is not compulsory. Before starting a game a user just has to enter a unique nickname. If he or she is satisfied with the achieved score results, the nickname can be registered and the score will be saved for the statistics. - The ability to chat with others in a hall or at a board. - At the start the board is rotated to the player with his or her marbles at the bottom point of the star. - The ability to view the top players. The main idea of the Halma protocol is to let other developers create their client-sided applications of Halma. Let's say that in the future one player will be able to play a match in an AJAX-based application, another will play the same match in a Flash-based one, the third player maybe will do it using some executable files, and maybe someone will play the same match on his or her mobile phone or PDA using Java. What are the areas that commands and formats of data should the protocol include? - Language interface. - Registration, signing up and out. - Available halls. - Available boards at a hall. - Board configuration, storing positions. - Turns. - Chat. - Top players. All data, mentioned in the protocol, should be received from a server in XML. The planned AJAX implementation of the game will have its Data Transferer which will be able to load some data from server or send something to there. The Data Transferer will have its XML-based queue of commands. All the commands to the server will be stored there and executed in turn. There will be only one asynchronous transfer at a time not including the loading of graphic data (pictures of the GUI). Data Transferer will be able to load both XML and plain text. The data received from the server will be processed according the settings. It will be sent to a specified function, which can assign it to a tag value or variable, transform the data through some XSLT processors, or do some other things. If the data is JavaScript, it can be included. If the data is CSS, it can be applied. If the data is HTML, it can be showed. I have already decided how the positions of the marbles in a board should be stored so, that the board could be of a varying size. The six-pointed star consists of 6 parallelograms. Therefore, the positions can be saved in a 3D array where the 1st index describes the number of the parallelogram, and the other two indexes describe the position in that parallelogram. Then I just have to write some rules for relations among indexes. /******************* Project Schedule ********************/ The project will take about 9 weeks: just as "the Summer of Code" continues. I can begin working as soon as I am sure about the acceptance of my project. Here is my preliminary plan for the project: Week #1. Development of the data transferer. Week #2. Writing the primary white paper for the game protocol. Week #3. Design and development of the server-sided services. Week #4. Development of the registration, sign-up and sign-out, browsing among halls and boards. Week #5. Development of the gameplay. Week #6. Development of the chatting system. Week #7. Handling of GUI. Week #8. Finishing all unfinished (I must manage my risks). Week #9. Testing, licensing, and publishing to SourceForge or a similar website. /************************* Bio ***************************/ I am a graduating student of the Bachelor's studies in Computer Science. I have been studying 4.5 years at Vilnius University, The Faculty of Mathematics and Informatics. At the 17th of June, 2005, I am planning to get the Diploma. My graduating work is based on XML and JavaScript. It is an online autostereogram generator (http://aaiddennium.online.lt/stereo in Lithuanian). I have also the practice of 2.5 years at web development at Linkarta Ltd. Mostly I was working at their CMS (Content Management System) called EasyWeb. I am often full of creative ideas. However, I usually don't have enough time to implement them, because I need to earn some money for my common needs. Therefore, I think that the Stipend of "the Summer of Code" would be a great opportunity to embody those ideas not worrying about the costs of living, and also it is a chance to prove myself and others what I am really able to with games. Web technologies and game development are the areas that interest me. I have translated W4D (Worth World Wide Web Dogma) manifest in Lithuanian (http://dogma.pixy.cz). I was invited to Lithuanian national radio to talk about the support of the web standards in the development of Lithuanian websites (http://www.lrt.lt). I read much information about game development daily and write a web log mentioning my own ideas, opinions and critics connected with it (http://aaiddennium.online.lt/blog mostly in Lithuanian). My full CV and some of the portfolio can be downloaded/viewed at http://aaiddennium.online.lt/. /******************* Concluding words ********************\ * * * I strongly believe that my project is worth the * * Stipend as the multilanguage multiplayer Halma game is * * worth implementing. I am strongly determined to start * * the project as soon as possible and finish it on time. * * * \*********************************************************/