簡體   English   中英

如何從客戶端只向服務器發送一個“字符”?

[英]How can I send just only one 'char' from client to server?

我正在嘗試制作在線游戲。 所以我需要將按下的鍵從客戶端發送到服務器。 例如,當玩家按下“wwwaaasdd”鍵時(向前三次、向左兩次、向后一次、向右兩次)。 但這些鍵不受限制。 它們可以是 1000 次。 我可以使用 write() 將這些字符發送到 Server,Server 將使用 readAll() 接收它們。 但這就像“wwwaasddd ...”。 我可以將它們一一存儲到 QList 中。 但是這些信息會非常多,我該如何使用它們。 你能告訴我正確的方法嗎? 例如在cs go 程序員是如何做到的?

與其將每個關鍵輸入都發送到服務器,不如考慮一下您實際需要的信息:

“玩家當前是否在移動?”

您的客戶端應該處理輸入,而您的服務器不應該關心甚至不知道處理什么輸入以及如何處理。 在您的客戶端中,當玩家按下您關心的鍵時,只需更改一些變量 object state 或任何對您有意義的東西,例如:

if (buttonPressed == mymoveconfig.forwardButton)
    mymovestate.isMovingForward = true;

然后只需將當前的 state 每幀發送一次到服務器:

if (mymovestate.hasChangedThisFrame)
    sendToServer(mymovestate);

並在您的服務器上接收並處理它:

if (clientHasNewMoveState(i))
    player[i].movestate = receiveMoveStateFromClient(i);

確切的實現取決於您使用的工具和第三方庫以及其他外部因素,並且 go 是否會超出此問題的 scope。 基本上:這取決於你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM