Busy Bahrs

Saturday, October 11, 2008

Big News - Expect Progress Soon!

That's right, I'm de-stagnating this project for a very good reason: getting a good grade in my graphics class. The final project for that class is to make a 3D game. As part of the project, I'll make the game 3D. It will essentially be a top-back view of the character. Moving left or right will rotate, while up will move forward.

I'll be using JOGL for the 3D. This is basically a mapping from Java to OpenGL, so it has huge speed benefits. It should run faster than the current game!

Also, I'll be adding the ability to read XML files, adding an actual END to the game, and some other smaller things.

But don't take my word for it. (buh duh-duh*) Here's my proposal that I actually turned in:



CS 455

Semester Project Proposal

Jesse Bahr



For my Semester Project, I would like to work on a Java Applet game that I have been developing over the past several years.



The game is a basic maze game. A maze is made up of a matrix of squares. There are many different kinds of squares, including:

  • Normal squares, which allow the player to pass through,

  • Colored squares, which require a matching key in order to pass through,

  • Arrow squares, which push the player in the direction they point

  • Boat squares, which allow the character to move in one direction until he hits a non-water square,

  • Water squares, which block the player unless he is on a boat,

  • Wall squares, which completely block player movement, and

  • Switch squares, which allow the player to trigger an action in the maze.



What's Done

Although I have been developing this game for a few years, there is very little done. The player is limited to left, right, up, or down movement – no diagonal movement is currently allowed. Clipping works, but only with this unidimensional movement. When the game loads, a hard-coded test board creates itself. The player can then navigate this test board (although he will be disappointed to find out that there is not yet the idea of an end to the maze)



The current graphics consist of a top-down view of tiles. The player image is a yellow “happy face” circle.



What I Will Do for the Semester Project

For the Semester Project, I have many plans. Since I am not yet familiar enough with OpenGL to know how long to expect a project to take, I will over-plan my project, and do the graphical items first. Here is my prioritized list of things I will do for this project:

  1. Add board-loading. I will develop an XML DTD for mazes to be loaded into the applet. I will add loading code for these files, to load mazes into the applet. The src parameter to the applet will point to the XML maze file to be loaded.

  2. Convert the 2D interface to 3D. Using OpenGL and JOGL, I will make the interface 3D. Mazes will be allowed to set their light level, and to add extra lights around the maze. To replace the current top-down interface, the perspective will follow behind and slightly above the player. I will also need to link in Sun's JOGL Loader Applet, which automatically installs OpenGL and JOGL on a user's machine.

  3. Create an End Square! The end square will be the object for the maze. Once the player reaches it, the game will display the his time and allow him to play it again to try beating that time.

  4. Allow Diagonal Movement. Currently, the player controls the main character by using the up, down, left, and right arrow keys to move the player in the associated direction. I will change this so that up means forward, down means back and rotate the camera backwards, left means rotate left, and right means rotate right.

  5. Give the Squares Individual Heights. Instead of having the maze be flat, each square will have its own height. This will allow stairs and cliffs. The player will be able to move from one square to another only if the new square's height is less than or equal to the old square's height + 1. The player will still not be able to move into walls or water, or into the wrong way of an arrow.

  6. Make an Editor Program. I will create a Java application for creating, editing, and saving mazes. The application will have a point-and-click user interface for creating mazes.



I won't consider the project finished unless at least #1-#4 are complete. If I cannot complete #5, I will give different heights to different aspects of the game instead. For example, I might make the boat floating up and down in the water.



Plans for the Future

The idea is to publish this applet to the web. Eventually, I'll build a website around it. I will give others the ability to build their own mazes. This is the reason for the square architecture of the mazes; this makes it easy to design a maze. The mazes will be user-ranked on difficulty and fun, and the funnest-ranked mazes will be featured on the home page.




*Yes, that's a Reading Rainbow reference. Ha.

No comments: