Chuyển động không nhất quán / tầm nhìn xung quanh chướng ngại vật trên lưới lục giác


7

Trong một trò chơi roguelike mà tôi đã làm việc, một trong những mục tiêu thiết kế cốt lõi của tôi là cho phép người chơi "Chơi trò chơi, không phải lưới."

Về bản chất, tôi muốn định vị của người chơi là chiến thuật vì các yếu tố trong thế giới trò chơi, không chỉ đơn giản vì một số ô lưới có lợi thế hơn các phần khác liên quan đến kẻ thù. Tôi ổn với hình học thế giới không thực tế, nhưng nó cần phải nhất quán.

Trong quá trình này, tôi đã gặp phải hầu hết các vấn đề phổ biến (gạch vuông? Chuyển động chéo, LOS, trường hợp góc, v.v.) và đã chuyển sang lưới ô lục giác. Đối với hầu hết các phần này là tuyệt vời, và tôi đã không có quá nhiều mâu thuẫn.

Gần đây, tuy nhiên, tôi đã bị bối rối bởi những điều sau đây:

Điểm A và B đều là khoảng cách 4 từ người chơi, tầm nhìn đến cả hai đều bị chặn bởi các bức tường khoảng cách 2 từ người chơi.  Do lưới lục giác, A có thể đạt được trong 4 lần di chuyển, phá vỡ bức tường, trong khi B yêu cầu 5 lần di chuyển, vì bức tường ngăn chặn đường đi theo hướng này hiệu quả hơn.

Điểm AB đều cách người chơi 4 khoảng cách (đường màu đỏ). Đường ngắm của cả hai đều bị chặn bởi các bức tường (gạch đen). Tuy nhiên, do lưới lục giác, A có thể đạt được trong 4 lần di chuyển, trong khi B yêu cầu 5 lần di chuyển (đường màu xanh).

Trên lưới hex, "con đường ngắn nhất" dường như đã ly dị với "con đường trực tiếp"; có thể có nhiều đường dẫn ngắn nhất tới bất kỳ điểm nào, nhưng chỉ có một đường dẫn trực tiếp (hoặc hai trong một số tình huống). Điều này là tốt; hình học không cần phải thực tế.

Tuy nhiên, điều này cũng có vẻ không nhất quán: Những trở ngại tương tự có hiệu quả hơn ở một số vị trí so với những vị trí khác. Một người chơi chạy trốn khỏi kẻ thù sẽ có thể chạy theo bất kỳ hướng nào, làm tăng khoảng cách giữa hai diễn viên. Tuy nhiên, khi đặt chướng ngại vật hoặc bẫy giữa mình và kẻ thù, người chơi được phục vụ tốt nhất bằng cách chạy theo một trong sáu hướng không có nhiều đường ngắn nhất.

Có cách nào để hợp lý hóa điều này? Tôi có thiếu một cái gì đó làm cho hành vi này phù hợp? Hoặc có cách nào để làm cho hành vi này phù hợp? Tôi chắc chắn là quá suy nghĩ về điều này, nhưng vì đó là một trong những mục tiêu của tôi, tôi nên thực hiện nó do siêng năng.


Tôi không hiểu "khi đặt chướng ngại vật hoặc bẫy giữa mình và kẻ thù, người chơi được phục vụ tốt nhất bằng cách chạy theo một trong sáu hướng không có nhiều đường ngắn nhất." . Bạn có thể thêm một ví dụ xin vui lòng?
Heckel

Điều này có đúng trên lưới vuông không? Tôi nghĩ rằng đây là cả một lợi thế và bất lợi của việc sử dụng lưới.
amitp

2
@Heckel, Nếu tôi có thể sử dụng hình ảnh trong câu hỏi làm ví dụ. Chạy trực tiếp ra khỏi kẻ thù trong ô có nhãn "A" (về phía trên cùng của hình ảnh), chướng ngại vật giữa tôi và kẻ thù không có tác dụng gì, vì có nhiều con đường ngắn nhất xung quanh chướng ngại vật (được minh họa bằng đường màu xanh). Khi chạy khỏi "B" (về phía dưới bên trái của hình ảnh), chỉ có một con đường ngắn nhất và đi xung quanh chướng ngại vật buộc một con đường dài hơn (một lần nữa được minh họa bằng màu xanh).
Darq

Câu trả lời:


7

Miễn là không gian chuyển động của bạn không phải là Euclide và mọi thứ có thể chặn toàn bộ không gian lưới, bạn sẽ gặp vấn đề này.

Nếu bạn muốn mọi người không "chơi lưới" thì có lẽ bạn sẽ không phải sử dụng lưới.


3
Thật không may, theo như tôi có thể thấy, đây là câu trả lời chính xác. Bất kỳ "chunking" lên không gian, bất kể khoảng cách được tính toán (Euclidean, Manhattan, hoặc Ch Quashev) sẽ dẫn đến loại vấn đề này. Cảm ơn câu trả lời của bạn!
Darq

6

(Tôi không có đủ danh tiếng để bình luận) Câu trả lời ở đây là khoảng cách là sai. A gần gũi hơn B. Để thuyết phục bản thân, so sánh A và phản ánh của B wrt người chơi, vì vậy tôi không nghĩ có vấn đề ở đây.

Lưới hex là khó khăn trong rất nhiều cách.


1
Cảm ơn câu trả lời của bạn. Thật vậy, khoảng cách là khác nhau khi chúng ta xem xét khoảng cách Euclidian. Tuy nhiên, tôi đã tính toán khoảng cách của mình bằng khoảng cách Manhattan / Ch Quashev, trong đó mỗi "vòng" hình lục giác là một đơn vị nữa. Lợi thế là khoảng cách đó rất đơn giản để người chơi tính toán bằng cách chỉ đếm các hình lục giác. Tôi muốn tiếp tục sử dụng khoảng cách đơn giản hơn này nếu có thể, nhưng câu trả lời của bạn chỉ ra rằng tôi có thể phải điều tra lại khoảng cách Euclidian. Cảm ơn một lần nữa!
Darq

Tôi nhớ lại đã gặp phải cách giải quyết này trong một số cách tìm đường mà tôi đã làm cho AI trong phiên bản Steve Jackson của riêng tôi. Bạn có thể điều chỉnh sắp xếp tìm đường để tính cả khoảng cách hex và khoảng cách Euclide khi nó thực sự quan trọng.
Fuhrmanator

1
Trong tương lai, nếu bạn cần bình luận trên bất kỳ trang web Stack Exchange nào, chỉ cần đóng góp cho cộng đồng hoặc đóng góp đủ cho một trang web để nhận phần thưởng liên kết. Đây không phải là lỗi, đây là một tính năngbạn không thể nhận xét trước một ngưỡng nhất định . Tuy nhiên, đây không phải là một bình luận, đây là một câu trả lời, tôi đã về bài viết tương tự.
whn
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.