Sanket-Arekar / Shooting-Zombies

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Shooting-Zombies

Game Objective - Survive the Zombie Apocalypse through Quick Thinking and Precise Shooting

In "Shooting Zombies," evading an unrelenting army of zombies is the primary goal. The only way to defend oneself from these advancing zombies is to respond to arbitrary questions while dispatching oncoming threats accurately. Your ability to blend quick reflexes, mobility tactics, and accurate shooting will determine how well you do in this game.

Here is how to achieve the goal:

1.Eliminate Zombies:

The main objective is to shoot and kill the oncoming zombies before they get to you. The more quickly you can respond to inquiries and reload your weapon, the faster you can eliminate the zombies always moving towards you. Usually, a headshot will work!

image Fig 1: The character is initially placed in the center as shown above.

2.Reload Your Gun:

Hit the R button to reload your weapon. This is an essential activity since it gives you the means to continue fighting. Reloading presents a problem, though, and is not an easy task. Upon pressing R, an arbitrary question appears.

image Fig 2: Once you are out of ammo, you will see "reload" written on the character. Now you need to press R to Reload.

3.Answer Correctly to Reload:

You must correctly answer the random question to reload the gun and resume the action. This gives the game a fun and instructive twist while challenging your knowledge and mental acuity. If your response is accurate, your gun will load, and you can start shooting zombies.

image Fig 3: After pressing R, you will see a dialog box with a question.

4.Movement is Key:

The W, A, S, and D keys, as well as the arrow keys, can be used to move your character. You must make use of these controls in order to avoid danger and to open up better shooting possibilities.

5.Finding the Special Zombie:

After surviving in the game for long enough, a special zombie will be released. You will be asked to solve the riddle which will help you with recognizing the features of the special zombie like eyes and body color. Once you figure out the riddle you should recognize the zombie and avoid killing it. You will need multiple people communicating with you and helping you to find the zombie. If you kill the zombie, the size of your character increases, which will decrease the mobility of the character and thus make you prone to getting attacked by other zombies. If you skillfully avoid the special zombie and absorb it, then you will be awarded with an extra life. So Solve the riddle and keep an eye on the special zombie!!!

image Fig 4: Here you will see the Riddle displayed on the top.

image Fig 5: The highlighted zombie is the probable guess and now we should avoid killing it. The guess should be made by the people helping us.

image image

Fig 6: If we kill the special zombie, we are penalized by increasing the size of our character, which restricts our mobility.

6.Survival is the Goal:

The ultimate goal is to survive as long as possible while avoiding waves of zombies. Your score will increase the longer you live, and the longer you repel the zombies. As you stay longer you will unlock specialized weapons like lasers and fire gun.

image Fig 7: The above picture shows the enlarged character with advanced weapon Mega Shotgun

7. A Trick:

One of the tricks that can be used in emergency times is zooming out the browser window. One can achieve this by Ctrl+'Mouse Roller' Combination. The arena of the game is much widespread and in the emergency situation like extreme crowding of zombies, one can zoom out of the arena and utilize the space to escape from the crowd.

image Fig 8: The arena increases significantly as seen in the image above

In "Shooting Zombies," success requires quick reflexes, precise shooting and the capacity to think clearly under pressure and provide accurate answers to questions. It is an exciting and challenging game that rewards dexterity and mental quickness. Now load up your weapon, take on the zombie assault, and show everyone you can survive the end of the world!

Technology stack used

  1. HTML
  2. CSS
  3. Javascript

Setup and deployment instructions

To enjoy the "Shooting Zombies" game, follow these step-by-step setup and deployment instructions:

Setting Up Locally:

  1. Clone the Repository: ->Start by cloning the game's code from the GitHub repository. You can do this by running the following command in your terminal:

git clone https://github.com/SriChandana98/Shooting-Zombies.git

  1. Navigate to the Directory: ->Change the working directory to the location where the repository was cloned. Use the cd command in the terminal to do this.

cd Shooting-Zombies

  1. Opent the Game: You should find the HTML file for the game within the src folder in the repository directory. Open the HTML file in your web browser to start playing the game.

Deployment via GitHub Pages:

For online game link you can access the below url provided.

https://srichandana98.github.io/Shooting-Zombies/src/

Credits

https://codepen.io/k5h2P/pen/qVNgGy

Reflections of creating this game

Creating this game was an exciting yet challenging endeavor. As a team, we embarked on this journey with enthusiasm, hoping to bring to life an engaging and thrilling gaming experience. Our project was both a learning experience and a roller coaster of emotions, filled with moments of triumph and despair. In this reflection, we will discuss the challenges we faced, what worked, what didn't, and the valuable lessons we learned throughout the design and development process. We will also relate our experiences to software engineering concepts and Scrum principles.

Challenges Faced

Complex Initial Game Code:

One of the first significant challenges we encountered was selecting the right game code. We stumbled upon an existing game code that we found intriguing and decided to build upon it. However, this code turned out to be excessively complex and far beyond our team's comprehension. This initial choice exposed our inexperience in game development and the importance of choosing the right foundation for a project.

Lessons Learned:

In retrospect, we should have thoroughly assessed the complexity of the code and ensured it aligned with our team's skills and understanding. This experience highlighted the significance of good code selection, an aspect that aligns with fundamental software engineering principles. In Scrum, this can be likened to a sprint planning phase where choosing realistic tasks based on the team's capacity is essential.

Diverse Team Strengths and Expertise:

Since our team was randomly assigned, it meant that we had a mix of strengths and expertise. This diversity was both a blessing and a challenge. While we had a broad range of skills, it often led to conflicting opinions and confusion, particularly when tackling complex aspects of game development. Some team members were more experienced in coding java while some in Python and the other in C++

Lessons Learned:

We realized that the key to harnessing our team's potential was communication and understanding and leaning on each member's strengths. This aligns with the Scrum principle of collaboration. To overcome this challenge, we introduced regular stand-up meetings and encouraged knowledge sharing. We also assigned responsibilities to different members based on the strengths.

Focusing on Realistic Goals:

After struggling with the initial complex game code, we decided to pivot and take a more realistic approach. Instead of pushing forward with an unmanageable project, we decided to play to our strengths and work on a game idea that was within our grasp. This shift in focus proved to be one of the most significant turning points in our development process. Lessons Learned: This experience resonates with the Agile principle of responding to change over following a plan. We realized the importance of adaptability and being willing to adjust our project to meet our capabilities and the market's demands. In Agile, this aligns with the idea of iterative development, where you learn from your experiences and evolve the project accordingly.

Simple Animation and Shape-Based Graphics:

In the initial version of the game, we attempted to use intricate sprites for animations. However, we quickly realized that this was far more challenging than we initially thought. We decided to simplify our approach by using basic shapes and animations, which proved to be a more manageable and effective solution. Lessons Learned: This shift demonstrated the significance of keeping things simple and avoiding unnecessary complexity, a fundamental principle of software engineering. It's essential to strike a balance between aesthetics and functionality. In Scrum, this can be related to the concept of delivering a Minimum Viable Product (MVP) early and then gradually improving it based on feedback and needs.

Complex Initial Game Code:

The most significant issue that didn't work for us was our initial choice of a complex game code. This decision not only wasted valuable time but also demotivated the team. The inability to comprehend and modify the code led to a feeling of helplessness. Lessons Learned: We learned the hard way that it's crucial to thoroughly evaluate and understand the foundation of your project. This aligns with the software engineering concept of architecture and design. A solid architectural plan can save you a lot of trouble down the road. In Scrum, this can be associated with the importance of sprint review meetings where the team inspects the increment and adapts their process as needed.

Lack of Clear Roles and Responsibilities:

Initially, we struggled with defining roles and responsibilities within the team. The absence of clearly defined roles created confusion, and some team members ended up stepping on each other's toes. Lessons Learned: We realized the importance of assigning roles and responsibilities early in the project, which is akin to the software engineering principle of role-based access control. This concept ensures that individuals have the appropriate access and responsibilities within a system. In Scrum, role clarity is essential for effective collaboration and achieving sprint goals.

Important Takeaways

Adaptability and Flexibility:

One of the most important lessons we learned was the necessity of adaptability and flexibility. As we faced challenges, we realized the importance of being able to pivot, change our approach, and adjust our project based on new information and experiences. This is a fundamental principle in Agile methodologies.

Communication and Collaboration:

Effective communication and collaboration are paramount to the success of any team project. We recognized that our team's diverse strengths could be an asset if we harnessed them correctly. Regular stand-up meetings, knowledge sharing, and open communication channels helped us overcome this challenge and make the most of our team's capabilities.

Balance between Complexity and Simplicity:

Our experience with graphics and animation taught us the value of striking a balance between complexity and simplicity. Over complicating design elements can lead to delays and challenges. We realized the importance of keeping things as simple as possible while still delivering an engaging user experience.

Thorough Evaluation of Code and Architecture:

Our initial struggle with complex game code underscored the importance of thoroughly evaluating the code and architecture at the project's outset. A well-thought-out architecture can save time, resources, and morale in the long run. This aligns with software engineering concepts of code review and architectural design.

Clear Roles and Responsibilities:

Defining clear roles and responsibilities within the team is crucial for efficient collaboration. This lesson emphasizes the need for role-based access control in software systems and a defined organizational structure within a development team, aligning with both software engineering and Scrum principles.

Our journey in designing and developing a zombie shooter game was a rollercoaster ride filled with challenges, lessons, and triumphs. The initial complexities in code and the diverse skills within the team posed significant obstacles, but by adapting our approach and focusing on what we could realistically achieve, we turned the project around. Our experiences in graphics and animation highlighted the importance of simplicity and balance in design.

Throughout this journey, we learned valuable lessons about adaptability, communication, code evaluation, and role clarity. These lessons resonate with key software engineering concepts and Scrum principles, emphasizing the importance of iterative development, architectural design, and effective collaboration in the world of game development. While our game development process was far from perfect, the lessons we gained will undoubtedly shape our future projects and guide us toward greater success.

About


Languages

Language:JavaScript 85.6%Language:HTML 9.2%Language:CSS 5.2%