1 — The Analysis

Due Friday, 01 October 2021, 11:59:59pm

Delivery Create a directory called Trains in your repository. You will deliver all milestone products in this directory.

Within Trains, create a folder dubbed Planning. This is where you place the product of this week’s milestone: plan-analysis.md and map-design.md .

Background We are about to launch a "dot game" company. You have been hired to design and implement the software.

This novel company is for hackers, starting with your friends. The two founders and co-CEOs noticed how these people are bored and always want to demonstrate their tremendous programming skills.

This company will provide the ideal outlet for them. The company will provide game servers to which these hackers can connect player software and win prizes—for an enormous entry fee of course. The grand idea is this:
  • the company publishes a "plug in" protocol to which automated players must adhere;

  • the game servers allow such "AI" players to sign up for tournaments;

  • once the sign-up period is over, the servers run the tournament; and

  • the owners of the winning player(s) will receive prize money, the losers will be allowed to pay an entry fee for the next tournament.

This course focuses on delivering robust software, but we will need some basic game-playing algorithm. Participating hackers must produce robust software because any mistake will be punished by termination. This may sound overly strict for these modern times, but robustness has to be the primary goal, game-playing strategies remain the secondary one.

See The Game: Trains for the first game that the founders have in mind.

Tasks You are the engineer, and you need to implement the technical plan, which the co-CEOs have written up. See Trains.Com, a Plan. (The financial components will be added later.) The plan consists of two pieces: (1) the architecture in terms of components and specifications, and (2) a sequence of high-level milestones.

Your first task is to analyze the plan. Write up a list of at most five questions that you think the plan leaves open. Each question should be at most one line; if you think your questions demands a justification, you may optionally add an explanatory paragraph. Deposit these questions in a file called plan-analysis.md in Planning.

Your second task is to design a data representation for the central game piece: the map of train routes. To design this representation think about the various operations that your referee and your players may have to perform on this data. Hint Recall the design principle behind “world states” in Fundamentals I and II and apply it to this (large) context. As for potential changes, keep the lessons of Fundamentals III in mind. Deposit this design document in a filed called map-design.md in Planning.

Format Use mark-down to format these documents. The github server will render them as web pages. Consider installing a previewer for the mark down format.

Each document must not exceed one “page” when rendered for PDF printing, say from a browser or a previewer.