Игра im development в настоящее время использует ServerSocket и Socket для обеспечения многопользовательской игры. Он много отстает, когда он не запускается локально, поэтому мне интересно, должен ли я переделать многопользовательскую структуру для отправки как через TCP (ServerSocket, Socket), так и UDP (DatagramSocket). В настоящее время, как упоминалось, я использую только TCP, и он отправляет только 60 пакетов в секунду (30 получателей и 30 отправленных), когда они не выполняются локально.Мультиплеерные игры Сетевое взаимодействие
Информация, которая отправляется между сервером и клиентом:
Движение, торговля, ItemUsage, EnvironmentDetails и многое другое.
Так что мои вопросы:
Будет ли это сделать огромную разницу, если я и использовал TCP и UDP, а не только TCP?
Если я перешел на TCP и UDP, что мне следует отправлять в каждом протоколе?
Заранее благодарен!
Edit:
Клиент:
Instancing: this.out = new ObjectOutputStream(new BufferedOutputStream(this.requestSocket.getOutputStream())); this.in = new ObjectInputStream(new BufferedInputStream(this.requestSocket.getInputStream()));
Отправка:
this.out.writeObject(temp.toString()); this.out.flush();
Temp является JSONObject
Сервер:
Instancing: this.out = new ObjectOutputStream(new BufferedOutputStream(c.getOutputStream())); this.out.flush(); this.in = new ObjectInputStream(new BufferedInputStream(c.getInputStream()));
Отправка: this.out.writeObject(temp.toString()); this.out.flush();
Temp является JSONObject
UDP может отбрасывать пакеты, поэтому вы можете потерять данные. Будет ли это негативно влиять на вашу игру? Я мог видеть, что это может быть проблемой. – Carcigenicate
Ну, UDP не использует проверку ошибок как таковую, поэтому она должна быть более быстрой в теории, если вам не нужен точный поток информации. – Mena
Также возможно, что он отстает от вашего кода, в зависимости от того, как ваш код связи обрабатывает вещи. Вы очищаете свои потоки? В каком формате вы отправляете данные и т. Д. – Kayaman