Design document: Dream of Red Mansions Character Generator

There’s just one last step before actually diving into the coding course, and that’s to define what I am going to try and achieve with the test project.

Because I enjoy trying to figure things out from first principles, I’ve had a first crack at a design document below based on the mini-game I’m trying to write. Later on in the project, I’ll read around to see what literature there is on how to write a good design document – best guess is there will be thousands if not more articles and probably some books – to see if there was a better way of doing it.

The basic structure that I came up with was this:

Vision

Description of what I’m trying to do. For example in this case, I want a program that asks me for my character name, gives me a bunch of randomly generated stats, and then tells me a story about their life and career based on the choices I make.

For example purposes I’ll make it a life simulator set in the ‘Dream of Red Mansions’ (红楼梦) period (mid-late 18th century Beijing), with the goal being to achieve the best possible outcome for a character who’s going to star in an imaginary RPG starting around 1800 – the last flourishing of the Qing before foreign encroachment became the dominant issue.  I chose this because I studied the novel at university and because a bunch of aristocratic Chinese jerks dunking on each other in poetry slams, drinking and getting laid while they try to get official jobs with good corruption potential so they never have to do any actual work will never not be funny to me.

Elements

Things that I need to have for the program to do what I want it to, decomposed to the most basic building blocks. For the generator program, I want:

·       Player prompt for name

·       RNG to determine base stats within a particular range

·       Database of roles available gated by stat requirements, with descriptive elements

·       Database of skills

·       Some way of tracking what roles the character had in the past – I guess a counter that goes up based on ‘number of times user has had this role’

·       Graphical user interface (GUI), that is, some way of showing the player what’s going on

·       Reset button

·       Some way of storing the information provided by the player, either as output to a text file or a load/save function

·       Probably a bunch of other stuff I don’t know about yet

Of these, the only ones I can make right now are the database of available roles and skills, but in the interests of my mental health I want to cycle time spent on that with the coding course.

Details

This is empty for now, but will eventually be where I write down the detailed implementation of the elements and put visualisations like flowcharts, basic mock up of the UI and so on.

Comments

Popular posts from this blog

Week 5 - Lab (Inheritance) Done

Tideman. Tideman! (pounds desk) TIDEMAN! (Cs50x 2021 weeks 2 and 3)