Резюме:
Мой 50% готовый 2D боковой скроллер с Box2D в качестве физического движка должен иметь многопользовательскую поддержку в финальной версии. Тем не менее, текущий код представляет собой однопользовательскую игру.
- Что мне теперь делать?
- И что более важно, как мне реализовать мультиплеер и объединить его с одиночной игрой?
- Разве это плохая идея кодировать однопользовательский режим отдельно от многопользовательского режима ( как у Notch это было с Minecraft )?
Производительность в одиночной игре должна быть как можно выше (проблема с симуляцией физики с использованием сервера с обратной связью для реализации однопользовательского режима)
Полный фон / вопросы:
Я работаю над сравнительно крупным 2D-проектом на C ++, основным элементом которого является физика. (Я использую Box2D для этого)
Готовая игра должна иметь полную многопользовательскую поддержку, однако я допустил ошибку, что не планировал сетевую часть должным образом и в основном работал над однопользовательской игрой до сих пор.
Я думал, что многопользовательская поддержка может быть добавлена в почти законченную однопользовательскую игру относительно простым и понятным способом, но, судя по всему, это неправильно.
Я даже читал, что многопользовательская игра должна быть запрограммирована как одна с самого начала, а однопользовательский режим на самом деле просто состоит из размещения невидимого локального сервера и подключения к нему через шлейф. (Я обнаружил, что большинство игровых движков FPS делают это таким образом, например, Source)
Итак, я нахожусь со своей половинчатой 2D-игрой с боковым скроллером, и я действительно не знаю, как дальше.
Мне просто бесполезно продолжать работать над одиночной игрой / клиентом, поскольку мне придется еще больше перекодировать и реорганизовывать.
Во-первых, общий вопрос к любому, кто, возможно, оказался в такой ситуации:
Затем, более конкретный - я пытался выяснить, как я могу подойти к сетевой части для моей игры:
- Невидимый / loopback сервер для одиночной игры
Это будет иметь преимущество в том, что в принципе нет разницы между одиночной и многопользовательской режимами. Не нужно много дополнительного кода.
Большой недостаток: производительность и другие ограничения в одиночной игре. Было бы запущено два симуляции физики. Один для клиента и один для сервера обратной связи.
Даже если вы работаете в обход, предоставляя прямой путь для данных с сервера обратной связи, например, посредством прямой связи между потоками, одиночная игра будет ограничена.
Это проблема, потому что людям должно быть позволено играть с массами объектов одновременно.
- Отдельный одиночный / многопользовательский режим
В однопользовательском режиме сервер не задействован.
Я не совсем уверен, как это будет работать. Но, по крайней мере, я думаю, что было бы много дополнительной работы, потому что все функции одиночной игры должны были бы быть повторно реализованы или склеены в многопользовательский режим.
- Многопользовательский режим как модуль для одиночной игры
Это просто быстрая мысль, которая у меня была. Многопользовательская игра может состоять из однопользовательской игры с дополнительным сетевым модулем, загруженным и подключенным к серверу, который отправляет и получает данные и обновляет однопользовательский мир.
В ретроспективе я сожалею, что не планировал многопользовательский режим ранее. Я действительно застрял на этом этапе и надеюсь, что кто-то здесь сможет мне помочь!