Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Quake 3 Motorunu AI çağında modernleştirmek

Quake 3 Motorunu AI çağında modernleştirmek

Kotlin İstanbul 2026 için yapmış olduğum sunum

Avatar for Eser Ozvataf

Eser Ozvataf

April 12, 2026

More Decks by Eser Ozvataf

Other Decks in Technology

Transcript

  1. Quake 3 Motorunu AI çağında modernleştirmek 1999’dan 2026’a bir yolculuk

    Eser Özvataf @eserozvataf Kotlin İstanbul 12 / 04 / 2026
  2. Ben kimim… ➔ Yazılımla ilgili birçok farklı disiplinde çalıştım. Geliştirici,

    DevOps, DevRel, Danışman, Yönetici. ➔ Eğitim ve Blokzincir konularına odaklı bir eğitim hayatım oldu, Bilişim Teknolojileri üzerine yüksek lisans yaptım. ➔ Başta Açık Yazılım Ağı olmak üzere birçok açık kaynak proje ve topluluğa destek verdim, katkı sağladım, liderlik ettim. ➔ Açık Kaynak olarak paylaştığım araçlar ve projeler yapıyorum. ➔ YouTube üzerinde yayınlar yapıyorum. ➔ Çocuk yaşta yazılım geliştirme ile tanıştım*
  3. [[]]]] 01 Id Software & John Carmack Quake 3 Motorunun

    Önemi 03 02 Modernizasyon Demo 04
  4. Id & Carmack - Mihenk taşları ➔ Side-scrolling (Commander Keen),

    Ray-casting (Wolfenstein 3D), Binary Space Partitioning (Doom) gibi donanım ve matematiğin kesişiminde ilkleri başarmışlardır ➔ First Person Shooter oyun kategorisini oluşturdular ➔ Oyun Motoru kavramını ve lisanslama modelini oluşturdular ➔ Modding kültürünü oluşturdular ➔ Half-Life’ın, dolayısıyla Valve’in oyun motoru olan Source (eski adıyla GoldSrc) Quake motoru’nun değiştirilmiş hali ➔ John Carmack daha sonra Oculus gibi projelerde yer aldı ➔ Roket fiziği üzerine çalışmalar yaptılar, SpaceX’den önce dikey inişle ilgili çalışmalar yaptı
  5. Önemi - Q3 öncesi kişisel maceram ➔ Önce oyuncuydum… ➔

    İlk modlama deneyimim - Quake ➔ İlk topluluk deneyimim - turkishqf.org ➔ Web programcılığı öğrendim - ASP ➔ C öğrendim (ustasından) - QuakeC ➔ Temel bilgisayar bilimleri öğrendim!* ➔ …ve Quake 3 çıkmak üzereydi
  6. Önemi - 27 yıl önce teknolojinin durumu 1999 Carmack’ın Q3’deki

    Çözümü Bugün 36K Dial-up Internet = ~11 MB / saat UDP Bazlı NetChan (Snapshots + Delta) 100MBit Int. = ~38,500 MB / saat Pentium III 450 MHz Tek Çekirdek CPU Com_Frame - Single Event/Main/Game Loop Ryzen 5 5600 4.4 GHz x 12 Thread CPU GeForce TNT2 7MB üçgen/s GPU OpenGL Renderer RTX 4070 30B üçgen/s GPU 64 MB SDRAM Hunk Pools + Zone Allocators 32 GB DDR5 ~15 MB/s okuma hızı HDD (mekanik) Deflate ZIP sıkıştırması (~400 MB/s) ~5000 MB/s okuma hızı NVMe SSD 640x480 (0.3 MP) çözünürlük Bitmap fonts, 640x480 sabit koordinatlar 3840x2160 (8.3 MP) çözünürlük Mod kavramı Hex/Binary editlemelerle sınırlı QVM sandboxing - x86 (~%50 native hız) JIT+AOT ile WASM M.Arch (~%95 native hız) Oyunlar oyuncu ayarlarını kendi yönetiyor Quake Scripting + cvar sistemi LUA scripting
  7. Önemi - Q3 adeta temel bilgisayar bilimleri kursu ➔ Kuyruk

    sistemleri, command buffering ◆ UDP üzerine inşa edildiği için sıralama şart ◆ Event sistemi bulunuyor ◆ I/O yönetimi bufferlanıyor ◆ Circular Buffers - Snapshot + Deltalar ➔ Docker’dan önce PK3 ile katmanlar ve sanal dosya sistemi ➔ Modlar için sanal makine sistemi, JIT ile derleme ve sandboxing ➔ Separation of Concerns: Sunucu kodları, Client kodları, oyun mantığı (business logic) ve engine kodunun ayrılması ➔ Ve özgür yazılım lisansı, GPL2
  8. Önemi - Q3 mimarisi ➔ Renderer Network Sound Yazılım geliştirmeye

    dair bir ders* ◆ Çok düzgün bir soyutlama ◆ Bugün halen parçalar değişebiliyor, şema aynı kalabiliyor ➔ Virtual File System Virtual Machine Game Assets * Ders diyorum çünkü… Cgame Mods UI Maps Modernizasyona açık ◆ Renderer: OpenGL > Vulkan ◆ Network: UDP > QUIC ◆ Sound: DMA > Miniaudio ◆ VFS: ZIP > SW3z ◆ VM: QVM > WASM Botlib Patches
  9. Modernizasyon - Motivasyon ➔ AI ile bir şeylerin yapılabilirliğinin artması

    ➔ Bilgi birikimimi kullanmak ➔ Primitif (Temel) sayılabilecek bir oyun motoru ile uğraşmak bir hobi ➔ Arkadaşlarla oynamak ➔ QuakeLive sonrası Web üzerine taşıma hayali ➔ Demo’lar sayesinde dağıtılabilir (biraz zor)
  10. Modernizasyon - Bugünün şartları 1999 Çözümü Bugün Modernizasyon UDP Bazlı

    NetChan (Snapshots + Delta) 100MBit Int. = ~38,500 MB / saat QUIC & HTTP/3 Com_Frame - Single Event/Main/Game Loop Ryzen 5 5600 4.4 GHz x 12 Thread CPU - OpenGL Renderer RTX 4070 30B üçgen/s GPU Vulkan Renderer Hunk Pools + Zone Allocators 32 GB DDR5 - Deflate ZIP sıkıştırması (~400 MB/s) ~5000 MB/s okuma hızı NVMe SSD SW3z sıkıştırma formatı* ve LZ4 Bitmap fonts, 640x480 sabit koordinatlar 3840x2160 (8.3 MP) çözünürlük MSDF vektör fontlar, flexbox, esnek koordinatlar QVM sandboxing - x86 (~%50 native hız) JIT+AOT ile WASM M.Arch (~%95 native hız) WAMR üzerinden WASM Quake Scripting + cvar sistemi LUA scripting LUA-tabanlı Scripting
  11. Modernizasyon - Yeni formatlar Eski Format Yeni Format Amaç TGA

    PNG Alpha kanallar WAV OPUS (OGG) Ses PK3 SW3Z Sıkıştırma TXT LUA Menu, Map Tanımları CFG LUA Konfigurasyon MD3 IQM Model
  12. Modernizasyon - Değişiklikler ➔ Mimaride UI ve Client katmanlarını birleştirdim,

    oyun ilk açıldığı noktadan son saniyeye kadar aktif, programlanabilir bir UI sistemi oluşturdum ➔ 640x480 widescreen olmayan bir koordinat sisteminden ve bitmap fontlardan kurtuldum. Flexbox benzeri bir yapı ile vektörel fontla kullanabilir hale geldik ➔ WASM sayesinde on-the-fly modding mümkün olabilecek. Browser’da mod kodlarını değiştirip kendi oyununuzu oynadığınızı hayal edin ➔ Yeni bir sıkıştırma formatı oluşturdum, texture yüklemelerde avantaj sağlıyor ve daha modern sıkıştırma algoritmaları destekliyor: LZ4, zstd ➔ Eski scripting dilini ve konfigurasyonları programlanabilir LUA dosyaları haline getirdim ➔ Transport’un değişmesiyle birlikte Oyun, HTTP ve MCP gibi farklı protokoller aynı port üzerinde karşılanabiliyor