Làm cách nào tôi có thể tạo bản đồ nhiệt dựa trên dữ liệu báo cáo của người chơi?


17

Để có một ví dụ thực sự hay về những gì tôi đang nói, hãy xem nhà phát triển của Replica Island dựa trên cái chết của Người chơi như thế nào: http://www.youtube.com/watch?v=7-62tRHLcHk&feature=player_embedded#t= 37m

Làm thế nào tôi có thể dễ dàng tạo ra các bản đồ nhiệt dựa trên dữ liệu mà tôi truyền vào?

Halo 3 là một ví dụ điển hình khác về việc sử dụng bản đồ nhiệt trong báo cáo dữ liệu trò chơi: http://www.bungie.net/Online/Heatmaps.aspx


Câu trả lời:


9

Giả sử bạn đã có tập dữ liệu bạn muốn vẽ và bản đồ bạn muốn vẽ, bạn có thể bắt đầu bằng cách tạo bản đồ cường độ: một lưới các giá trị dấu phẩy tỷ lệ theo giới hạn của bản đồ cuối cùng (nếu bản đồ là đủ nhỏ, 1: 1 có lẽ là tốt). Khởi tạo toàn bộ mảng thành 0.

Sau đó, bạn đi qua từng điểm bạn muốn vẽ, ánh xạ nó vào không gian tọa độ của bản đồ cường độ (thường là một thao tác tỷ lệ đơn giản, và sau đó vẽ một "đốm sáng" trong bản đồ cường độ tập trung tại vị trí đó.

Một "blip" cơ bản có thể chỉ bao gồm tăng cường độ tại điểm blip cộng với một số bán kính thêm một lượng nhỏ. Việc triển khai phức tạp hơn có thể đọc được cường độ hiện có và sử dụng bán kính giảm càng lớn thì điểm blip càng dữ dội hơn. Bạn có thể thử nghiệm với máy vẽ blip để tìm ra cách triển khai mà bạn thích.

Khi bạn có bản đồ cường độ, bạn có thể sử dụng cường độ tại từng điểm riêng lẻ khi tìm kiếm 1D thành một dải màu, điều này sẽ cho phép bạn đạt được tác động thị giác mong muốn (đây là cách bạn có thể nhận được kết quả nhiều màu thường thấy nhất). Bạn nên thực hiện tra cứu màu này khi bạn chuyển bản đồ cường độ đến âm mưu cuối cùng của bạn (rõ ràng là thay đổi kích thước, khi cần thiết để tính toán sự khác biệt kích thước trong bản đồ cường độ so với hình ảnh cuối cùng).

Điều này là đủ để thực hiện cơ bản, nhưng có chỗ để tối ưu hóa. Ví dụ: bản đồ cường độ sẽ không được chuẩn hóa, do đó bạn có thể cần phải chuẩn hóa lại nó (có thể chậm) hoặc theo dõi cường độ tối đa khi bạn vẽ từng đốm sáng, để bạn có thể thực hiện tái chuẩn hóa cường độ riêng lẻ cùng một lúc bạn đang thực hiện việc đổi màu. Ngoài ra, có thể phân phối các giá trị của bạn sao cho việc lưu trữ toàn bộ không gian tọa độ của bản đồ là không hiệu quả và bạn có thể muốn sử dụng một giải pháp thay thế không liên quan đến việc sắp xếp một khối lớn bộ nhớ đó sẽ là hầu hết - trống rỗng.

Nếu bạn có đủ dữ liệu trước để truy vấn cường độ tối thiểu và tối đa bạn muốn thấy trong bộ dữ liệu, bạn có thể tránh phải tái chuẩn hóa tất cả - về cơ bản nếu bạn có một số ánh xạ giữa (X, Y, Z) với số lượng " lượt truy cập "của dữ liệu âm mưu xảy ra tại thời điểm đó - đó là thứ bạn có thể xây dựng trong hệ thống thu thập dữ liệu sẽ giúp bạn tối ưu hóa phần ánh xạ.

Vì bản đồ cường độ chỉ là, về cơ bản, hình ảnh thang độ xám là cách thực sự dễ dàng để tạo nguyên mẫu cho hệ thống này để sử dụng bitmap cho bản đồ cường độ và API lựa chọn của bạn (ví dụ: System.Drawingtrong C #) để vẽ các vòng tròn trong suốt một phần tạo ra một bản đồ cường độ. Nó không phải là tốt nhất, nhưng chức năng của nó.


3

Echo Chamber là một công cụ ghi nhật ký và trực quan miễn phí dành riêng cho các trò chơi.

Trực quan hóa các tệp dữ liệu dựa trên SQL có chứa thông tin được tạo bởi ứng dụng c ++. Thông tin có thể là báo cáo nhật ký, cuộc gọi chức năng, ảnh chụp màn hình hoặc danh sách tham số.

Xem các số liệu trò chơi 2D và 3D như vị trí tử thần, loại vũ khí được sử dụng thường xuyên nhất và sử dụng bộ nhớ trên các phần khác nhau của cấp độ.

Hệ thống ghi nhật ký có giao diện C ++ (giống như printf () xuất ra cơ sở dữ liệu SQL, tùy ý qua mạng), nhưng Echo Chamber có thể trực quan hóa bất kỳ cơ sở dữ liệu SQL nào (hoặc đơn giản là tạo cơ sở dữ liệu trong định dạng Echo Chamber mong đợi). Điều hướng trang web là một chút khó khăn; hướng dẫn sử dụng buồng Echo có liên quan và chức năng ghi nhật ký Raknet liên quan .

Thật không may, không có ảnh chụp màn hình của các bản đồ nhiệt đang hoạt động, nhưng Echo Chamber chắc chắn hỗ trợ các bản đồ nhiệt:

nhập mô tả hình ảnh ở đây


2

Ví dụ: lấy tọa độ của một sự kiện được chỉ định trong trò chơi. Ví dụ: khi người chơi chết, bạn sẽ nhận được tọa độ trong khung cảnh của mình nơi người chơi chết.

Vì vậy, một khi bạn có các giá trị bạn cần trong cơ sở dữ liệu của mình, hãy liệt kê mỗi tọa độ số lần xuất hiện trong danh sách / cơ sở dữ liệu của bạn. Bạn sẽ có một danh sách như:

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

hoặc bất cứ giá trị nào của bạn. Bạn sẽ có tần số được ghép nối với tọa độ như cặp khóa-> giá trị. Sau đó, bạn có thể định lượng tỷ lệ chính thành một màu. Ví dụ: khóa 0 là màu đen và khóa tối đa bạn có trong danh sách khóa-giá trị của mình là màu đỏ và mọi thứ ở giữa là một dải màu giữa đen, vàng giữa và đỏ điểm tối đa. Định lượng từng kết quả thành một màu và ở đó bạn có nó.


1
Đối với trò chơi 3D hoặc thậm chí một trò chơi không có vị trí tách rời, điều này có thể được mở rộng hơn nữa bằng cách hiển thị độ dốc hình tròn hoặc hình cầu của một số bán kính.
dash-tom-bang

2

Tôi không chắc chắn nếu bạn đang tìm kiếm một loại ứng dụng hoặc thuật toán cho ứng dụng này. Tôi thực sự đã có niềm vui khi xây dựng phần mềm trực quan hóa bản đồ nhiệt tùy chỉnh và nó rất thú vị.

Một tìm kiếm nhanh của Google đã tiết lộ API HeatMap có thể là một giải pháp phù hợp nếu bạn không muốn tự mình thực hiện.

Có lẽ nếu bạn giải thích chính xác những gì bạn đang tìm kiếm (ứng dụng khôn ngoan hoặc lập trình khôn ngoan), chúng tôi có thể giúp bạn tốt hơn?


0

Một cái gì đó khác bạn có thể làm chỉ là xuất dữ liệu có liên quan sang tệp CSV hoặc thứ gì đó, sau đó nhập dữ liệu đó bằng phần mềm thống kê (như Microsoft Excel, LibreOffice Calc, R hoặc GNUPlot) và đưa ra biểu đồ. Nếu bạn biết một chút kịch bản shell (hoặc Batch nếu bạn sử dụng Windows), có lẽ bạn có thể tự động hóa toàn bộ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.