Тема: Сервер для гри з NPC та мобами
Хай. От зіштовхнувся з проблемою написання саме такого серверу. Як ви знаєте, в мене вже є недосервер, котрий передає інформацію між клієнтами та виконує ще деякі функції. Але як створити мобів? Тобто жучків-черв'ячків, котрі існували б в ігровому світі незалежно від того, чи підключений якийсь клієнт до гри, чи ні. Адже потрібно розраховувати позицію цього жучка-черв'ячка і це неможливо без логіки/функціоналу того ігрового рушія, на котрому пишеться клієнт. Було дві ідеї:
1) Зробити сервер у вигляді клієнту. Постворювати на ньому мобів в вигляді примітивів, рухати їх, а позицію передавати клієнтам. З клієнтами так само, коли один з них підключається до серверу, то створюється примітив, коли користувач тисне кнопку W, то це відправляється на сервер, далі до примітиву персонажа цього користувача приміняється метод Move(), котрий рухає персонажа з урахуванням нерівностей поверхності та іншого, і після цього позиція цього примітиву передається всім клієнтам.
Недолік цієї системи в тому, що сервер буде потребувати багато ресурсів включно з ресурсами відеокарти, адже ігровий рушій використовує і освітлення, і шейдери, це можна вимкнути, але все одно будуть використовуватися непотрібні ресурси. Також проблема в тому, що я проектував та писав сервер з урахуванням більшості можливостей мови C# та технології .Net, а ігровий рушій використовує застарілу версію .Net і ключові моменти ігрового серверу неможливо інтегрувати в клієнт.
2) Зробити карту висот для рельєфа ігрового світу. Це означає, що ми малюємо мапу в сірих тонах, де в кожному пікселі буде відбиватись певна точка в ігровому світі. Позиція пікселю та його колір - це точка в ігровому світі. Звісно, колір тут відповідає за висоту. Далі ми можемо створювати мобів, і рухати їх опираючись на карту висот, тобто якщо моб на висоті 100 і треба піти вперед, а піксель зпереду має висоту 200, то очевидно, що моб туди зайти не може, а якщо висота наступного пікселю 101, то можна пройти. Недоліки такої системи в тому, що не зрозуміло, наскільки детальною має бути ця карта, наприклад, в мене є карта 100x100 метрів, а персонаж та моб можуть бути різної довжини та широти, і може статись так, що персонаж стоїть наполовину в стіні. Також я не кажу вже про різні будинки та дірки в горах, така карта не зможе показати пещеру абощо.
Діліться своїми ідеями та роздумами на рахунок такого серверу. Дякую.