Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Je kunt ook een cookievrije versie van de website bezoeken met minder functionaliteit. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , reacties: 31, views: 16.334 •

Ontwikkelaar id Software heeft de broncode van de BFG Edition van Doom 3 openbaar gemaakt. De bestanden zijn te downloaden via Github. De code valt onder de GNU General Public License. De code bevat niet de render-techniek die bekend staat als Carmack's Reverse.

Uitgever Bethesda maakt via het eigen blog bekend dat de broncode van Doom 3 is vrijgegeven. De code is te downloaden via Github. Ontwikkelaar id Software, sinds 2009 eigendom van Bethesda, kondigde eerder deze maand al aan dat de broncode vrijgegeven zou worden. De code valt onder de GNU General Public License. De studio gaf een jaar geleden al de broncode van Doom 3 uit, de shooter die in 2004 op de markt kwam. In oktober leverde id Software echter de BFG Edition van Doom 3 af, een nieuwe versie van de game met een verbeterd uiterlijk, beter geluid, ondersteuning voor 3d-schermen en een verbeterd systeem voor savegames. De BFG Edition bevat bovendien een extra hoofdstuk.

Uit de broncode van de BFG Edition zijn een aantal onderdelen verwijderd. Zo is de code die integratie met Steam regelt weggelaten en ook het deel dat het afspelen van Bink-video's verzorgt. Bovendien heeft id Software een stuk weggelaten dat verband houdt met een render-techniek die bekend staat als Carmack's Reverse. Het gaat daarbij om een onderdeel dat het renderen van 'shadow volumes' regelt. De studio had hierover een conflict met Creative, de fabrikant die vooral bekend is van geluidskaarten. Die heeft een patent op een vergelijkbare techniek als Carmack ontwikkelde voor Doom 3. Hetzelfde conflict zorgde in 2011 voor flinke vertraging bij het vrijgeven van de broncode van Doom 3. Tegelijk met de broncode verschijnt ook een patch voor de BFG Edition.

Doom 3 BFG Edition

Reacties (31)

Wat ik me afvraag is of dit daadwerkelijk zin heeft, de Doom 3 code is al een jaar vrijgegeven en heb nog over geen enkel project iets gehoord dat er gebruik van maakt...
Je hoeft er ook geen gebruik van te maken, op het moment dat het uitkomt is het ook al een 'oudere' engine. Persoonlijk gebruikten wij het om soort van 'van te leren', een kijkje in de keuken bij Id, hoe doen zij dat. Verder is de engine nu 'besmet' met GPL (geef zelf de voorkeur aan MIT, GPL is niet vrij ... vrij betekend dat je er alles mee kunt doen, GPL dwingt je een richting in) dus je kunt het niet overal zomaar meer voor gebruiken.

[Reactie gewijzigd door HerrPino op 27 november 2012 11:15]

"GPL is niet vrij"

Volledig oneens, het gaat om de vrijheid van de code en niet om de realisatie van jouw wens de code alsnog op te sluiten.
GPL gaat vooral om de vrijheid van eigen code en niet van die van anderen. Dat is net zoiets als zeggen dat iedereen vrij is om te schieten op iedereen, en dat af te doen als "vrijheid". Ja, dat is het technisch gezien ook wel, maar echt vrolijk wordt je er niet van. Door de imperking van die vrijheid heb ik de vrijheid om gewoon veilig over straat te lopen.

GPL code kun je niet gebruiken zonder de rest van de code ook GPL te maken. Dat vind ik een grove imperking van de vrijheid, en dus vind ik het niet vrij. GPL is het opleggen van een ideologie aan anderen. Dat is ook de hele reden dat het viraal is, omdat de bedenkers vinden dat de wereld daar beter van wordt. Dus iedereen die het gebruikt moet eraan voldoen, in de hoop dat zo steeds meer en meer code geGPL'd wordt. Je zou bijna de analogie kunnen trekken met menig geloofsovertuiging.

[Reactie gewijzigd door .oisyn op 27 november 2012 14:03]

Als ik me niet vergis zou je je eigen code als dynamic library kunnen compileren en tijdens runtime laden om zo de GPL (voor je eigen code) te omzeilen.
Daar verschillend de meningen over, aangezien de GPL (en mogelijk de nationale wetten bij een rechtszaak) geen onderscheid maakt tussen statisch en dynamisch linken. Dit is precies waarom LGPL bestaat: LGPL-werken mag je dynamisch linken met werken die een andere licentie hebben dan (L)GPL.

[Reactie gewijzigd door 164019 op 27 november 2012 14:45]

@.oisyn

Wederom oneens, het gaat niet om jouw vrijheid alles met de code te mogen doen. Het gaat om de vrijheid van de code zelf. Daar is GPL op bedacht.

En om er geen misverstanden over te laten ontstaan. GPL is niet bedacht om commercie de nek om te draaien. Je mag de software gebruiken en ook verkopen, no prolem. Maar je hebt niet het recht om de software op te sluiten want de software heeft het recht om vrij te zijn.

Als je dan bang wordt dat niemand jouw software koopt (welke je niet eens zelf hebt bedacht), dan is dat niet een probleem welk door de licentie wordt veroorzaakt, maar door mensen die net zo inhalig zijn als jezelf.

GPL is een fantastische licentie die ervoor zorgt dat code vrij blijft en door iedereen bekeken en gebruikt kan worden. In een wereld waar de mensheid wijzer wordt door van elkaars bijdragen te leren is er geen betere licentie dan deze.

Als deze gedachte niet overeenkomt met wat je van plan bent, zoek dan naar software die daar wel aan voldoet. Ja, het zal je keuze wel enigzins beperken en dat is vrij logisch. Iemand die zijn intellectueel eigendom gratis vrijgeeft aan de gemeenschap doet dit meestal vanuit een ideologisch standpunt en niet zozeer om ervoor te zorgen dat jij er dan rijker van moet worden.

[Reactie gewijzigd door Magnetizer op 27 november 2012 14:48]

Als je dan bang wordt dat niemand jouw software koopt (welke je niet eens zelf hebt bedacht), dan is dat niet een probleem welk door de licentie wordt veroorzaakt, maar door mensen die net zo inhalig zijn als jezelf.
Misschien moet je niet zelf conclusies gaan trekken wat de achterliggende reden is dat ik het er niet mee eens ben en dat vervolgens gebruiken om mij te betichten van inhaligheid, want je kan niet verder van de waarheid zitten. Hou die opmerkingen dus gewoon voor je, wil je?

[Reactie gewijzigd door .oisyn op 27 november 2012 19:36]

wat je ook bij gpl mag is de engine verbeteren, en er functies aan toevoegen, neej je bent dan niet de enige die die verbeteringen hebt, maar wel de eerste... en bovendien zijn ze op jouw case gestoelt... hoezo niet vrij...

GPL als niet vrij beschouwen is een gebrek aan fantasie, en vooral een een gebrek aan wederzijds vertouwen.

zie eens hoe weinig resources er gestoken zijn in bijv FreeBSD tov Linux... dat zegt iets over het ecosystem.
GPL als niet vrij beschouwen is een gebrek aan fantasie
Klopt, je moet idd heel veel fantasie hebben om dat als vrij te zien :Y)
wat je ook bij gpl mag is de engine verbeteren
Deze discussie ging niet over open source licenties over het algemeen, maar het virale aspect van GPL. Bij tal van andere licenties mag je óók aanpassingen maken. Maar zelfs het feit dat je die aanpassingen moet delen heb ik niet zo'n problemen mee. Waar ik problemen mee heb is dat ik de GPL code niet mag combineren met code van iemand anders waar geen GPL aan hangt, omdat de GPL mij verplicht álle code waarmee de GPL linkt ook als GPL vrij te geven, ookal maak ik 0 aanpassingen.
zie eens hoe weinig resources er gestoken zijn in bijv FreeBSD tov Linux... dat zegt iets over het ecosystem.
Nee, dat zegt op zichzelf nog totaal niets. Je kunt niet twee statistieken nemen en vervolgens de conclusie trekken dat er enige vorm van causaliteit tussen bestaat.

De afgelopen duizend jaar is het aantal piraten sterk afgenomen en het broeikaseffect sterk toegenomen. Het is wel duidelijk dat de piraten er dus voor zorgden dat het broeikaseffect laag bleef!

[Reactie gewijzigd door .oisyn op 27 november 2012 19:38]

Het gaat bij GPL ook niet om het gebruik van de code. Het gaat, zoals je zelf zegt, om de vrijheid van de code zelf. De code *moet* overal vrij zijn. Diezelfde code mag je zelf niet uitbrengen onder een andere licentie. Als er een probleem ontstaat door kopiëren van GPL code, dan is de persoon, die de GPL code heeft gekopieerd, de schuldige en niet de persoon die de code heeft uitgebracht onder GPL. Het is dus niet viraal.
Als je toch gebruik wilt maken van GPL code, dan kan je misschien wel iets regelen met de auteur. Persoonlijk zou ik mijn code wel willen uitbrengen onder een andere licentie (speciaal voor mensen/bedrijven, die er geld mee willen verdienen).
Halve ochtend als de stage baas niet zag in de bron code zitten kijken :p
Leuke dingen gezien en gelijks id's github gebookmarked.
Het kan wel interessant zijn, de code is voor een groot gedeelte geschreven door John Carmack, dat mag toch wel als een genie gezien worden. Het kan dus interessant zijn om te lezen hoe hij bepaalde problemen oplost / aanpakt.

Deze site biedt trouwens een leuke analyse van een gedeelte van de Doom 3 engine:

http://fabiensanglard.net/doom3/index.php
Geen project?

Kan zo uit mijn mouw iodoom3 en dhewm3 (64 bit) schudden.

Er zullen waarschijnlijk meer zijn.
"Wat ik me afvraag is of dit daadwerkelijk zin heeft, de Doom 3 code is al een jaar vrijgegeven en heb nog over geen enkel project iets gehoord dat er gebruik van maakt..."

Wat denk jij van al die studenten 'gamedevelopment' of dergelijke opleidingen?

Die zullen heel blij zijn hoor met een blik in de broncode van zo'n spel! Ook al is het wat jaartjes oud..
Heel mooi dat ze uit zichzelf de broncode vrijgeven. Kan iedereen er leuke dingen mee gaan bouwen, in plaats van alleen id. Zouden meer mensen moeten doen.
Maar de broncode is al lang vrijgegeven, nu is er alleen nog extra van de BFG versie vrijgegeven..
Leuk om in de broncode te kunnen snuffelen.
De implementatie van de give all cheat:

static bool Cheat_GiveAll( void ) {
if( PLAYERCOUNT != 1 || ::g->netgame ) {
return false;
}

::g->plyr->armorpoints = 200;
::g->plyr->armortype = 2;

int i;
for (i=0;i<NUMWEAPONS;i++)
::g->plyr->weaponowned[i] = true;

for (i=0;i<NUMAMMO;i++)
::g->plyr->ammo[i] = ::g->plyr->maxammo[i];

for (i=0;i<NUMCARDS;i++)
::g->plyr->cards[i] = true;

::g->plyr->message = STSTR_KFAADDED;
return true;
}

kwestie van 3 arrays vullen dus.
De arrays zijn al gevuld, nu wordt er enkel een andere waarde aan elk element gegeven.
Eerlijk gezegd niet echt een openbarend stukje code.
Als je de code download en compileert heb je dan gratis Doom 3 BFG?
Of is het net als bij quake 3 dat de daadwerkelijke resources in de vorm van geluid 3D modellen etcetera ontbreken waarna het alsnog niet gespeeld kan worden.
Lijkt me vrij sterk dat ze alle 3D models, geluiden, textures, map files etc. gratis weggeven, zou het hele BFG edition van Doom3 teniet doen.
Misschien wel mogelijk om zelf je eigen textures, models, maps etc. toe te voegen aan de broncode om zo je eigen Doom 3 amature edition te maken (ook leuk met teletubbies e.d. erin)
De community kennende zullen ze allicht zelf uiteindelijk met een gratis, vrij asset pack komen
Het is alleen de code, dus niet de textures die je ook nodig heb.
Het is alleen de bronCODE, niet alle bronBESTANDEN...
Creative's depth fail stencil shadow rendering is een van de belachelijkste patenten ooit.

Stencil shadows werken door het schaduw-volume van een object te renderen naar de stencil buffer. Een object werkt namelijk een schaduw op een ander object als zijn schaduw volume snijdt met dat obstakel. Een schaduwvolume is simpelweg het gehele volume dat achter een object zit, gezien vanuit de lichtbron.

Voor alle schaduw volume polygonen die naar de camera toe zijn gericht (frontfacing, dus die je van de voorkant kan zien) tel je 1 op bijde waarde in de stencilbuffer, en voor alle polygonen die van de camera af zijn gericht (backfacing) trek je er 1 af. Alle pixels die hierna geen 0 in de stencilbuffer hebben vallen in de schaduw. Het principe erachter is dat als het schaduw-volume een obstakel raakt, je alleen de voorkant van het volume kan zien omdat de achterkant wordt geclipped door de z-waardes van het obstakel in de depth buffer.

Deze techniek heeft echter een groot nadeel - als de camera zich ín het schaduw-volume bevindt, dan zijn álle polygonen backfacing, met als resultaat dat alle waarden in de stencilbuffer ongelijk zijn aan 0 als je die polygonen kunt zien en zou je denken dat alles in de schaduw ligt. Hier hebben Carmack en mensen bij Creative (William Bilodeau en Michael Songy) onafhankelijk van elkaar een vrij simpele oplossing voor gevonden. Iets dat iedereen kan bedenken als je het probleem een beetje aandachtig bekijkt.

Het probleem is namelijk:
  • schaduw volume polygonen die wel zichtbaar zijn geven schaduw terwijl ze dat niet moeten doen
  • schaduw volume polygonen die niet zichtbaar zijn geven geen schaduw terwijl ze dat wel moeten doen.
Ok, we willen dus schaduw voor de delen die níet zichtbaar zijn. Well, Einstein, als we dan gewoon eens de depth test omdraaien! Dus alleen als schaduw volume polygonen tekenen als de depth test faalt, oftewel, als de polygonen áchter andere polygonen liggen.

Een volume dat volledig zichtbaar is zal hierdoor helemaal niet renderen (resultaat 0 in de stencilbuffer). Voor een volume dat voor de helft zichtbaar is omdat hij een obstakel raakt zal alleen het gedeelte dat zich achter het obstakel bevindt worden gerenderd (resultaat ongelijk aan 0 in stencilbuffer). En voor een volume dat geheel achter een obstakel zit zullen zowel frontfacing (+1) als backfacing (-1) polygonen renderen waardoor het resultaat alsnog 0 is.

Simpele oplossing dus. Maar slim als ze zijn hebben Bilodeau en Songy het snel gepatenteerd, nog voordat Carmack erover gepubliceerd had, met als resutlaat een enorme rem op de innovatie op basis van iets dat iedereen met 3 hersencellen ook wel zelf kan bedenken.

[Reactie gewijzigd door .oisyn op 27 november 2012 12:20]

tja, dat is het nadeel van software/algorithme patenten en eigenlijk patenten uberhaupt.. maar voor de patenthouder is het wel fijn... Patenten zorgen er overigens ook voor dat er meer geld gestoken wordt in research, hell, het is een grote bakermat voor research, want bedrijven moeten ook geld verdienen..

Tja, en rem op innovatie is tweeslachtig natuurlijk, eigenlijk remt het niets, want je kunt ook gewoon een licentie nemen op het patent en daarna ermee verder.. Het probleem is alleen altijd: Was jij maar eerder die het had bedacht en gepatenteerd had........

En blijkbaar had niet iedereen met 3 hersencellen het ook wel zelf kunnen bedenken, want waarom was het dan niet eerder bedacht.. Ik zeg al, achteraf is het vaak makkelijk zeggen van 'pff dat had iedereen wel kunnen bedenken', en vaak genoeg gebeurd het ook dat afzonderlijk van elkaar dingen worden bedacht..

Maar je uitleg is in iedergeval heel duidelijk ;)
want waarom was het dan niet eerder bedacht..
Lekker onzin argument ook weer. Er is altijd iemand die iets als eerste heeft bedacht. Betekent dat dat álles dus bijzonder is? Algoritmen zijn geen domeinnamen die je zo snel mogelijk moet registreren voordat iemand anders 'm pakt. Sommige dingen zijn gewoon common sense.

Stencilshadows waren voor die tijd gewoon niet interessant omdat de hardware niet snel genoeg was.

[Reactie gewijzigd door .oisyn op 27 november 2012 13:56]

want je kunt ook gewoon een licentie nemen op het patent en daarna ermee verder..
Het betreffende idee is met een patent "eigendom" van iemand en diegene kan er prima voor kiezen om er niets mee te doen. Licentieovereenkomsten zijn een keuze van de patenthouder, geen gegeven.
want waarom was het dan niet eerder bedacht..
Carmack kan het zelfs al eerder bedacht hebben, maar als hij er niets over gepubliceerd heeft is daar geen enkel bewijs ("prior art") van.
Deze broncode is heel interessant. Niet vanwege doom3, omdat de code al bekend was en eigenlijk niet echt veranderd is, maar vanwege de oude doom-versies. Hier staat namelijk code in om de doom-geluiden en -muziek af te spelen, en dat is code die nog nooit eerder vrijgegeven was vanwege licentie-rechten.
Nu is het nog steeds niet die oude code, maar is er toch iets waar anderen naar kunnen kijken hoe het nu echt moet, voorzover dat niet al bekend was. Destijds was dit een van de grootste problemen, om het echt als doom te laten klinken.

Op dit item kan niet meer gereageerd worden.



Populair:Apple iPhone 6Samsung Galaxy Note 4Apple iPad Air 2FIFA 15Motorola Nexus 6Call of Duty: Advanced WarfareApple WatchWorld of Warcraft: Warlords of Draenor, PC (Windows)Microsoft Xbox One 500GBSalaris

© 1998 - 2014 Tweakers.net B.V. Tweakers is onderdeel van De Persgroep en partner van Computable, Autotrack en Carsom.nl Hosting door True

Beste website van het jaar 2014