Final Project Description

The following is a tentative description of the final project.

  1. The completed project does not have to be a full-blown game.
     
  2. The project will be evaluated based on (i) the programming challenges and complexity of the project, (ii) how you tackle the challenges, (iii) the extent of completed work, and (iv) use of best practices and good coding styles.
     
  3. What I mean "programming challenges" of the project are the analytical thinking and problem-solving required for the programming task, not just direct copying and pasting the code from the existing labs and class works.
     
    Game play does not equal programming challenges. A game that is fun to play does NOT necessary mean it has enough programming challenges as a project for this course.
     
  4. Evaluation criteria:
    1. Have to use OOP (Object-oirented Programming). This means you need to create classes and objects. Even better if you can apply inheritance and polymorphism.
       
    2. Have to use good coding styles--you know...the naming convention, the semi-colon, indentation, space or no space,...
       
    3. Best practices in coding and working with Flash
       
  5. Your project can be based on any of the labs and extent it. But again, it needs to have some new programming challenges and problem-solving, not just copying and pasting the code from the labs with simple modifications. "New" here means something that has not already been done exactly in the labs or programming assignments in this course.
     
    For examples:
     
    • Extending the 3d fly-through lab: what you may think about:
      • add code to make something move (across, towards you and away from you) in addition to static trees, and you can interact with them
      • add code to make a hunting game. For example, there may be animals in the wood. If you are close to an animal, say a duck, and move too fast towards it, it will fly away.
      • add code to turn it into a 3d shooting game so that pressing a key makes a movieclip instance representing a bullet fly forward into the 3d space, and also add code to do 3d collision detection between the bullet and the target (this won't be just hitTestObject() or hitTestPoint() anymore, but it is not as hard as you may think)
      • combine 3d fly-through with the 2d side-scrolling platform game (similar to the concepts in the soon-to-be-released Mario game for Wii, called Super Paper Mario; look up on the Web to see how it looks with the 3d and 2d are combined in this game)
      • turn it into a racing game by adding timer, opponents, traps, hoops, and even add collectible items.
        This is a situation where OOP with inheritance and polymorphism works well.
         
    • Extending the platform game lab:
      • Just adding levels with different platform and item design is NOT what I have in mind unless it will require different code.
      • But what you may think about:
        • add different characters (such as villains) that can do similar things as the hero (such as walk and jump) and different things (benefit or damage) to the hero
          This is a situation where OOP with inheritance and polymorphism works well.
        • add more than 2 designs of platform, and make each shorter than the stage width, so that at any moment, the platform you see on stage is made up with 2 different designs.
          This will change the code you wrap (or "recycle") the two platforms in the endless scrolling in the lab. But you can use the similar thought-process to analyze the different scenarios and figure out the code.
           
  6. Possible project ideas or games that you can draw ideas from:
    • Breakout
      This can be based on the Pong game. The OOP will work well with creating those many bricks.
       
    • The old arcade of Donkey Kong
      Very much like the platform game lab, but you need to have barrels rolling down onto each platform level.
       
    • Space Invader
       
    • Frogger
       
    • 2d shoot-them-up games
       
    • Snake
       
    • The early versions of Zelda games that use the top-down view, have exit and entrance from one room to another
      (A good situation to apply OOP: Each room is an object instantiated from the Room class.)
       
    • 3d first-person shooting game (see suggestions above about extending the labs)
       
    • 3d first-person racing game (see suggestions above about extending the labs)
       
    • Super Paper Mario (see suggestions above about extending the labs)
       
  7. Choose a game that you truly want to program. You will have more fun programming it and will get more satisfaction at the end. Don't choose something only because you think it will be easy. No matter how easy or how difficult the project is, there will be moments that you (anyone too, not just you) get stuck due to logical errors or silly typos. These moments will be especially frustrating if you don't really like the game.
     
    If you have project ideas that you are interested in but don't know how to go about programming it now, don't drop your ideas--one of the purposes of doing the project is to learn something new anyway. Talk to me; we will have individual meetings during class time. I can tell you if it is doable as a class project and I can give you pointers. Besides, the project does not have to be a "full-blown" game.
     
    Have several ideas ready for our individual project meeting.