2009-10-02 22 views
5

Tôi đang trong quá trình thiết kế rpg và tôi đã chạy vào một trò chơi nhỏ. Tôi không chắc chắn nên sử dụng những gì cho bản đồ thế giới của mình. Tôi đã xem xét các định dạng khác nhau trong tuần qua và đã xác định rằng không có bất kỳ bản đồ nào (mà tôi có thể tìm thấy ...) phù hợp cho môi trường ngoài trời. Tôi thấy rằng bản đồ .bsp (trận động đất 4 hoặc doom 3) sẽ là tốt cho một thiết lập trong nhà, nhưng không phải là rất tốt cho các thiết lập ngoài trời vì cách họ đang thực hiện.Các định dạng bản đồ trò chơi khác nhau (trong nhà và ngoài trời)

Tôi đang cố gắng tìm thứ gì đó có thể cho phép tôi tạo ra các bản đồ ngoài trời khổng lồ, giống như lãng quên hoặc ngày mai. Cấp cho tôi có thể không sử dụng các bản đồ đến cực đoan đó, nó chỉ là tốt đẹp để có chỗ cho mở rộng nếu tôi cần nó.

Cảm ơn, Robbie

+1

Không nói chúng tôi vô dụng ở đây, nhưng bạn có thể nhận được phản hồi được nhắm mục tiêu hơn @ http: //gamedev.net . – ryeguy

+0

Tôi đã thử và không ai trả lời. Thời gian phản hồi ở đây tốt hơn nhiều so với gamedev. Ít nhất cho câu hỏi của tôi ... Idk, có lẽ họ không thích tôi bởi vì tôi thỉnh thoảng hỏi những câu hỏi noob đơn giản. Oh well ... – Robbie

+0

@Robbie: Tôi kiểm tra Gamedev.net mỗi ngày và tôi không nhớ lại khi nhìn thấy một câu hỏi như thế này. Bạn đã đăng nó ở đâu? – Kylotan

Trả lời

3

This article giới thiệu việc sử dụng quadtrees để lưu trữ địa hình, mà tôi tin được sử dụng phổ biến. Về cơ bản, chúng giống như các cây BSP được sử dụng trong Quake, nhưng phù hợp hơn để lưu trữ các bản đồ cao độ.

+0

Điều duy nhất tôi không nhận được là làm thế nào để kết hợp các thông tin đồ họa với quadtree. Giả sử tôi có tệp bmp 16x16 mà tôi đang sử dụng làm bản đồ, với nút nhỏ nhất là hình vuông 1x1. Làm thế nào tôi sẽ đi về việc vẽ bản đồ với quadtree? Hay tôi không làm như vậy và có cách khác để làm điều đó? – Robbie

+0

@Robbie: Tôi nghĩ rằng điểm của việc sử dụng một quadtree để lưu trữ một chiều cao là rõ ràng hơn khi bạn muốn lưu trữ dữ liệu đỉnh 3D thực tế, được tạo ra từ chiều cao. Sau đó, bạn sử dụng quadtree để tổ chức dữ liệu theo thứ bậc. Xem http://www.gamedev.net/community/forums/topic.asp?topic_id=410611 để biết thêm chi tiết, chẳng hạn. – unwind

+0

Liên kết đã chết ngay bây giờ :( – Kjellski

6

môi trường ngoài trời thường được thực hiện bằng bản đồ chiều cao địa hình. Về cơ bản nó là một mạng lưới khổng lồ với thông tin chiều cao trên mỗi ô. Ngoài ra, mỗi ô chứa thông tin về (các) kết cấu sẽ được sử dụng.

Bạn có thể tạo các bản đồ này sử dụng tiếng ồn dựa máy phát điện địa hình fractal và Perlin

+0

Ah ok. Tôi chưa bao giờ nghĩ về việc đó theo cách đó. Tôi đã luôn luôn nghĩ rằng họ đã được thực hiện trong máy xay sinh tố hoặc một số chương trình mô hình 3d khác và sau đó được nạp vào trò chơi. Bây giờ làm thế nào bạn sẽ đặt những thứ như một ngôi nhà hoặc cây trên bản đồ đó? Chỉ cần làm cho các mô hình một cách riêng biệt, tải chúng, và đặt chúng trên bản đồ bất cứ nơi nào bạn muốn? – Robbie

+0

Khá nhiều, đúng vậy. –

+0

Huh ... Thật tuyệt. – Robbie

1

Có rất nhiều cách để thực hiện bản đồ thế giới trò chơi.
Dù sao, đối với bản đồ khổng lồ kiểm tra Spatial indexes, và đặc biệt là Quadtrees.

2

Tôi nghĩ rằng anh ấy đang tìm cách lưu và tải bản đồ từ một tệp chứ không phải cách lưu trữ chúng trong bộ nhớ. (Hoặc có thể tôi đã hiểu nhầm?)

IMHO có bốn đường dẫn để xử lý vấn đề này.


cực trị: Tạo định dạng của riêng bạn

Bạn có thể tạo bạn sở hữu định dạng tập tin. Cách dễ nhất là chọn một định dạng tệp được sử dụng rộng rãi và có thể mở rộng (chẳng hạn như XML) vì bạn sẽ tìm thấy rất nhiều trình phân tích cú pháp tự do có sẵn trên internet. (đầu vào application-mathematics.net cho trình phân tích cú pháp XML đơn giản nhưng đầy đủ).

Vấn đề ở đây là bạn sẽ phải tạo trình chỉnh sửa bản đồ của riêng mình. Không nghi ngờ gì đây là cách "tốt nhất" nếu bạn muốn học nhiều thứ và có định dạng rõ ràng. Nhưng bạn cũng phải xem xét thời gian mà bạn sẽ cần phải chi tiêu để tạo ra tất cả các công cụ này.

cực trị: Sử dụng định dạng của một trò chơi/công cụ khác

Bạn cũng có thể chọn để sử dụng các định dạng tập tin của một trò chơi hiện có, và kỹ sư retro nó (hoặc đơn giản là sử dụng định dạng của một trò chơi mã nguồn mở , chẳng hạn như Quake).

Vấn đề ở đây là bạn sẽ kế thừa từ các giới hạn của định dạng mà bạn đã chọn. Nhưng thời gian phát triển khá giảm, bạn chỉ cần tìm cách tải các định dạng này.

cân bằng 1: tách hình học từ dữ liệu meta

Bạn cũng có thể chọn để chọn những thứ bạn cần từ một định dạng hiện có, và để lưu trữ dữ liệu meta của bạn ở nơi khác.

Ví dụ bạn có thể sử dụng tạo ra một định dạng mà sẽ trông như thế:

<?xml version="1.0" encoding="UTF-8"?> 
<map> 
    <name>MyMap</map> 
    <geometry type="bsp">my_map.bsp</geometry> 
    <spawn id="1"> 
    <monster type="1" spread="5" /> 
    </spawn> 
</map> 

Ở đây bạn có tốt nhất từ ​​hai thế giới. Bạn có thể thiết kế bản đồ trong bất kỳ trình soạn thảo .bsp nào (3DSmax, Máy xay sinh tố) và lưu trữ dữ liệu bạn cần trong XML.

Trung 2: Thích nghi các định dạng khác của yêu cầu của bạn

Ý tưởng ở đây là chỉ để tạo định dạng thống nhất của riêng bạn, và tạo ra các nhà xuất khẩu cho các biên tập viên sử dụng rộng rãi. Bạn có thể ví dụ viết kịch bản xuất khẩu cho Blender, có thể tạo ra các tệp cho định dạng của riêng bạn.


Chỉ một số mẹo khác nếu tôi hiểu lầm và bạn đang tìm bộ nhớ lưu trữ bản đồ của mình. (Trong trường hợp chỉ cần hỏi và tôi sẽ hoàn thành câu trả lời của tôi :))

  • Hãy tìm Quad/Octrees. Đó là một cách để cắt bạn bản đồ thành quads/cubes. Sau đó, bạn sẽ có thể thực hiện tìm kiếm nhanh trong các cấu trúc này và do đó chỉ hiển thị các phần có thể xem của bản đồ, LOD, v.v.
  • Tăng tốc độ tải bản đồ bằng cách chọn định dạng tệp gần bố cục bộ nhớ của bản đồ.
  • Kết hợp nhiều mô hình lưu trữ bản đồ. Heightmaps là tốt đẹp cho bigs bản đồ ngoài trời, nhưng rất hạn chế (espacially cho bản đồ đa cấp). Bạn có thể sử dụng độ cao cho sàn và lưu trữ đá/hoa là quadtrees, v.v.
Các vấn đề liên quan