Avatar
0
nhân lê tuấn Beginner
Lựa chọn giao thức cho game idle/simulator: Websocket hay HTTP hay cả hai?
Em đang làm một game dạng idle/simulator/defense - thể loại SPRG.

Game mechanic là xếp formation một lượng character cho trước vào grid[row,column] tương ứng. Sau khi có được dữ liệu formation,

Lựa chọn đối thủ (có formation) và nhấn Tấn công. (xếp đội hình trước hoặc sau match tùy trường hợp - hoặc vào ranking thấy formation của đối thủ rồi mới tấn công, hoặc đi arena thì random chọn ra 1 đối thủ same ELO để tấn công - lúc này chỉ thấy id đối thủ, người chơi không thấy formation)

Request để tiến hành tấn công lần lượt theo turn cho đến khi một trong hai bên không còn character nào trong formation.

Response là kết quả thắng thua và Queue của mỗi turn (data của attacker và victims)

Client chỉ diễn hoạt lại Queue này.

Ý tưởng là vậy, nhìn chung em định làm HTTP vì nghĩ đến việc dễ test bằng dữ liệu thô mà không cần client side.

Nhưng rồi em thấy trong game-box nói riêng và ezyfox-server nói chung được thiết kế theo phương thức websocket.

Em nghĩ làm websocket cũng được thôi!? Nhưng vậy:

  • Liệu có test được không? (bằng postman chẳng hạn)
  • Liệu có cách nào vừa websocket (mọi hoạt động khác trừ battle) và chỉ HTTP cho battle? (như vậy có rườm rà không?)
  • Và còn vấn đề gì không?

.

Em cảm ơn

  • Answer
ezyfox-server http game-box websocket unity
Remain: 5
1 Answer
Avatar
monkey Beginner
monkey Beginner
  1. Thông thường thì em sẽ có cả http và socket trong 1 game, và phần http sẽ lo việc login và trả token cho client, client này sẽ dùng token để login vào socket, nhìn chung HTTP sẽ lo việc xác thực user, em có thể tham khảo bài viết này nhé.
  2. Vậy câu hỏi đặt ra là có cần thiết phải sử dụng HTTP cho các hoạt động trong game không? Thì sẽ cần phân tích 1 chút

  • Nếu như user không có tương tác gì với socket, nghĩa là không cần nhận notification, event, chat thì nên dùng HTTP, vì dù sao thì HTTP cũng vẫn dễ code hơn là socket vì HTTP đã quá quen thuộc rồi.
  • Tuy nhiên nếu user cần phải có sự tương tác hoặc nhận các trạng thái thay đổi từ server thì bắt buộc phải dùng socket, vì HTTP là giao thức ngắt kết nối, có HTTP/2 ra đời thi cho phép server push được dữ liệu xuống client, nhưng nó chưa thực sự phổ biến

  1. Liệu có test được socket với postman không? Câu trả lời là không, tuy nhiên em có thể viết test script để mô phỏng client, nó kiểu thế này và nó cũng không khó để viết

  1. Tuy nhiên theo anh nghĩ là ở thời gian đầu để cho đơn giản thì em chỉ nên dùng HTTP để login thôi, còn thì code hết ở socket cho đơn giản và tập trung. Khi game của em có nhiều người chơi cần scale thì lúc đó hãy tính tiếp em ạ.
  • 1
  • Reply
rất cảm ơn anh  –  nhân lê tuấn 1650478512000