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*
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ı
İ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
Çö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
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
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
➔ 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)
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