LMU ☀️ CMSI 185
COMPUTER PROGRAMMING
HOMEWORK #6 Due: 2020-12-10

Objectives

In this assignment you will write a multiplayer game and demonstrate your new knowledge of distributed applications, webservers, socket communication, and asynchronous programming.

Instructions

Implement the game described below in a public GitHub repository with a meaningful and creative name. Get into teams of two or three for this one if you like. There will be only one repository per team, but each student is responsible for understanding the entire game. Unbalanced group work negatively impacts the learning experience of the less-participatory team members. Therefore, for teams, I will require your GitHub commit loads to be “about even.”

The scaffolding of this project will be built during class as a code-along, but it will be very basic. You will have plenty of opportunity to learn and practice as you build out required and optional features.

Readings and Preparation

You should:

ktah

The Project

You are to write a two-dimensional version of a single level of the zombie-avoidance game K'tah. If you do not like zombies, you may change the setting to one in which a protagonist (friendly herbivore, resistance fighter, dog rescue worker, etc.) tries to avoid some enemies (predators, regime police, puppy mill henchmen, etc.) but the basic game play rules that follow will be the same. You must complete at least the following requirements:

You must add one or more of the following optional game embellishments:

Consider adding more than one embellishment, not for extra credit, but because the programming skills you gain by implementing them will benefit you a great deal. And your game will be part of your public GitHub portfolio which prospective employers will be able to see. Do what you can without cutting into your other responsibilites.

Pay attention to creating beautiful code. It is fine to ask TAs and classmates to comment on your code quality during development. Pay attention to good naming, keep functions short, separate concerns, don't repeat yourself. This is your chance to bring together all of the programming skills and conceptual understanding you’ve developed this term. Use tools to help you write clean code.

How to Turn it in

You are to submit for grading the following:

Pay attention to the grading rubric at the end of this assignment page; you will see some additional requirements snuck in.

Be Creative!

The best projects are the ones that tell a story. Your artwork and game play and chosen sounds and messaging you give to your users matter! You are not expected to have had a class in Game Design, but you and your partner(s) should spend at least some time deciding how to build a world around your game. Don’t take this part of the assignment lightly; instead, look at these projects from students in past CMSI 185 courses:

Grading

Here’s the rubric I’ll use to score your submission.

RequirementOut OfYou got
GitHub repo exists2
README file is complete, descriptive (talks about your game), and uses good English3
README file has names of all students1
README file has link to where the game can be played2
Game actually can be played from some public site3
Commit history is reasonable (and balanced, if applicable)4
Your code was tidied (perfection demanded)10
Code is well-organized into multiple files5
Code is internally well organized (functions, classes, ...)10
Code uses good names5
Played game has nice look-and-feel (colors, backgrounds, sprites)3
Game shows a title2
Game starts by waiting for two players2
Game begins only when two players have entered2
Game shows health score (progress bar, perhaps)2
Game plays nice (not jerky, not too fast, not too slow)4
Enemies move toward player4
Multiplayer aspect actually works4
Health is decremented on collision4
Second player can continue after first player dies4
Game has clear ending, visually4
If you used timers, they are turned off when game ends4
Your game has a story, or theme4
Collision detection works4
Scarecrow works4
Your optional embellishment works4
Misc. Bonus points or penalties at discretion of Prof.0
Total100