使用JAVA與SmartFoxServer來實現游戲伺服器概述

来源:http://www.cnblogs.com/ccmsalome/archive/2016/06/02/5553586.html
-Advertisement-
Play Games

SmartFoxServer 是專門為Adobe Flash設計的跨平臺socket伺服器,讓開發者高效地開發多人應用及游戲. 該伺服器主要用來創建多玩家游戲。並提供強大的製作工具,各種回合制游戲和實時游戲都可以勝任。 SmartFoxServer 支持的播放器從Flash player6版到最新的 ...


SmartFoxServer 是專門為Adobe Flash設計的跨平臺socket伺服器,讓開發者高效地開發多人應用及游戲. 該伺服器主要用來創建多玩家游戲。並提供強大的製作工具,各種回合制游戲和實時游戲都可以勝任。 SmartFoxServer 支持的播放器從Flash player6版到最新的Flash Player 9,並提供豐富的Actionscript 1.0, 2.0 and 3.0 APIs,同時也支持 Flex Builder 2 and 3. 該產品帶有詳細的幫助文檔, 大約 36 個帶源代碼的示例 還有強大的遠程管理工具。 SmartFoxServer專門用於多用戶聯機游戲開發,支持Flash/Flex/Air, Java, .Net, Unity3D, Apple iPhone 開發。 目前有3個版本:SFS Lite 此版本免費,只支持AS1.0 和 2.0 不支持AS3.0。可以迅速配置伺服器,適合初學者。當然,不支持伺服器擴展。 SFS Basic 此版本應該適合小型游戲開發,不支持伺服器擴展,收費產品。 SFS Professional 此版本為專業版,支持伺服器擴展,適合開發大型游戲,收費。  

總體來說,如果是想做一個比較簡單的虛擬現實服務,拿sfs來做還是很方便的,省去了前期構造伺服器網路,實現資料庫介面,數據同步等等一些基礎功能的時間,可以一上來就直奔主題,開發自己項目相關的功能.

 

    Sfs的介面封裝也比較簡單,基本上看到介面名就能知道是做什麼用的,參數是什麼意義,而且他的文檔也比較詳細,對於非伺服器開發專業人員也比較方便.sfs的定義也主要在此,比如他最早支持的flash客戶端api.

 

    而隨著sfs的成功,也開始將目標轉向了目前新興的iphone, android, sillverlight, unity等 客戶端.這次使用c# client api做了一個winform測試程式,使用起來也是非常的方便.

 

 

    第一次拿sfs做商業項目,也還是遇到了一些問題,總結一下,另外還有一些未完善的地方,後面再花時間繼續實現.

 

 

    CustomLogin的處理在zone extension里,必須先join room才能使用xt message.所以需要先寫一個zone extension,在這裡處理登錄驗證,註意驗證成功後需要向客戶端發送room list, 客戶端必須收到room list消息才能做後面的操作,這是sfs限制死了的.

 

本來我想在extension里讓客戶端驗證成功後直接join room,未果,調試良久才發現,客戶端未收到room list,不能join room.

 

 

    Sfs的user variables只支持bool, integer, string類型,其他類型的數據不能同步.這個問題困擾了我差不多一個小時,最後在客戶端一步步跟蹤屬性同步過程時才發現,其他類型的variable都被忽略掉了.

 

    於是,為了同步float坐標數據,我不得不加上了float.toString(),數據量又大了不少.

 

 

    Sfs消息定義的方式,不要像sample里那樣,直接寫字元串名字,改用枚舉或者常量定義.每個extension name和command name都只有一個位元組,在枚舉中也可以定義出128個,完全夠用.

 

    這樣可以省不少帶寬占用量,可以在client上開啟debug message開關,看一下一個簡單的消息發送會占多少位元組.

 

 

    如果想同時在eclipse和netbeans下對一個項目進行開發,註意文件編碼的問題.eclipse下創建的文件預設編碼為gbk,netbeans下創建的文件預設為utf-8,而在eclipse下導入文件時他並不會自動檢測文件的編碼,所以,你需要在文件的屬性里手動設置一下編碼方式.另外,netbeans下要在文件中顯示中文字元只能使用utf-8,使用gbk會出亂碼,如果出現此類錯誤,修改一下文件編碼方式以及指定新的編碼即可.

 

 

    要關於利用IDE編譯環境.在項目最開始的一周里,我使用trace來進行調試,一次次的通過trace列印出中間變數,然後再修改代碼,再啟動伺服器,再看trace信息……在我快要陷入崩潰絕望之時,終於,決定建一個好用的集成調試環境.在嘗試eclipse失敗後,我成功的在netbeans中打下了斷點,單kh步跟蹤,於是,整個世界變得清靜多了……

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • OC import和@class的用法和區別 1. import會包含這個類的所有信息,包括實體變數和方法,而@class只是告訴編譯器,其後面聲明的名稱是類的名稱,至於這些類是如何定義的,暫時不用考慮,後面會再告訴你。 2. 在頭文件中, 一般只需要知道被引用的類的名稱就可以了。 不需要知道其內部 ...
  • 具體效果 ...
  • 1.什麼是3G 3G,全稱為3rd Generation,中文含義就是指第三代數字通信。 所謂3G,是指將無線通信與國際互聯網等多媒體通信結合的新一代移動通信系統。 3G只是一種通信技術標準,符合這個標準的技術有WCDMA、CDMA2000、TD-SCDMA三種制式。中國聯通使用的是WCDMA(世界 ...
  • 本次博客是一篇總結性質的博客,總結的是各種創建控制器的方式以及一些需要註意的操作。 1、通過storyboard創建控制器 正如我上一篇博客中所說,當 Main Interface 沒有選定的時候,我們一般只能通過代碼來創建一個 UIWindow,不再使用系統創建好的 Main.storyboard ...
  • Linux文件的訪問許可權* 在Android中,每一個應用是一個獨立的用戶* drwxrwxrwx* 第1位:d表示文件夾,-表示文件* 第2-4位:rwx,表示這個文件的擁有者(創建這個文件的應用)用戶對該文件的許可權 * r:讀 * w:寫 * x:執行* 第5-7位:rwx,表示跟文件擁有者用戶 ...
  • github地址 先安裝homeBrew command script import /usr/local/opt/chisel/libexec/fblldb.py WTF?沒有許可權?嘗試提升許可權安裝 sudo brew install chisel 直接報錯,拒絕執行。 嘗試 command sc ...
  • 最近仿照QQ聊天做了一個類似界面,先看下界面組成(畫面不太美湊合湊合唄,,,,): 其中聊天背景可以是一個LinearLayout或者RelativeLayout裡面存放的是ListView(將ListView的分割線設置成透明:android:divider="#0000"否則聊天界面會顯示出分割 ...
  • #單元測試junit* 定義一個類繼承AndroidTestCase,在類中定義方法,即可測試該方法 * 在指定指令集時,targetPackage指定你要測試的應用的包名 <instrumentation android:name="android.test.InstrumentationTest ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...