
Doom SQL მონაცემთა ბაზაში გაუშვეს
დეველოპერმა ლუკას ფოგელმა Doom SQL მონაცემთა ბაზაში გაუშვა. პროექტი SQLDoom თამაშის ლოგიკას 1300 სტრიქონი SQL მოთხოვნით ახორციელებს და წამში 35 კადრს ქმნის, პატარა Python-ის კლიენტი კი შეტანას, დროის მართვასა და კადრების ეკრანზე გამოსახვას მართავს.
დეველოპერმა ლუკას ფოგელმა 1993 წლის თამაში Doom SQL მონაცემთა ბაზაში გაუშვა. გრძელ ბლოგ-პოსტში ის აღწერს, როგორ გამოსახავს მისი SQLDoom თამაშს თითქმის მთლიანად SQL მოთხოვნებით, და თავადვე აღიარებს: „Doom-ის მონაცემთა ბაზაში გამოსახვა აშკარად ცუდი იდეაა“.
როგორ მუშაობს
SQLDoom ემულატორი არ არის: შეტანას, გამოტანას, დროსა და კადრების ეკრანზე გამოსახვას პატარა Python-ის კლიენტი მართავს, თავად თამაში კი მის უკან, CedarDB-ის ცხრილებში მიმდინარეობს. დაახლოებით 1300 სტრიქონი SQL მოთხოვნა, 89 CTE-ზე გადანაწილებული, თამაშის ლოგიკას ახორციელებს და წამში 35 კადრს ბიტმაპის სახით აგენერირებს.
Doom-ის კლასიკური WAD ფაილების რელაციურ ბაზაში გადატანა შედარებით მარტივი აღმოჩნდა, რადგან ორიგინალური ძრავა დონეებს წვეროებად, ხაზებად და სექტორებად ყოფს. SQL-ში ეტევა ორობითი სივრცის დაყოფის (BSP) ხეებიც: ობიექტებისთვის წინასწარ გამოთვლილი sort_key საშუალებას აძლევს ORDER BY მოთხოვნას, ყოველ კადრზე გადაწყვიტოს, კედლის რომელი ნაწილი დაიხატოს და რომელი არა. სწორედ ეს ხრიკი ხდის თამაშს სწრაფს.

ASCII-დან ფერად კადრებამდე
SQLDoom ბევრად სჯობს ფოგელის გასულ წლის პროექტს, DoomQL-ს. მაშინ ის „მთლიანად SQL-ზე აგებული მრავალმოთამაშიანი, Doom-ის მსგავსი შუტერის“ შექმნას ცდილობდა, მაგრამ შედეგად მხოლოდ რეიკასტინგზე დაფუძნებული, ნაცრისფერი ASCII გრაფიკა გამოვიდა, რომელიც Wolfenstein 3D-ის 90-გრადუსიან რუკებს უფრო ჰგავდა, ვიდრე Doom-ს. ახლა კი პროექტი სრულფეროვან 640×480 კადრებს ქმნის, რომლებიც ორიგინალური Doom-ის კადრებს ჰგავს.
ყველაზე რთული იატაკისა და ჭერის გამოსახვა აღმოჩნდა. ორიგინალურ თამაშში ისინი სვეტობრივად, visplanes-ისა და მდგომარეობის ცვლილებების მეშვეობით იხატება, რაც SQL-ზე კარგად არ გადადის. სანაცვლოდ ფოგელმა „საკმაოდ ჰაკური“ გადაწყვეტა დაწერა, რომელიც პანელების დალაგებულ სიაზე იტერაციას ეყრდნობა.
წარმადობა და მულტიმოთამაში
მიუხედავად იმისა, რომ ყველაფერი SQL ცხრილებში იკითხება და იწერება, ფოგელის თქმით, SQLDoom Ryzen 7-ზე აგებულ ლეპტოპზე წამში დაახლოებით 60 კადრის სიჩქარით მუშაობს, დატვირთულ სცენებზე კი ზოგჯერ 35 კადრამდე ეცემა.
მისივე თქმით, მონაცემთა ბაზა მულტიმოთამაშიან სერვერებს უპირატესობას აძლევს: ინახავს თამაშის მდგომარეობის სტაბილურ ასლს და თავად არეგულირებს ერთდროულ წვდომას, ამიტომ „არ არსებობს ნაწილობრივ გამოყენებული განახლებები, ფიზიკის შეცდომები ან უთანხმოება იმაზე, მართლა მოხვდა თუ არა რაკეტა“.
თამაშის გასაშვებად საჭიროა GitHub-ის კოდი, CedarDB და Doom-ის WAD ფაილი. ასევე არსებობს უფასო ონლაინ დემო, თუმცა Ars Technica-ს ტესტის დროს ეს ვარიანტი ცუდად მუშაობდა.
SiTech — AI-გაძლიერებული ვებ დეველოპმენტი
ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.