Bản đồ 2d từ trên xuống: bình thường hóa hay không?


11

Tôi là người mới bắt đầu tuyệt đối với lập trình trò chơi, nếu câu hỏi này được đặt ra kém, hãy lưu ý rằng đó không phải là sự cẩu thả bên cạnh tôi, mà là thiếu kinh nghiệm lập trình trò chơi.

Trò chơi tôi dự định viết mã sẽ sử dụng bản đồ 2D từ trên xuống dưới dạng "thế giới". Thế giới có thể rộng hơn cửa sổ (cửa sổ có thể phóng to hoặc thu nhỏ) và các phương tiện có thể được đặt tại bất kỳ điểm nào trên thế giới (= đó không phải là bản đồ lát gạch, không gian là "liên tục").

Để làm rõ với một ví dụ: nếu thế giới là địa hình 1000x1000 mét, một chiếc xe có thể ở vị trí (327,31, 720,4) mét.

Câu hỏi của tôi là: cách thuận tiện nhất để đại diện cho thế giới trong nội bộ là gì? Tôi có thể nghĩ đến những khả năng này:

  • không làm gì và sử dụng mét như thể tôi đang làm việc với vật thể,
  • chuẩn hóa thành pixel xác định kích thước thế giới là số pixel để biểu thị 1000 mét ở mức thu phóng tối đa,
  • chuẩn hóa thành 1 xác định từ là một hình vuông có kích thước 1

... nhưng tôi chắc chắn có thể có một số người khác / một số của tôi có thể không có ý nghĩa. Đó chỉ là trò chơi đầu tiên của tôi, tôi không có một bức tranh rõ ràng về các vấn đề trước mắt và tôi muốn có một số hướng dẫn trong việc đưa ra lựa chọn ban đầu hợp lý.

Cảm ơn bạn đã dành thời gian.


Tôi đã có vấn đề này. Tôi sẽ không đăng bài như một câu trả lời - đã có những thứ tuyệt vời ở đó. Nhưng nếu bạn làm việc trong một số đơn vị tùy ý, bạn có thể hỗ trợ bất kỳ độ phân giải nào chỉ bằng cách điều chỉnh một giá trị duy nhất. Nó cũng dễ dàng hơn nhiều để đối phó về mặt trò chơi. Cuối cùng, với số lượng lớn như đo pixel, sim vật lý có thể phát nổ.
Vịt Cộng sản

Câu trả lời:


10

Tôi đồng ý với việc sử dụng giá trị trong thế giới thực (mét, feet, v.v.) làm cơ sở cho khoảng cách của bạn. Vấn đề với hai đề xuất khác của bạn là cả hai biến. Làm việc với quy mô thế giới 1sẽ khiến tất cả số học của bạn có dấu phẩy động giữa -1 và 1, điều này có thể dẫn đến nhiều lỗi dấu phẩy động hơn. Ngoài ra, nếu bạn quyết định tạo kích thước thế giới thay đổi (thế giới "Lớn" cho các trò chơi dài hơn, v.v.), bạn sẽ đưa ra nhiều vấn đề cho mã của mình. Tương tự, nếu bạn sử dụng pixel, thậm chí ở mức thu phóng tối đa / tối thiểu, bạn sẽ gặp phải sự nhầm lẫn cũng như các vấn đề nếu bạn quyết định tăng hoặc giảm mức thu phóng.


Câu trả lời này là tuyệt vời (+1). Tôi đặc biệt thích cách bạn giải thích các vấn đề tiềm ẩn khi sử dụng "1" cho kích thước của thế giới.
Randolf Richardson

Nếu bạn đang thực hiện bất kỳ loại mô phỏng vật lý nào, ngay cả khi hoàn toàn trang điểm, sử dụng số nguyên điểm cố định sẽ dẫn đến kết quả không hợp lệ. Tất cả những gì bạn phải làm là mô hình một chiếc xe duy nhất di chuyển với tốc độ đơn vị trên đường chéo và bạn sẽ thấy bạn không có cách nào để thể hiện đúng vị trí của nó.
edA-qa mort-ora-y

3
Đồng ý RE: sử dụng mét. Nó cũng sẽ giúp bạn hình dung về tinh thần và hiểu mọi thứ là tốt. "Chiếc xe đó dài 5 mét" hoặc "Hai vật thể này cách nhau 500 mét" và không phải làm toán tinh thần mọi lúc để có cảm giác về những gì bạn đang làm.
Tim Holt

-1 tuyên bố về số học số nguyên nhanh hơn dấu phẩy động nói chung là không đúng, trên thực tế, chúng nhanh hơn nhiều trên hầu hết các nền tảng hiện đại
Maik Semder

2
Vẫn sử dụng các giá trị điểm cố định cho các vị trí tuyệt đối có thể là một ý tưởng tốt. Điều này dẫn đến độ chính xác liên tục và vật lý giống hệt nhau trên toàn thế giới.
CodeInChaos

7

Trong ba tùy chọn bạn đề xuất, sử dụng đồng hồ có lẽ sẽ là tốt nhất. Khi bạn tạo dữ liệu khác, xử lý độ dài tính bằng mét sẽ giúp bạn sống dễ dàng hơn nhiều. Trong số các lý do khác, bạn có thể quyết định thay đổi kích thước thế giới của mình hoặc các cấp độ khác nhau có thể cần các bản đồ có kích thước khác nhau.

Bạn cũng có thể quyết định sử dụng chân (hoặc có thể là inch). Một phần của quyết định này có thể phụ thuộc vào gói phần mềm trung gian nào bạn sử dụng - một số công cụ vật lý thích loại đơn vị này hoặc loại khác (mặc dù hầu như luôn luôn có thể định cấu hình). Đối với hầu hết các phần, bạn chỉ có thể chọn một đơn vị và đi với nó.


5

Bình thường hóa thành '1' thực sự không phải là hướng đi (nếu bạn có một thế giới không vuông? Hoặc một số thế giới có kích thước khác nhau ...).

Sử dụng pixel làm ... KHÔNG BAO GIỜ Trộn lẫn các biện pháp đồ họa và trò chơi !! Đừng tự khóa mình để bạn không thể thay đổi đồ họa mà không phải thay đổi mã.

Vì vậy, mét (feet hoặc bất kỳ phép đo nào bạn thích nhất) là cách để đi. Bạn sẽ cảm thấy tốt hơn nhiều khi mã hóa bệ phóng tên lửa của mình để di chuyển với tốc độ 50 km / h so với 0,00076 đơn vị / giây ...

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.