IPhone Application



  • Prof. KING Kuo Chin, <Irwin king_AT_cse.cuhk.edu.hk>


  • David Ng <hpng6_AT_cse.cuhk.edu.hk>
  • Richard Wong <hkwong6_AT_cse.cuhk.edu.hk>


IPhone application, mini game

Project description

In the first semester, we successfully manage to create a mini game. However, we both think that the resulted game can be even better. For instance, the game program does not make use of the features of iPhone such as accelerometers to enhance the attractiveness of the game. Unfortunately, owing to the limitation of the game rules, there are no way for us to use accelerometers. Hence, in the second semester, we are going to develop a new puzzle game which support the use of the accelerometers installed on iPhone. We temporarily call this new game “Dice mania” (DM). There are some common features between DM and MM. For example, both are puzzle game, and both games require players to find out matches in order to gain points. However, DM seems to be even more challengeable. In fact, we get the idea of DM from an old PS2 game called “Bombastic”. The following is a youtube video showing the game play of this game.

In general, we would not develop “Dice mania” exactly the same as “Bombastic”, we just want to get the basic idea. So, in short, players can see a 3D world with lots of dices placed just like the video shown. Players can control any of the dice in the 3D world and use accelerometers to roll the dice. Once some dices are matched (the number shown on the top faces of the dices are the same), all of them will be disappeared, and new dices would then be generated to the world. Since DM is a 3D game, and it support the use of accelerometers , we believe that the goal of creating this game should be challenging and help us explore the development of iPhone application at higher level.

Game Features (Only available on iPhone)

Monster Manager
  1. Using simple gesture to rotate icons.
  2. Shaking the device to give hints.
  3. Using accelerometer to detect the orientation of the device and rotate the game interface accordingly.
Dice Mania
  1. Using accelerometer to roll the dices.
  2. Using simple gesture to rotate the 3D world.

Game Images

Week 2
Week 3 & 4
Week 7
Week 8
Week 10
Week 11

Developers' Blog


Week1 - Determine the goal in this semester
Week2 - Designing major features
- studying OpenGL ES
Week3 - Designing major features
- studying OpenGL ES
Week4 - studying accelerometer control
- studying OpenGL ES
Week5 - Implementation (game logic & graphics)
Week6 - Implementation (game logic & graphics)
Week7 - Implementation (game logic & graphics)
Week8 - Implementation (game logic & graphics)
Week9 - Implementation (game logic & graphics)
Week10 - Implementation (game logic & graphics)
Week11 - Implementation (special effects)
Week12 - Implementation(special effects)
- Testing and Debugging
- Documentation
Week13 - Testing and Debugging
- Documentation
Week Work
Week1 - Determine the goal in this semester
- Studying the game rule of “Bombastic” (PS2)
Week2 - Implement a simple Wavefront OBJ loader and MTL loader so that we can use them to import OBJ 3D models to OpenGL ES.
- Search some low polygons 3D dice model on the Internet.
- Write a simple program that initializes the OpenGL ES states and cooperates with the two loaders to load and display Wavefront OBJ models.
- Determine to continue the work on Monster Manager together with our new iphone game Dice Mania.
Week3&4 - We discover that the normals specified in Wavefront OBJ loader may not be normalized. Because of that, the color of the dice model cannot be adjust correctly although we correctly input the ka, kd, ks, etc… value of each material in the MTL file. The images for week two show this problem.
- The icons of the Monster Manager (This name should be changed later) are renewed. The icons have better appearance and players can easily figure out the icons and their corresponding types. Also, Each type of icon has a number on it. Players who have color blindness can still able to identify different types of icons.
- The dice can now roll under the commands of player.
- implement a OpenGL ES texture object which can help load a texture image into the video memory and bind the texture to corresponding texture coordinates.
Week5 - Adjust each animation duration of Monster Manager so that the game flow is much faster than before.
- Implement the new rotation method that we have said before in the development blog. This method should trigger new matched patterns with higher probability. New rotation method
- Sightly change the outer frame of that game.
Week6 - The attribute (life) in the game is removed. So, if no matched pattern is found after a single rotation, a opposite rotation is performed automatically so as to restore the original position of all rotated icons. Once there is no matched patterns can be made, the game would immediately change all the types of icons so that at least some patterns can be observed.
- Implement a simple gesture receiving algorithm to detect any valid gesture made by players.
- Implement a timer.
- Create a simple game settings file and corresponding codes to load that file.
- Implement a general game flow of the game. (Start Game → Next Level).
Week7 - Design a menu and score table. The styles of both menu and score table are the same. We manage to use the icons applied in the game before to display any capital letters and numbers.
- We currently face a bug that is hard to find out as no exception thrown when the bug occurs. This bug is about accessing a array with a index which seems to be random number and the index is larger than the size of that array. Also, this bug does not occur frequently and so this takes us more time to find the bug out.
- The game “Monster Manager” is renamed and now it is called “Whirly”.
- Since the current way for players to enter each level is simply otaining enough score for that particular level, and it seems to be naive, therefore we would like to make use of a better way which is applied by another puzzle game called “Jewel Quest”. click here for more detail
- Our new game “Dice mania”, we have a new game idea. click here for more detail.
Week8 - The bug reported at last week was fixed.
- Implement a new game rule that players must turn all the icons into golden in order to complete a level.
- Modify all the algorithm written in the past so that players would not feel there is a bound surrounding all the icons. In another words, let consider a map with size 13×9, the icon at (5, 0) can match with icons at (5, 8) and (5, 7) if they have the same type. Similarly, the icon (0, 3) can match with icons at (12, 3) and (11, 3) if they have the same type. Moreover, during rotation at a icon, if the locations involved in the rotation are outside the boundary, all that translations will be handled by the icons sitting at the opposite side of the boundary.
- The game can pause now.
- The game can give hints to players.
Week9 - Change the behaviour of timer. The timer starts at the middle of the gauge.
- Implement the sound effects for the game.
- Start thinking of a better look of the icons so that player can feel easier to identify different kinds of icons.
Week10 - Redesign the game interface, including game menu, score list, game board.
- Reject the the current level completion rules (A level is completed iff all the icons are golden.) and inject a better one (A level is completed iff the total number of pattern matched for each type is greater than or equal to certain number.).
- A better icon images were found to replace the old icons.
Week11 - discover and fix a bug located at showing hints algorithm.
- Add backgrounds.
- Allow players to select their preferred game interface, turn on or off the sound effect and adjust the animation speed of the game.
Week12&13 - Found some sound effects suitable for our game.
- Try to allow player to rotate several sets of icons instead of waiting one after another, but we finally fail to do so.
- Fix the problem about the game interface orientation just after the game program launches, but the method we used seems odd but it works.
- Start testing the game, writing reports and preparing for presentation.
- manage to setup a set levels with proper difficulties.


fyp/ik0804.txt · Last modified: 2009/04/07 17:14 (external edit)     Back to top