Nauk wrote:Very good job, the videos transport a great atmosphere

Thanks
I'll try to answer your questions:
I recently developed a great interest in D too and I have a couple of questions:
What is the reason you choose gdc / gcc above dmd / dmc and would OpenMW work with Walters compilers too? Might it be because you get more support and resources for gdc / gcc?
The gdc requirement is only for Windows (I use dmd myself on Linux), and it's purely for technical reasons. DMD on Windows unfortunately uses an antiquated object format (OMF), which doesn't play well with modern C++ compilers (actually it doesn't play at all.) This means that linking DMD objects with C++ code in the same project is very hard. GDC on the other hand uses the same format as GCC (since they are the same compiler) and they work well together. On the C++ side, I chose MingW (gcc) because it's known to work with Ogre and it contains both compilers (C++ and D) in the same environment.
I haven't really created any general bindings for these libraries in D. The interface between D code and C++ in OpenMW is at a much higher and application specific level than the general library API. For example, the entire set of Ogre functionality available to the D code consists of 20-something functions, you can see them here:
https://openmw.svn.sourceforge.net/svnr ... bindings.d
I found this approach to be more sensible (and much easier) than creating a full API binding. Besides being easier it also forces you to create a clean interface between the graphics code and the rest, forcing you to think about what you're doing and also resulting in cleaner code in the end.
How would you rate the productivity increase many D users are talking about, compared to work with C++?
It's absolutely a real increase. I can't give you any numbers, but the time saved in not having to track down segfaults, memory overwrites, pointer bugs, memory leaks and the like is what does it for me. Sure, you can get those with D code too, but it's much easier to do defensive programming in D, there's garbage collection, there's several mechanisms to catch bugs (like automatic array bounds checking in debug mode) that help you out, and you can avoid pointers altogether in most cases. It's probably safe to say that I would never have come as far as I have with OpenMW if I had to do it in C++.
Of course there are downsides to using a "new" language: few native libraries, less developers are familiar with it (so it's harder to get help on projects), and lack of compiler maturity - meaning that compiler bugs are still an issue, something that C++ developers don't have to worry much about anymore.
What is your current platform / ide / compiler setup like for the work on OpenMW and what can you recommend there?
I use Linux almost exclusively, and I edit with emacs and compile with dmd/gcc. Not really sure if I would recommend emacs though, it's an old habit more than a conscious choice
