--------------------------------------------------------------------------------
《星際》、《魔獸》、《文明》……這些都是PC游戲玩家們耳熟能詳的名字,可以說以這些游戲為代表的戰略游戲是PC游戲的典型代表,戰略游戲的玩家也是眾多PC游戲類型裡忠誠度最高的玩家。戰略游戲分為回合制和即時戰略兩類,兩種戰略游戲都有數量眾多玩家,而後者更因為緊張激烈的游戲性逐漸壓倒了回合制戰略游戲,近幾年來,一直在戰略游戲中占統治地位。
在“J2ME平台上開發網絡即時戰略游戲”,這個話題在現今大多數J2ME 開發者聽來無異於天方夜譚。即時戰略游戲名字的“即時”兩個字決定了復雜的運算和數據交互、穩定快速的網絡連接要求、龐大的資源和繪制任務,我們都知道J2ME設備的資源和性能都極為有限,現有GPRS網絡業不盡如人意……這些似乎都成為了在J2ME上開發網絡即時戰略游戲不可逾越困難。
困難實實在在的擋在我們面前,但中國三億手機用戶中蘊藏的龐大的潛在即時戰略玩家促使我們去克服這些困難,只要還有一點可能,我們也要去尋找一條跨過這些障礙的道路。怎麼樣才能在手機上實現網絡即時戰略游戲呢?
從性能和用戶量考慮,我們選擇諾基亞的60系列作為初期的開發平台。
我們不考慮采用HTTP協議,雖然它是J2ME設備中普遍采用的協議,但其相對SOCKET的低效性和本身是無連接協議決定了它不適合即時戰略這種游戲形式。從上表可以看出建立連接的時間要高出連接後的數據傳送時間許多,HTTP協議需要花費許多額外開銷在建立連接上;HTTP平均的數據傳送時間也要比SOCKET高許多。我們測試了大部分的60機型(7650, 3650, 3660, 6600, N-GAGE, N-GAGE QD),所有測試的機型均支持socket。
從上表可以看出,socket連接數據往返一次的平均時間在1 ~ 2秒間,這對回合制的戰略游戲或許足夠,但對即時戰略游戲來說還是太長了。有什麼辦法能大幅壓縮數據傳送的時間呢?
我們可以從server和數據包協議考慮。
以上測試的服務器是用Serverlet寫的,而serverlet是構建在Web server上的,那麼這個數據裡包含的服務器反應和處理的時間就不容忽略了,為了獲得更快的響應和處理速度,我們必須重新設計和構建游戲的專用Server。傳送的數據包大小也是影響速度的一個關鍵。平時大家開發J2ME的網絡應用,習慣於用文本流來傳送數據,因為大多數應用Server端都是基於Web Server,而且采用文本表示信息非常直觀,也便於Server處理,但對於J2ME平台和gprs網絡來說,沒有經過壓縮的文本還是浪費了一些。