Games Assignment 3: Some Kinda Shmup-Adventure Mashup
Due Tuesday, February 23
Implement a Flash game in ActionScript 3 with at least one element selected from each of the following lists.
- Choose a way to move:
- The player can move in eight directions with the arrow keys, as in Adventure or a sidescrolling shmup.
- The player can rotate and then accelerate in that direction, Star Control style.
- Choose a function for the space bar:
- The player can shoot bullets with the space bar. Bullets destroy monsters, and are themselves removed from the stage shortly after they are no longer visible. A text message at the beginning of the game instructs the player how to shoot; it disappears once the player successfully shoots.
- The player can acquire items Adventure-style, by touching them. These items interact with other things when they touch them and are dropped with the space bar. At least one item helps the player dispose of monsters.
- Choose a way to give the illusion of exploration:
- Implement a shmup-style scrolling background. Scrolling backgrounds should not have obvious seams where they repeat.
- Allow the player to navigate off the screen and into a new area, Adventure-style.
- Implement enemies that can damage the player. Choose one:
- The enemies can shoot. Be sure to remove their bullets from the stage when they're no longer visible.
- The enemies are non-rectangular, but the monster collision detection is better than using a simple rectangle -- for instance, it could be composed of several rectangles for hitTestObject, or use hitTestPoint at a few key places.
- Choose one:
- The player has a secondary weapon based on a ship weapon from The Ur-Quan Masters (Star Control II), including an energy meter for the weapon that slowly recharges. Include a text message at the beginning of the game that tells the player which key to press to fire this weapon, which disappears when it is first fired. (This need not be literally a weapon -- it could be the Yehat shield or the Arilou teleportation device, for instance.)
- The world has walls which the player cannot pass through. In the case of a sidescrolling shmup, walls should advance at the same speed as the background, and a player caught between an advancing wall and the left hand side of the screen, dies.
- Choose how the player flirts with death:
- The player has a life bar that is reduced by enemy shots. On death, the player avatar is replaced with an animation (like an explosion).
- The monsters have a behavior similar to the dragons of Adventure, in which they signal that the player is about to be munched but the player has a chance to escape first. On death, the player is simply swallowed (invisible and unable to move).
- There is a shield that can be picked up that prevents the player from being damaged. Choose one:
- The shield blocks damage only temporarily, Shootorial style.
- The shield blocks only in the direction of travel, Zelda style.
- Choose one:
- There is a boss monster with its own life bar that takes several shots (or several interactions with carried objects) to kill. On killing the boss monster, the game congratulates the player; the game is over.
- The game has a score, and as the player defeats more enemies, the game gets tougher in some way.
- Choose at least one:
- A sound effect driven by a game event.
- A looping soundtrack.
Notice that you don't need to consistently use either shmup or Adventure principles, so you could do an exploration of a dungeon in a spaceship with momentum, or do a Rocket Knight Adventures style swords-in-space shmup.
Resources you may find useful include the class demos such as Orc and Pie, Chapters 1, 2, 5, and 7 of Rosenzweig, and the Actionscript 3 Shootorials on Kongregate. However, if you decide to walk through the Shootorial, be sure to implement at least two of the above items differently from the Shootorial. The "walls or new weapon" item is guaranteed to be new, so you just need to choose one other thing that's different. You can also have a look at the source code for the final Shootorial game if you just want to see how it all fits together.
Please acknowledge your sources of code, visual elements, and audio in your code comments. Assuming you do properly acknowledge, feel free to pilfer sprites from other games.
Zip the directory with your .fla, .as, and visual elements, and e-mail it to me, kgold@wellesley.edu. Games will be primarily graded on being bug-free, but the B+/A-/A/S grading range will also be determined by originality, good coding style, and overall depth and polish. Straying farther from the Shootorial formula will be rewarded.
You may also e-mail me to request to substitute a different game feature for one of the listed features.
Have fun!
Assorted coding tips
- For a shmup, the Kongregate shootorial is highly recommended as a guide. Try implementing things differently as you go along, instead of going back later.
- Code little pieces at a time! Try to achieve one of the items above bug-free before going to the next. When you have a bug, you'll be more certain of where it is.
- Make use of trace() to figure out if and when things are happening.
- For an adventure game with multiple screens, just place everything on the single Flash screen to start, and at the beginning of the game, set the "visible" property of things that aren't in the first room to false. Keep an index of the player's X, Y coordinates in the map of rooms, and toggle the "visible" properties of the items as a player enters and leaves the right rooms. Make sure that all collision checks also test whether the object is visible!
- If you don't want to deal with adding and removing monsters from the stage, you can have the same monster objects appear over and over -- just make them invisible when they die, and have them appear again when the player enters a new room (Adventure) or after a timer (shmup). Again, make sure the player doesn't interact with invisible things.
- Be flexible about your design -- you might have just chosen a hard-to-pull-off combination!