簡體   English   中英

在服務器/客戶端程序中放置邏輯的位置

[英]where to place logic in a server/client program

我正在用Java創建一個簡單的基於文本的多人游戲。

我想要一個服務器程序,它是每個客戶端之間所有通信的中心。

我想知道應該將大多數邏輯放在哪里? 客戶? 服務器? 服務器應該僅僅是提供客戶端請求的任何信息的程序嗎? 還是客戶端程序只是將命令從用戶轉發到服務器,並讓服務器從那里決定要做什么。

同樣,當前,客戶端和服務器套接字都簡單地使用ObjectOutputStream / ObjectInputStream在彼此之間來回發送字符串“命令”,以確定用戶正在請求什么命令。 客戶端和服務器之間的首選通信方式是什么? XML是否包含類似sql的語法?

例如:假設客戶端A要攻擊客戶端B。當前:我從客戶端向服務器發送一個如下所示的字符串

“攻擊b 1321”

1321 =客戶端B在數據庫中的位置。

這個問題太寬泛,無法給出明確的答案。 話雖如此,任何具有良好黑客技巧的不誠實玩家可能會顛覆的計算都應在服務器上進行或至少在服務器上進行檢查。 例如,“第一人稱射擊”可能會在客戶端上進行所有物理計算,並將每次射擊的結果報告給服務器,以便它可以中繼到其他客戶端。 服務器不必檢查客戶說是未命中的鏡頭,但是它至少需要對客戶說是未命中的鏡頭進行基本的碰撞檢測。

當然,應該在服務器上做出是否允許玩家拾取資源的決定。

我的基本經驗法則是嘗試使服務器免於不必要的計算,但要進行那些需要安全性或服務器上整體即時游戲狀態的計算。

暫無
暫無

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

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