Tôi đang lên kế hoạch cho một trò chơi phiêu lưu, và không thể tìm ra cách thức phù hợp để thực hiện hành vi của một cấp độ tùy thuộc vào trạng thái tiến triển câu chuyện.
Trò chơi một người chơi của tôi có một thế giới rộng lớn, nơi người chơi phải tương tác với mọi người trong một thị trấn ở nhiều điểm khác nhau trong trò chơi. Tuy nhiên, tùy thuộc vào tiến trình câu chuyện, những thứ khác nhau sẽ được trình bày cho người chơi, ví dụ: Trưởng nhóm sẽ thay đổi địa điểm từ quảng trường thị trấn sang các địa điểm khác nhau trong thành phố; Cửa sẽ chỉ mở khóa vào những thời điểm nhất định trong ngày sau khi kết thúc một thói quen cụ thể; Các sự kiện cắt màn hình / kích hoạt khác nhau chỉ xảy ra sau khi đạt được một mốc cụ thể.
Tôi ngây thơ nghĩ đến việc sử dụng câu lệnh {} ban đầu để quyết định NPC nên nói gì hoặc có thể tìm thấy gì và làm cho các mục tiêu nhiệm vụ chỉ có thể tương tác sau khi kiểm tra điều kiện của biến game_state toàn cầu. Nhưng tôi nhận ra rằng tôi sẽ nhanh chóng chạy vào rất nhiều trạng thái trò chơi và trường hợp chuyển đổi khác nhau để thay đổi hành vi của một đối tượng. Câu lệnh chuyển đổi đó cũng sẽ rất khó để gỡ lỗi và tôi đoán nó cũng có thể khó sử dụng trong trình chỉnh sửa mức.
Vì vậy, tôi nghĩ, thay vì có một đối tượng có nhiều trạng thái, có lẽ tôi nên có nhiều phiên bản của cùng một đối tượng, với một trạng thái. Bằng cách đó, nếu tôi sử dụng một cái gì đó như trình soạn thảo cấp độ, tôi có thể đặt một phiên bản của NPC tại tất cả các vị trí khác nhau mà anh ta có thể xuất hiện và cũng là một ví dụ cho mỗi trạng thái hội thoại mà anh ta có. Nhưng điều đó có nghĩa là sẽ có rất nhiều đối tượng trò chơi vô hình, không hoạt động trôi nổi xung quanh cấp độ, có thể gây rắc rối cho bộ nhớ hoặc đơn giản là khó thấy trong trình chỉnh sửa cấp độ, tôi không biết.
Hoặc đơn giản, tạo một cấp độ giống hệt nhau, nhưng riêng biệt cho từng trạng thái trò chơi. Điều này cảm thấy cách sạch nhất và không có lỗi để làm mọi thứ, nhưng nó có cảm giác như công việc thủ công khổng lồ đảm bảo mỗi phiên bản của cấp độ thực sự giống hệt nhau.
Tất cả các phương pháp của tôi cảm thấy không hiệu quả, vì vậy để tóm tắt lại câu hỏi của tôi, có cách nào tốt hơn hoặc tiêu chuẩn hóa để thực hiện hành vi của một cấp độ tùy thuộc vào trạng thái tiến triển câu chuyện không?
Tái bút: Tôi chưa có trình chỉnh sửa cấp độ - nghĩ đến việc sử dụng một cái gì đó như JME SDK hoặc tự tạo.