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. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Programmeur krijgt Wolfenstein 3D werkend op een Game Boy Color

Door , 69 reacties

Een Zweedse programmeur, Anders Granlund, heeft het voor elkaar gekregen om Wolfenstein 3D op de Game Boy Color te draaien. Hiervoor moest hij zelf een cartridge ontwerpen met een aparte coprocessor, maar de Game Boy hoefde niet aangepast te worden.

Het losse systeembordje is voorzien van een KE04-processor met een ARM Cortex-M0-kern die op 48MHz draait. Verder beschikt het apparaatje over 128kB aan flashgeheugen en 16kB ram. De KE04 werkt nauw samen met de processor van de Game Boy zelf, de Z80. Deze is zelf niet snel genoeg om de game te kunnen draaien, maar wel om het benodigde rekenwerk voor de interface uit te voeren.

De 3d-beelden worden door de KE04-processor gerenderd, wat hij op een resolutie van 160x96 pixels doet. De rest van het 160x144-pixelschermpje van de Game Boy wordt gevuld door de interface. Voor kleuren verdeelt de Game Boy zijn scherm in tegels van 8x8 pixels. Binnen de tegels kan van slechts één kleurenpalet van vier kleuren gebruikgemaakt worden. In totaal kunnen er acht verschillende paletten opgeslagen worden. Daarom wordt het spel voornamelijk in grijstinten gerenderd, met hier en daar een highlight in een kleur.

Het spel is inmiddels in een vergevorderd stadium. De maker heeft een menu, drie verschillende vijanden en alle tien de levels van Episode 1 in het spel verwerkt. Hiermee is 123kB van de rom verbruikt, dus heel veel past er niet meer bij. De maker heeft al een sticker en een doosje voor het spel ontworpen, waardoor het de indruk wekt dat het origineel voor de console gemaakt was.

Moderatie-faq Wijzig weergave

Reacties (69)

Reactiefilter:-169067+152+28+30Ongemodereerd14
Nice. Toen ik las dat er in de cartridge een aparte co-processor zat was ik er een beetje bang voor dat het min of meer een emulator zou zijn die vervolgens op het scherm van de GBC wordt weergegeven, maar dit lijkt meer op het principe van de Super-FX chip in de SNES cartridges :)
Dan is het nog steeds cheaten hoor ;). Een Megadrive doet het zonder.. maar goed een Megadrive doet alles wat een SNES doet zonder... :P. Inclusief StarFox :P.


https://www.youtube.com/channel/UClyrLCLBRUDofXRHxBdIlDQ Even een voorbeeldje.:D.

Enne alshet echt moet, kan een Meg ook een chipje op de cart krijgen (Virtua Racing) en zelfs extra geluids kanalen (de Geluids lijn loopt door de Cartridge heen zodat mixing mogelijk was).

Is nooit gebruik van gemaakt behalve met een spel (Virtua Racing) en de 32X :D.

https://www.youtube.com/watch?v=Z3-J2-VeoH8 als je echt op 8bit wilt blijven, dan is dit toch behoorlijk wat interesanter ;). Die Atari 8 bit computer lijn kon wat grafisch hoor! :D.

[Reactie gewijzigd door Dehnus op 19 december 2016 14:54]

Dan is het nog steeds cheaten hoor ;). Een Megadrive doet het zonder.. maar goed een Megadrive doet alles wat een SNES doet zonder... :P. Inclusief StarFox :P.
Lol de mega drive doet alles zonder?? Of ben je alweer vergeten dat de Sega Megadrive 2 addons had met weinig support en beide een eigen powersupply en eigen video-out? Ze ook deze afbeeldingen op google.

De SNES was gewoon superieur aan de Mega Drive en had ook mode 7 games die hier gebruik van maakten zagen er beter uit. Neem een Mario Kart bijvoorbeeld. De SNES kon namelijk meer kleuren uitsturen (32.768 vs 512) en geluid was ook stukken beter.

De GB color is ook geen SNES, maar een aangepaste NES. En Wolfenstein 3d op een NES laten draaien is toch wel knap ;).

[Reactie gewijzigd door Bliksem B op 19 december 2016 16:50]

SNES kwam 2 jaar na de Megadrive uit en alsnog heeft de Mega drive een snellere processor dan de SNES waardoor je weinig tot geen slowdown ervaart waar je bij de SNES (Vooral bij shmups en zelfs bij Super Ghouls en Ghosts) erg veel last van hebt.

De SNES was beter volgens Nintendo fanboys maar wie puur naar de specs kijkt (al helemaal als je daar in meeneemt dat de Mega Drive 2 jaar ouder is) kan daar alleen maar heel hard om lachen.
De SNES was beter volgens Nintendo fanboys maar wie puur naar de specs kijkt (al helemaal als je daar in meeneemt dat de Mega Drive 2 jaar ouder is) kan daar alleen maar heel hard om lachen.
Het hangt er vanaf waar je de nadruk op legt. Door het gebrek aan kleuren, slechtere geluidchip en minder, kleiner RAM-geheugen en kleinere sprites kon de Megadrive minder mooiere plaatjes uitsturen. Echter de slomere CPU van SNES zorgde er weer voor dat fast action games minder goed mogelijk waren. Je kunt het vergelijken met N64 vs PS1. N64 had de betere hardware, maar doordat de PS1 een CD-drive tot zijn beschikking had konden games er stukken mooier uitzien.

Ik ben dan ook geen fanboy en vind alle retroconsoles awesome. Van neo-geo tot Cd-i. En de extensies van de Mega Drive vind ik ook heel interessant. Echter wat nog raarder is dat Atari bij de Jaguar een CD extensie uitbracht ondanks dat de verkopen tegenvielen van de 64-bit console en dat het Sega ook geen succes opleverde. Een lijstje met enkele toffe youtube kanalen betreft retro gaming:
Lord Karnage
Angry Video Game Nerd
Rerez
My live in gaming
De Yamaha FM Soundchip van de Mega Drive is niet slechter dan de soundchip die in de SNES zit maar ook anders: De SNES is heer en meester in catchy melodien en heeft in 9 van de 10 gevallen de betere voice samples maar de Mega Drive had weer heavy metal tunes en synths die de SNS weer niet aan kon.

Er was voor de Yamaha FM Soundchip wel erg moeilijk te composeren waardoor een hoop games idd een brakke sound hebben waardoor de Mega Drive uiteindelijk de naam kreeg van 16-bit console met de slechtste sound.

De betere composers uit het 16-bit tijdperk hebben met de soundtracks van bv. Streets of Rage 2, M.U.S.H.A., Biohazard Battle en de Thunderforce serie laten zien dat de Mega Drive wel degelijk een vette sound kan leveren.
Je moest eens weten wat er mogelijk was, helemaal als je kijkt op het gebied van "stock opgenomen" en niet die emulatie crap op youtube. Met emulatie worden er vaak filters over de samples heen gehaald bij de SNES. Vergetende dat hij standaard een interpolatie filter er over heen smijt (die de hele zooi vaak verknalde) en dat je je samples eerst naar Nintendo moest sturen .... die er vaak een bende van maakte bij het comprimeren. (Iets wat later gelukkig niet meer nodig was :) ).

Maar renovation en sunsoft waren heer en meester op de Meg :)
Voorbeeldje:
https://www.youtube.com/watch?v=tQbitmR_YBY
EN JA dat is echt Megadrive :P... nog een van de eerste titels ook :D.
https://youtu.be/KuGNzc56zqo?t=10m46s
Een van de laatste spellen van Treasure op Meg :).


ENneh.. deze Italiaanse FM synth fan heeft zijn Meg aangepast om hem direct aan te sluiten op een Midi Apparaat. En ja dat zijn SNES tunes die hij bijna perfect port :D:

https://www.youtube.com/watch?v=VMZJ6oQayAU (Gilgamesh Theme is fantastisch in deze :) ).
https://www.youtube.com/watch?v=OQCya6yn73o De MEgaman X compositie op het einde is meesterlijk :).

Zeker de muziek van Final Fantasy kan perfect geport worden. Dit omdat de componist groot fan is van Deep Purple en John Lord :P. En laat een FM synth daar nu net heel goed in zijn :). Probleem is meer de meeste AMerikaanse developers probeerden het niet of hadden de kennis niet van FM synths en een driver schrijven omdat deze aangestuurd moest worden eens want het klink "goed genoeg". In Europa had je dan nog mensen als Tim Follin (Time Trax) en Chris Huelsbeck (Mega Turrican is focking Goed!).

Daar kom bij dat SEGA zelf ook nog eens de verkeerde Yamaha OPL beschreven had in haar eigen Dev documents. ALs je daarvoor programmeerde klonk het gewoon vals op de YM2612.

Nou ik wil Ken Kutaragi's werk niet neersabelen, want voor wat het was (een goedkope sampler), was zijn chip gewoon fantastisch. Er waren weinig samplers die zo goedkoop en goed waren als die in de SNES. Maar er zijn wel limieten aan hoor, zeker op het gebied van blok golven (iets waar de Megadrive een AY8910 voor aan boord had (of een kloon hiervan)) bijvoorbeeld.

[Reactie gewijzigd door Dehnus op 19 december 2016 22:53]

De cartridge was niet het probleem van de n64, maar het was het textuur geheugen van slechts 4KB En onber bepaalde omstandigheden had je slechts 2 kb textuur geheugen.

https://level42.ca/projec.../pro-man/pro12/12-04.html
Het enige probleem wat de Megadrive had? maar 2 Palletten tegelijk die gekozen konden worden. Zelfs de PC engine had meer! Nu kan je ze wel wisselen mid scherm (na een scanline)... maar toch.. hadden ze 4 of zelfs 8 toegestaan ..... dan kon je zoveel meer kleuren op het scherm krijgen. Had echt een hoog gescheeld. OH en de interrupt lijnen van de YM2612 zijn niet verbonden met de Z80 of de MC68000... ook een rare beslissing want dan had de z80 gewoon veel makkelijker de geluidschip aan kunnen sturen.... waar hij ook origineel voor bedoelt was (dat een backwards compatibility).
Dit is dan ook wel de meest geniale die ik heb gezien!! http://3.bp.blogspot.com/...0/sega-tower-of-power.jpg

Thanks for making me laugh
De addons zijn eigenlijk aparte consoles. En waren niet populair. Doe eens je onderzoek! Dan weet je dat de Megadrive behoorlijk wat in zijn mars had en zeker niet onderdeed voor de SNES die er vaak extra chips voor nodig had om mee te komen.

Iets wat de megadrive ook wel kon maar eigenlijk nooit gebruikt is. 32X en SEGA CD waren eigenlijk aparte consoles, wiens spellen je niet zo maar op een Megadrive kon draaien.

Heeft trouwens ook NIKS met een "megadrive 2" te maken. SEGA noemde een kostenbesparing vaak "2". Master SYstem 2, Megadrive 2... in die tijd.
https://m.youtube.com/watch?v=7v4SyWSlnJA

Over de Mega Drive gesproken: Officieel of niet, de Mega Drive versie van Wolfenstein 3D veegt de vloer aan met de SNES versie.
Het platform was ontworpen om op deze manier gebruikt te worden. De manier waarop de geheugenconfiguratie gebeurde was gekozen om dergelijke cartridge-chips toe te laten. Ik vind het dus niet cheaten - dit is hoe het platform bedoeld was om te gebruiken. Cartridges hadden als doel om de developers toe te laten extra I/O of rekenkracht te bundelen met hun game.

Ik vind het net extra knap omdat de ontwikkelaar er in slaagde om zelf zo'n cartridge te maken en op deze manier te laten samenwerken met de Z80 van de Gameboy.

Zeggen dat het valsspelen is is voor mij equivalent als zeggen dat makers van PC games valsspelen omdat ze niet alles op de CPU berekenen, maar gebruik maken van extra plug-in kaarten voor de beeldverwerking.
Behalve dan dat de M0 veel krachtiger is dan de Z80
"Binnen de tegels kan er van slechts één kleurenpalet van vier kleuren gebruikgemaakt worden."

Deze man legt uit hoe het kwam dat verschillende tegels maar 1 kleur kunnen gebruiken:
https://www.youtube.com/watch?v=Tfh0ytz8S0k
vergelijkbare technieken als binnen JPEG toch?
Ik dacht eerst dat er een native port van de game was uitgekomen, wat ik bijzonder indrukwekkend zou vinden. Immers is er ook een port voor Atari ST verschenen: http://www.pouet.net/prod.php?which=17247 en is de game ook voor 8086/8088 processors gecompileerd (Normaliter is een 286 vereist): http://www.vcfed.org/foru...hacked-for-8086-8088-CPUs, (heeft download link voor deze build), https://www.youtube.com/watch?v=5f7gW5X24ao&NR=1

Nee, dan vind ik de niet uitgekomen Gameboy Color titel Tyrannosaurus Tex veel indrukwekkender: De enige FPS voor de GBC ooit. Beeld: https://www.youtube.com/watch?v=vqnBCGgA7uo, technische uitleg over de game: http://www.nintendoplayer.com/unreleased/tyrannosaurus-tex/
Voor kleuren verdeelt de Game Boy zijn scherm in tegels van 8x8 pixels. Binnen de tegels kan van slechts één kleurenpalet van vier kleuren gebruikgemaakt worden.
Dat was de bedoeling, maar klopt niet volledig. Je kan tussen H-blanks (de korte pauze tussen de huidige en volgende lijn op het scherm) de paletten vervangen, om zo 4 kleuren per horizontaal 8 pixel lijntje te krijgen. Bovendien zijn er ook nog een aantal trucjes die je kan toepassen tijdens het tekenen van de lijnen zelf.

Zo slaagde een ontwikkelaar er in om een full color filmpje te laten spelen op de Gameboy Color, hetzij aan sterk verlaagde resolutie. De broncode en uitleg van hoe het werk kan je op GitHub terugvinden.

[Reactie gewijzigd door sspiff op 19 december 2016 15:15]

Apart dat in het plaatje de vloeren textures hebben, maar in het filmpje niet (wat klopt met het originele spel).
Vooral opvallend hoe heerlijk vloeiend het spel speelt, zeker als je het vergelijkt met Doom ports voor de C64 en vergelijkbaar.
Die draaien dan ook op de 985 KHz 6510 processor. De hier gebruikte techniek zou echter ook op de Commodore 64 toepasbaar zijn: De Commodore 64 heeft een pinnetje op de cartridgepoort zitten waarmee de RDMA-mode geactiveerd wordt. De 6510-processor haalt zichzelf dan van de bus af, hij is als het ware onder narcose, waarna de cartridge een processor op de bus kan zetten die de taken van de processor overneemt. Omdat de hele bus via de cartridgepoort beschikbaar is kan een processor op een cartridge alle chips aansturen.

Er zijn verschillende cartridges voor de C64 die van deze mogelijkheid te gebruik maken, zoals de SuperCPU, de Turbo Chameleon en de 1541 Ultimate II. De SuperCPU heeft een 16-bit 65816-processor, de Turbo Chameleon simuleert een 8-bit 6510 maar dan stukken sneller, terwijl de 1541U2 een 32-bit ZPU gebruikt, die echter normaal niet actief is, maar de machine overneemt als je op de freezeknop drukt. Met een SuperCPU of Turbo Chameleon kan je Doom op de C64 met wat meer fps spelen.

Een cartridge die een hulp-CPU aan boord heeft puur om een spel te draaien heb ik echter nog niet voor de Commodore 64 gezien.

[Reactie gewijzigd door dmantione op 19 december 2016 16:06]

Eigenlijk is Wolvenstein 3D geen echte 3D game, hier wordt gebruik gemaakt van ray casting wat pseudo 3D is: https://en.wikipedia.org/wiki/Ray_casting dus dat er in het artikel staat 3d beelden klopt niet.
Het effect is 3D, dus het is 3D.Zo kun je ook wel gaan beargumenteren dat het sowieso geen 3D is omdat het op een 2D scherm wordt geprojecteerd. Ohnee, niet geprojecteerd. Daar kun je dan ook weer een discussie over voeren. :P
Er is wel een wel een groot verschil tussen een ray casting 3d omgeving en een echte 3d omgeving ook al wordt het op een 2d scherm weer gegeven. Een 3d object heeft x,y,z coördinaten en een ray casting object niet daarom zien die poppetjes er ook zo raar uit in de objecten in de ruimte ook, omdat dit gewoon plaatjes zijn gerenderd op een x,y positie op het scherm. Als je een 3d object laat zien ga je texturen mappen en kun je het object in elke hoek bekijken wat hier dus niet het geval is.
Een 3d object heeft x,y,z coördinaten en een ray casting object niet
Ray casting is ray tracing zonder secundaire rays. Waarom zou ray casting niet kunnen met 3d coördinaten? En hoe zit het dan met implicit surfaces? Die hebben ook geen coördinaten maar worden gedefinieerd met een wiskundige functie. Zijn die dan ook geen 3d?
Als je een 3d object laat zien ga je texturen mappen en kun je het object in elke hoek bekijken wat hier dus niet het geval is.
Nou lijkt me texture mapping al helemaal een rare eis om iets als 3d te bestempelen. Als het je te doen is om sprites, dan is het idd zo dat de objecten in Wolfenstein 3D niet 3d zijn, maar hou er rekening mee dat dat nog steeds heel veel gebruikt wordt. Tegenwoordig misschien nog wel meer dan ooit, met geavanceerde rendertechnieken die de illusie van diepte geven terwijl er eigenlijk gewoon platte vlakken worden getekend. Denk aan parallax bumpmapping, cloud/smoke rendering en andere volumetrische effecten, of screen space post processing technieken voor subsurface scattering, ambient occlusion en reflection.

Allemaal om de illusie te geven dat iets diepte heeft. Wolfenstein 3d is daar echt niet anders in, afgezien van de complexiteit. Uiteindelijk telt het eindresultaat, niet hoe je er komt.

[Reactie gewijzigd door .oisyn op 19 december 2016 17:09]

De poppetjes zijn inderdaad 2D-texturen die geen 3D-informatie bevatten. Ik zou echter stellen dat dat niets met raycasting te maken heeft. Een enkele 2D-textuur is gewoon de meest eenvoudige representatie van een object. Ook in een moderne 3D-engine, die volgens jou echt 3D is, kun je een object afbeelden met een enkele 2D-texture. Het is een keuze, en omdat Wolfenstein op een 286 draaide, lagen dit soort keuzes bij de beschikbare rekenkracht voor de hand.
De poppetjes zijn sprites. Deze zijn inderdaad 2D maar werden ook in "echte" 3D games gebruikt; Duke Nukem 3D, Doom.
Beetje onzinnig. Wanneer is iets wel écht 3D dan? Dat Wolfenstein in weze een 2d game is, klopt natuurlijk helemaal. Het artikel spreekt echter niet over de game zelf, maar noemt de beelden 3D. De rendertechniek geeft (op een kosteneffectieve wijze) de illusie van 3D, net zoals andere technieken die illusie geven: of je nou ray tracing of rasterization toepast, het blijft een 2D plaatje. Als je vindt dat de beelden uit een hedendaagse 3D game wel 3D zijn, dan geldt dat natuurlijk net zo goed voor Wolfenstein 3D.

[Reactie gewijzigd door .oisyn op 19 december 2016 16:46]

Echt 3d is als je het vast kunt houden, maar ray casting en 3d graphics is toch echt wel een wezenlijk verschil.
Ray casting zegt op zichzelf niets over de interne representatie van de data, het betekent niets meer dan het doen van lijnintersecties, dus nogal wiedes dat dat verschil er is.

Vind je Doom wel 3D? En Comanche?
Doom is net als Wolfenstein ook ''gewoon'' 2.5D. 3D projectie op een 2D oppervlak.
Comanche bestaat vooral uit Voxels (Het eerste deel dan he). Volgens mij stond het voor ''Volumetric Pixel'' wat zou wijzen dat dit wel ''echt'' 3D is. :)
Maar Doom heeft weldegelijk 3 vrijheidsgraden. Entiteiten hadden naast een breedte- en diepte-coördinaat ook een hoogte. Aangezien Sander_Aerts in een andere post zegt dat "een 3d object x,y,z coördinaten heeft" zou Doom dus wel 3d zijn in zijn ogen.

De reden waarom ik de link met Comanche trok was juist die voxels. Feitelijk bestaat de wereld in Wolfenstein 3d daar ook uit. Al was het voxelveld in comanche een 2d heightmap, terwijl het in Wolfenstein 3D een 2d map is van muren.
Waarom wordt het dan 2.5D genoemd? Met de beschikbare kennis is mij met de jaren aangeleerd dat games zoals Doom, Duke 3D zich eigenlijk op een 2D grid afspelen, waarbij met scaling de illusie van 3D wordt gewekt. Daarom kunnen deze games niet werkelijk omhoog en omlaag kijken - In Doom wordt slechts het scherm hoger en lager gedaan om ook hier een illusie te maken. Daarom zijn echte 3D bruggen simpelweg niet mogelijk in Doom.
Waarom wordt het dan 2.5D genoemd
Vooral omdat de representatie niet toestond dat je idd dingen als bruggen kon hebben. In Duke3D kun je overigens weldegelijk omhoog en omlaag kijken, en het maakte volgens mij ook uit voor het schieten. In Doom overigens ook, al had je auto-aiming in de hoogte. Maar projectielen hadden wel een hoogte. Je kon dan in de praktijk niet springen, maar dat was zeker geen technische limitatie.

Maar goed, de discussie ging of het beeld 3d was, niet de game zelf ;). Ik denk dat de nuance in deze discussie alleen al aangeeft dat je niet echt kunt spreken van een fout als je de beelden van Wolfenstein 3D ook "3d" noemt.
Inderdaad, dat is voor een andere discussie.
Wolf 3D is in zekere zin 3D maar toch.. ik snap beide kanten wel :)
In de loop der tijd zijn we de lat wat echt 3D is steeds hoger gaan leggen. Als we even in het verleden duiken:

https://www.c64-wiki.com/...k_Rogers_-_Planet_of_Zoom

... Buck Rogers uit 1982 werd een 3D-spel genoemd. Vandaag vinden we het zelfs met enige fantasie nog lastig om dat 3d te noemen.
Dat is sprite scaling. Daarnaast had je uit die tijd Pole Position, en en I, Robot, en dat was wel de eerste 3D polygonen game :) - https://www.youtube.com/watch?v=EHkwdvfXHJc

Sprite scaling was echter niet gelijk obsoleet, Galaxy Force 2 bewees wat je allemaal met sprites kon, op Sega's Y Board: https://www.youtube.com/watch?v=30_zE7IuxXk

Arcade hardware is sowieso bijzonder fascinerend om te onderzoeken en te ontdekken, puur omdat de hardware zo ver van PC's af stond in die tijd. Maar dat is voor een andere keer. :)
Doom heeft 3 vrijheidsgraden (Links-rechts, Voor-achter, Draaien), maar is toch weer net niet helemaal 3d. Alle maps zijn uitgelegd in 2d, en kunnen niet over zichzelf heen gaan. Daarom kon je ook niet springen. Ja, er is een verschil in getoonde hoogte, maar jij als speler hebt altijd dezelfde hoogte van de vloer af.

Je hoeft in Doom ook nooit omhoog of omlaag te mikken. Zelfs al worden tegenstanders op een hoogte weergegeven. Dat komt omdat de game zelf niet weet dat dat zo is. De spelwereld is een 2d map vergelijkbaar met Wii Play Tanks. En daardoor is het in kerne een 2d game.

De eerste werkelijke 3D fps is Quake, waarin volledige driedimensionale vrijheid bestond. Dat heet voor FPS games 5 van de 6 vrijheidsgraden (Geen kanteling links-rechts/Roll). De maps konden hierin dan ook over zichzelf heen gaan, en monsters konden zich boven je crosshair bevinden (en je kon ze daarom ook missen).

Voxels zijn een manier om 3D te renderen, net zoals Triangles en Quads (Sega Saturn). Elke voxel heeft 3 coördinaten. Deze manier is dan ook in den kerne 3D.
Doom heeft 3 vrijheidsgraden (Links-rechts, Voor-achter, Draaien)
Ik doelde op positionele vrijheidsgraden - je kunt links/rechts, voor/achter, maar ook onder/boven!
Alle maps zijn uitgelegd in 2d, en kunnen niet over zichzelf heen gaan. Daarom kon je ook niet springen. Ja, er is een verschil in getoonde hoogte, maar jij als speler hebt altijd dezelfde hoogte van de vloer af.
Dat is natuurlijk nonsens. Het niet kunnen springen is gewoon een keuze van de developers, het heeft niets met technische limitaties te maken. Liften kunnen ook naar boven en naar beneden. Je kunt een trap oplopen als de "trede" niet te hoog zijn. Je kunt ook naar beneden vallen. Een variabele hoogte kan dus theoretisch prima in de game.
Je hoeft in Doom ook nooit omhoog of omlaag te mikken. Zelfs al worden tegenstanders op een hoogte weergegeven. Dat komt omdat de game zelf niet weet dat dat zo is.
Pertinent onwaar. Als de game niet weet hoe hoog de vijanden zijn, dan weet hij ook niet hoe hoog ze op het scherm getekend moeten worden, en met welke verticale snelheid projectielen moeten worden afgevuurd.
en monsters konden zich boven je crosshair bevinden (en je kon ze daarom ook missen).
Je kunt ze in Duke 3D ook missen, terwijl dat min of meer op dezelfde technologie is gebaseerd.
Voxels zijn een manier om 3D te renderen, net zoals Triangles en Quads (Sega Saturn). Elke voxel heeft 3 coördinaten. Deze manier is dan ook in den kerne 3D.
Voxels zitten meestal in een grid en hebben als dusdanig niet zelf coördinaten. Die worden geïmpliceerd door hun topologie, maar hetzelfde kun je ook zeggen van de vloeren in Doom.
Dat is natuurlijk nonsens. Het niet kunnen springen is gewoon een keuze van de developers, het heeft niets met technische limitaties te maken. Liften kunnen ook naar boven en naar beneden. Je kunt een trap oplopen als de "trede" niet te hoog zijn. Je kunt ook naar beneden vallen. Een variabele hoogte kan dus theoretisch prima in de game.
Om even te clarificeren, je ziet het als op en neer gaan, maar in de spellogica vindt alles plaats op één vlak. Dit is te vergelijken met spellen zoals Zelda op de NES en Pokemon op de GBA. Door middel van slimme toepassing van map-elementen lijkt het alsof je hoger gaat. Ledges, ladders, bergwanden, etc. Maar je beweegt je altijd op één vlak. Het lijkt alsof Link een trap oploopt, een berg op, maar in werkelijkheid loopt hij over blokjes met horizontale lijnen, naast blokjes met steentextuur. De stenen uiteraard niet loopbaar. In het hoofd van de speler klikt dit, en ziet het eruit alsof je een berg oploopt, maar de game ziet het als één vlak ruitjespapier.
Op diezelfde manier zijn jumps in mode 7 op een SNES (denk F-Zero) ook geen 3D jumps, maar een sprite die verandert- terwijl de game-logica 2D blijft.

Liften in doom gaan omhoog en omlaag, maar je stapt er altijd in een andere richting uit dan je erin gaat. Dit ligt ook weer ten gronde in dezelfde "ruitjespapierlogica." Doom liet veel meer onderscheid in omgevingsdiversiteit toe dan Wolfenstein, maar het is nog steeds gebaseerd op dezelfde engine (alhoewel sterk aangepast).
Pertinent onwaar. Als de game niet weet hoe hoog de vijanden zijn, dan weet hij ook niet hoe hoog ze op het scherm getekend moeten worden, en met welke verticale snelheid projectielen moeten worden afgevuurd.
Het spijt me zeer om je argument te moeten weerleggen, maar sprites in doom zaten altijd op dezelfde hoogte van de vloer, net zoals de speler. Als een vijand hoger wordt getekend, betekent dat dat de sprite onder de vijand zelf een paar regels transparantie bevat. Zo lijkt het bijvoorbeeld dat de flying demon monsters de grond niet raken.

Het is ook hierom dat je in doom niet omhoog en omlaag kon/hoefde te mikken. De engine ondersteunt dit namelijk niet. (Latere mods en ports ondersteunen dit uiteraard wel, maar het gaat hier over de base-game.)
Je kunt ze in Duke 3D ook missen, terwijl dat min of meer op dezelfde technologie is gebaseerd.
Uiteraard kun je missen, maar dat ligt aan de horizontale rotatie (Yaw) en je X/Y locatie, niet aan je verticale rotatie (Pitch).


Youtubekanaal Ahoy geeft een mooie uitleg over het spel Doom, en zijn krachten en limieten:
https://www.youtube.com/watch?v=6A4-SVUHQYI[quote]

Ze hebben ook video's over Wolfenstein en Quake.
https://www.youtube.com/watch?v=BSb87DC-PtA
https://www.youtube.com/watch?v=OipJYWhMi3k
Om even te clarificeren, je ziet het als op en neer gaan, maar in de spellogica vindt alles plaats op één vlak. Dit is te vergelijken met spellen zoals Zelda op de NES en Pokemon op de GBA. Door middel van slimme toepassing van map-elementen lijkt het alsof je hoger gaat. Ledges, ladders, bergwanden, etc.
Sorry, maar dat is echt compléét onvergelijkbaar :). Zelda had idd een 2d map. Een ladder "opklimmen" was hetzelfde als gewoon omhoog lopen. Dit is echt totaal iets anders dan in Doom. Alles heeft gewoon een hoogte-coordinaat. Er werden voor veel dingen idd shortcuts genomen omdat het hoogte-element vaak niet uitmaakt (denk bijv aan pathfinding). Maar dat neemt niet weg dat dat weldegelijk bestond. Cocademons konden vrij omhoog en naar beneden bewegen, die zweefden niet op een vaste grootte boven de grond. Hetzelfde geldt voor projectielen (zoals de fireballs van imps en de rockets uit je rocket launcher). De game deed aan auto-aiming (omdat echt omhoog/omlaag kijken niet mogelijk is met de gebruikte renderer), maar je raket ging weldegelijk omhoog als een enemy op een hoger platform stond. Ook hadden dingen gewoon een valsnelheid - een enemy die door een schot van een platform afviel lag niet direct beneden op de grond. Hetzelfde geldt voor jou als speler als je van een platform afspringt. Voor die transitie in hoogte heb je gewoon een coordinatenstelsel nodig.

Hier een mooi voorbeeld van al deze dingen: https://www.youtube.com/watch?v=iDSswATe2G8

Als je me niet gelooft, kijk dan gewoon in de source code:
https://github.com/id-Sof...r/linuxdoom-1.10/p_mobj.h
De struct mobj_s definieert de eigenschappen van een object. Het is duidelijk te zien dat hij 3 coordinaten kent in zowel positie als snelheid (respectievelijk x, y, z en momx, momy, momz). De game gebruikt een z-up coördinatenstelsel.

Dat moet ook wel, omdat het anders niet te renderen is. Ik daag je uit een raycaster te schrijven met hoogteverschillen, zonder daadwerkelijk dingen een hoogtecoördinaat mee te geven.
Uiteraard kun je missen, maar dat ligt aan de horizontale rotatie (Yaw) en je X/Y locatie, niet aan je verticale rotatie (Pitch).
Nonsens, in Duke 3d kon je (gelimiteerd) omhoog en naar beneden kijken, en dat maakte ook uit voor het schieten. Je kun dus over iemand heen schieten. Zie bijvoorbeeld hier hoe de speler omhoog moet mikken om een schakelaar te raken.
.edit: al zie ik nu ook dat ook Duke 3d aan auto-aiming deed, dus misschieten zit er bij enemies niet snel in.

[Reactie gewijzigd door .oisyn op 22 december 2016 22:10]

In een woord: gaaf!!
Blijft leuk om te zien wat mensen hiermee kunnen, briljant!
Dit is natuurlijk veel knapper als het gebruiken van andere hardware (denk aan bijv. Pi).
En het is ook veel leuker om te zien, juist omdat het (in dit geval gedeeltelijk) op de originele hardware draait.

Top gedaan! :D

Edit: Typo

[Reactie gewijzigd door coolykoen op 19 december 2016 14:43]

Op dit item kan niet meer gereageerd worden.


Nintendo Switch Google Pixel XL 2 LG W7 Samsung Galaxy S8 Google Pixel 2 Sony Bravia A1 OLED Microsoft Xbox One X Apple iPhone 8

© 1998 - 2017 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Hardware.Info de Persgroep Online Services B.V. Hosting door True

*