Doom sfidează imposibilul rulând în sistemul de tip TypeScript

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

Trilioane de linii, multiple limbaje de programare și un an de transpirație pentru a rula doom la o rată de cadru de repaus

În context: Oamenii au portat doamne la toate, de la calculatoare până la înregistrările de marcat McDonald’s. Recent a existat o apăsare pentru ca software -ul să funcționeze pe platforme fără putere de procesare reală – documentele PDF și Word sunt cele mai recente exemple. Desigur, aceste metode sunt dureros de lente, dar este incredibil ca jocul să poată executa chiar pe platforme non-calculatoare.

Inginerul software Dmitri Mitropoulos a dus la porting Doom către platformele care nu sunt computere la un nivel cu totul nou. Programatorul a reușit să obțină Doom în sistemul de tip TypeScript-un feat, atât de mult de complex, încât i-a luat un an întreg pentru a scoate.

TypeScript este un limbaj dezvoltat de Microsoft care se bazează pe JavaScript prin adăugarea de verificare a tipului static pentru a prinde greșelile de codare înainte de execuție. Gândiți -vă la acesta ca la un cod de ortografie sau gramatică, asigurându -vă că funcțiile și variabilele sunt introduse corect. Dezvoltatorii îl folosesc în mod obișnuit pentru a construi aplicații JavaScript mari.

Rularea unui joc în sistemul de tip TypeScript este considerat „imposibil”. Chiar și Mitropoulos a menționat că a început proiectul pentru a demonstra „rapid” de ce nu s -a putut face. Cu toate acestea, pe măsură ce a intrat în el, a devenit motivat obsesiv să -l facă să funcționeze. În cele din urmă, chiar și dezvoltatorii TS experimentați au fost lăsați impresionați și fără cuvinte.

Versiunea Doom a lui Mitropoulos rulează în interiorul a 3,5 trilioane de linii de tipuri, consumând un uimitor 177 de terabyți. Compilarea unui singur cadru durează 12 zile, ceea ce duce la o secundă de 0,000000009645 de rame pe secundă. Trackerul de tip Typescript trebuie să proceseze 20 de milioane de instantanee de tip pe secundă pentru a genera producția, ceea ce duce la rata de cadru extrem de lentă.

În ciuda cheltuielilor generale masive, Mitropoulos consideră că îmbunătățirile performanței sunt posibile. În Michigan Typescript Discord Server, el a sugerat că compilarea ar putea fi redusă la „1 până la 12 ore” cu optimizări suplimentare. El a identificat deja zonele în care poate îmbunătăți viteza.

Pentru a face ca totul să funcționeze, a construit o mașină virtuală în întregime din tipuri de tip TypeScript, inclusiv implementări logice ale tuturor celor 116 instrucțiuni webAssemble necesare pentru a rula Doom. Fiecare element al unui computer funcțional – RAM, spațiu pe disc, chiar și un cache al procesorului L1 – trebuia să fie recreat cu atenție în sistemul de tip. Deoarece TypeScript permite doar iterații șir din stânga, el a trebuit să introducă algoritmi binari în sens invers.

Rularea programului a necesitat o rulare personalizată WebAssembly, procesând totul în cadrul unui editor de tip TypeScript. De asemenea, compilatorul TypeScript a trebuit să fie modificat pentru a gestiona scala extremă a proiectului, întrucât trackerul său de tip a consumat peste 90 GB RAM în timpul executării.

Mitropoulos a descris efortul ca o provocare înfiorătoare. El a scris 12.364 de teste scrise de mână, a învățat mai multe limbaje de programare și a estimat inițial că proiectul va necesita până la 1,25 petabytes înainte de optimizare. La un moment dat, compilarea unui singur cadru a durat trei luni de instantanee de tip continuu. El a remarcat că AI nu a fost de ajutor.

„Oh, și AI nu se poate abține cu nimic din aceste lucruri”, a spus Mitropoulos în scurta sa explicație video de șapte minute (MASTER). „Este atât de scăzut, încât nu există tablouri sau obiecte sau șiruri sau booleane în interiorul motorului-doar numere binare și doom folosesc doar numere întregi pe 64 de biți și 32 de biți, asta este.

Sarcina Gargantuan a durat un an întreg de 18 ore pentru a fi finalizat. Alți dezvoltatori TS au avut atât de multe întrebări despre proiectul, încât Mitropoulos intenționează să lanseze încă două videoclipuri care explică detaliile extrem de tehnice și motivațiile sale. Deocamdată, mai avem încă o dovadă care dovedește că Doom poate rula pe orice – inclusiv lucruri care nu au fost niciodată menite să ruleze jocuri deloc.

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.