GMod haritasını oyuncularla test etme: beş aşamada playtest
GMod haritasını yayınlamadan önce test et: tek başına turdan oyunculu tura beş aşama, konsol komutları, kontrol listesi ve geri bildirim kurallarıyla.
Bir GMod haritasını beş aşamada test et: son derleme, geliştirici konsoluyla tek başına bir tur, içeriğinin bulunmadığı temiz bir istemcide test, dedicated sunucuda test ve en sonunda gerçek oyuncularla bir tur. Kendi bilgisayarında tek başınayken aynı anda hem sunucu hem istemcisin ve her dosya sende yerel olarak var. Bu yüzden eksik içerik, takılarak hareket eden asansörler, yetersiz spawn'lar ve çok sayıda entity olduğunda yaşanan düşüşler ancak sonraki aşamalarda ortaya çıkar.
Tek başına test neden yetmez
- Aynı anda hem sunucu hem istemcisin. Tek oyunculu modda istemci prediction'ı atlar. Bir sunucuda her istemci kendi hareketini önceden tahmin eder, sunucu da farklı bir sonuca vardığında bunu düzeltir. Bu en belirgin biçimde hareketli platformlarda görülür: dikey hareket eden platformlar, çok oyunculu modda üzerinde giden oyunculara takılıyormuş gibi görünür.
- Bilgisayarında bütün içerik var. Texture'lar, modeller ve sesler oyun klasöründe durur, buna mount edilmiş oyunlar da eklenir. Test eden kişide ise yalnızca BSP'nin içindekiler ya da sunucunun gönderdikleri vardır.
- Sunucu cheat'ler olmadan çalışır. Birçok tanılama komutu
sv_cheats 1gerektirir, sunucuda ise bu değer varsayılan olarak 0'dır. Analizi yerelde yaparsın, sunucuyu gözlem için kullanırsın. - Daha fazla oyuncu daha fazla entity demektir. Her oyuncu, her silah ve spawn edilen her prop bir entity'dir. Spawn'lar, kapılar, kare hızı ve edict limiti ancak yük altında sınanır.
Beş aşamalı test planı
- Son derleme. Yalnızca yayınlayacağın dosyayı test et: tam VVIS,
-finalile VRAD, cubemap'ler oluşturulmuş, içerik paketlenmiş. Dosyanın kendisinin kontrolü yayın öncesi BSP kontrolü yazısında anlatılıyor. Her test sürümüne ayrı bir dosya adı ver, çünkü sunucu BSP'si farklı olan istemcileri geri çevirir (Your map [...] differs from the server's.). - Tek başına tur. Haritayı yerelde yükle,
developer 1komutunu etkinleştir ve haritanın tamamını dolaş: her kapı, her düğme, her asansör, her tırmanma merdiveni. Ardından konsolu oku. Sonra birden fazla slotlu bir oyun başlat ve slotlarıbotile doldur. Böylece spawn noktalarının yetip yetmediğini görürsün. - Temiz istemci.
-noworkshopve-noaddonsbaşlatma seçenekleri Workshop addon'larını ve klasör addon'larını geçici olarak devre dışı bırakır. Ancak oyun klasöründe açıkta duran dosyalar ve mount edilmiş oyunlar yerinde kalır. İkinci bir bilgisayar ya da içeriğine hiç sahip olmamış bir test eden daha güvenilirdir. - Dedicated sunucu. Haritayı bir dedicated sunucuda yükle ve bağlan. Harita başlarken sunucu konsolunu oku, haritanın ve içeriğin istemciye ulaştığını kontrol et (FastDL ve Workshop yazısına bak) ve her asansöre gerçek ping'le bin.
- Gerçek oyuncular. Haritayı, yapıldığı oyun modunda ve olabildiğince çok oyuncuyla oyna. Sen gözlemler ve not alırsın, hiçbir şeyi açıklamazsın.
2 ile 4 arasındaki aşamalar için konsol komutları
| Komut | Ne gösterir | sv_cheats 1 gerektirir |
|---|---|---|
developer 1 | konsolda ve ekranın sol üst köşesinde ek mesajlar | hayır |
cl_showfps 1 | kare hızı | hayır |
net_graph 1 | kare hızı, gecikme ve paket verileri | hayır |
cl_showpos 1 | geçerli konum | hayır |
getpos | konumu ve bakış açılarını konsola yazar | hayır |
status | harita, oyuncular ve bağlantılar | hayır |
report_entities | sınıfa göre sayılmış entity'ler ve edict'lerle birlikte toplam | hayır, ama yalnızca host için ya da sunucu konsolunda |
+showbudget | motor sistemlerine göre kare başına süre | GMod'da hayır (Valve wiki'sindeki cheat şartı diğer Source oyunları için geçerlidir) |
mat_wireframe 1 | çizilen her şey tel kafes olarak | evet |
mat_leafvis 1, r_DrawPortals 1 | geçerli visleaf ve areaportal'lar | evet |
r_drawclipbrushes 1, vcollide_wireframe 1 | clip brush'lar ve çarpışma modelleri | evet |
showtriggers_toggle | trigger brush'ları | evet |
nav_edit 1, ai_nodes | navmesh ve AI node'lar | evet |
soundscape_debug 1 | her env_soundscape entity'sine giden çizgiler, etkin olan yeşil | evet |
Tek başına tur için mantıklı bir başlangıç:
sv_cheats 1
developer 1
cl_showfps 1
cl_showpos 1
report_entities
report_entities komutunun boş haritada verdiği toplamı not et. Bu, oyuncular ve prop'lar eklenmeden önceki referans değerindir. Dedicated sunucunun konsolunda stats ayrıca sunucunun performans değerlerini yazdırır. mat_wireframe ve +showbudget ile nedenlerin nasıl bulunacağı GMod harita performans optimizasyonu yazısında anlatılıyor.
Test için kontrol listesi
| Kontrol | Neye bakılır | Aşama |
|---|---|---|
| Spawn'lar | herkes boş bir yerde spawn oluyor, kimse spawn'da ölmüyor, dolu bir sunucu için yeterli nokta var | botlarla 2, 5 |
| Sıkışma noktaları | köşeler, prop'ların arasındaki boşluklar, kapıların arkasındaki alanlar: oyuncu noclip olmadan oradan tekrar çıkabiliyor mu? | 2, 5 |
| Harita sınırlarının dışı | çatılar, duvar üstleri, skybox'ın kenarı: oyuncular zıplayarak ve prop'ları üst üste koyarak nereye ulaşıyor, orada ne görüyor? | 5 |
| Işıklandırma ve cubemap'ler | haritayı bir kez mat_hdr_level 0, bir kez mat_hdr_level 2 ile dolaş, yansımaları kontrol et | 2, 3 |
| Ses | soundscape'ler doğru yerlerde değişiyor, konsol eksik ses bildirmiyor | 2, 3 |
| Performans | tüm test edenler oradayken, görüşün en uzun olduğu noktadaki en düşük kare hızı | 2, 5 |
| Kapılar ve asansörler | birkaç oyuncu kapıyı engelliyor, asansöre birlikte biniyor, hareket sırasında zıplıyor | 4, 5 |
| Navigasyon | NPC'ler ve Nextbot'lar tüm alanlara ulaşıyor, navmesh ve AI node'lar yazısına bak | 2 |
| Eksik içerik | temiz istemcide pembe-siyah yüzey yok, ERROR modeli yok | 3 |
Temiz istemci hata gösteriyorsa eksik texture'ları ve ERROR modellerini düzeltme yazısı yardımcı olur. Asansör yaparken nelere dikkat etmen gerektiği asansörler ve trenler yazısında anlatılıyor.
Geri bildirimi toplama ve önceliklendirme
Yeri belli olmayan bir bulgu düzeltilemez. Bu yüzden bildirimlerin nasıl yapılacağına testten önce karar ver:
- Tek kanal, her bulgu için tek mesaj.
- Her bildirimde haritanın dosya adı,
getposile alınan konum ya dacl_showpos 1açıkken alınmış bir ekran görüntüsü, oyun modu, oyuncu sayısı ve test edenin o sırada ne yaptığı yer alır. - Test edenlerden GMod'u
-condebugile başlatmalarını iste. Konsol o zamanconsole.logdosyasına yazılır, onlar da bu dosyayı sana gönderebilir. - Yalnızca sormak yerine gözlemle: oyuncular nerede kayboluyor, hangi alanlar boş kalıyor, herkes nerede toplanıyor?
Sonra bulguları üç sınıfa ayır ve şu sırayla ele al:
- Engelleyiciler: çökme, spawn olmaması, çıkışı olmayan sıkışma noktası, eksik içerik, haritanın dışına çıkan bir yol.
- Oyun akışı: kare hızı düşüşleri, adil olmayan konumlar, sıkışan kapılar ve asansörler, belirsiz güzergâhlar.
- Görünüm: ışıklandırma dikişleri, kaymış texture'lar, havada duran prop'lar.
Test sırasında hiçbir şeyi değiştirme. Topla, bütün bir partiyi düzelt, derle, yeni bir dosya adı ver ve yeniden test et. Zevk meselelerini, birkaç test eden birbirinden bağımsız olarak aynı şeyi söylediğinde not et.
Harita ne zaman hazır
Beş aşamanın tamamı tam olarak yayınlayacağın dosyayla yapıldığında ve açık engelleyici kalmadığında harita hazırdır. Somut olarak: temiz istemci eksik içerik göstermiyor, harita başlarken sunucu konsolunda hata çıkmıyor, oyuncularla yapılan son tur yeni bir engelleyici ortaya çıkarmadı ve oyuncular varken en kötü noktadaki kare hızını biliyorsun.
BSP'de yapılan her değişiklik yeni bir dosya oluşturur. Bu yüzden son bir düzeltmeden sonra en azından 2 ile 4 arasındaki aşamaları tekrarlarsın. En sonda dosyayı Map Scanner ile kontrol et. BSP'nin yapısını doğrular, riskli entity'leri bildirir, bir spawnpoint olup olmadığını kontrol eder ve pakfile'daki dosyaları listeler.
Sık sorulan sorular
Kaç test edene ihtiyacım var?
Sabit bir sayı yok. Eksik içeriği bulmak için temiz istemcisi olan tek bir test eden yeter. Spawn'lar, kapılar ve performans için önemli olan, sunucunun ileride gerçekten sahip olacağı oyuncu sayısıdır.
Oyuncular yerine botlarla test edebilir miyim?
Kısmen. bot, boş slotu olan bir sunucuya bir bot ekler. Tek oyunculu modda GMod bunu Cannot create a player bot in singleplayer! mesajıyla reddeder. Komut sv_cheats 1 gerektirmez, ama report_entities gibi yalnızca host için ya da sunucu konsolunda çalışır. Botlar slotları ve spawn noktalarını doldurur. Yol arayan, kapıları engelleyen ve prop spawn eden oyuncuların yerini tutmazlar.
mat_wireframe sunucuda neden çalışmıyor?
Komut cheat olarak işaretlidir ve yalnızca sv_cheats 1 ile çalışır. Canlı bir sunucuda bu kapalı kalır. Orada cl_showfps, net_graph ve status komutlarını kullan, ilgili noktayı da yerelde cheat'ler açıkken tekrarla.