quote: All these design questions, for which you claim to absolutely know the answer, |
Yikes.
I'm sorry. I sometimes act like a know-it-all. It's a genetic flaw, I think (my mother does it, too). Forgive me. I'll try not to do that.
It drives my wife nuts.
Please just understand that I have had this conversation a hundred times before. I am certain of what I'm saying, because of long, hard-earned experience. I don't mean to be cocky. Just confidant.
I'm sorry.
* * *
My feelings on your comments:
1) This is a 'data storage' strategy discussion, not a 'business/game rules' discussion. We're talking about a 'database'. Not the game program's 'turn' rules. There is no tradeoff. We analyze the models and list all the info they need. Then we devise a simple, compact data-storage hierarchy (like element-atom-molecule). This will be the smallest, fastest way to store the necessary data.
That is why I do not suggest tracking info by individual person -- no model calls for it. But the data storage system/database can easily be enhanced to include that (just extend 'EthnicGroup' and add in people objects). I am suggesting we store data at the mapsquare level because that is the lowest level of any game model. We have to store all that data anyway. It's exactly like storing all our data in a Database. I've just designed my own set of 'tables', if you will (and use methods instead of SQL calls). The 'mapsquare' table will hold all the mapsquare's detail info. If someone later decides to add a 'person' table, then it should hold the person's detail info. I simply object to ya'll wanting to store 'mapsquare detail' info in the 'province' table.
2) This is also why the added detail does not equal added complexity. The added detail is like a filing system -- it organizes the existing complexity. OOD is like the Dewey Decimal System, a 'complex' hierarchy system for storing data. Like the 'element-atom-molecule' hierarchy. It also simplifies, and enables you to do things you never dreamed possible. Things that might even scare you (like electricity and the atomic bomb).
3) Build it using a 'component' architecture, and you have the fastest possible tool for resolving all systemic instabilities and conflicts -- testing. Plug this piece in, turn that on, switch that out. As you said, you can't possibly make the decisions about the level of absraction until you've played it . . . no amount of theorizing will ever prove a theory.
OOD prototyping is the best possible method for quickly making a software 'machine' work right, the way you want it to.
4) The reason to create this deep, rich database is so that later, when someone (like me) wants more detail, it's available. We 'hobble' the system to make a simpler game immediately, and then over the years we enhance it in any and every way possible. That's how you keep a game interesting and playable, isn't it?
You build it to be flexible, even if you don't intend to bend it right away.
* * *
Again, I'm sorry for anything I've said that was rude, or aggressive. I'm just like that sometimes.
I hope it doesn't ruin everything.
Comment