View Full Version : The MD Design Document
RonHiler
10-29-2007, 11:20 AM
We need a thread to discuss the Design Document, so this would be it :) If you have anything to say about the DD, feel free to post it here. I will also be posting news relating to the DD, such as when new versions go up.
Unfortunately I have to start it off with a little bit of bad news. I had to add a 25th milestone to the overall milestone list. Pix willl no doubt be coming on and yelling at me for feature creeping :) And he'll have a point. The overall milestone list is supposed to be locked in stone with Version 1.0 of the DD for that very reason.
In defense, I have to cite that the addition was again something I had always meant to have in the game, and in fact, it is necessary for playing (what I added to the list was the leader screen design and implementation). It was a major oversight that this wasn't added in the first version of the DD. I thought we had in all the major steps, but I totally overlooked that screen for some reason (note that M19 and M20 deal with data FOR that screen, but there is no actual milestone that sets the screen up, so the new milestone was inserted at M19 and the rest were moved down one).
So, my apologies. We're now up to 25 milestones that take us from version 0.00 to 1.00. I HOPE I've not missed anything else major like that, and that we really are locked now. I honestly can't think of anything else that was missed.
RonHiler
11-07-2007, 05:15 PM
Alright, the DD version 3 has been uploaded. I changed it to a pdf, because it really just doesn't work as an html very well. Hopefully everyone in this day and age can read a pdf through their web browser.
Shane Christopher
11-09-2007, 05:13 AM
Had a bit of a gander through this the other day. Doesn't look there's been much feature creep yet ;)
You must have spent longer writing it out then you have coding so far though :p
Strike
11-09-2007, 01:46 PM
You must have spent longer writing it out then you have coding so far though :p
At this point, that sounds liek a Good Thing to me ;)
Shane Christopher
11-10-2007, 02:26 AM
At this point, that sounds liek a Good Thing to me ;)
True. I wasn't complaining about it. I know myself how bad it can be to diverge off down an odd path on a project. My final year project half way through was something completely different to what I originally wanted to I scrapped it and redid the entire thing. Only code I kept was the interface and some of the world builder code.
RonHiler
11-10-2007, 09:04 AM
The first version of the DD took me about three weeks of solid work to write. I was on vacation for part of that, so there was no distracting work stuff to get in the way. Subsequent versions have taken a few hours here and there. I'd say at this point the game has had more coding time than the DD has writing time, but maybe not by too much.
As much as I dislike the idea of design documents for games, MD has, in my opinion, fully evolved in ideas to the game I want it to be (thanks in no small measure to everyone's suggestions and advice over the years). That being the case, the DD isn't restricting us the way I thought it might (if we had DDed MD at the start, it would be a whole different (and to be honest, not as good) a game). I think MD as a concept has reached a point where having a full game layout is much more to our benefit, and carries very little of the disadvantages a DD usually has.
I'm finding the DD *really* helpful, in actual fact. Another aspect of the DD that I thought might be a negative is that in presenting the entire project as one big document, that it would be soul-crushing in terms of looking at the vast amount of work sitting there. But actually, the overall milestone list has done just the opposite, I can totally see us getting to the end of milestone 25 and having a finished game.
It helps that I'm a totally different programmer than I was when MD first started. The original MD was a procedural program. I used character arrays, and had no clue what an STL was :) It's almost hard to believe the program got as far as it did with some of my old programming practices (we were at the equivelent of our DD's Milestone 16 working on M17, minus M11, which is pretty amazing to me, heh.)
Those things that we are locking out of the game because they aren't in the DD probably will get done once we hit the end. Things like an xml driven interface, a TCP based server/client model (or maybe peer to peer) for insta-play, and so on. Ideas we come up with as we go, but can't be put in because they are, in fact, feature creep kind of things.
Shane Christopher
11-12-2007, 06:12 AM
I've always been a fan of the original idea for this game. I came here from another game that tried to do something similiar but failed due to lack of time from pretty much everyone involved. I can't wait to see the game form before our eyes into something actually playable. It seems a lot more structured to us on the outside of the programming circle as well which is always good for team morale :D
It seems like the DD idea is working well for MD. Maybe sovereignty will benefit from the same procedure too once MD is finished.
RonHiler
11-14-2007, 10:58 AM
It seems like the DD idea is working well for MD. Maybe sovereignty will benefit from the same procedure too once MD is finished.
It's a matter of weighing the pros and cons. To be sure, DDs do have some significant pros to them (there are a lot of people that feel no project should ever be started without a full high level and low level DD in place). They prevent feature creep (when properly used), they serve to keep a working team in synch so everyone understands exactly what the product is they are working on. They help with focus via the milestone lists, and they can help out with determining time frames and budgets.
All very good things.
The one disadvantage they have, in my view, is they lock you into a very specific game. Why is that a bad thing? Because, in my opinion, games need time to evolve to their full potential.
All you have to do is think about the game that MD was when we first started. If I had locked into a DD at the start, it would be a different game. No espionage, no leaders, a VERY primitive city system, and so on and so forth. I mean it would have been OKAY, but not great. Certainly not the game design we have now. Which in my opinion is going to be one pretty goddam awesome game.
I don't think it's possible to create a game to it's full potential on the very first try. Which is exactly what a DD asks you to do.
To be honest, I'm not 100% sure what all I want to do with Sov. I have ideas and concepts. There are certain things I know I want, but others are still a bit hazy. So it would be difficult for me to write out a full DD for Sov at this point. It would require I make a lot of split decisions that I would rather allow to percolate, both in my brain and in you guys' brains. It locks out all feedback, and I become a dictator, saying "the game will be THIS way and no other". To some extent I have to do that (as per Dr. Brooks' essay from "The Mythical Man Month") as the project lead, but I do like to get all possible feedback before a final decision is made, and a DD would preclude that.
Now, does that mean I cannot start coding Sov? For some, the answer is "yes". But I just don't know that that is really true. I coded quite a bit for Sov based on what I knew we needed at that point. A multithreaded UDP based IOCP sever/client system, an autopatcher, a system to dynamically load world cells on the fly, a packet system for communication between the server and clients, and so on.
And while I was coding those, we threw around a lot of ideas about how the game would play, many good ideas (and perhaps a few bad ones) were incorporated into the design. For Sov, that process is not over yet, in my mind anyway.
RonHiler
01-17-2008, 02:33 PM
Heya guys,
Sorry to have been a bit quiet lately. I have been trying to get a new release of the DDO character planner out for about a week now, and it's a pretty big update (there's a level cap increase in this one). So it's taken a bit of time.
Anyway, I have not neglected MD completely during this time. I've actually done a fair bit of work on the DD, writing section for Race Design and World Building. I'm not really done with either section yet, though pretty close for Race Design.
There's one bit I've become less than happy with. The race blurb I took from the original version of the game, it goes like this:
“The ___ race slowly claw their way from the primordial ooze to sentience. Much to their amazement, the ___ discover one of them, ___, is immortal. In awe of this characteristic, he is named ___ ___ of the ___. On the day of his coronation, ___ vows to lead his people to world domination.”
It's really just there to make sure your titles and names and stuff sound okay to you. But the thing I don't like about it is that it mentions immortality. I'd like to downplay the whole "leaders are immortal" thing (even though that is basically true, they don't die of old age, though they can be killed). To me it breaks the immersion of the game by introducing a silly concept with no explanation. It's okay that their immortal, as long as it's not shoved in your face like that. Not to mention the entire thing is not really all that well written. I'm trying to figure out a good way to reword the whole blurb thing to acheive the same effect but to get some of the cheese out of it.
Anyway, it's probably not such a good thing that I'm writing parts of the DD right before I code them. Which is one reason I'm trying to nail down as much of the world building routines as I can with this version (world building is the subject of milestones 5 and 6). I probably won't finish all of it, but at least we'll have a good start on it.
Not sure when I'll be done, it kind of depends on how available my time is (as always, heh). I'll get it posted pretty soon, I'm sure. Once I really get into writing on it, it doesn't take all that long to do. It's the research part that takes the longest :)
Shane Christopher
01-18-2008, 02:02 AM
You can have a look at the code I used for the world builder in my Java project. It was quick, only took a couple of seconds to create a passably realistic world, obviously not as detailed as we'd like, I assume we'll be having rainfall calculations and the like to make ours more realistic but the basics are there. I used the continent system like I outlined to you on here, what, two years ago? ;)
I'll email you the code involved if you want to have a look at it. I won't say it's perfect but it created nice enough worlds for my simulator.
RonHiler
01-18-2008, 07:39 AM
Yeah, send it over. The more ideas I have the better this will come together. If you have a summary of it written down somewhere, that would be even better, but I can read code if needed.
Shane Christopher
01-19-2008, 03:03 AM
I'll send you over the full code for the project, the main builder class is the buildmap.java file. There's a description at the top that tells you basically what's happening. Like I said it's quite simple and doesn't take into account as many variables as we want but it has the possibility to do so.
RonHiler
01-19-2008, 08:55 AM
Thanks Shane, I just had a look through. Looks like you are using a system that is pretty close to parts of what I have down as well, although there are a few differences, heh. Yours (as I recall) was realistic enough for what you were doing. I'm not going for hyper-realism myself, but I'd like to get a decent level of realism. Plus I need certain aspects in place in order to facilitate game play elements (like where to realistically place resources, ocean trenches, tempatures, and so on). I've done a fair bit of research on various aspects of how continents are formed and to a lesser extent on how weather works.
You started with a random heightmap, assigned tectonic plates, then did erosion based on the plates, then smoothed the whole thing and finally assigned fertility based on elevation. Pretty good, that works :) In actual fact, what you have there is almost a carbon copy of what I had for my starting point. I just have to go farther because it doesn't give me everything I need.
In mine, I'm assigning plates, but they are going to start out completely flat (although each plate can be of different densities, so they start out at different elevations based on that, but all the elevation points on any given plate are the same). Elevation changes are going to come from tectonic plate movement (for the most part) and erosion (movement of topsoil, although new topsoil will also be generated from certian erosion types from the underlying bedrock, so that will affect the elevation of the point itself, not just move around topsoil).
To facilitate the things that I need out of the builder, I'm going to be using tectonic plate movement (which includes various flavors of convergent and divergent plate borders), volcanic activity (including hotspots, which are volcanic areas that are not associated with plate borders, e.g. the hawaiian islands), erosion from water, tempature, and wind (and maybe glaciers, though I haven't really figured out how to deal with them quite yet), rainfall, standing water (which leads to rivers, which lead to erosion), topsoil, and biomass (which is a retardant for erosion).
I think that will give me everything I need to build the world and give me all the data to intelligently place resources on the map. I pretty much know how all these things will interact during the iterative process, it's just a question of how fast I can process it all. I had problems before with this with the last attempt. So we'll see how it goes.
Much of that info will be tossed away once the building is done, we don't need it for gameplay. Given how many map points there will be and the fact that they need to be passed around through the internet to players, I need to keep the info in the map point data as succinct as possible once it hits the actual play files.
Anyway, I have much of this written up in the DD, although I still have quite a bit more to write. I'll put it up pretty soon so y'all can look through it and give any critiques.
Shane Christopher
01-21-2008, 07:42 AM
Wow I think you're going a lot more in depth then I ever imagined. Basically I just came up with something that'd look okay and tweaked it a bit to produce some passable terrain.
I'm looking forward to seeing how you'll get on with this.
For my game project which has stalled a bit due to work lately I am planning on having two levels of terrain creation, obviously they'll both be rather small scale. Each village terrain will be 4096mx4096m. There'll be roughly 32x32 of these which should give enough room for expansion as that would be 1024 villages of around 100 people. That's 130,976m squared in total. My plan is to create an overall map, 4096x4096, each tile being 32m squared. I will only create the villages as they are needed then, they will be 4096x4096 tiles each of 1m squared. So basically that 32m tile from the big map will influence the 1m tiles of the village maps.
How I'll get this to work will require some thought, I'm pretty much thinking of smoothing according to the nearby 32m tiles, basically subdividing, smoothing and throwing in some random deviations. Same would work for height, fertility, that kind of thing. After that I'll throw in river paths using start points with water depth and width and let it flow down towards the exit point, so long as they look reasonably like they match up with the next village map, they'll never be seen side by side, I'll use the large map to render distant terrain and have some way of stopping the players from going too close to the sides of each village map, again that'll take some thought.
Most of the terrain will be covered in forest, I'll just have either impassable terrain like cliffs or impassable forest a couple hundred metres from the edges.
RonHiler
01-30-2008, 10:50 AM
Alright guys, I'm going to wrap up work on the design doc and post version 4 within the next few days, this weekend at the latest. I'm not done with world building yet, but it's far enough along and I don't really want to spend a lot more time on it right now, I need to get back to the coding.
I have race design finished, which is what the next milestone deals with anyway. Then the two after that (M5 and 6) are both going to deal with world building. And I think we have enough in the DD to go through most of M5 right now, although perhaps not quite all of it. But there should be plenty of time to get it in there before the coding happens.
So anyway, look for a new version of the DD shortly.
RonHiler
02-01-2008, 05:54 PM
Alright gang, version 4 of the DD has been posted. Let me know if there are questions or comments.
RonHiler
05-19-2008, 06:12 AM
Version 5 of the design doc has been posted. Not a ton of changes in this one, mostly just refinements, and I finished the detail lists for M6 and M7.
RonHiler
06-18-2008, 07:53 AM
I just realized that the design document posted on the web page has missing words throughout the text. I don't really use that one, I always use the Word document I have saved locally when I need to reference the DD, so I hadn't noticed the problem until just now.
I'm not entirely sure what is going on with that, I've never seen Acrobat do that before. Maybe it was just a bad print or something. Anyway, since we are nearing the end of M5, I won't fix it now (as it isn't super critical) but I will make sure to look over the next version a little more carefully before I post it.
Powered by vBulletin® Version 4.1.5 Copyright © 2013 vBulletin Solutions, Inc. All rights reserved.