2d, Bản đồ từ trên xuống với các cấp độ khác nhau


7

Vì vậy, tôi đang tạo một trò chơi 2d, từ trên xuống, dựa trên sprite và hiện tại tôi đang làm việc trên bản đồ (tốt, một trình chỉnh sửa bản đồ vào lúc này, nhưng về cơ bản là nó sẽ tạo ra các bản đồ của tôi, về cơ bản là giống nhau Điều).

Kịch bản

Vì vậy, tôi đang suy nghĩ về hiệu quả và tạo ra một bản đồ thành từng mảnh. Trong mỗi tác phẩm, tôi dự định sẽ có 'lớp'. Về cơ bản, tôi có kế hoạch đưa nó xuống cấp độ 'dưới anh hùng' và cấp độ 'trên anh hùng', với anh hùng được hiển thị ở giữa rõ ràng. Cũng có khả năng sẽ có một lớp 'ngang tầm với anh hùng', nhưng tôi chưa hoàn toàn ở đó. Thậm chí không lo lắng về các sự kiện hoặc tương tác. Chỉ cần tìm kiếm một anh hùng trên màn hình.

Bây giờ để di chuyển, rõ ràng tôi cần phải biết gạch nào có thể được di chuyển và theo hướng nào. Kế hoạch của tôi tại thời điểm này là mỗi ô nhận 8 bit (4 'có thể nhập theo hướng' bit, 4 'có thể rời theo hướng'). Điều này sẽ cho phép tôi hạn chế chuyển động và thậm chí cho phép chuyển động một chiều.

Tiến thoái lưỡng nan

Điều này làm việc tuyệt vời cho rất nhiều kịch bản. Nó sẽ cho phép tôi lưu trữ bản đồ trong 3 lớp, một chuỗi và cho phép tôi linh hoạt trong tương lai. Tuy nhiên, tôi không thể tạo bản đồ mà bản thân chúng có các lớp. Một ví dụ điển hình là cây cầu nơi người dùng có thể đi dưới hoặc qua cây cầu mà không được phép di chuyển không hợp lệ. Tôi không thể tạo một nền tảng và cho phép di chuyển bên dưới. Đây là những điều tôi muốn có thể đưa vào trò chơi của mình.

Ý kiến ​​của tôi

Về lý thuyết, tôi có thể cho phép nhiều lớp anh hùng và sau đó cho phép nhiều bộ lớp 'bên dưới' và 'bên trên' (hoặc lớp bánh sandwich). Nhưng điều này làm phức tạp hệ thống của tôi và khiến cho việc di chuyển giữa các bản đồ trở nên khó khăn (Nếu anh hùng ở lớp thứ ba ở rìa bản đồ, nhưng điều đó tương ứng với lớp thứ hai trên bản đồ khác, làm cách nào tôi có thể cho phép hoặc không cho phép di chuyển).

Câu hỏi của tôi

Có cách nào tốt hơn để quản lý nhiều bản đồ với nhiều cấp độ như thế này trong đó cấp độ người dùng có thể được 'kết nối' ở các cấp độ khác nhau trên các bản đồ khác nhau không?

Hoặc thậm chí ...

Tôi đang làm điều này một cách khó khăn? Có cách nào chuẩn hơn để xử lý các bản đồ lát gạch 2d từ trên xuống mà tôi không biết?

Những điều cần lưu ý hoặc có thể hữu ích

  • Điều này sẽ được thực hiện trong Javascript (được chuyển xung quanh trong JSON)
  • Trạng thái sẽ cần được chuyển nhanh chóng, do đó, một id-map và x / y / direction phải đủ để mang lại cho tôi giá trị 'có thể di chuyển' boolean
  • Bản đồ sẽ không có kích thước tiêu chuẩn (mặc dù chúng sẽ nằm trong một số ô nhất định)
  • Tạo một công cụ chỉnh sửa để tôi có thể nhờ người khác giúp đỡ, vì vậy thứ gì đó tôi có thể tạo trong công cụ sẽ hữu ích
  • Các địa điểm 'Dịch chuyển tức thời' có thể sẽ cần tồn tại để đi vào việc xây dựng bản đồ và đến và từ các bộ bản đồ khác nhau (không nhất thiết phải được kết nối), nhưng chưa được tạo ra (hiện tại có các sự kiện).

Câu trả lời:


2

'dưới cấp anh hùng' và một 'anh hùng trên'

Tại sao các lớp chúng phải liên quan đến Anh hùng? Không phải nó ngược lại như trong anh hùng có một cấp độ hiện tại họ đang ở trên? Nếu anh hùng ở cấp 1 thì tất cả các cấp trên cấp 1 được rút ra sau hoặc trên đầu anh hùng. Điều này hoạt động cho bất kỳ số lượng cấp độ, do đó bạn không bị giới hạn ở 2 cấp độ. Bạn có thể để người chơi theo dõi mức độ họ đang ở và thay đổi nó với phát hiện va chạm cơ bản. Một loạt các bức tường gạch trên tường của một trường hợp cầu thang có thể đặt người chơi lên lớp 1 trong đó một điều tương tự có thể đặt người chơi lên cấp 0 ở dưới cùng của cầu thang.

Bạn sẽ chỉ thực hiện kiểm tra va chạm cho lớp hiện tại, vì vậy trong trường hợp đi dưới cầu bạn có thể đi bộ ngay dưới nó nếu không có vật cản trên lớp 0 trong khi tất cả các lớp trên sẽ chỉ được hiển thị.


Bạn biết đấy, ban đầu tôi đã từ bỏ cách tiếp cận này vì trình soạn thảo, nhưng tôi nghĩ bạn đã đúng, đây sẽ là điều hợp lý nhất. Tôi nghĩ rằng tôi sẽ chỉ thực hiện các lớp trong trình chỉnh sửa, được nhóm theo cấp độ và thực hiện không gian chuyển động dựa trên cấp độ. Cảm ơn
LoveAndCoding
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.