Làm cách nào để quản lý tốc độ hành động khác nhau trong các trò chơi RogueLike?


14

Làm cách nào để quản lý tốc độ hành động khác nhau trong các trò chơi RogueLike?

Ý tôi là các trò chơi theo lượt có thể có các diễn viên hoạt động ở "tốc độ" khác nhau, tùy thuộc vào hành động và một số đặc điểm khác. Các diễn viên sau đó thực hiện nhiều hành động / lượt hơn so với những người khác nếu họ có tốc độ lớn hơn, hoặc không.

Làm thế nào để xác định khi nào một diễn viên sẽ có thể diễn xuất (lần lượt lên lịch?)?

Có vẻ như có nhiều cách khác nhau để làm điều đó? Bạn có thể giải thích một số với các thuật toán?


7
Tôi có cảm giác rằng nếu bạn mô tả chi tiết các tính năng mà bạn muốn, một thuật toán sẽ trở nên rõ ràng.
Tết

Như Tetrad đã nói, cộng với "tốc độ hành động" nghĩa là gì? Roguelike thường theo lượt, vì vậy tôi không thể thấy điều này có thể áp dụng cho họ như thế nào.
Laurent Couvidou

2
Ngay cả trong các trò chơi theo lượt, một số thực thể sẽ di chuyển nhanh hơn hoặc chậm hơn các thực thể khác, có nhiều lượt hoặc ít hơn so với các trò chơi khác. Tôi đã sửa câu hỏi.
Klaim

3
@Patrick Hughes Nethack, một trong những roguelike lâu đời nhất và phổ biến nhất, có một thuộc tính tốc độ rất quan trọng. nethackwiki.com/wiki/Speed
Harry Stern

1
@HarryStern Tôi đã chơi kém suốt thời gian này? Điều đó có thể giải thích một vài điều ... =)
Patrick Hughes

Câu trả lời:


12

Trong trò chơi roguelike Tyrant của tôi, tôi đã sử dụng một hệ thống các điểm hành động và xếp hạng tốc độ.

Về cơ bản:

  • Hầu hết các hành động có chi phí AP là 100
  • Hầu hết các sinh vật có tốc độ 100

Sau đó, vòng lặp trò chơi sẽ đi như sau.

  • Anh hùng có một hành động.
  • Thời gian đã qua được tính là hero action AP cost * 100 / hero speed
  • Tất cả các sinh vật được cung cấp AP bằng creature speed * elapsed time / 100
  • Sinh vật thực hiện hành động và trừ AP cho đến khi AP của chúng <= 0
  • Nói lại

Hệ thống này hoạt động rất độc đáo về tổng thể, ví dụ các tính năng hay:

  • Nếu bạn có một anh hùng rất nhanh (có lẽ do phần thưởng tốc độ ma thuật), bạn có thể nhận được một số bước di chuyển trước khi một sinh vật riêng lẻ có thể di chuyển (AP sẽ bị âm trong vài lượt vì thời gian trôi qua sẽ nhỏ)
  • Bạn có thể thực hiện một số hành động đắt hơn hoặc ít hơn bằng cách thay đổi chi phí AP
  • Bạn có thể trì hoãn các sinh vật bằng cách trừ các AP hoặc tăng cho chúng một lần đột ngột bằng cách thêm các AP

Cố gắng quấn đầu tôi xung quanh này. Nếu bạn có 1 người chơi và 4 người chơi. Điều này không làm cho người chơi cuối cùng ngăn xếp thời gian trôi đi ngày càng nhiều. Cho phép anh ta thực hiện 4 hành động và lần thứ hai khoảng 8 lần liên tiếp ??
Dr.Denis McCracleJizz

4

Điểm hành động. Cung cấp cho mỗi thực thể một "tốc độ" để các diễn viên nhanh hơn nhận được nhiều điểm hơn mỗi lượt. Làm cho mỗi hành động lấy một số điểm cụ thể để hoàn thành và trừ số đó khỏi điểm của người chơi cho lượt đó khi anh ta thực hiện một hành động. Nếu một hành động mất nhiều điểm hơn người chơi đã bỏ đi, hãy đánh dấu nó là "hoàn thành một phần" và để anh ta hoàn thành lượt tiếp theo.


2

Bạn có nghĩa là có những hành động mất nhiều lượt (nghĩa là ngủ trong 50 lượt thẳng)?

Những gì tôi sẽ làm là giữ một đối tượng, player.cienAction. currentAction có thể chứa bao nhiêu lượt hành động sẽ yêu cầu, độ phân giải của hành động là gì và danh sách các trạng thái hủy hành động (gặp nguy hiểm, bị tấn công, quá nóng, v.v.). Mỗi lượt, trước khi chúng tôi kiểm tra đầu vào của người chơi, chúng tôi sẽ kiểm tra xem liệu người chơi hiện đang ở giữa một hành động hay không, sau đó làm một cái gì đó giống như ...

if(!player.currentAction.interrupted())
{
 if(player.currentAction.complete() == true)
   {
    player.currentAction.doAction(); //Some actions, like casting a spell, would have something happen here. Others, like sleeping, may or may not, depending on how you coded it.
    player.currentAction = null;
   }
else player.currentAction.decreaseTimer(); //Decrease our timer by one.
}
else 
{
 player.currentAction.interrupt(); //Let the player know he's been interrupted. Bungle the spell, cancel sleep, etc.
 player.currentAction = null;
}

2

Bạn có thể đi với các điểm hành động nhưng không có lượt nào trên mỗi lượt nhưng tích tắc, nhỏ hơn nhiều. Giả sử mọi diễn viên đều có tốc độ tích lũy điểm hành động (ví dụ 2 AP mỗi tích tắc). Nó bắt đầu một hành động đáng giá, giả sử, 10 AP. Trò chơi tiến lên 5 tích tắc về phía trước (bởi vì đây là bao nhiêu để diễn viên phải trả giá AP của hành động).

Khi có một vài diễn viên. Trò chơi tiến lên tích tắc bằng cách đánh dấu cho đến khi ai đó đã trả giá AP vào thời điểm hành động này được thực thi.

Cách tiếp cận tương tự như của @ mikera, chỉ không có AP tiêu cực.


Điều này phức tạp hơn nhiều, vì bạn cần lưu trữ hành động "dự định" của sinh vật. Một số hành động phụ thuộc vào trạng thái có thể thay đổi trước khi mob tích lũy đủ điểm.
Warwick Allison

Có thể nó không hoàn hảo, nhưng nó phản ánh cuộc sống thực, khi bạn quyết định đánh, trước tiên bạn vung và sau đó đánh - vì vậy đó là hành động chuẩn bị quyết định, đó là điều mà hệ thống này cho phép. Ngoài ra, điều này cho phép chọn hành động khối dựa trên tình hình thực tế.
zzandy

Tôi thích đi theo hướng khác: mob chọn một hành động với chi phí là n-tick và sau đó không thể chọn một hành động mới cho đến khi n-tick trôi qua. Nó có thể được thực hiện như một giá trị duy nhất được giảm trên mỗi đánh dấu.
Kitsu.eb

-1

Thời gian phân giải cao

Nếu cú đấm mất 400 lượt, và cú đá mất 1000 lượt, tôi có thể đấm bạn ít nhất hai lần trước khi bạn đá tôi và tôi có thể đấm bạn 5 lần vào lúc bạn đá tôi hai lần.

Bằng cách làm cho mọi thứ mất nhiều lượt, bạn có nhiều quyền kiểm soát thời gian mọi thứ diễn ra.

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.