Wikibook - "OpenMW: Writing a Complete 3D Game"

A generic talk on the OpenMW project.
Locked
User avatar
lgromanowski
Site Admin
Posts: 1193
Joined: 05 Aug 2011, 22:21
Location: Wroclaw, Poland
Contact:

Wikibook - "OpenMW: Writing a Complete 3D Game"

Post by lgromanowski »

athile wrote: Throwing an idea out there...let me know what you think:

Short summary: A "How To Write a Complete 3D Game" book on the wiki using the OpenMW code as an example.

Here are my two primary selling points:

1) I would enjoy working on this

I've always had some interest in helping put together a "How to Write a 3D Game" book-on-a-wiki. There are other such attempts at this and, of the few I've seen, I've frankly never been really excited by the results. I also think I may have the time and mental energy to contribute to such an effort. (I should add that I think I'm reasonably qualified, but not an expert - but that's why it's a collaborative effort, right?)

2) It would aid design and planning of OpenMW

The general idea would be for the book to be maybe a 40/60 mix of general game programming information versus OpenMW-specific information. The basic structure of any section would be "How to Do XYZ in a Generic Way" followed by "How OpenMW does XYZ".

I've always found practical examples are the easiest way to learn (at least for myself), so this would benefit the text. On the other hand, this would be a natural high-level document describing the architecture - which (if successful) would be great for introducing new developers to the high-level design and direction of the project (something which I, with professional experience with large codebases, know can often be very difficult to glean from staring at low-level code alone - or at least very difficult to glean *quickly*).

(Also, if anyone knows the history of Linux, you'll know it spawned, at least in some very small part, from the Tannenbaum's "Operating Systems" book on the Minix OS - my point being to have "the big picture" in written form before all the code is there certainly shouldn't hurt the project.)

Another more important comment:

I'd obviously have to rely on reviews and info from Nicolay and others to ensure what is written corresponds to how OpenMW is and (more importantly, for the many yet-to-be-written parts of the code) *will be* architected. I am proposing to write a wiki-book on game architecture; I am *not* proposing to architect OpenMW...I'll leave that to the authors of the actual code.


Feedback:

Is this something others think sounds interesting and worthwhile? If so, would anyone mind if I started creating some pages on the wiki? If the project dies for one reason or another, we could always delete away all the pages.

Any other thoughts?


Thanks
pogzy wrote: Hi,

Do you know what is your more important wish, write this book or see a v1.0 of OpenMW.

If your first desire is to write this book, may be this is your best mean to help OpenMW.

If your first desire is to see ASAP an OpenMW v1.0, there are perhaps more efficient ways to participate yourself in the community.

If you start writing it, please keep in mind that this side project must remain a benefit for OpenMW. It could be sad to keep volunteers away of OpenMW core project.

Hope this help :roll:
athile wrote: Thanks for the reply, pogzy. You make a very good and important point.

I do not want to start this wikibook if others feel it will be a distraction from core OpenMW development. The goal for this wikibook would be to attract developers. I'm imagining the ideal scenario would be a developer finds the wikibook and decides to teach himself game programming via the information there. In the process, he downloads the OpenMW source and learns from that. With this knowledge, he can then contribute directly to the OpenMW project - keeping OpenMW a well-maintained and growing community project. That's the ideal goal. Now I'm wondering if others think this is a realistic goal (and thus one worth pursuing).

And to answer your question to me: frankly, my personal wish is to see a successful, complete open source role-playing game get developed and maintained. OpenMW seems like a promising project to make this happen. Given (a) my existing interest in writing a game architecture wikibook and (b) the current lack of available OpenMW design documentation, I wanted to share this wikibook idea and see what the reaction was.


At this point, it's an idea only. If others think it would be more likely to distract from OpenMW 1.0 than attract developers, please do say so. I don't plan to pursue this unless other developers are excited about the idea.
Zini wrote:
The goal for this wikibook would be to attract developers. I'm imagining the ideal scenario would be a developer finds the wikibook and decides to teach himself game programming via the information there. In the process, he downloads the OpenMW source and learns from that. With this knowledge, he can then contribute directly to the OpenMW project - keeping OpenMW a well-maintained and growing community project. That's the ideal goal. Now I'm wondering if others think this is a realistic goal (and thus one worth pursuing).
Not really. While the scenario you describe may work in some cases, it would take a wikibook at a very advanced stage of completion. By the time you are at this stage OpenMW will either have attracted enough developers to sustain itself or it will have died by a lack of interest and progress. Either way, I reckon, it would be too late.

What is needed most right now are additional coders (once we have the planning/organisation part out of the way). Morrowind isn't a particular complex engine, but the quantity of its features is very substantial and doing it all with only a single coder would take much too long.
nicolay wrote: I'm in slight disagreement with the others here as I like this idea very much. It goes very well along with the idea of splitting the OpenMW engine into an "engine" part and a "Morrowind" part, which I've already started doing.

The current engine design, as it is growing now, is at its core made for modularity and reusability, and I think you could very well write a good tutorial book based on the result. I've been thinking about making something like this myself actually, but I've realized I would never get the time for it on my own.

That being said, things are still growing and it might take a while before there's really a complete reusable engine to write about. But that doesn't stop you from getting started, and thinking in terms of a book from the start might actually even help us shape the development itself. If you want to do this and you're committed to seeing it through (realizing that you will probably end up doing most the work yourself even if the rest of us help out), then I think it's a great idea.

BTW, have you considered using a site like wikibooks rather than the OpenMW wiki? Though I guess the easiest would be to start here and copy it over to Wikibooks when it's more finished. Putting the material on a site like wikibooks would of course greatly increase the number of people who would find and read it.
pogzy wrote: Hi,

Perhaps if the book describes the final architecture that is the goal of the implementation, and that present con's and pro's of this particular choice among many others. It could be a very good technical doc that may help new dev to dive into the code with strong base of the current state and the wanted state.

But to achieve this, you probably need a very good level in game dev and a complete comprehension of OpenMW architectural choices.

For my part, I just wait that the project is completly C++ and there is a list of tasks so I can pick some and try to submit code, if I have time to, and try to be hepful in this forum and in the WIKI.
Zini wrote: Actually there is a list of tasks now: http://openmw.org/wiki/index.php?title=Roadmap

Not sure about the state of the original D implementation, but it looks like most task are rather new coding tasks than D -> C++ porting tasks. If you have enough available time, there is little point in waiting.
pogzy wrote: Hi,

You're comment is okay, but I've done several ports from one language to another and I from my experience it could be a period of strong refactoring. The place and time to do cleaning and rethinking the all (not so clean or nice) stuff. So I prefer to wait this is done to take from my time to dive in the code. We should continue to ask Nicolay to refactor things :twisted:

But I will take a part in the roadmap, but I wont put it here, it is the wrong post.
athile wrote: Thanks for the feedback, everyone.

I'll adopt the following approach: I'll give the wikibook a try locally for now. If it hits a critical mass point where the information looks valuable, I'll move it to somewhere public. On the other hand, if it never gathers enough momentum, I'll ditch the project and it won't have been a distraction to anyone other than myself :)
Zini wrote: A bit OT again, but:
I'm in slight disagreement with the others here as I like this idea very much. It goes very well along with the idea of splitting the OpenMW engine into an "engine" part and a "Morrowind" part, which I've already started doing.
I am not sure where you are going with this. I see that you have a game directory, which is probably supposed to contain all the Morrowind parts.
But your engine part contains the esm stuff, which defines the world model. That means even when using the engine-part to make a non-Morrowind game, it would still be based on the Morrowind world model, i.e. essentially it would be Morrowind with different content and with a different user interface.
nicolay wrote:
athile wrote:I'll adopt the following approach: I'll give the wikibook a try locally for now. If it hits a critical mass point where the information looks valuable, I'll move it to somewhere public. On the other hand, if it never gathers enough momentum, I'll ditch the project and it won't have been a distraction to anyone other than myself :)
Great, keep us posted!
nicolay wrote:
Zini wrote:A bit OT again, but:
I'm in slight disagreement with the others here as I like this idea very much. It goes very well along with the idea of splitting the OpenMW engine into an "engine" part and a "Morrowind" part, which I've already started doing.
I am not sure where you are going with this. I see that you have a game directory, which is probably supposed to contain all the Morrowind parts.
But your engine part contains the esm stuff, which defines the world model. That means even when using the engine-part to make a non-Morrowind game, it would still be based on the Morrowind world model, i.e. essentially it would be Morrowind with different content and with a different user interface.
That's why I said I've only 'started' doing it ;) The ESM and NIF stuff obviously don't belong in a general game engine. The only parts of the current code that would belong there right now are the ogre/ and input/ directories, which are tiny. I'll likely work more on this as we go along, but right now it's OpenMW 1.0 itself which is the main target.
Locked