Mapping ve Hammer

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 1 gerektirir, 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ı

  1. Son derleme. Yalnızca yayınlayacağın dosyayı test et: tam VVIS, -final ile 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.).
  2. Tek başına tur. Haritayı yerelde yükle, developer 1 komutunu 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ı bot ile doldur. Böylece spawn noktalarının yetip yetmediğini görürsün.
  3. Temiz istemci. -noworkshop ve -noaddons baş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.
  4. 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.
  5. 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ı

KomutNe gösterirsv_cheats 1 gerektirir
developer 1konsolda ve ekranın sol üst köşesinde ek mesajlarhayır
cl_showfps 1kare hızıhayır
net_graph 1kare hızı, gecikme ve paket verilerihayır
cl_showpos 1geçerli konumhayır
getposkonumu ve bakış açılarını konsola yazarhayır
statusharita, oyuncular ve bağlantılarhayır
report_entitiessınıfa göre sayılmış entity'ler ve edict'lerle birlikte toplamhayır, ama yalnızca host için ya da sunucu konsolunda
+showbudgetmotor sistemlerine göre kare başına süreGMod'da hayır (Valve wiki'sindeki cheat şartı diğer Source oyunları için geçerlidir)
mat_wireframe 1çizilen her şey tel kafes olarakevet
mat_leafvis 1, r_DrawPortals 1geçerli visleaf ve areaportal'larevet
r_drawclipbrushes 1, vcollide_wireframe 1clip brush'lar ve çarpışma modellerievet
showtriggers_toggletrigger brush'larıevet
nav_edit 1, ai_nodesnavmesh ve AI node'larevet
soundscape_debug 1her env_soundscape entity'sine giden çizgiler, etkin olan yeşilevet

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

KontrolNeye bakılırAşama
Spawn'larherkes boş bir yerde spawn oluyor, kimse spawn'da ölmüyor, dolu bir sunucu için yeterli nokta varbotlarla 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'lerharitayı bir kez mat_hdr_level 0, bir kez mat_hdr_level 2 ile dolaş, yansımaları kontrol et2, 3
Sessoundscape'ler doğru yerlerde değişiyor, konsol eksik ses bildirmiyor2, 3
Performanstüm test edenler oradayken, görüşün en uzun olduğu noktadaki en düşük kare hızı2, 5
Kapılar ve asansörlerbirkaç oyuncu kapıyı engelliyor, asansöre birlikte biniyor, hareket sırasında zıplıyor4, 5
NavigasyonNPC'ler ve Nextbot'lar tüm alanlara ulaşıyor, navmesh ve AI node'lar yazısına bak2
Eksik içeriktemiz istemcide pembe-siyah yüzey yok, ERROR modeli yok3

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ı, getpos ile alınan konum ya da cl_showpos 1 açı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 -condebug ile başlatmalarını iste. Konsol o zaman console.log dosyası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:

  1. Engelleyiciler: çökme, spawn olmaması, çıkışı olmayan sıkışma noktası, eksik içerik, haritanın dışına çıkan bir yol.
  2. Oyun akışı: kare hızı düşüşleri, adil olmayan konumlar, sıkışan kapılar ve asansörler, belirsiz güzergâhlar.
  3. 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.