Oynatıcı tarafından bildirilen verilere dayanarak nasıl ısı haritaları üretebilirim?


17

Neden bahsettiğime gerçekten iyi bir örnek için, Replica Island geliştiricisinin Oyuncu ölümlerine göre nasıl yaptığını görün: http://www.youtube.com/watch?v=7-62tRHLcHk&feature=player_embedded#t= 37m

Verdiğim verilere dayanarak nasıl ısı haritaları oluşturabilirim?

Halo 3, oyun verileri raporlamasında ısı haritası kullanımının bir başka iyi örneğidir: http://www.bungie.net/Online/Heatmaps.aspx


Yanıtlar:


9

Zaten çizmek istediğiniz veri kümesine ve onu çizmek istediğiniz haritaya sahip olduğunuzu varsayarak, bir yoğunluk haritası oluşturarak başlayabilirsiniz: son haritaya orantılı olan kayan nokta değerleri ızgarası (haritalar yeterince küçük, 1: 1 muhtemelen iyi). Tüm diziyi 0 olarak başlat.

Ardından, çizmek istediğiniz her noktadan geçersiniz, yoğunluk haritasının koordinat boşluğuna eşlersiniz (normalde basit bir ölçek işlemi olmalıdır) ve sonra o konumda ortalanmış yoğunluk haritasında bir "bip" çizin.

Temel bir "bip" sadece bip noktasındaki yoğunluğu artı biraz yarıçapı az miktarda arttırmaktan oluşabilir. Daha karmaşık uygulamalar mevcut yoğunluğu okuyabilir ve daha büyük bir düşme yarıçapı kullanarak bip noktası zaten daha yoğun olur. Görünümünü beğendiğiniz bir uygulama bulmak için blip çizici ile deney yapabilirsiniz.

Bir yoğunluk haritanız olduğunda, her bir noktadaki yoğunluğu, istenen görsel etkiyi elde etmenizi sağlayacak bir renk gradyanına 1D araması olarak kullanabilirsiniz (bu, çok renkli sonuçları nasıl elde edebileceğinizdir) en sık görülen). Yoğunluk haritasını son grafiğinize aktarırken bu renk aramasını yapmalısınız (yoğunluk görüntüsünde son görüntüye göre yoğunluk haritasındaki boyut farklılıklarını hesaba katmak için gerektiği şekilde yeniden ölçeklendirme).

Bu temel bir uygulama için yeterli olmalıdır, ancak optimizasyon için yer vardır. Örneğin, yoğunluk haritası normalleştirilmeyecektir, bu nedenle, her bir sıçramayı çizerken yeniden boyutlandırmanız (muhtemelen yavaş) veya maksimum yoğunluğu izlemeniz gerekebilir, böylece tek bir yoğunluğun yeniden normalleştirilmesini aynı anda yapabilirsiniz yeniden renklendirme yapıyorsunuz. Ayrıca, değerlerinizin dağılımı, haritanın tüm koordinat alanını depolamak için bellek açısından verimli olmayacak şekilde olabilir ve büyük bir bellek yığınını önceden konumlandırmayı içermeyen alternatif bir çözüm kullanmak isteyebilirsiniz. bu çoğunlukla boş olacak.

Veri kümesinde görmeyi beklediğiniz minimum ve maksimum yoğunlukları önceden sorgulamak için yeterli veriye sahipseniz, temelde (X, Y, Z) ile " Bu noktada meydana gelen çizilen verilerin isabet sayısı "dır; bu , haritalama bölümünü optimize etmenize yardımcı olacak verileri toplayan sistemde oluşturabileceğiniz bir şeydir .

Yoğunluk haritası sadece, temelde, gri tonlamalı bir görüntü, bu tür bir sistemi, yoğunluk haritası için bir bitmap ve System.Drawingkısmi olarak saydam daireler çizmek için seçtiğiniz çizim API'nizi (örneğin, C # 'da) prototiplemenin gerçekten kolay bir yoludur . yoğunluk haritası üretebilir. En iyi görünmüyor, ama işlevsel.


3

Echo Chamber , oyunlar için özel olarak yapılmış ücretsiz bir kayıt ve görselleştirme aracıdır.

Bir c ++ uygulaması tarafından oluşturulan bilgileri içeren SQL tabanlı veri dosyalarını görselleştirin. Bilgiler, günlük ifadeleri, işlev çağrıları, ekran görüntüleri veya parametre listeleri olabilir.

Silahların en sık kullanıldığı ölüm pozisyonları ve seviyenin farklı bölümlerinde bellek kullanımı gibi 2D ve 3D oyun metriklerini görüntüleyin.

Günlük sistemi bir C ++ arabirimine sahiptir (isteğe bağlı olarak bir ağ üzerinden bir SQL veritabanına çıkış sağlayan bir printf () gibidir), ancak Yankı Odası herhangi bir SQL veritabanını görselleştirebilmelidir (veya bir veritabanı oluşturmak basit olmalıdır) Yankı Odası'nın beklediği biçim). Web sitesinde gezinme biraz geniş; ilgili Eko Odası el kitabı ve ilgili Raknet kayıt fonksiyonu .

Ne yazık ki çalışırken ısı haritalarının ekran görüntüsü yok, ancak Echo Chamber kesinlikle ısı haritalarını destekliyor:

resim açıklamasını buraya girin


2

Örneğin, oyunda belirlenen bir etkinliğin koordinatlarını alın. Örneğin, oyuncu öldüğünde, senaryoda oyuncunun öldüğü yerde koordinatlar elde edersiniz.

Veritabanınızda ihtiyacınız olan değerlere sahip olduğunuzda, her bir koordinatı listenizde / veritabanınızda kaç kez göründüğünü numaralandırın. Şuna benzer bir listeniz olacak:

  • 15: 1,5
  • 10: 6.15
  • 3: 27,58

veya değerleriniz ne olursa olsun. Anahtar-> değer çifti gibi koordinatlarla eşleştirilmiş bir frekansınız olacaktır. Daha sonra anahtar ölçeği bir renge ölçebilirsiniz. Örneğin, 0 tuşu siyah ve anahtar / değer listenizde bulunan maksimum anahtar kırmızıdır ve aradaki her şey siyah, orta nokta sarı ile maksimum nokta kırmızı arasındaki bir gradyantır. Her bir sonucu bir renge göre ölçün ve işte orada.


1
Bir 3D oyun, hatta entegre pozisyonları olmayan bir oyun için, bu, bazı yarıçapların daire veya küre gradyanlarını oluşturarak daha da genişletilebilir.
dash-tom-bang

2

Bunun için bir çeşit uygulama veya algoritma aradığınızdan emin değilim. Aslında özel ısı haritası görselleştirme yazılımı oluşturmaktan zevk aldım ve çok eğlenceli.

Hızlı bir Google araması , kendinizinkini almak istemiyorsanız uygun bir çözüm olabilecek HeatMap API'sini ortaya çıkardı .

Belki tam olarak ne aradığınızı açıklarsanız (uygulama veya programlama açısından) size daha iyi yardımcı olabiliriz?


0

Yapabileceğiniz başka bir şey, ilgili verileri bir CSV dosyasına veya bir şeye çıkarmak, daha sonra istatistiksel yazılımla (Microsoft Excel, LibreOffice Calc, R veya GNUPlot gibi) içe aktarmak ve bir grafik tükürmesini sağlamaktır. Biraz kabuk komut dosyası (veya Windows kullanıyorsanız Batch) biliyorsanız, muhtemelen her şeyi otomatikleştirebilirsiniz.

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.