Làm thế nào một người nên xử lý các vị trí trong một thế giới dựa trên gạch?


7

Tôi có một trò chơi Tower Defense đơn giản bằng cách sử dụng một thế giới lát gạch. Creep và tháp là trên một gạch mọi lúc.

Làm thế nào tôi nên đại diện cho vị trí của creep trong mã? (Các creep có biết vị trí và vị trí hiện tại của chúng trên ô đã nói hay chúng có biết về vị trí thế giới tuyệt đối của chúng không?)

Về cơ bản, tôi đang tìm kiếm các thực tiễn tốt nhất, thiết kế các mẹo kiểu mẫu hoặc hiểu biết chung về cách người ta quản lý định vị trong một thế giới dựa trên gạch.

Cảm ơn bạn.


Bạn dự kiến ​​sẽ có bao nhiêu nhân vật trong trò chơi này trong thời gian bận rộn? Ít hơn vài trăm, hoặc hàng ngàn, hoặc hàng chục ngàn? (Tôi cho rằng "Creeps" và "Towers" là những loại nhân vật trong thế giới của bạn có thể tự di chuyển.)
Randolf Richardson

1
Chắc chắn ít hơn vài trăm. Creep đang di chuyển quái vật, tháp không di chuyển và bắn vào creep.
pwny

(+1 vì bây giờ câu trả lời đã rõ ràng hơn.) Đối với một số lượng nhỏ như vậy, bạn chỉ có thể giữ vị trí của chúng trong bộ nhớ bằng một mảng. Ưu điểm của RAM là tốc độ - mã của bạn cho Tháp có thể dễ dàng tìm kiếm mảng cho Creeps sau đó chỉ nhắm vào những người trong phạm vi.
Randolf Richardson

Hy vọng mọi người sẽ đề xuất nhiều phương pháp / cách tiếp cận khác nhau để bạn có thể thực hiện một số thử nghiệm để xác định cách nào hiệu quả nhất cho trò chơi của bạn. Nó sẽ giúp xây dựng thêm một chút về ý nghĩa của bạn khi xếp gạch như bạn gợi ý về việc có các vị trí cụ thể của gạch cũng như các vị trí trên thế giới toàn cầu - là thế giới bao gồm các "gạch" có thể chứa một số vị trí nhỏ lưới điện?
Randolf Richardson

1
Có thể trùng lặp: Làm thế nào để tôi giải quyết phong trào RPG từ trên xuống? , theo nguyên tắc rằng nếu hai câu hỏi có thể được đưa ra cùng một câu trả lời (chính xác), thì chúng có thể là một bản sao. Cụ thể, tôi nghĩ rằng câu trả lời của tôi từ chủ đề đó cũng có thể trả lời câu hỏi này.
doppelgreener

Câu trả lời:


6

Theo kinh nghiệm của tôi, cách tốt nhất để xử lý các vị trí trong một thế giới dựa trên gạch là bỏ qua rằng bạn đang ở trong một thế giới dựa trên gạch. Đó là, giữ cho các thực thể của bạn được lưu trữ ở các vị trí trên thế giới, giữ cho các đường dẫn mà các thực thể của bạn sẽ được lưu trữ trong không gian thế giới và nếu có thể, đừng để các thực thể hoặc logic trò chơi khác của bạn biết về gạch ở tất cả.

Vấn đề với việc xem xét các ô xếp là họ đưa các trường hợp góc vào mã trò chơi của bạn; rất nhiều địa điểm mới mà mã của bạn có thể hoạt động sai theo những cách tinh tế. Không chỉ (ví dụ) các tòa tháp cần phải có khả năng cho biết mức độ gần gũi của chúng với các thực thể trên ô riêng của chúng, mà còn với các thực thể trên các ô khác. Và ngay khi bạn nghĩ về gạch, bạn bắt đầu nghĩ đến việc tìm hàng xóm của gạch, điều này cũng dễ dàng đưa lỗi vào (đặc biệt dọc theo các cạnh và góc của sân chơi).

Thế giới dựa trên gạch thực sự thuận tiện cho việc chỉnh sửa cấp độ. Nhưng lời khuyên của tôi là chỉ sử dụng cấu trúc gạch để chỉnh sửa; đừng để cách xây dựng cấp độ lan truyền vào logic trò chơi.


Cảm ơn rất nhiều, tiền thưởng cho việc tham khảo chỉnh sửa cấp độ, đó là lý do trò chơi này có gạch để bắt đầu.
pwny

Một vấn đề có thể nảy sinh từ việc chỉnh sửa trong một thế giới dựa trên gạch là nếu bạn đang xây dựng một thị trấn khá rộng bao gồm nhiều ô, thì bạn phải lật giữa các ô khác nhau và cuối cùng phải mất khá nhiều thời gian để đảm bảo những thứ xếp thành hàng giữa các viên gạch cạnh nhau. (Tôi giả sử rằng một công cụ chỉnh sửa thế giới tùy chỉnh sẽ được phát triển bởi cùng một nhà phát triển trò chơi.)
Randolf Richardson

3

Tôi sẽ sử dụng các vị trí thế giới cho các thực thể của bạn. Điều đó sẽ hoạt động tốt miễn là thế giới không trở nên thực sự lớn (nơi các vị trí trên thế giới trở nên không thực tế do độ chính xác, do đó bạn sẽ phải chia thế giới thành nhiều phần).

Bạn có thể dễ dàng tính toán ô hiện tại từ tọa độ xy của mình . Ngoài ra có tọa độ thế giới làm cho việc so sánh các thực thể dễ dàng hơn nhiều (ví dụ: thực thể X trong phạm vi của tháp Y? ).

Sử dụng phương pháp khác cũng hoạt động, nhưng bạn sẽ phải xử lý 2 bộ tọa độ mọi lúc (chỉ số ô và vị trí trong ô đã nói).

Vì vậy, trong kết luận: Cả hai phương pháp đều hoạt động, nhưng sử dụng tọa độ thế giới có vẻ thực tế hơn nhiều (ít tọa độ để xử lý, ít tính toán cần thiết hơn). Để thuận tiện cho bạn, các thực thể của bạn thậm chí có thể có một phương thức getter cho chỉ số ô xy của chúng để tính toán vị trí ô hiện tại khi đang di chuyển.

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.