Doom3 (id tech 4) port/binding in D ?

Somedude lovelydear at mailmetrash.com
Thu Nov 24 15:01:13 PST 2011


Le 24/11/2011 18:28, Regan Heath a écrit :
> On Thu, 24 Nov 2011 13:12:10 -0000, deadalnix <deadalnix at gmail.com> wrote:
> 
>> Le 24/11/2011 13:18, Regan Heath a écrit :
>>> On Wed, 23 Nov 2011 16:16:40 -0000, deadalnix <deadalnix at gmail.com>
>>> wrote:
>>>> I want to suggest a project to the community. Doom3 source code has
>>>> just been released, and I think we may want to do a port in D. Here
>>>> are the reasons :
>>>> 1/ I think D is suitable and pertinent for video games.
>>>> 2/ This would make a solid code base to promote D.
>>>> 3/ Id software is very popular, and porting one of their engine is
>>>> free advertisement for D.
>>>> 4/ The build system for doom engine is scons, and it support D too.
>>>> 5/ The code base is an high quality one. (for exemple, the _t suffix
>>>> is used to differenciate what we call struct and classes in D - and
>>>> that has no difference in C++ except in the usage you make of it).
>>>> 6/ It's an interesting project.
>>>> 7/ Many people in the D community are interested in video game
>>>> projects.
>>>> 8/ Doom's story take place on mars, phobos and deimos (well and on
>>>> earth, but who care ?).
>>>>
>>>> In addition, this is a good occasion to produce some code for deimos
>>>> and can enlight us on D future evolutions backed with solid fact. On
>>>> my knowledge, such a big project (big in size, but also in technicity)
>>>> don't exist in D yet.
>>>
>>> I had an idea along these lines the other day. Does Doom3 support the
>>> addition of community content in the for of mods etc and, assuming we
>>> had a D port of Doom3, would the mods be written in D? My thought/idea
>>> was that D needed a game, where the modding api was in D, so that people
>>> wanting to create mods or other content for the game would need to write
>>> them in D.
>>>
>>> I was actually thinking about Minecraft and how in just a short space of
>>> time it has become immensely popular and the amount of community added
>>> content is amazing. The source for Minecraft (written primarily in Java)
>>> was going to be released, not sure of the status of this today I think
>>> it got sidelined as they geared up for the official release. This is a
>>> project which would really benefit from being (re-)written in D (or
>>> C/C++ for that matter) because it does suffer from performance issues,
>>> and crashes when the JVM runs out of memory (a common problem with Java
>>> or perhaps garbage collection as a whole?). If we could produce a D
>>> version of Minecraft, where community content was written in D, we'd
>>> automatically inherit a large user base interested in using D.
>>>
>>> It doesn't /have/ to be Minecraft, but what I thought was that D needs
>>> is a popular game, where community content requires the use of D... it
>>> seems an ideal way to entice new programmers in, and once they're in
>>> they'll be hooked :)
>>>
>>> Regan
>>>
>>
>> That was basically the idea.
> 
> Obviously, I think it's a great idea.  Sadly, I have no time to offer
> towards it myself :(
> 
>> However, I think Doom's is more suitable than minecraft for severals
>> reasons :
>> - D has a far less effiscient garbage collector than Java. So memory
>> management will have to be rewritten in the process, leading sometime
>> to difficulties has the original source code isn't concieved in that
>> direction.
> 
> I think, were we to pursue this and produce code that required a more
> efficient garbage collector, it would cause one to be written.  The
> reason it's not been the focus thus far is because there are so many
> other items on the agenda, and what we have works well enough.  But, if
> we were to create demand for a better one, we could cause it to move up
> the agenda :p
> 
> Does the Doom3 code use garbage collection?  Because trying to use D
> without it, today, is difficult..
> 
>> - The JVM include a lot of code that will have to be written in D.
> 
> Perhaps, I'm not super familiar with what is and isn't handled by the
> Java JVM.  Anything that doesn't yet exist in D, probably should, and
> this would be a good way to make it happen.
> 
>> - On the other hand, D interface with C (and C++ to a certain point)
>> so we don't have to rewritte the whole engine.
> 
> I was thinking the same thing.
> 
>> - An angine like doom's support the idea that D is a performant
>> language, that can be used for performance critical code. This is an
>> advertisement for D.
> 
> As is beating the Java performance for minecraft, but to a lesser
> degree.  Matching the C/C++ Doom3 would definitely be more impressive,
> especially if we can then say we reduced the LOC too :p
> 
>> If peoples think that Minecraft is a more suitable engine to
>> port/bind, I'm ready to reconsider the idea and join the effort
>> instead of splitting us in several directions.
> 
> It was just an idea, I can't contribute so you guys can pick whichever
> interests you more.
> 
> The import aspect of this idea, for me, was actually the language that
> community contributions for the game (whatever it is) would be written
> in.  If they could be written in D, then there would be another
> incentive for people to give D a go.  I noticed with games like Dragon
> Age, where mods are written in an custom scripting language developed by
> Bioware, that people in the modding community there dive right into
> learning how to use it (I suspect a lot of these people are developers
> in thier day jobs) and then start helping each other use it, if D could
> be that language, for a popular game, D would gain a number of users
> very quickly.
> 
> Regan
> 

I also happen to think Minecraft would be a much better idea than Doom 3.
First because it probably has a better chance to succeed. And second,
because there is a real need for a replacement of the original game,
which to my knowledge isn't really the case of Doom 3.
So interested players will have an incentive to learn and use the
language. While with a port of Doom, the end result would be "Ok cool.
So what ? We already have a nice codebase in C++, a language we know".
And if there is a performance need for Minecraft, it will be rewritten
anyway, likely in C++. So if there is already a working port in D, I
believe people will notice, and maybe attempt to improve on the original
game, as has been the case with Spring RTS on Total Annihilation and
OpenTTD on Train Tycoon Deluxe (note that these two open source projects
were actually written from scratch, after a reverse engineering of the
original games).


More information about the Digitalmars-d mailing list