Final Project
Objectives
- Create a full game from scratch using either LÖVE or Unity.
Milestones
Released | |
Proposal Due | |
Status Report Due | |
Due |
As a reminder, per the late policy in the syllabus, you may not turn in any portion of your final project late and simply have it incur the usual penalty. A late-submitted project (or portion thereof) will not be accepted at all. Furthermore, projects will not be accepted outside of Gradescope, except as outlined under the instructions for submitting your implementation at the end of this specification.
How to Get Help
- Ask questions on Ed
- Attend office hours
- Email your teaching fellow or games-staff@cs50.harvard.edu
The staff has decided to allow, if you wish, you to collaborate with a maximum of one other student in the course on the final project only. Please note that if you do so, each of you should still submit these milestones separately (albeit with similar answers most likely!), and the expectation is that your game will be at least twice as complex as might be expected from a student working on a final project solo. Your TF can discuss this further with you.
From Start to Finish
It’s time to begin the course’s culmination: your final project! While most of the course thus far has been a series of assignments centered around adding features to existing code bases, this project will take place from the first line of code to the last, a true end-to-end experience to help tie everything we’ve learned together thus far.
Specification
- Your game must be in either LÖVE or Unity.
- Your game must be a cohesive start-to-finish experience for the user; the game should boot up, allow the user to play toward some end goal, and feature a means of quitting the game.
- Your game should have at least three
GameState
s to separate the flow of your game’s user experience, even if it’s as simple as aStartState
, aPlayState
, and anEndState
, though you’re encouraged to implement more as needed to suit a more robust game experience (e.g., a fantasy game with aMenuState
or even a separateCombatState
). - Your game can be most any genre you’d like, though there needs to be a definitive way of winning (or at least scoring indefinitely) and losing the game, be it against the computer or another player. This can take many forms; some loss conditions could be running out of time in a puzzle game, being slain by monsters in an RPG, and so on, while some winning conditions may be defeating a final boss in an RPG, making it to the end of a series of levels in a platformer, and tallying score in a puzzle game until it becomes impossible to do more.
- You are allowed to use libraries and assets in either game development environment, but the bulk of your game’s logic must be handwritten (i.e., putting together an RPG in Unity while using a UI library would be considered valid, assuming the bulk of the game logic is also not implemented in a library, but recycling a near-complete game prototype from Unity’s asset store with slightly changed labels, materials, etc. would not be acceptable).
- Your project must be at least as complex as (and distinct from!) the games you’ve implemented in this course, and should really be moreso. Submissions of low complexity may be rejected by your teaching fellow during the proposal stage. Think things through thoroughly!
- In a
README
file (whose extension can be.txt
,.md
,.adoc
, or.pdf
) in your project’s main directory, include a full write-up describing your project, what’s contained in each file you created, why you made certain design decisions, and any other additional information the staff should know about your project. This document should be sufficiently thorough for your teaching fellow to run your project without any need to contact you further with questions. Take your time, and do not save this step for last. A well-written and completeREADME
file will take longer than you think it will.
Proposal
Gradescope will not permit you to upload your proposal until .
Before you begin working on your game, the proposal is an opportunity for you to run your idea or ideas by the teaching staff.
Your project must be at least as complex as (and distinct from!) the games you’ve implemented in this course, and should really be moreso. Proposals appearing to be of low complexity may be rejected.
Your teaching fellow may approve your project, or request modifications. You may begin working on your final project immediately, but know that your teaching fellow may request changes to ensure your project is of sufficient scope. Feel free to use the proposal as an opportunity to ask any questions you may have about the final project as well.
Complete the below no later than :
- Go to CSCI E-23a’s Gradescope page.
- Click Final Project: Proposal.
- Complete the questions there and submit.
You should see a message that your proposal was submitted successfully. Contact your teaching fellow if not!
If you did not submit your proposal by the deadline on Gradescope, you still must ultimately receive approval for your project from your teaching fellow, so do contact them by email.
Status Report
Gradescope will not permit you to upload your status report until .
Complete the below no later than :
- Go to CSCI E-23a’s Gradescope page.
- Click Final Project: Status Report.
- Complete the questions there and submit.
You should see a message that your status report was submitted successfully. Contact your teaching fellow if not!
Implementation
Gradescope will not permit you to upload your final implementation until .
The deadline for completing the below steps is :
Step 1
Fill out this form.
Step 2
Gradescope does have a soft file size limit when uploading (if it times out, Gradescope will reject it). At an absolute minimum, you may upload just your README
file to Gradescope. Ultimately you must have something uploaded to Gradescope before the deadline for your project to be accepted. You can then share the remainder of your project directly with your TF out of band of Gradescope (e.g. via GitHub, Dropbox, e-mail, or Google Drive.) If you do need to upload your project out of band, your TF also must have received it by the deadline in order for it to be accepted. Do not wait until the last minute.
- Download a ZIP file containing your implementation of the final project.
- Go to CSCI E-23a’s Gradescope page.
- Click Final Project: Implementation.
- Drag and drop your ZIP file to the area that says “Drag & Drop”.
- Click Upload.
You should see a message that your project was submitted successfully. Contact your teaching fellow if not!