Final Project - Show Us Your Moves

This project will be your capstone from AI in Game Dev, so use this time to make something stellar for your portfolio! Feel free to work in groups up to the group-size limit listed in the syllabus.

This is your chance to show your proficiency with the course's topics, creativity in their application, and ability to generalize your knowledge from the example games we've seen in class -- make it count!


Choose Your Own Adventure


You stand at a crossroads... at the start of your adventure!

I'm flexible in that I want the domain of your final project to be really one of your choosing. There are 3 options for big-picture Plans for your project:

  1. Plan = Mesh: implement AT LEAST ONE TOPIC covered in the course into one of the existing assignments that did NOT feature it, AND make sure the environment features BOTH a human player and an AI agent of some sort.

    Example M1: Nano Nations

    • Assignment 3 was Andrew Forney's Nano Nations and featured topics from (1) Utility and (2) Procedural Content Generation. Thus, if you choose to augment Assignment 3, these topics are off the table.

    • Other topics that were not covered in assignment 3 include: machine learning agents, behavior graphs, planning, matchmaking, etc.

    • Your project could investigate the ability to use Unity's ML-Agents to create AI players of the game. Augment the game to have both a human player and an AI opponent.

    Example M2: SouflAI

    • Assignment 2 was SouflAI and featured GOAP agents. Thus, if you choose to augment Assignment 2, this topic is off the table.

    • Your project could investigate the ability to make the player navigate procedurally generated kitchens, each interconnected and introducing new ingredients / recipes. The AI Agent would serve as your sous-chef, preparing recipes / components needed for your dishes (perhaps even commandable).

  2. Plan = Export: implement AT LEAST ONE TOPIC covered in the course into a project EXTERNAL to the course or a game that you create from the ground-up. If you are working alone, your environment must at least feature an AI agent; if you are working in a group, it must feature BOTH a human player and an AI agent.

    Example E1: Pun Brawl

    • You decide you want to make your own fighting game, except instead of fighting with fists and special moves, damage is done through how painful a dad-joke can be made from a given round's topics.

    • You incorporate NLP tools and your own LLM interface for judging the damage of written attacks.

  3. Plan = Research: form a research hypothesis surrounding one of the course's topics in an environment of your choosing (can be either one of the course assignments or one of your own making) and formulate a simulation / empirical validation study around some new technique compared to existing ones.

    Example R1: Nano Learning

    • Research Question: In Andrew Forney's Nano Nations, do ML-Agents who follow curriculum training perform superior to those practicing standard Q-learning?

    • You implement both strategies in Nano Nations and set up simulation loggers to determine efficacy of learned policies via final scores.

    Warning: not very long to actually complete your final project, this Plan option may be overly ambitious unless you already have some idea in the works.



Solution Skeleton

Although not a skeleton, per se, you should perform all of your work within the GitHub Classroom environment by creating a team repository following the attached structure.

Inside, the important things to pay attention to are:

  • /doc/, which currently just has a placeholder for your completed Proposal and Presentation.

  • /src/, which currently just has a placeholder for your completed Final Unity Project.


GitHub Classroom Link


You may use WHATEVER version of Unity you want for your final project; the exercises were just kept in earlier versions to be consistent.



Specifications

[A Proposal I Can't Refuse]

At least, that's what I hope to receive.

Once you've decided on the big-picture of your project, let's make sure its finer details and deliverables are within scope and content for this course.

Your proposal must be in PDF format (prepared however you'd like, Word, LaTeX, etc. as long as it's digital) containing the following properties:

  1. Project title

  2. Group members (or solo)

  3. Project Plan Category (selected from those listed in the section above, i.e., from Mesh, Extend, or Research)

  4. Detailed Project Description (at least 2 paragraphs describing the scope of work and how your proposal meets the requirements of your chosen Plan).

    Within this detailed description, you must include, and enumerate:

    • 4 big-ticket features: at least 2 of which must be directly related to one of the AI techniques covered in class (e.g., "Implement a new kitchen generation system that will use the Rooms First PCG technique to place and link rooms for chefs to explore."), and 2 of which can be creative extensions or additions that flesh out the environment (e.g., "Add a playable character to the SouflAI environment that the AI chef will assist"). You may add additional features if you please.

    • At least 2 plans for PlayTests: describe 2 PlayTests that will be used to validate your implementation of your big-ticket features.

  5. [Optional] If pursuing the Export or Research tracks, describe:

    • Export: what is the external environment in which you will be conducting your project (include screenshots if an existing environment).

    • Research: what are the research questions you are attempting to answer through your project? Include at least 2 research questions that have quantifiable answers that can be gained through simulation or empirical player data.



[New Frontiers, New Rewards]

Once you have composed your proposal according to the specifications above, you MUST send it to me (the instructor) and have it approved before you may begin work.

Fair warning: your proposal may be rejected and returned for revisions for one of the following (non-exhaustive) reasons:

  • Proposal is too similar to another students' / groups' proposal (unlikely to happen if ideating independently).

  • Proposal is too similar to one of the assignments / does not extend the assignment in sufficiently creative a direction.

  • Proposal's big-ticket features are actually little-ticket (e.g., proposing to just add another recipe to the SouflAI environment).

  • Proposal appears to be AI-generated or lacks sufficient depth of descriptions.

  • Proposal is over-ambitious and makes promises that appear out of scope for the final project duration.

The deadline for project proposals is listed in the deliverables section below -- don't miss it, but you can submit your proposal any time before this deadline!


Once approved, time to get to work!

You are expected to set your own pace and schedule with group members to meet the requirements specified in your proposal.

There is currently 1 full day of lecture allocated to final project prep during which you and your group may work on the project during class time. See syllabus for more info.

There will be a code freeze the night before Final Presentations (11:59pm), see deliverables below.



[Showing Off]

The last day of lectures (L6-2) will be devoted to presentations and playtesting! You MUST be present to... well... present your final project to receive full credit.

Your presentation (due the day of the presentation) must run around 15 minutes (+-1 minute) and contain the following:

  1. All details (summarized, bulleted, illustrated) from your proposal

  2. Your motivations / interests surrounding the project

  3. A discussion of the techniques you used to implement your proposal's promised features

  4. A discussion of what you decided to playtest and how you went about implementing this

  5. A demo of your project lasting no more than 3 minutes

  6. What you found most challenging about the process

  7. How you could imagine extending your project for your portfolio (or using its lessons / tools to extend another of your projects).

  8. Instructions for your in-class playtest (see next section).



[High Praise]

Following presentations, each team will playtest each others' and offer some constructive feedback / questions.

Following all presentations, you will:

  1. Have your project ready to play at one of the classroom's workstations.

  2. Each team will take a turn instructing the rest of the class how to play their project.

  3. Each playing team will provide some feedback and ask followup questions surrounding their playtest.



Deliverables and Deadlines

Pay careful attention to the deadlines of associated deliverables below -- you have responsibilities beyond just the programmatic component of the assignment!

Note: you must also attend and present at the showcase during our final class meeting, L6-2; your presentation is not due until this day.

What, precisely, is due you might ask?


Deliverable

Description

DUE

Proposal

State your project's objectives and get it approved by the instructor (me) BY this deadline (can be done anytime earlier).

Note also the requirement to create and share the GitHub repository containing your project with me (Git handle @forns)

The format of the proposal should align with the requirements stated in the section above.

L4-2 (by midnight)

Failure to meet this deadline and submit the proposal on time will incur a -3 penalty to your project score

Project Complete

Complete your proposal project using Unity and ensure that the final version is pushed to GitHub with the ability for me to access it (i.e., that I am a collaborator on the project).

Wednesday before L6-2 (by midnight)

This is an absolute deadline -- failing to meet it will incur severe penalties on your final project.

Project Presented

Present your final project via the presentation requirements outlined above, and be prepared to render feedback to other groups.

L6-2 (during class)

This is an absolute deadline -- you must be present in class during L6-2 to receive credit.



Grading

Your final grade is the composite final_grade = {sum of opportunity points} + {sum of penalties}, defined as follows:


Opportunities


Opportunity

Description

Points Possible

Correctness

You have implemented the required Big-Ticket features promised in your proposal with penalties assessed for features that are incomplete, buggy, or implemented differently than what was promised in the proposal.

70 / 70

Testing

You have implemented, and pass, the required PlayTests outlined in your proposal.

10 / 10

Presentation

You are present-for and successfully present all required components of your project presentation.

20 / 20



Submission

You will be submitting your assignments through GitHub Classroom!

What

  1. Ensure that your Approved Proposal is included in the /doc/ directory at the root.

  2. Complete your project and include in the /src/ directory at the root. Ensure that the proper .gitignore is included (can copy from any of your other assignment projects or use the included one in the /src/ folder)

  3. Complete your presentation and place in the /doc/ directory at the root.


How

To clone this assignment (if you need a refresher), consult the guide here:

GitHub Classroom Tutorial

To submit this assignment:

  • Simply push your final, submission copy to the GitHub Classroom repository associated with your account.

  • Place your name at the top of *all* files you worked on AND in the accompanying readme file.



  PDF / Print