Tôi nên cấu trúc động cơ theo lượt của mình như thế nào để cho phép linh hoạt cho người chơi / AI và quan sát?


7

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 ...



Đúng, tôi nhìn vào đó. Một người không thực sự đi đâu cả. Một giải pháp khác là một giải pháp sử dụng các sự kiện, nhưng không thực sự giải quyết các vấn đề tôi đưa ra ở đây.
Rạn san hô

2
bạn nói "Bây giờ, tôi có thể thấy một vài vấn đề với thiết lập này rồi" .. vậy vấn đề bạn đang gặp phải là gì? Bạn không thể thiết lập chế độ xem camera? không thể chạy hình ảnh động? hay cái gì?
Jake

Là vấn đề thao tác máy ảnh hoặc thực hiện các bộ điều khiển lần lượt?
dùng64742

Câu trả lời:


2

Bạn sẽ phải tách "camera" khỏi máy nghe nhạc. Có thể GML có những hạn chế ở đây nhưng tôi không có kinh nghiệm nào để nói về điều đó. Không có lý do tại sao vị trí và thiết lập của máy ảnh phải được khóa với một người chơi. Thông thường, một trò chơi bao gồm một thế giới và đôi khi một số máy ảnh được hiển thị mỗi khung hình cho nhiều người chơi trên cùng một màn hình hoặc chế độ xem "camera an ninh" hoặc hiển thị cho chế độ xem kết cấu, v.v. Quá trình hiển thị khung hình từ một chế độ xem camera đến một khu vực không gian màn hình duy nhất không cần phải gắn với người chơi.


1

Trong khi có người chơi, bạn có thể đặt trung tâm camera trên thiết bị AI đang di chuyển nếu nó nằm trong tầm nhìn. Khác, bạn có thể điều khiển camera bằng chuột / bàn phím độc lập với các đơn vị 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.