Skip to content

CS340-19/MoonMan

Repository files navigation

MoonMan

Team Name: Satellite Gaming

Team members:

  • Dylan Lee
  • Antonio Vega
  • Julian Ball
  • Zach McMichael
  • Adam Tutko

Introduction

The project will be a 2-D side-scrolling video game in which waves of enemies will attack the player. The goal will be survival and eliminating enemies to achieve a high sccore. The motivation behind the project is to apply the group’s current programming abilities to build a custom game. A substantial motivating factor behind this was the desire to create something unique and custom that is also based on the personal interests of each group member. The game will be implemented in Java to further the group members experience in a new programming language. This language will also allow for a smoother implementation of the project by utilizing the robust libraries already in existence. The project, while unique, is not a new concept. It will visually resemble some critically acclaimed games such as Mario while encompassing the battle style of Super Smash Bros. This will allow for a robust combat system while still allowing the vision to be implemented accurately.

The largest motivating factor behind the decision to build a game was the creative freedom and graphical aspect of game programming. Throughout all of the group members' Computer Science educations, the most aesthetically pleasing part of any program may have been some basic ASCII art. Pair this with the fact that these program have been limited in some way or another, whether it be a set input, or perfectly formatted output, the creative liberty is usually restricted to help drive a specific learning outcome. This made the idea of turing code into graphically complex, animated output, very appealing. Developing a game also gives full creative freedom to all group members, where the only limiting factor is programming ability. On top of all this, group members finally have full implementation freedom in game development. No specific algorithm or strategy must be followed, but rather the exsisting programming knowledge must be used to solve a problem. It was this combination of creative freedom and real world application of programming abilites that lead to the group choosing to design a game.

While this game will be a side-scroller it will not be designed as a platformer; instead, it will consist of one endless level in which waves of enemies attack the player. The player will have a selection of different weapons to combat the enemies, ranging from close range melee weapons to long-range projectile weapons. As the player makes further progress in the game by eliminating enemies, the option to upgrade their character and weapons will be provided. As the player progresses, the enemies will also increase in strength and number. This will allow for a simple way of increasing difficulty, without having to implement more features. The game will have a space theme, where the main character will be a spaceman in a moon suit similar to the ones used when landing on the moon. The enemies will be a multitude of different aliens designed with many different styles and combat abilites.

To implement this game, the group will be programming in Java. This language will allow easy access to pre-built graphics libraries so that more focus can be put on the game-play mechanics. The combat mechanics of the game will be based on hit-box detection and will utilize many different weapons. To create the appearance of an endless side-scrolling level, a base level will be designed and then replicated over and over. When the player walks to the edge of the game window, the screen shall move in the opposite direction to simulate movement. However, there shall be a window of movement in the middle of the screen for the character to move without the screen moving. This window will allow for a more smooth looking design when in combat.

Customer Value

This product is a widely recognized medium of entertainment called video gaming. It is a pass time that is done worldwide. The specific genre of videogame that was decided on, a side-scrolling two-dimensional game, has produced many beloved works over the years. Some examples of this would be Super Mario Brothers, Castlevania, and Sonic the Hedgehog. All of these games have received acclaim. Geek.com states

When people discuss their favorite video games of all time, there will no doubt be a number of side-scrollers mentioned...love them or hate them, there is no questioning their impact on gaming or the fact that some amazing side-scrollers have been released. As a form of entertainment, side-scrolling video games are a relatively easily implemented project. However, even though this genre is more easily implemented, it still holds a place of value in peoples hearts and minds. This means that while the product will not be entirely original, it already has a niche that could allow it to thrive.

Alongside this fact, the format of 2-D sidescrollers allows for a level of artistic license on how characters are designed. Pleasing and original ascetics appeal to the market much more than a standard visual representation. Often the art style of a game plays a significant role in how well its target audience receives it. The use of shading or less realistic representations of humans in three-dimensional games often helps its production. Examples of games that have taken advantage of this and have gained acclaim include Borderlands, Life is Strange, and the Walking Dead. These games are however limited slightly by the requirement to maintain the correct human form. Pixel art has more leeway in this area and therefore allows for a style that is closer in line with our vision.

Overall, the benefits of choosing the 2-D sidescrolling format far outweigh the potential drawbacks. There are many examples of sidescrollers doing exceptionally well in recent years. One such example that stands out is Shovel Knight. It is a game closely follows the Castlevania style but puts a unique spin on it to make it stand alone. So, while achieving the same level of acclaim of past greats might not be likely, this product still has a place in the gaming industry. Alongside this, since there were previous iterations of our idea, excellent examples from which to draw inspiration are abundant. There is still plenty of room for an original spin on the genre. This means that utilizing previous work will be simple and allow for a clean implementation of the project without tainting to look too much like other works.

Proposed Solution and Technology

The coding will mostly be done in Java using a Java IDE and will utilize Javas many libraries to help produce the final product. Piscal, a free pixel art creator, will be used to create the characters and enemies. When starting, our process will be loosely based around choosing the best implementation of each persons work. We plan on deciding a goal and then letting every person on the team produce their idea of this assignment. This will allow everyone to gain a solid grasp on the basics of coding in Java and also allow for a more hands-on understanding of how game design works. After the team has a good handle on what needs to be done, we will begin to assign tasks to team members and rely on them to implement it how they see fit. This will allow for a trust that the team members will have the requisite knowledge needed to fulfill their task and will evenly share the workload between team members.

A purley object-oriented approach will be used in the design of the game, in which any required code implementaion will take place inside of the appropriate class. This not only allows for easy organization of code, but will also make collaboration easier. Other group members will not need to know the details of a class, but rather can use the "black-box" approach. Due to this design, group members won't need to spend time learning the exact implementaion details but rather only how to use the needed methods. This allows for group members to focus on thier individual tasks without the worry that their code will conflict with another members code.

To expand on this object-oriented approach, classes such as the Game class, Game Object class, and Handler class will be implemented. The game class will contain the main game loop, which will contol the the frames per second and how often the rendering and ticking of objects in the game occurs. To keep track and update the objects in the game, a Handler class will be created to continually run through the list of objects in the game, updating them by ticking and rendering them to the screen. This will be easily accomplished by creating a Game Object parent class in which other object classes created, such as Player, Enemy, Weapon, etc, will be children that inheriet the traits of the parent class. This allows for the Handler class to simply loop through and call the render and tick methods of a GameObject, which will then call the appropriate render and tick method for that specific object, such as a Player or Enemy object. As mentioned, this allows for one group member to build the Player class and another to build the Enemy class with no conflicts, and they will both work with the Handler class described.

This program structure is another reason that Java was selected to implement the game. Not only is Java a purley object oriented language, but there are many graphics libraries such as swing and java awt that give the required tools to draw sprites, control windows, and work with mouse and keyboard input easily.

Our process will be split up into three phases. The first phase will be coding entirely to get a framework in place for our game to be played. The code in this phase will be focused on the implementation of the world being created. As such, the first step will be to create an infinitely side-scrolling screen from which to build off. The second phase will be focused on creating a playable character and making moving enemies. The code here will likely mostly be focused on how to make the characters move, jump, attack, and be attacked. The final phase will be focused on the creation of pixel art characters and linking them to the game as well as working on fixing any known bugs. If these tasks are finished early enough in the semester, we also plan to implement a low-level AI to play the game on its own.

Project Management

The time allowed to complete this project should be more than adequate due to the scalablilty of the project. The hope is that with the available resources that are built into Java the team should be able to complete the base game without very much difficulty. This will provide more time allowance for the small nuances in game mechanics, like combat, overall game feel, and game art. The team meets four times a week face to face to determine action plans and coordinate team planning as well as swapping strategies for completing our assigned tasks. The team will be held on a Monday to Monday schedule that will include being given a task on Monday and having it completed the following Monday or needing to push the due date a week back due to complications with its creation.

The constraints that are imposed on this project consist of three major factors. The first is that the game created is not stealing or coping any that is on the market at the moment. This does not include taking ideas or using creative license to manipulate something out there in a new way, but specifically coping anything in a re-branded or re-skinned way. The second is that anything premade or copied specifically to be used one to one on the project must have a open or free use license. This specifically will be used for parts of the music in the game. This will also include the software that we will be using to create this game some of which include Java, Piscal, Eclipse, and many libraries that come for free use with this software. The third and final constraint is that the game be constrained to strict verbal and ethical guidelines that will coincide with proper University standards.

The project is scheduled to be completed on time with some margin for unforeseen circumstances. If for some reason though, the project is unfinished based on the final implementation that is conceive by the team at the start of the project, the result will still net a working game. Since the first step is to get a basic framework for the game and get the most basic game mechanics and functions implemented, this will for sure be in the game. Things that might not make it, if everything goes south, would include, high end animations and sound, complex combat mechanics, and complex menus and leveling mechanics. This strategy for game development should insure a base working game with less complexity but still a fun working version to play with. This will complete the original goal, if not whole heartedly, by delivering a 2d sidescrolling game.

Time Line:

Date Issued Date for Completion Task
2/4/19 2/18/19 Build the game foundation and framework, main game loop, rendering, resource loading(sprites, music, sound effects), core object creation, object controller, key and mouse input detection.
2/18/19 2/25/19 Character and level design, sprite sheet creation, menu implementaion, character and enemy motion, collision detection, camera creation.
2/25/19 3/4/19 Weapon design and implementaion, further motion tweaking and base enemy AI, creating multiple enemies(strong/weak).
3/4/19 3/11/19 Hitbox detection for weapons, player and enemy health, scoring system and saving game data to file.
3/11/19 3/18/19 Player customization, weapon upgrades, creating multiple levels/waves of enemies.
3/18/19 3/25/19 Further player and weapon customization, adding different playable characters with unique attributes.
3/25/19 4/1/19 Beta testing and further motion/game mechanics tweaks as needed.
4/1/19 4/8/19 Bug fixes/gameplay tweaks, adding between level mini-games(meteor showers, etc).
4/8/19 4/15/19 Final testing and small last minute modifications.
4/15/19 4/22/19 Project completion/game release.

Team

Description

All members of the team have vast programming experience in languages such as C/C++, Java, and Python. This experience will allow members of the team that have never worked in Java to easily pick up the syntax and receive help from team members that are more familiar with the Java language. Due to this experience most of the time spent programming for this project will be direct implementation and time will not be wasted learning the concepts for programming. Along with the team’s programming ability, team members posses a creative drive to produce a unique video game. This will allow the team to produce custom pixel art characters and also a custom level design.

Individual Background:

  • Dylan Lee: Dylan is a undergraduate student in his junior year, majoring in Computer Science. His experience includes 2.5 years of programming in C and C++, as well as some simple C++ game development in his free time. Although he is not well versed in Java, his expereince will allow an easy transition to the new language.
  • Antonio Vega: Antonio is from a small town called McKenzie located in West Tennessee. He is a junior undergraduate majoring in Computer Science. Prior to attending undergraduate studies, he had no experience programming whatsoever. Skills include: programming in C/C++, Photoshop and Lightroom. Currently learning about systems programming, automata, and operting systems.
  • Julian Ball: Julian started programming his freshman year and has learned about C/C++, vim, Python and is currently learning about shell scripts. he has recently been doing research that requires basic knowledge of machine learning concepts and would like to continue learning about artificial intelligence. Julian also is very interested in game development and is excited to be a part of this project.
  • Zach McMichael: Zach is an undergraduate student who is proficient in C and C++. He has been in the process of learning Java and Python on his own time to further is knowlege of programing. He will be heading up using Piskell to create and manifest all of the characters, animations, and backgrounds for the project this semester.
  • Adam Tutko: Adam is an undergraduate in pursuit of his Bachelor in Computer Science. He has 2 and a half years of experience programming in C++/C and has a firm grasp on HTML and CSS as well as some experience in Python. Though he lacks any prior experience with Java, his solid programming foundation will lend itself to a quick and solid understanding of the language.

Summary

The combination of the teams abilities and experiences provide the skill set required for game design and development. The fact that all team members are also friends and have worked and studied together before will help with team management and cohesiveness.

About

Side scrolling video game

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages