I plan to implement a 3D version of the popular Zuma game.
This will include:
Documentation of the game: Rules, How to play.
Source code: Complete source code for the game, with comments and unit testing (using JUnit).
Benefits:
Zuma is a fun popular game. Making a 3D version of it, that will run as a part of
Looking Glass's desktop will be very attractive, and will provide a good example for
showing LG's strengths.
Approach:
Create a simple design, then go ahead with the coding, while usingrefactoring for further enhancement of the design as the project goes. From my experience, using refactoring speeds up the development, while still maintaining a good and simple design that can be easily upgraded as the project advances to more complex stages.
Make the game fun to play. This includes choosing keyboard and mouse interfaces that will allow simple control of the game and will be easy to get used to, having graphics that catches the eye and makes the game pleasent to watch, and having several difficulty levels to choose from.
Use technologies such as Shaders and Physics Algorithms (Collision Detection, Rigid Body Dynamics) to both speed up the game and provide a more realistic behaviour (these technologies will be enabled only when supported by the system). For example, use particle systems for explosions or other effects, etc...
I intend to use the the open Collada file format from the khronos group in order to represent all of my game assets. This will allow easy integration with other tools.
Game Description:
Zuma is a casual game that can be summarized in a few simple rules:
You play a frog that can shoot balls in different colors and different directions.
All around you there is a path where balls keeps rolling on, in different colors, slowly until reaching a hole. Your goal is not to let any ball reach the hole.
When 3 balls of the same color are next to each other they disappear. By shooting balls of random colors you are expected to eliminate all the balls. Balls of the same color attract each other, so you should use this to carefully eliminate balls while drawing the "ball chain" away from the hole.
By eliminating balls you gain points (there are several bonuses types, for eliminating balls successfully in a row without shooting a ball that does not elimintae anything or eliminating balls while shooting "through" a broken ball chain etc...), and once a certain amount is reached - no more balls get on screen, then eliminating those left will introducte the next level.
If you eliminate a ball with a power-up you get it. Power-ups including explosions (eliminate some balls within a radius), slow (makes the ball go slower) and precision (shows a ray of where the ball will go to ease aiming). Also, from time to time there is a coin somewhere on the screen - hitting it will get an extra bonus.
An online version of the 2D game can be found here: http://www.popcap.com/gamepopup.php?theGame=zuma
Also, an offline version can be downloaded from the link above on the same page.
For the 3D version, rules are basically the same, except you can shoot balls not on one
plane alone, but also on the Z axis (up-down). Also, the ball chain path will be 3D i.e. balls can go up or
down. This twist makes the game more interesting - adds a dimension, and integrates well
on Looking Glass.
Schedule:
Study (1 week): This part will be spent studying LG3D? at a great depth. Write a few sample applications, exploring it, have a debug environment set up and ready to use on both linux and windows.
Simple Design (1.5 weeks): Design the game. Consider detailed game specification (i.e. rules and game flow), data structures, algorithms (including the physics models used), and basic classes and sequences design. This stage will be basic, without going into too many details (refactoring will be done as the project goes on). However, the major design issues will be decided here.
Coding, Testing (6.5 weeks): Code the game while testing different sections as early as possible. Use JUnit for unit testing. Refactor the design as needed.
Documentation (1 week): Describe the game rules, how to play etc. and integrate into the program itself.
My Background:
I have been programming for the past 6 years for the IDF (Israelli Army). I cannot state
any details other than say that advanced technologies were used.
I have experience in Java, C#, C/C++, Perl, PHP, ASP.NET, Python and Prolog, developing under both
linux and windows. Interested in Artificial Intelligence: wrote a chess game with
AI (using hueristic alpha-beta search, quiscent search and more).
I am also interested in Software Methodologies, and have used Subversion and Trac for
source control and bug tracking, JUnit for testing, Eclipse for refactoring.
My passion and hobby is game development, therefore I have experience in both OpenGL?
(including experience with Shaders in GLSL) and Direct3D?, modeling tools such as Maya, ZBrush and
Blender, and participated in writing a C++ Game engine using various technologies such as
X3D? for XML scene description, Lua for Scriping, SDL for 2D and input and Raknet for multiplayer
game. In addition,I'm familiar with 3D technologies such as Normal Mapping, Vertex and Fragment Shdaers, Stencil Buffer Shadows and Particle Systems.
I'm currently studying for a first degree in computer science and mathematics, having a special
interest in 3D math. I have knowledge in Linear Algebra, Quaternions, and have done a
seminar on High Dynamic Range Lighting.
Prior open source experience:
A couple of years ago I started a project for an internet gaming infrastructure called IGE on sourceforge. The project was unfortunately stopped after the requirements and analysis stage due to lack of resources. Instaed, I have found the GGZ project that has simliar functionality and am cooperating with this project to fulfill the IGE vision. (see http://sourceforge.net/projects/tige for IGE, http://www.ggzgamingzone.org/index.php.en for GGZ)
Recently I have worked on developing bug tracking integration for Ankh (A subversion add-in for Visual Studio) as well as solved some Unicode bugs related to Trac (A bug tracking tool written in Python).
I am very enthusiastic about developing a game for Project Looking Glass,
this combines all of my passions together - Game Development, 3D Graphics,
Open Source (which I very much believe in) and Mathematics/Physics.