搭建游戲伺服器需要用什麼框架
① 建立游戲伺服器
親,哪個版本?
外網聯機
No`1 "獲取伺服器IP"
相信所有聯機玩過游戲的玩家都知道,沒有什麼伺服器是沒有"地址"的,不論是區域網還是互聯網,每個伺服器都會有屬於自己的"地址".在玩家開服玩Minecraft的時候,想必大多數人都沒有良好的條件使用專用的伺服器.所以一般我們都會使用自家電腦開設伺服器.而這里所說的"地址"就是"IP".想要與對方聯機,必須要獲得開設伺服器那一方的"IP地址."
獲取對方"IP地址"的途徑有兩個.
1.登陸 www.ip138.com 查看您的IP
2.點擊"開始"-"運行" 輸入"cmd"-在新出現的窗口裡輸入"ipconfig"即可查詢到自己"IP地址"
No`2 "啟動游戲並進入伺服器"
打開游戲,點選"Multiplayer"並在文本輸入窗口輸入架設伺服器方的"IP地址"
內網聯機
No`1 "下載安裝Hamachi"
首先,內網並不能直接與外網相互進行區域網連接.那麼,我們可以利用軟體組建出一個虛擬區域網,並讓其他聯機玩家加入到這個組群中來,便可以互相聯機.那麼"Hamachi"這款軟體恰好可以滿足.
在搜索引擎上面搜索"Hamachi"下載安裝即可.本軟體本帖不提供下載.
No`2 "使用Hamachi"
在用戶首次開啟"Hamachi"的時候,軟體會自動生成一個"Hamachi IP".即軟體右上方的數字組.格式一般為"5.XX.XX.XX".這個"IP地址"就是開設伺服器者需要向聯機者提供.但如果要聯機,還需任意一方創建一個"新網路"輸入"ID"和"密碼",並且讓對方加入這個新建的網路組(告訴他網路組的"ID",點擊"加入新的網路"輸入"ID"即可).
No`3 "開始聯機"
完成"No`2"後,需要開設伺服器的那一方將自己的"Hamachi IP"給予另一方或幾方,然後打開游戲,點選"Multiplayer"並在文本輸入窗口輸入架設伺服器方的"Hamachi IP"即可聯機.
Beta版建服
在前面的"聯機教程"里,我曾提到過"架設伺服器方"等類似的短語.現在我就詳細的為大家說明如何架設伺服器.
首先,現在主流的伺服器分為兩種.一種是"官方伺服器",一種是"第三方伺服器"(即玩家自己製作的),我也會分別向大家說明介紹這兩種伺服器.
官方服務端
首先,我先為大家介紹"官方伺服器".顧名思義,此類伺服器是使用"Minecraft官方"所給予的"官方服務端"所架設的.這類伺服器由於沒有"第三方伺服器"那麼人性化,優化的那麼好.所以並不被大多數老手所接受.但是該類伺服器適合剛剛接觸"Minecraft"的玩家使用.
No`1 "下載官方服務端"
下載地址:官方服務端
找到"Minecraft_Server.exe",右鍵另存為下載.
No`2 "使用方法"
新建一個文件夾,將所下載程序放入.雙擊程序,將會自動生成一些文件.等到提示
"[INFO] Done (任何數字ns)! For help, type "help" or "?"
即可把自己電腦的"IP地址"給予需要聯機的人.讓其同過聯網模式連接到你的電腦.
② 如何在自己電腦上架設游戲伺服器
搭建游戲伺服器首先需要確定整個游戲程序的框架,這樣才能確定游戲伺服器所需要物理架構。
大型多人在線游戲伺服器,負載,穩定,效率(包括反饋延遲和開發效率)是這種伺服器基本要求。游戲伺服器,是一個會長期運行程序,並且它還要服務於多個不定時,不定點的網路請求。所以這類服務的特點是要特別關注穩定性和性能。這類程序如果需要多個協作來提高承載能力,則還要關注部署和擴容的便利性;同時,還需要考慮如何實現某種程度容災需求。由於多進程協同工作,也帶來了開發的復雜度,這也是需要關注的問題。
③ 手機游戲伺服器端一般用什麼框架和語言
拿PHP + MYsql架構來說
對於簡單的信息提供 信息處理分發 自然是不在話下的
在GET和POST獲得用戶的請求信息 也可以用REST
之後根據用戶的請求處理好返回的信息後包裝成XML或者JSON分發給用戶
譬如 網站客戶端 查詢系統啊什麼的
也不是說網路游戲後端不能用PHP
畢竟HTML5+PHP還是能實現很多東西的
當然PHP可以乾的活 Java Python GO 都可以干
但是太復雜的東西PHP就不合適了
具體採用什麼架構取決於你的應用需求和自己的熟悉程度
④ golang有哪些不錯的游戲伺服器框架
為什麼golang的開發效率高看
golang是一編譯型的強類型語言,它在開發上的高效率主要來自於後發優勢,不用考慮舊有惡心的歷史,又有一個較高的工程視角。良好的避免了程序員因為逗 { 需不需要獨佔一行 地這種革命問題打架,也解決了一部分趁編譯時間找產品妹妹搭訕的階級敵人。
它有自己的包管理機制,工具鏈成熟,從開發、調試到發布都很簡單方便;
有反向介面、defer、coroutine等大量的syntactic sugar;
編譯速度快,因為是強類型語言又有gc,只要通過編譯,非業務毛病就很少了;
它在語法級別上支持了goroutine,這是大家說到最多的內容,這里重點提一下。首先,coroutine並不稀罕,語言並不能超越硬體、操作系統實現神乎其神的功能。golang可以做到事情,其他語言也可以做到,譬如c++,在boost庫裡面自己就有的coroutine實現(當然用起來跟其他boost庫一樣惡心)。golang做的事情,是把這一套東西的使用過程簡化了,並且提供了一套channel的通信模式,使得程序員可以忽略諸如死鎖等問題。
goroutine的目的是描述並發編程模型。並發與並行不同,它並不需要多核的硬體支持,它不是一種物理運行狀態,而是一種程序邏輯流程。它的主要目的不是利用多核提高運行效率,而是提供一種更容易理解、不容易出錯的語言來描述問題。
實際上golang默認就是運行在單OS進程上面的,通過指定環境變數GOMAXPROCS才能轉身跑在多OS進程上面。有人提到了的pomelo,開源本來是一件很不錯的事情,但是基於自己對callback hell的偏見,我一直持有這種態度:敢用nodejs寫大規模游戲伺服器的人,都是真正的勇士 : ) 。
2、Erlang與Golang的coroutine有啥區別,coroutine是啥看
coroutine本質上是語言開發者自己實現的、處於user space內的線程,無論是erlang、還是golang都是這樣。需要解決沒有時鍾中斷;碰著阻塞式i\o,整個進程都會被操作系統主動掛起;需要自己擁有調度控制能力(放在並行環境下面還是挺麻煩的一件事)等等問題。那為啥要廢老大的勁自己做一套線程放user space裡面呢看
並發是伺服器語言必須要解決的問題;
system space的進程還有線程調度都太慢了、佔用的空間也太大了。
把線程放到user space的可以避免了陷入system call進行上下文切換以及高速緩沖更新,線程本身以及切換等操作可以做得非常的輕量。這也就是golang這類語言反復提及的超高並發能力,分分鍾給你開上幾千個線程不費力。
不同的是,golang的並發調度在i/o等易發阻塞的時候才會發生,一般是內封在庫函數內;erlang則更誇張,對每個coroutine維持一個計數器,常用語句都會導致這個計數器進行rection,一旦到點,立即切換調度函數。
中斷介入程度的不同,導致erlang看上去擁有了preemptive scheling的能力,而golang則是cooperative shceling的。golang一旦寫出純計算死循環,進程內所有會話必死無疑;要有大計算量少i\o的函數還得自己主動叫runtime.Sched()來進行調度切換。
3、golang的運行效率怎麼樣看
我是相當反感所謂的ping\pong式benchmark,運行效率需要放到具體的工作環境下面考慮。
首先,它再快也是快不過c的,畢竟底下做了那麼多工作,又有調度,又有gc什麼的。那為什麼在那些benchmark裡面,golang、nodejs、erlang的響應效率看上去那麼優秀呢,響應快,並發強看並發能力強的原因上面已經提到了,響應快是因為大量非阻塞式i\o操作出現的原因。這一點c也可以做到,並且能力更強,但是得多寫不少優質代碼。
然後,針對游戲伺服器這種高實時性的運行環境,GC所造成的跳幀問題確實比較麻煩,前面的大神 @達達 有比較詳細的論述和緩解方案,就不累述了 。隨著golang的持續開發,相信應該會有非常大的改進。一是屏蔽內存操作是現代語言的大勢所趨,它肯定是需要被實現的;二是GC演算法已經相當的成熟,效率勉勉強強過得去;三是可以通過incremental的操作來均攤cpu消耗。
用這一點點效率損失換取一個更高的生產能力是不是值得呢看我覺得是值得的,硬體已經很便宜了,人生苦短,讓自己的生活更輕松一點吧: )。
4、基於以上的論述,我認為採用go進行小范圍的MMORPG開發是可行的。
⑤ 怎麼架設游戲伺服器
讓菜鳥和窮人也能架成自己的征途伺服器:
首先你要忘掉網上發表的繁瑣的架設教程,那都是有意無意的騙子,按本方法保證能很方便地架起自己的真征伺服器。
一,機器需求。
內存必須大,建議4G,cpu要求不高,只要是64位的就行,比用amd
4200+,這套機器下來,價格在2000元元以下。
二,安裝RHEL
5.0,可以電驢上搜索,DVD版的,下載後打人刻在一張DVD盤上。
Red
Hat
Enterprise
linux
(Server
including
virtualization)系列號:2515dd4e215225dd
安裝時,選則上mysql
web
等服務,其它可以不選,玩不轉linux的人請關閉防火牆。
三,安裝成功後,進入圖形界面,界面很容易上手,在這里把網卡IP設好,這里假設為
192.168.0.200
然後
服務
中把
mysqld
httpd
選上啟動並保存。
四,把home.tgz放在根目錄,在圖形界把它解開,在home目錄里生成有server
ztgame
BAK三個目錄。
把/home/BAK/MySQL-shared-compat-5.0.45-0.rhel5.x86_64.rpm安裝上。
五,建立資料庫用戶zt10game
開通遠程和本地許可權
默認的root密碼是空,第一進入要設置root密碼,一定要把它記住。然後用以下命令建議名為zt10game密碼是12345678的用戶:
grant
all
privileges
on
*.*
to
'zt10game'@'localhost'
identified
by
'12345678'
with
grant
option;
grant
all
privileges
on
*.*
to
'zt10game'@'%'
identified
by
'12345678'
with
grant
option;
六,建立和導入游戲資料庫
在客戶機安裝SQLyog
Enterprise。把home.tgz中的BAK\sql解在本地機,按名字建立資料庫把把內容導入。
七,客戶機管理工具主要用兩個
SecureCRT
和
WinSCP3,前者是遠程操作的,後者是文件管理。用WinSCP3設置所有文件為777屬性。
八,用SecureCRT登錄,cd
/home
然後
./4g.sh等待游戲啟動。出現三個
可以進游戲啦,服務端啟動完畢。
九,客戶請用1.04加三合一補丁。
十,登錄器請用
可注冊的完美登錄器,這些網上都有。實在找不到的請回貼索取。
聲明:這個端是一個朋友弄的,一不小心被我拿到,現發出來供大家學習、研究,據說用綜合了網上可能找到的紫龍1.04
征途資料
做征途最新版這三個素材而成,學習者請在24小時後刪除,絕不可用於商業用途,發生法律糾紛由使用者承擔法律責任,本人概不責。(轉)