The past few weeks have been all about databases; this starts phase 3 of my RTS project. During this phase I'm adding in advanced RTS components and the start of major server-client backend stuff. For the database on the server (not adding one on the client) I have been building a data layer for the various components, the schema, and the most basic seed data.
I started with wrestling with the decision of which type and technology that I want to use. After several conversations with a senior DB and an architect I was pointed towards mySQL and MongoDB. At work I use SQL server, so mySQL is more familiar in the language. MongoDB is a non-relational database, and for large data games it will be faster. In the end I went with MySQL because it is technology I know better and will get my to alpha faster.
For the data layers I've been going back-and-forth on connecting to my database. C# and LINQ have a lot of wonderful built in tools for querying that JDBC just doesn't. I have inline SQL, but for now I've had to go with that. In my defense, I've quarantined all inline SQL to my strict data layer and I'm only doing minimal CRUD queries at this time.
Finally, in every project I work on, I love playing around with data storage and transferring (i.e. messaging) because it helps nail down the definition of each object. Half of last week was combing over my table definitions and adjusting what it means to be a 'unit', 'ability', 'user', 'account', or 'unit template'. It is needling the concepts of my game for loose ends and details I hadn't explicitly spelled out yet. A lot of fun.