Ontwikkelaar maakt Doom in Kladblok speelbaar met framerate van 60fps

Ontwikkelaar Sam Chiet heeft Doom speelbaar gemaakt in Kladblok. De grafische elementen van de game uit 1993 worden met letters, cijfers en tekens gegenereerd met een framerate van 60fps. Er zouden voor NotepadDOOM geen modificaties aan Windows' tekstverwerker gemaakt zijn.

De ontwikkelaar, die Samperson op YouTube heet, geeft verder weinig uitleg over de manier waarop hij de grootvader van het shootergenre werkend heeft gekregen in Kladblok. Omdat de tekstverwerker vanzelfsprekend niet gemaakt is om games af te spelen, gaat het vermoedelijk om een aangepaste versie van Doom die door Chiet compatibel is gemaakt met Kladblok. Het Windows-programma fungeert waarschijnlijk als digitaal 'scherm' voor een extern programma. De ontwikkelaar wil de betreffende versie van de game deze week publiekelijk beschikbaar maken. John Romero, een van de bedenkers van Doom en medeoprichter van id Software, noemt NotepadDOOM 'geweldig'.

Chiet introduceert met zijn Kladblok-versie van Doom de zoveelste ludieke manier om de klassieke shooter op een onconventionele manier te kunnen spelen als onderdeel van een doorlopende internetmeme. Eerder wisten ontwikkelaars het spel bijvoorbeeld al werkend te krijgen door middel van moederbordfirmware, met de Trådfri IKEA-lamp en op de Nintendo Game & Watch. Ook modificeerde een youtuber de DOS-versie van Doom 2 om het spel in Doom 2 zelf speelbaar te maken.

Door Yannick Spinner

Redacteur

10-10-2022 • 19:07

42

Submitter: PacinoAllstars

Reacties (42)

42
42
31
0
0
8
Wijzig sortering
Het mag dan wel zijn dat kladblok niet is aangepast, maar het feitelijke spel zal wel ingrijpen op het geheugen van het programma. Kan ook niet anders. Kladblok is zelf niet in staat om bijv. een bestand dat je open hebt te herladen als het een aanpassing detecteert.
Ik heb de code niet gezien, maar kladblok hoeft helemaal niks te herladen. Zoals je in de video ziet is het een untitled bestand. Er wordt hoogstwaarschijnlijk gewoon 60 keer per seconde een lading ASCII art in het venster gedumpt.
Maar je moet die er alsnog indroppen op de ene of andere manier zonder dat het venster de focus krijgt, want van zodra je focus geeft ga je ook de toetsaanslagen van de speler beginnen zien.

Daarom dat ik vermoed dat er alsnog met het geheugen van de app wordt gespeeld.
.oisyn Moderator Devschuur® @Blokker_199910 oktober 2022 19:52
Volgens mij gebruikt Notepad gewoon het standaard edit control. Dan kun je text instellen met een WM_SETTEXT message.
Als je naar de refresh-artifacten kijkt dan sluit ik met geheel aan bij @.oisyn en heeft deze ontwikkelaar een handle naar het window van het notepad.exe process opgevraagd en injecteert hier text in het windows edit-control element. Het feit dat de laatste tekens rechtsonder flikkeren zegt me dat het scherm elke keer vanaf positie 0 tot het einde herschreven word, waardoor de tekens onderin veel korter op het scherm staan, vandaar het flikkeren ;-)

Ik zou zelf eerder een paste buffer gebruiken en gewoon een select-all en paste-keystroke injecteren zodat in 1x het hele beeld geupdate word.

Een leuke uitbreiding hiervan zou zijn om te renderen naar een 1080p image en die dan injecteren in een applicatie zoals photoshop of in een video-stream (youtube/netflix/etc), dát zou een nog grotere wow-factor geven ;-)
.oisyn Moderator Devschuur® @djteddy10 oktober 2022 22:15
Ik zou zelf eerder een paste buffer gebruiken en gewoon een select-all en paste-keystroke injecteren zodat in 1x het hele beeld geupdate word.
Dat maakt het mogelijk alleen maar erger. Een WM_SETTEXT update de gehele tekst in 1x. Als je eerst een select all (met EM_SETSEL) en daarna een replace (EM_REPLACESEL) doet dan is de kans groot dat je ook weer een repaint krijgt voor de selectie zelf.
Ja en anders kun je windows UI automation library gebruiken. En andere optie is om te intjecteren in hethet proces. Ik doe dit laatste zelf met de "snoop" library bij een software programma om daar extra functionaliteit in aan te brengen.
ref:https://github.com/snoopwpf/snoopwpf
Ik was aan het denken aan named pipes of zo, maar idd wat jij beschrijft lijkt me nog het meest waarschijnlijke.
Nee hoor, dat is allemaal prima af te vangen zonder dat je in notepad.exe moet hooken :) Al lijkt het me in dit geval ook prima mogelijk dat voordat eigen input is verwerkt, er alweer een nieuw "frame" is ingeknald; dat het dus zo snel gaat dat je dat niet kunt zien.
Ja, maar niet veel geheugen, 'frame'buffer is klein en blijft gelijk. Kladblok heeft inderdaad moeite met hele grote bestanden.
Niet echt, met autorit bv can je met heel simpele commando's inhoud van notepad leegmaken en inhoud van clipboard plakken. En heel snel.

Waarschijnlijk wordt de layout gerenderd en in de clipboard buffer geplakt en die wordt dan gewoon in notepad geplakt. En aangezien het scherm ongeveer ten alle tijden evenveel letters bevat , gaat de grootte nooit verschillen.

Je kan duidelijk zien in de video dat steeds het zelfde scherm gebruikt wordt want de scrollbar wordt niet langer.

[Reactie gewijzigd door SadisticPanda op 22 juli 2024 22:03]

Ik gebruik nauwelijks Windows maar lijkt erop dat het Notepad venster niet het actieve venster is?

Lijkt me een service die op de achtergrond het daadwerkelijke spel draait en 60 keer per seconden de ASCII-output wegschrijft naar Notepad.
Uiteraard, anders zou je het DOOM proces moeten zien te injecteren in de adresruimte van Notepad.
Dat zou pas cool zijn!
Inderdaad, de game draait net zo min in Notepad als dat de game normaal gesproken in (of op) je monitor draait.
Alsnog echter wel cool :)
Man je ziet amper wat lol, ik herken hier en daar wel vage omtrekken van vijanden, maar erg duidelijk is het niet ^^
Ik denk ook niet dat dat zijn doel was, om een pareltje neer te zetten :P

Dit valt in de (oprecht coole) hype van tegenwoordig om te kijken waar Doom allemaal op kan draaien, en het verbaasd me elke keer weer waar ontwikkelaars / tweakers toe in staat zijn.
even een ander lettertype maken met de daadwerkelijke pixels op zijn plek en het draait toch echt in zo'n applicatie
Ik wacht nog even op de VSYNC ondersteuning
Hoezo? Als je een 60hz scherm hebt zit je goed met deze fps rate ;)
Dit doet mij een beetje denken aan de redelijk onbekende tech-youtuber Thorbjörn Jemander die enkele tijd geleden hardwarematig youtube video's kon streamen op een Commodore Pet.
Dat werkte ook door ongeveer dezelfde techniek door cijfers en letters zo snel mogelijk op het scherm te toveren.

Ik wil niet teveel verklappen voor wie het nog niet heeft gezien, maar onderstaand een link naar de video:
https://www.youtube.com/watch?v=4e0fRKHG7Hk
Dann. Nostalgie, dit deed ik 2003 met aalib en doom. Even googlen en ja hoor, hele desktops in aalib.
Text mode Doom is nu supported in FastDoom.

Tevens kan de oude DOS versie nog heel wat meer met Ace Engine.
niet echt spannend inderdaad. gewoon een ascii buffer steeds in notepad pasten, ik heb moaaar impressive doom implementaties gezien en ook moaar impressive ascii effecten (textmode democompo bijv) :P
Geinig project waar best veel tijd in gestoken zal zijn. Maar.. Je moet wel goed kijken om iets te kunnen zien van het spel (tenminste, ik dan)
Ik ben het er niet echt mee eens dat dit 60 fps is.
Je ziet duidelijk behoorlijk wat screen tearing.

Desondanks, best smooth :)
Het wordt onder andere verergerd doordat de video niet 60 fps is, het is rond de 30 fps.

Op dit item kan niet meer gereageerd worden.