Tôi hiện đang làm việc trên trò chơi nhiều người chơi trực tuyến ac # trong thời gian thực. Mục đích là để có kết nối dựa trên máy khách / máy chủ sử dụng giao thức UDP. Cho đến nay tôi đã sử dụng UDP cho các chuyển động của người chơi và TCP cho các sự kiện (người chơi bắn súng, người chơi mất mạng) vì tôi cần chắc chắn dữ liệu đó sẽ đến tất cả người chơi được kết nối với máy chủ. Tôi biết rằng UDP được cho là 'không đáng tin cậy' và một số gói có thể bị mất. Nhưng tôi đã đọc ở khắp mọi nơi để không bao giờ trộn lẫn TCP và UDP vì nó có thể ảnh hưởng đến kết nối.
Câu hỏi chính là tôi nên tổ chức mạng lưới của mình như thế nào?
UDP không có kết nối, tôi nên cứu ai là ai? Tôi có nên lưu địa chỉ ip của khách hàng trong danh sách không?
Tôi nên sử dụng TCP cho các sự kiện quan trọng hoặc sử dụng UDP? Nếu tôi cần sử dụng UDP, làm thế nào tôi có thể chắc chắn rằng dữ liệu sẽ không bị mất?
Bằng cách sử dụng cả TCP và UDP, tôi cần lưu cho mỗi người chơi IP của họ trong danh sách (đối với UDP) và TcpClient được kết nối trong danh sách khác (đối với UDP). Làm thế nào tôi có thể thay đổi điều đó để có hiệu quả hơn?