Mayhem Intergalactic: First commercial game written in D?
janderson
askme at me.com
Wed Dec 12 20:35:59 PST 2007
Chris P. wrote:
> Ansible wrote:
>> Looks great!
>
> Thanks! :-)
>
>> I'd be interested in reading a 'postmortem' of the project. What went
>> right, what went wrong? What was easy and what was hard? How did
>> writing a game in D compare with writing one in another language?
>>
>> Ben Burdette
>
> Here goes...
>
> What went right:
>
> - Using D instead of C++ allowed me to concentrate on coding rather than
> trying to debug stupidly weird compilation errors cropping up inside
> nested STL template code that I don't understand, and
> impossible-to-diagnose crashes caused by rogue pointers.
>
> - Porting from Windows to Linux (done when I personally switched
> operating systems - I wanted to develop it under Linux so I had to get
> it to build!) was easier than expected.
>
> - I learnt a lot about software design.
>
> What went wrong:
>
> - I wrote my own game engine, even though I knew it would make the
> process harder and longer. Seems like everyone falls into this trap.
> Next time I'm definitely going to use an existing and well-supported
> game engine.
>
> - Porting to Mac, which I've just mostly-completed, was harder than
> expected. Figuring out how to dynamically link to frameworks and getting
> all the Cocoa initialisation code (necessary for SDL) running was tricky
> for someone with no prior Mac experience.
>
> - Using D instead of, say, Python meant I felt like I was either
> reinventing the wheel all the time, or trying to find a C library (not
> C++ - the recent linking-to-C++ functionality looks promising but it
> wasn't around at the time I was doing this) that did what I needed. You
> just can't beat Python's "batteries included" approach; and for
> everything that isn't in Python's standard library, someone's done all
> the hard work of sourcing and linking to libraries for you already.
>
> Example: I wrote all my own GUI code, including textboxes (pray that
> you'll never have to reinvent that particular wheel), because I couldn't
> find any usable C libraries for displaying and operating GUIs in OpenGL.
> I did consider porting Harmonia (e.g.) to OpenGL, but it looked too hard.
>
> - I had a lot to learn about software design. :-)
>
>
> And now it's time for some minor ranting.
>
> I'd say the biggest problem I encountered was a chronic lack of library
> support. No matter how great a language is - and D is a great language -
> you won't get anywhere if you can't do anything useful with it, quickly.
> For *any* conceivable common task, I should be able to drop a
> (preferably native, preferably not GPL or LGPL) library straight in and
> get on writing new code, instead of having to write the world's 10
> millionth textbox or XML parser. I actually ended up using ini files
> instead of XML files, simply because there was a great ini file parsing
> module available and I wasn't able to find a good enough XML library at
> the time that I needed it (about two years ago).
>
> I do think this situation has improved somewhat since I started work on
> Mayhem Intergalactic, more than two years ago. Having said that, I'm not
> sure I could currently whole-heartedly recommend D to a fellow indie
> game developer, largely because of the library situation; but also
> because D's Mac OS X compatibility for gaming purposes is not what it
> should be. The Mac market is important enough for indie game developers
> that they really can't afford any obstacles in the way of porting their
> games to the Mac.
>
> (To be clear, gdc works GREAT on Mac; I was impressed by how easy it is
> to generate universal binaries for example, as it works exactly the same
> way as in gcc. The compiler is not the issue. It's the lack of
> comprehensive Mac support from D's various graphics and GUI
> libraries/bindings that's the issue. I hope to help rectify that
> situation with Derelict at least, although SDL 1.3 will eventually
> remove the issue of SDLmain.)
>
> -- Chris P
This is a great writeup. Cheers!
More information about the Digitalmars-d-announce
mailing list