ArtsAutosBooksBusinessEducationEntertainmentFamilyFashionFoodGamesGenderHealthHolidaysHomeHubPagesPersonal FinancePetsPoliticsReligionSportsTechnologyTravel

Galaga : A Programming Lesson About Classes and Inheritance Structure Learned from an Arcade Classic

Updated on February 25, 2012

Lessons Learned From a Classic Game


The game Galaga has what looks to be a very simple class structure and inheritance path, which can be used to explain the class and inheritance structure at a basic level. However upon further examination of the game, the structure has much more complexity than one might assume. This is due to different parent and child inheritance traits as well as different classes of objects with various traits.

A good place to start would be the base class of the player’s fighter ship. The initial ship object needs to have the ability to move freely horizontally and the ability to shoot missiles, and should also have collision instructions for enemy missiles and ships that cause a life to be lost and a new ship (if available) to be generated, as it will be used as a parent to other future instances of ships . (Namco, 2008)

The missiles need to have an object of their own and the base missile needs to have a draw instance action, and a move in direction action, in this case there can be more than one missile at a time in play, and will be the parent to any other missile objects. Any subsequent missile instances after the initial missile launch needs to have instructions the same as the base class missile plus the directional function and destroy instance upon collision with another object, such as an enemy, as well as an out of room ending sequence.

The subsequent ships the player has or lives remaining need to have these traits as well, but these ships cannot be used until the first ship has either been destroyed or captured by a boss Galaga ship. (Wikipedia, 2009) In this case the test instance count would be zero remaining, and another fighter with the base traits would be created. If a ship is indeed in the tractor beam of a boss ship it can be rescued. If the boss galaga is able to capture the ship, the player’s ship is added to the enemy formation , which would require two new instances of the ship, one while in the beam and the player having no action control over it, and another when the ship is grouped with the enemy, also with no player control allowed, and needing to inherit the traits of the enemy for events such as a collision with the player’s missiles, in addition to the base ship traits, with the exception of loss of player control. The captured ship needs to be rescued by the player which costs a life and allows two instances of the fighter ship to be controlled at once, which causes the need for two of the base class ships to remain on the screen simultaneously allowing for player control of both, going back to the initial traits of the base class ship. Assuming the player destroys the boss that captured the ship, the ship goes away and comes back with another boss. If the ship is shot by the player it is destroyed. If the ship is captured with no remaining ships the game ends.

At this point the enemy structure needs to be discussed. There are 3 different “normal” enemies all with the same traits, they can fly in various direction and patterns, collide with a player’s ship, shoot missiles, and return to formation. (Galaga online game, 2010) There are special boss enemies with all of the base traits of the parent “normal” enemies, but in addition they are able to capture the player’s ship with a tractor beam. These bosses also need a trait to be randomly generated every so many levels, and to have the ability to be more accurate than the “normal” enemies are.

In certain challenge levels, only the sprite and flight are inherited by the enemy objects, as they cannot fire or collide with the player’s ship and are meant to give the player an opportunity to score some very high point amounts. There are multiple instances of any one type of enemy on screen at any given time, starting with the ones in the middle of the screen in basic formation. These instances are created in this position. A second instance with the inherited traits of the initial enemies plus the traits that allow the patterns of flying then proceed to enter the screen. There need to be two classes for this action, one that comes in on the left side and on that enters form the right, a mirror image of the left entering enemies. There are several different sprites that have these traits, both the ones that start out in the middle of the screen and the ones that fly in. For instance, if there are 3 enemy sprites of various colors and shapes, there might be 9 objects: One for each color, one for each shape and one for each entry and flying pattern. Then there are the suicidal enemies which are generated at random and hold all of the traits of the enemies plus the suicide (flying collision with player) trait. Each of these has several instances of the object on screen at a time, all of them having the basic traits of shooting and destroying the instance upon a collision. Some have the advanced traits of flight and one more class has the ability to suicide bomb the player.

Overall, when getting in to inheritance of traits and different classes, it is essential to understand the function of each type of character and how far down the line the basic traits are carried, to figure out the parent child relationship between objects. Understanding this relationship is essential from a programming point of view because you can reverse engineer games to add methods that are tried and tested in your own game. It is also using structures to make creating your own games a lot simpler and to avoid having to create each character individually.

Comments

    0 of 8192 characters used
    Post Comment

    No comments yet.

    working

    This website uses cookies

    As a user in the EEA, your approval is needed on a few things. To provide a better website experience, hubpages.com uses cookies (and other similar technologies) and may collect, process, and share personal data. Please choose which areas of our service you consent to our doing so.

    For more information on managing or withdrawing consents and how we handle data, visit our Privacy Policy at: https://hubpages.com/privacy-policy#gdpr

    Show Details
    Necessary
    HubPages Device IDThis is used to identify particular browsers or devices when the access the service, and is used for security reasons.
    LoginThis is necessary to sign in to the HubPages Service.
    Google RecaptchaThis is used to prevent bots and spam. (Privacy Policy)
    AkismetThis is used to detect comment spam. (Privacy Policy)
    HubPages Google AnalyticsThis is used to provide data on traffic to our website, all personally identifyable data is anonymized. (Privacy Policy)
    HubPages Traffic PixelThis is used to collect data on traffic to articles and other pages on our site. Unless you are signed in to a HubPages account, all personally identifiable information is anonymized.
    Amazon Web ServicesThis is a cloud services platform that we used to host our service. (Privacy Policy)
    CloudflareThis is a cloud CDN service that we use to efficiently deliver files required for our service to operate such as javascript, cascading style sheets, images, and videos. (Privacy Policy)
    Google Hosted LibrariesJavascript software libraries such as jQuery are loaded at endpoints on the googleapis.com or gstatic.com domains, for performance and efficiency reasons. (Privacy Policy)
    Features
    Google Custom SearchThis is feature allows you to search the site. (Privacy Policy)
    Google MapsSome articles have Google Maps embedded in them. (Privacy Policy)
    Google ChartsThis is used to display charts and graphs on articles and the author center. (Privacy Policy)
    Google AdSense Host APIThis service allows you to sign up for or associate a Google AdSense account with HubPages, so that you can earn money from ads on your articles. No data is shared unless you engage with this feature. (Privacy Policy)
    Google YouTubeSome articles have YouTube videos embedded in them. (Privacy Policy)
    VimeoSome articles have Vimeo videos embedded in them. (Privacy Policy)
    PaypalThis is used for a registered author who enrolls in the HubPages Earnings program and requests to be paid via PayPal. No data is shared with Paypal unless you engage with this feature. (Privacy Policy)
    Facebook LoginYou can use this to streamline signing up for, or signing in to your Hubpages account. No data is shared with Facebook unless you engage with this feature. (Privacy Policy)
    MavenThis supports the Maven widget and search functionality. (Privacy Policy)
    Marketing
    Google AdSenseThis is an ad network. (Privacy Policy)
    Google DoubleClickGoogle provides ad serving technology and runs an ad network. (Privacy Policy)
    Index ExchangeThis is an ad network. (Privacy Policy)
    SovrnThis is an ad network. (Privacy Policy)
    Facebook AdsThis is an ad network. (Privacy Policy)
    Amazon Unified Ad MarketplaceThis is an ad network. (Privacy Policy)
    AppNexusThis is an ad network. (Privacy Policy)
    OpenxThis is an ad network. (Privacy Policy)
    Rubicon ProjectThis is an ad network. (Privacy Policy)
    TripleLiftThis is an ad network. (Privacy Policy)
    Say MediaWe partner with Say Media to deliver ad campaigns on our sites. (Privacy Policy)
    Remarketing PixelsWe may use remarketing pixels from advertising networks such as Google AdWords, Bing Ads, and Facebook in order to advertise the HubPages Service to people that have visited our sites.
    Conversion Tracking PixelsWe may use conversion tracking pixels from advertising networks such as Google AdWords, Bing Ads, and Facebook in order to identify when an advertisement has successfully resulted in the desired action, such as signing up for the HubPages Service or publishing an article on the HubPages Service.
    Statistics
    Author Google AnalyticsThis is used to provide traffic data and reports to the authors of articles on the HubPages Service. (Privacy Policy)
    ComscoreComScore is a media measurement and analytics company providing marketing data and analytics to enterprises, media and advertising agencies, and publishers. Non-consent will result in ComScore only processing obfuscated personal data. (Privacy Policy)
    Amazon Tracking PixelSome articles display amazon products as part of the Amazon Affiliate program, this pixel provides traffic statistics for those products (Privacy Policy)