Tôi mới bắt đầu tạo một công cụ Chiến lược theo lượt bằng ngôn ngữ GML của GameMaker ... Và tôi đã hành trình thuận lợi cho đến khi đến lúc phải xử lý chu kỳ quay và xác định ai đang điều khiển người chơi nào, cũng như cách xử lý camera và những gì được hiển thị trên màn hình.
Đây là một phác thảo về chuyển đổi chính xảy ra trong vòng lặp trò chơi chính của tôi tại thời điểm này:
switch (GameState)
{
case BEGIN_TURN:
// Start of turn operations/routines
break;
case MID_TURN:
switch (PControlledBy[Turn])
{
case HUMAN:
switch (MidTurnState)
{
case MT_SELECT:
// No units selected, 'idle' UI state
break;
case MT_MOVE:
// Unit selected and attempting to move
break;
case MT_ATTACK:
break;
}
break;
case COMPUTER:
// AI ROUTINES GO HERE
break;
case OBSERVER:
// OBSERVER ROUTINES GO HERE
break;
}
break;
case END_TURN:
// End of turn routines/operations, and move Turn to next player
break;
}
Bây giờ, tôi có thể thấy một vài vấn đề với thiết lập này ... Nhưng tôi không biết làm thế nào để làm cho nó trở nên 'đúng'. Turn là một biến toàn cục lưu trữ lần lượt của người chơi và các trạng thái BEGIN_TURN và END_TURN có ý nghĩa hoàn hảo với tôi ... Nhưng trạng thái MID_TURN đang gây trở ngại cho tôi vì những điều tôi muốn xảy ra ở đây:
- Nếu có những người chơi bị điều khiển bởi con người, tôi muốn AI thực hiện công việc của mình ở đây, nhưng tôi muốn có camera để theo dõi AI khi nó di chuyển trong tầm nhìn của người chơi.
- Nếu không có người chơi do con người điều khiển, tôi muốn có thể xem hai hoặc nhiều AI chiến đấu trên bản đồ với tầm nhìn 'quan sát viên' giống như thần.
Vì vậy, về cơ bản tôi đang tự hỏi nếu có bất kỳ tài nguyên nào cho cách cấu trúc một công cụ Chiến lược theo lượt? Tôi đã tìm thấy rất nhiều bài viết về tìm đường và AI, và tất cả đều tuyệt vời ... Nhưng khi nói đến việc xử lý cấu trúc rẽ và trò chơi nói rằng tôi gặp khó khăn trong việc tìm kiếm bất kỳ tài nguyên nào. Các trạng thái nên được phân chia như thế nào để cho phép linh hoạt giữa người chơi và bộ điều khiển (CON NGƯỜI, MÁY TÍNH, OBSERVER)?
Ngoài ra, có lẽ nếu tôi đang đi đúng hướng, tôi chỉ cần một chút trấn an trước khi tôi đặt ra vài trăm dòng mã khác ...