Oyunların otomatik olarak test edilmesi [kapalı]


54

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:


74

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.


1
Gerçekten kaygan! Evet, keylog saf bir kazanç.
David McGraw

1
Kafam karıştı: "bazı temel aptal AI'ları yerleştirmek" ve "tuşlara basmak" - tuşlara kim basıyor? AI'nızın herhangi bir insan olmadan kendi başına oynamasına izin verdiğinizi düşündüm. Aslında AI'nizin api işlevlerini çağırmak yerine tuşlara basıp taklit ederek oyunu oynamasına izin verdiniz mi? Şimdi bu kaygan olurdu!
Dave O.,

4
@Dave Evet, potansiyel olarak kafa karıştırıcı olduğunu itiraf edeceğim. AI'ler tüm çıktılarını benzetilmiş denetleyicilerle sağlamak için tasarlanmıştır. Oyun durumunu girdi olarak aldılar, ancak oyun durumunu hiçbir şekilde değiştirmediler. Bu muhtemelen bir fare UI ile korkunç bir fikir olurdu ama tüm arayüzü gamepad ile yapıldı, bu yüzden biraz çirkin ama işlevsel oldu. AI'ların sanal tuşlarına bastım ve ek olarak, aynı kod arkadaşlarımla test ederken gerçek tuşlara kaydedildi.
ZorbaTHut

32

Ü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ı:

  • Otomatik yapım sürecimizdeki temel testler büyük bir kazançtı. Bu, bir karakter oluşturma, haritaları aktarma, bazı kodlanabilir UI testlerini yapma ve beklenen davranışı arama gibi görevleri içeriyordu. Bu, şirketin geri kalan kısmına ulaşmadan önce çok fazla böcek yakaladı.
  • Sunucu altyapısı sonunda, tipik MMO sunucu işlemlerini simüle eden birkaç farklı otomatik test geliştirdik. Daha sonra performansı karşılaştırmak veya güvenliği sağlamak için çeşitli koşullar altında bunları tekrar oynayabiliriz. Zaman içinde bu testler canlı kaydedilen verilerin oynatılmasına dönüşene kadar giderek daha doğru hale geldi.
  • Dünyada rastgele dolaşan, zıplayan, öldüren ve sohbette rastgele şeyler söyleyen bir "sahte oyuncu" yazdık. Bu çok sayıda fizik ve altyapı sorunu buldu.

İşe yaramadı:

  • Otomatik üreticiye çok özel bir savaş odaklı otomatik testler eklemeye çalıştık, ancak bu temelde hiç işe yaramadı. Bir tasarımcı veya sanatçı bir şeyi değiştirinceye ve test başarısızlığa uğradı, yapı başarısız alarmları atıncaya kadar, uygulamadan yaklaşık 3 gün sonra çalışacaktı. Zamanın% 90'ı gerçek bir sorun değildi. Bu testler çok kırılgandı ve aslında belirli oyunlarda belirli güçlere sahip özel oyunların test edilmesi sürdürülemez.
  • Müşteri performansını (ortalama FPS vb.) Bir hafta öncesinden kaydedilen performansla karşılaştıracak otomatik bir performans testi uygulamaya çalıştık. Bu aynı zamanda, bunun için kullandığımız demoların oldukça sıkça çürümeye meyilli olması nedeniyle oldukça kırılgandı ve performanstaki gerçek bir kayıptan ya da test sürecinin bir yan etkisinin yavaşlamasına neden olup olmadığını belirlemek zordu.

18

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.


Hm, bunu otomatik test olarak düşünmezdim - ama haklısın sanırım. Birkaç yıldır aynı şeyi yapıyorum, hiç böyle düşünmedim.
mmyers

13

Ü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ı.


8

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.


6

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:

  • Otomatikleştirilmiş test, hem içerik oluşturucuların hem de mühendislerin üretkenliğini artırarak, daha iyi teslim edilebilirlik kararlılığı sağlar
  • Otomatik test, kod kalitesini yükseltmek ve fazla mesai yapma şansını azaltmak için etkili bir araçtır
  • Bir bütün olarak Oyun Endüstrisi genel olarak çok gericidir, otomatik testler karşı yapılan irrasyonel argümanları karşılar.
  • Test etme, başka bir şey söyleme, neredeyse başka bir şey söyleme (Behavior-Driven-Development'a bakın)
  • Esnek olun, iyi testler yazmak zordur ve Oyun Endüstrisinde yaygın olarak bulunmayan beceriler gerektirir

2

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.


9
Ancak oyuncular , aklı başında bir kişinin yapmasını beklediğiniz şeyi asla yapmaz. Bu yüzden asansörün serbest bırakılmasından sonrasına kadar Call of Duty'de aksaklıklar görmüyorsunuz. Çünkü geliştiricilerin ve test uzmanlarının denemeyi hiç düşünmedikleri şeyler yapan binlerce kişi var. Birisi obsesif-kompulsif 16 yaşındaki bir oyuncu için mükemmel bir simülasyon yaratır yaratmaz oyun geliştirme tekilliğine ulaşmış olacağız :)
Casey Wagner
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.