Як поводитися з пошуком шляху та переміщенням у великому мережевому світі?


12

введіть тут опис зображенняЗважаючи на зображення вище, з плитками, розділеними на коробки розміром 32x32, у мене є об'єкт, який позначений "агрографами" поблизу гравців, які наближаються до нього. Я хотів би, щоб цей монстр в ідеалі переслідував гравця (і продовжував переслідувати гравця деякий час). Наразі мій єдиний рух - це мій простий інтерполятор для віддалених об'єктів, і це працює, тому що зазори між оновленнями руху досить малі.

Я не можу успішно просто сказати клієнтові, що монстр хоче перейти на положення, в якому він перебуває, оскільки це призведе до того, що сутність рухається набагато швидше, ніж слід (це, мабуть, можна вирішити, використовуючи деяку математику для інтерполяції. -складніше), але що важливіше, це не виглядає реалістично і може обрізати стіни! Я не хочу імітувати весь рух на сервері, якщо його можна уникнути ... хоча я, мабуть, міг би, але це все-таки не вирішить проблему відсікання. Я підозрюю, що рішення передбачає деякий пошук шляху та надсилання клієнту періодичних оновлень вузлів і дозволяючи їм імітувати рух, але я не впевнений.

Дякую!

Відповіді:


9

Для простого запуску ви можете реалізувати поведінку керма . Конкретно шукайте поведінки . введіть тут опис зображення

Окрім пошуку персонажів, слід уникати перешкод, щоб уникати перешкод .

введіть тут опис зображення

Після того, як ви працюєте з цими аспектами, ви можете реалізувати деякі більш розумні наступні дії. Це включало б пошук шляху. Тепер, замість того, щоб спрямовувати їх на ворогів, вороги будуть спрямовуватись до кожного вузла на шляху, який веде їх до своєї мети.

Як тільки ворог наблизиться "досить близько", ви можете перейти на повністю рульове поведінку. Оскільки вони дешевші, ніж пошук шляхів, і ви отримаєте результати, які хороші на близькій відстані.

Рульове управління також дозволить визначити максимальну швидкість повороту та максимальну швидкість для ворогів.

Керівництво можна керувати клієнтом за допомогою періодичних оновлень із сервера, щоб переконатися, що вони все ще знаходяться на шляху.


Чи означатиме це також моделювання поведінки керування на сервері чи я можу логічно "перехопити" об'єкт по шляху? Мені не потрібні величезні точності.
Vaughan Hilts

Одне рульове управління повинно бути імітованим (хоча це не дуже важко). Однак орієнтування на шляхові точки можна оновити без моделювання. Просто переконайтесь, що клієнт знаходиться в межах "поточної" точки руху та спрямовується на правильну точку, як "наступну". Це призведе до певного оснащення, якщо суб'єкт господарювання не працює і раптом оновиться.
MichaelHouse

+1 за велику відповідь. Дякуємо, що заощадили мої кілька годин.
Md Mahbubur Rahman

1

Я не можу успішно просто сказати клієнтові, що монстр хоче перейти на положення, в якому він перебуває, оскільки це призведе до того, що сутність рухається набагато швидше, ніж слід (це, мабуть, можна вирішити, використовуючи деяку математику для інтерполяції. -ефективно)

Насправді це зробити просто. Напрямок руху буде цільовим положенням мінус поточне положення. Все, що вам потрібно зробити, це масштабувати цей вектор до тієї швидкості руху, яку ви насправді хочете. Повторіть кожен кадр.

але ще важливіше, що це не виглядає реалістично і може обрізати стіни! Я не хочу імітувати весь рух на сервері, якщо цього можна уникнути ...

Потрібно імітувати рух на сервері. Як ще ви дізнаєтесь, що всі гравці бачать однакову поведінку?

Вам знадобиться основна обробка маршруту. A * - це стандарт. Ви можете обчислити шлях до цілі, а потім слідувати за цим шляхом - це просто випадок встановлення векторів руху, як зазначено вище. (Або ви можете користуватися рульовим поведінкою, як у відповіді Byte56. Це, по суті, те саме, що і деякі додаткові додатки.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.