I'm happy to report that my Manta Ray project now has a completed Entity Relationship Diagram (ERD). I'm a big believer in having a good database design before any code gets written. While I do have a rough draft of specifications for the project (in pen on paper, I hate to admit), I felt it was best to just jump straight into the database design after I did the proof of concept for the websocket connectivity.
(Thanks to code.google for the erd shot)
One of the primary reasons for doing the database design at this stage of the project, is that it forces me to think through what information is needed and why. Even though I had a rough sketch of the data structure, I actually ended up tossing a couple tables away and adding a few different ones. Then, while staring at the ERD, I mentally went through some functionality scenarios to see if the design would match what is needed in the project. I made a few more fields, cleaned up a relationship, and then printed out my hard copy - which ended up being 4 pages.
It's very easy to just dive in and start writing code, especially if you're excited about a cool idea, or new project. But, many a project has ended up dead from discouragement and frustration, due to poor design. Rapid development environments are great to have (FileMaker, Visual Studio, etc.), however they also tend to promote poor design during the "I gotta get it done" rush. If you want to know how I really feel about this, just read my FileMaker Pro Design & Scripting for Dummies book - the chapter on Designing a Good FileMaker Application.
My next step could go in one of several directions. Since this is an entertainment product, I need a good back story. Thus the fun of being a writer AND a software developer. ;) I also need to start working on the database management interface for actually creating the virtual universe and its various components. Each component of the virtual universe is going to need descriptions and attributes. Again, more writing to be done.
Completed: Proof of concept for websockets connectivity
Completed: Database design
Next: Back story
Next: Database Management UI
codito ergo sum