Otomatik oyun test yöntemleri var mı?
Açıklığa kavuşturmaya yardımcı olursa, platform ve oyun türü gibi projeyle ilgili bilgilerle özel deneyimler takdir edilmektedir.
Otomatik oyun test yöntemleri var mı?
Açıklığa kavuşturmaya yardımcı olursa, platform ve oyun türü gibi projeyle ilgili bilgilerle özel deneyimler takdir edilmektedir.
Yanıtlar:
Bir kişilik bağımsız oyun. Yıkılabilir araziye sahip çok oyunculu bir tank oyunuydu ve yıkılabilir arazi ve çarpışma kodu biraz lapa lapa çıktı.
Temel aptal AI'ları yerleştirmeye başladım ("aptal" derken, "kesinlikle aptalca" demek istedim - rasgele "bir düşman tankına doğru sürüş", "bir düşman tankından uzak sürüş" ve "rastgele bir yönlendirme" seçeceklerdi. ", ana silahı rastgele ateşlerken) ve tuşlara basarken oyunu maksimum kare hızında oynarlar. Ben yaklaşık 10-15x gerçek zamanlı aldım. Kod çok fazla ileri sürüldü, bu yüzden eğer bir şeyler ters giderse, tüm tuşa basma günlüğünü bir hata raporu ve ilk rastgele tohumla birlikte diske atardı. Daha sonra durumu tam olarak çoğaltmak için tuşa basma günlüğünü tekrar edebilir veya hata raporundan hata ayıklayabilirim.
Kelimenin tam anlamıyla aylarca sürekli çalışıyor bıraktı. Başlangıçta nadiren çarpmadan bir saat alırdı - Orada oturmak ve bir hafta boyunca bebek bakıcılığı yapmak zorunda kaldım, günde birkaç belirsiz hata öldürdüm. Sonunda, arızalar arasında bir hafta boyunca çalıştığı noktaya geldi, bu da çarpışma başına 1500 oyuncu saatine karşılık geliyor.
Çok değerli ve yürekten tavsiye ederim.
Üzerinde çalıştığım bir MMO için (100ish geliştirici, PC odaklı), çeşitli başarılara sahip çok çeşitli otomatik testler eklemeye çalıştık. İşte ne çalıştı:
İşe yaramadı:
3d savaş ile 4x strateji oyunu üzerinde çalışmak (Homeworld'ün Orion Ustaları ile tanıştığını düşünüyorum), ne yazık ki, şirketin fonları tükendiğinde günün ışığını hiç görmedim.
Oyunu insan oyuncu olmadan oynayabilmenizi sağladım, böylece oyunu bir gecede çalışır halde bırakabildik.
3B savaşı kapatabiliriz (rastgele bir sonuçla sadeleştirilmiş) ve AI strateji motorunu oynamayı bıraktık. Bu sayısız hata ve sorun buldu. Yalnızca durdurucu hataları göstermekle kalmaz, (örn.) AI stratejilerinin kilitleneceği ve "doğru şeyi" yapmadan 1000'lerce tur harcayacağı strateji hataları göstermez. Bu tür böceklerin sadece “oyun oynamayı” tespit etmesi zordu.
Üzerinde çalıştığım bir birinci şahıs nişancıda (Descent 3 - linux / mac / windows, 1999'da yaklaşık 30 kişi), demo kayıt / oynatma özelliğinin son derece yararlı olduğu ortaya çıktı. Demoyu, oyunun kareleri oluşturabildiği kadar hızlı bir şekilde oynatabileceğiniz bir seçenek yaptım ve bu, bir çok şey değiştikten sonra performansı doğrulamak için harika bir yol oldu.
Ayrıca oluşturma sisteminin ötesinde birçok kod kullandı, bu yüzden hoş bir akıl sağlığı kontrolü idi. Bir sürü değişiklik yaptıktan sonra 10 dakikalık oyunun demosunu çalıştırabilirim. Çoğu zaman kendimi kontrol etmeyi aklıma gelmeyen bir alanda bir böcek yakalardı.
Derleme sunucusunda hızlı bir şekilde sigara içen bir açık dünya avcısı (x360, PS3, PC) kullandık - oyunu yükledi, ön tarafa geçti, [avatar] 'ı öne sürdü, ekran görüntüsünü terk etti ve çıktı. Eğer cctray temiz çıkışı tespit ederse yapı başarılı olmuştur.
Projenin yaklaşık son yılında ve ~ 100 dev'lik bir ekip büyüklüğü ile koştuk.
Showtopping hatalarını yakalamakta etkiliydi, ancak en dumanlı olanı geçip çoğu "gerçek" seviyeyi geçmeyen ya da çok oyunculu bir ortamda çalışmayan ya da AI'yı sinirlendiren bir yapı oluşturmak kolaydı, bu yüzden mükemmel değildi. Kesinlikle yapmaya değdi.
Ayrıldığımdan beri, birden fazla PC'ye yönlendirilen daha geniş bir dizi sigara kullanmaya başladıklarını duydum. Görünüşe göre smoketest'leri korumak bir sorun ve sadece inşa sunucularını ve yazılımlarını korumaya adanmış küçük bir ekip var, bu yüzden başarılı olup olmadığını söyleyemem.
Crysis 2'nin gelişimi sırasındaki Otomatik Testler ile ilgili tecrübelerime buradan ulaşabilirsiniz: http://yetanothergameprogrammingblog.blogspot.com/2010/06/aaa-automated-testing.html
Özet:
Oyun geliştirme aslında birim testlerinin bana biraz mantıklı geldiği durumlardan biri çünkü kesikli sistemler arasındaki etkileşimler çok yaygın. Elbette tasarım kontratı bunun bir parçası ve gelişimin ilk gününden itibaren planlanmalı, ancak bunun yapılacağı yer varsayarak neden daha sonra uygulanamayacağını anlamıyorum.
Zor kısım elbette entegrasyon testidir. Bir oyunun çoğu sadece demo döngüsüyle veya başka bir şeyle denenerek test edilebilir, ancak bu şeyleri hata ayıklamak oldukça kolaydır - burada zamanımı harcamakla daha çok ilgilenirim, bir oyuncu bir şey yaptığında gerçekleşecek hataları ortaya çıkarır , Oyuncunun asla görmediği bir hatanın zihniyetinde, oyuncunun yaptığı bir hatadan daha az önemli olduğu açıktır.
Açıkçası, bu oldukça zor. Diğer uygulamalar üzerinde çalışan taktikler (bulanıklaştırma, beklenen-geçme / beklenen-başarısız, vb.) Burada çok iyi çalışmıyor. Scriptable sistemlerde bir oyuncuyu simüle etmek için bir script seti oluşturmak gibi görünüyor (JZig'in cevabına bakınız). Ancak, bir oyuncunun doğrudan karşılaşabileceği şeyler için test etmek, zamanınızı hem insan hem de otomatik testler için odaklamak için en iyi yer olarak beni vurur.