Я роблю просту маленьку MOBA просто для розваги. Я все робив для одного гравця, тоді зрозумів, "о, лайно, мабуть, слід додати мультиплеєр, так".
Я ніколи раніше нічого не робив з мережами, тому навчитися інтегрувати Lidgren у свою гру було цікавим та приголомшливим. Справа в тому, що я майже знаю, як я роблю речі, неправильно, тому що, наскільки я знаю, це недостатньо надійно, щоб використовувати основні ігри, але що з цим?
Що я роблю, це, в основному, кожен раз, коли гравець робить якусь дію, він надсилає на сервер повідомлення з повідомленням: «Ей, я просто зробив це». І сервер, і клієнт виконують однакове моделювання. Потім сервер надсилає повідомлення всім іншим клієнтам, вказуючи їм, що той хлопець зробив це.
Здебільшого, за винятком кількох випадків, коли гравець робить щось, клієнт припускає, що це круто, і випереджає його самостійно. Отже, коли ви клацніть десь правою кнопкою миші, щоб переїхати туди, клієнт цього гравця просто починає переміщати свого хлопця туди, а потім надсилає на сервер повідомлення про те, що говорить про це.
Так в основному:
- Гравець 1 кидає заклинання, щоб змусити його рухатися на 100% швидше протягом шести секунд
- Місцевий клієнт програвача 1 додає цей буф до свого об'єкта Unit
- Клієнт гравця 1 надсилає на сервер повідомлення з повідомленням: "Ей, я просто кинув цю заклинання"
- Сервер переконується, що він справді мав достатньо мани, щоб кинути це заклинання, і якщо так, додає цей баф до копії сервера цього об’єкта Unit
- Сервер надсилає повідомлення всім іншим клієнтам, в яких говориться: "Ей, цей хлопець просто кинув цю заклинання"
- Кожен інший клієнт отримує повідомлення та переходить "добре добре", і додає цей баф до свого локального об'єкта для цього гравця
Я переглядав речі, щоб побачити, як великі ігри роблять мультиплеєр, і це щось заплутано для того, хто тільки починає поспішати в цьому, але схоже, що Джерело двигуна надсилає пакет, що містить усі зміни до всього в світ кожен кліщ? Знову ж таки, абсолютно нове в цьому матеріалі, але чи можна насправді часто наштовхувати стільки даних?
Вибачте, якщо це трохи збігання, але, в основному, мені було цікаво, чому моя простіша система не є правильним шляхом, тому що якщо це було, інші ігри використовували б її, правда?