Là trò chơi nhiều người chơi câm hoàn toàn khả thi? [đóng cửa]


7

Có thể tạo một trò chơi nối mạng, trong đó mỗi máy khách hiển thị một mảng pixel được gửi đến nó bởi máy chủ và gửi đầu vào trở lại máy chủ không? Điều này sẽ đơn giản hơn nhiều để thực hiện so với sử dụng dự đoán phía khách hàng, nhưng tôi sẽ tưởng tượng nó sẽ quá chậm. Nó sẽ có thể?


1
Bạn nên gửi toàn bộ trạng thái thế giới cho mọi khung hình hơn là gửi các bộ đệm pixel khổng lồ cho mỗi khung hình. Nếu yêu cầu tốc độ khung hình rất thấp, bạn có thể thoát khỏi việc gửi bộ đệm pixel nhưng sẽ thật lãng phí.
Vaughan Hilts

6
Có một dịch vụ gọi là OnLive thực hiện chính xác điều đó, cho các trò chơi hiện có. Nhưng họ có phần cứng máy chủ mạnh mẽ, khả năng kết nối cực nhanh và có thể là thuật toán nén video độc quyền để làm cho điều này khả thi. Vì vậy, nó không đơn giản và chắc chắn không rẻ hơn. Quan niệm rằng một cái gì đó như thế này sẽ dễ thực hiện hơn xuất phát từ quan niệm sai lầm của nhiều người, rằng viết mã mạng là một thứ cực kỳ khó làm, khó hơn nhiều so với mã hóa phần còn lại của trò chơi. Không phải vậy.
TC

1
Dự đoán phía khách hàng không trở nên cần thiết do kết xuất phía máy khách. Dự đoán phía khách hàng là cần thiết vì một số trò chơi được thiết kế để chơi trò chơi trên toàn thế giới và do tốc độ ánh sáng, độ trễ tối thiểu tuyệt đối giữa hai điểm ở phía đối diện trái đất là khoảng 133ms, chậm hơn khoảng 8 lần so với những gì cần thiết cho Trò chơi 60fps. Kết xuất phía máy chủ sẽ không giải quyết được vấn đề độ trễ, máy khách câm của bạn sẽ vẫn phải gửi đầu vào và đợi ít nhất 8 khung hình trước khi có thể kết xuất đầu ra.
Nói dối Ryan

1
Độ trễ không phải là vấn đề trong tất cả các trò chơi. Hầu hết mọi người có thể sẽ không chơi trò chơi Scrabble trực tuyến với độ trễ một giây.
dùng253751

1
Ví dụ, Ultima Online rất gần với điều đó - máy chủ gửi vị trí và loại đối tượng có thể nhìn thấy (mặc dù không phải đồ họa và đạo cụ tĩnh), máy khách chỉ gửi đầu vào dài 2-3 byte (di chuyển / tấn công / chính tả + hướng / mục tiêu / loại v.v.)
Tomáš Kafka

Câu trả lời:


5

Có, nó khả thi và không, nó không hiệu quả về chi phí. Hãy suy nghĩ về cách Netflix hoạt động, nó có thể phục vụ hàng triệu khách hàng với truyền phát 1080p và thậm chí 4k.

Tại sao nó không đáng để thử những gì bạn đề xuất với công nghệ hiện tại:

  1. Độ trễ, khách hàng sẽ cần gửi đầu vào của người dùng đến máy chủ và chờ phản hồi trực quan từ máy chủ, việc này có thể mất tới nửa giây cho khách hàng ở nước ngoài. Ngay cả khi chỉ mất 0,1 giây, nó làm cho trò chơi có vẻ chậm chạp, ít phản ứng hơn.
  2. Kết xuất chi phí: trước tiên, bạn sẽ cần GPU trên mỗi máy khách (?) Để hiển thị đồ họa. Còn về logic trò chơi và vật lý, bạn sẽ cần khá nhiều CPU và ~ bộ nhớ 3Gig cho mỗi người dùng.
  3. Nén: Khi Netflix gửi video, đó là định dạng nén. Nén video đúng lúc sẽ khó khăn, điều này sẽ góp phần vào độ trễ và chi phí phần cứng.

Bạn có thể có thể thoát khỏi việc chạy tất cả logic ở phía máy chủ; Tôi sẽ không bao giờ khuyên bạn nên chạy kết xuất ở phía máy chủ. Ngoài ra, bạn nên tận dụng sức mạnh của máy khách để phản hồi đầu vào (ngay cả khi bạn sửa nó sau đó) trước khi phản hồi trở lại từ dịch vụ để cải thiện tính lưu loát.


1
Tôi không đồng ý với việc sử dụng netflix làm mô hình so sánh - video được gửi qua netflix đã được nén rất cao và được tạo bằng tốc độ khung hình thấp, được thiết kế để nén. Những kỹ thuật được sử dụng cho phim là CÁCH quá đòi hỏi trò chơi phải khớp và do đó, trò chơi tập trung vào việc không nén (vì cáp HDMI mang TONS băng thông liên quan đến kết nối internet) và tốc độ khung hình nhanh (60hz là chuẩn, so với 24 hoặc 30 cho phim / netflix). Netflix cũng sử dụng bộ nhớ cache vì nhiều người dùng xem cùng một video - không thể cho các người chơi khác nhau vì họ cần thông tin khác nhau.
dùng2813274

@ user2813274: chính xác, có thông tin rằng Netflix sử dụng ~ 120 phiên bản tiền mã hóa của cùng một bộ phim với băng thông khác nhau.
Andriy Tylychko

Xin chào @ user2813274 Tôi nghĩ rằng tôi đã đề cập rằng việc nén đúng lúc không khả thi ở câu 3 trong câu trả lời của tôi. Bên cạnh việc nén, chi phí kết xuất rất cao. Có nhiều lý do tại sao không làm điều đó. Tôi liệt kê một vài. Nó không phải là không thể về mặt công nghệ. Nó đơn giản là vô lý.
AturSams

6

Đây chính xác là những gì NVIDIA đang làm với GRID . Ý tưởng là trò chơi chạy hoàn toàn trên một máy chủ. Máy khách gửi đầu vào bàn phím và chuột của họ đến máy chủ và nhận luồng video (được nén bằng codec video, không phải mảng pixel không nén) từ những gì máy chủ đang hiển thị.

Làm thế nào họ sẽ giải quyết vấn đề độ trễ? Tôi không biết, nhưng NVIDIA dường như khá tự tin rằng họ sẽ quản lý để triển khai cơ sở hạ tầng mạng sẽ cung cấp độ trễ đủ thấp để làm cho trò chơi trở nên thú vị. Ít nhất là họ dường như đặt cược rất nhiều tiền vào nó.


2
OnLive cũng làm điều này và có một thời gian.
Kevin Reid

1
@KevinReid Tôi đã thử chơi một game đua xe và một game bắn súng trên OnLive, những game đó không thể chơi được. Mặc dù họ đã kinh doanh trong nhiều năm, họ vẫn không giao sản phẩm đã hứa.
aaaaaaaaaaaa

6

Nó đã hoạt động rồi. Nhiều trò chơi đã chạy qua kết nối telnet. Ngay cả bây giờ bạn có thể chơi NetHack và nhiều trò chơi tương thích ASCII khác với bảng điều khiển 80x25. Điều đó có nghĩa là để chơi trò chơi khá nhanh, bạn nên vượt qua 2000 ký tự với tốc độ 2-5 mỗi giây. Đó sẽ là 10 kilobyte mỗi giây, điều đó là tốt.

Nếu bạn sẽ tăng cửa sổ mà bạn đang tìm kiếm, bạn sẽ đập vào tường rất nhanh. Nó không phải là tường băng thông, mà là tường trễ. Với gói tăng bạn gửi qua mạng, ứng dụng trả lời của bạn sẽ miễn cưỡng hơn. Nó trông giống như "cửa sổ độ trễ băng thông", trong khi tăng băng thông, độ trễ của bạn tăng lên do bộ nhớ đệm ở mọi nơi.

Các trò chơi hiện đại không thể giải quyết vấn đề này và thậm chí nhiều người chơi một lần, thậm chí là tốt nhất - như Counter-Strike hay Liên minh huyền thoại, có những hạn chế làm giảm chất lượng chơi nếu bạn không có máy tính được kết nối trực tiếp qua mạng LAN. Những game thủ giỏi đang chơi trên các giải đấu, khác với những người bình thường vì họ liên tục chơi với độ trễ <1ms.

Nhưng thiết kế mạng của Liên minh huyền thoại có khả năng đồng bộ hóa rất tốt, vì vậy nếu bạn hỏi họ, họ có thể chỉ cho bạn nơi bạn có thể mua hoặc sử dụng.

Khác thay thế - "vượt qua các yếu tố", có nghĩa là bạn đang truyền đồ họa vector qua mạng. Nhiều tiêu chuẩn được phát triển, nhưng ví dụ được biết đến nhiều nhất là "xorg-server". Tôi đã suy nghĩ một chút về việc viết một số người gửi-người nhận mạng đồ họa vector nhỏ đẹp, nhưng theo kinh nghiệm của tôi, tất cả những người đang phải chịu "băng thông nhỏ - cửa sổ độ trễ". Điều đó có nghĩa là thời gian sử dụng tốt nhất có thể đạt được với các máy tính được kết nối trực tiếp.

Nếu bạn chỉ muốn gửi hình ảnh qua mạng, có codec h264 với nguồn mở. Dự án FFmpeg đã làm việc trên các codec khác nhau. Nhiều gói mở tồn tại, có thể dễ dàng phân biệt bằng * VNC. Thông thường phần mềm này được sử dụng để có được quản trị từ xa.

Đối với các trò chơi tốc độ làm mới nhỏ, như "đối tượng ẩn", v.v., lý tưởng nhất là chỉ thực hiện tải xuống theo yêu cầu với bộ nhớ đệm. Trình duyệt cho phép điều này, nhưng tôi không biết nhiều về cách viết trò chơi trình duyệt.


+1 vì đã đánh bại tôi để chỉ ra các trò chơi telnet, đã được thực hiện cách đây hàng thập kỷ.
đăng lại
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.