① Lua 為什麼在游戲編程領域被廣泛運用
Lua雲風在九十年代就開發游戲引擎並建設個人網站(雲風工作室),在游戲開發領域聲望高。網易《大話西遊II》是首個在市場上取得成功的國產網路游戲。所以後來國內游戲開發行業紛紛受此影響採用Lua。
《大話西遊》用的腳本語言是微軟的JScript(javaScript的一種方言),維護不便bug多,受系統IE版本的影響兼容性差。所以2002年網易開發《大話西遊II》時,決定在客戶端內嵌別的腳本語言。當時該項目技術負責人雲風認為要挑不出名的語言,讓做外掛的人搞不懂(《大話西遊》一代被外掛《月光寶盒》搞死了),於是就選擇了Lua 4.0。
現在,2013年,Lua和其他流行腳本語言python、JavaScript各分秋色:
語言規范精簡、運行時庫小。其創始人稱Lua是穿過針孔的語言(Passing a Language through the Eye of a Needle),他加入的任何語言特性都能用C API簡單的調用。
易於創建受限環境,C語言一端可以控制暴露給Lua腳本的任何功能。我猜這也是《魔獸世界》的插件語言選用Lua的原因。
性能方面,雖然仍然比Python快,但不如V8(谷歌的JavaScript實現)。
② 淺談游戲腳本策劃的職能
腳本,是使用一種特定的描述性語言,依據一定的格式編寫的可執行文件,又稱作宏或批處理文件。下面我們就來談談游戲腳本策劃究竟是干什麼的。想了解更多相關資訊請持續關注我們應屆畢業生培訓網。
游戲腳本策劃主要干什麼?
腳本策劃近幾年逐漸被重視。越來越多的引擎,越來越多的游戲,對游戲腳本的定義和開發的支持,讓腳本的功能越來越強大,也成為游戲策劃開發游戲的利器之一。 在介紹腳本策劃之前,我有必要先解釋一下什麼叫腳本。
通俗點說,腳本就是利用程序實現一個簡單的循環。放在游戲中的具體例子就是:大家都知道,網路游戲中的練級場所會定時、定點刷新怪物。但這怪物是怎麼刷新出來的?當然不是由GM上線刷新,而是利用事先設計好的腳本,系統將自動按時間和地點刷新怪物。 而腳本策劃所要做的,就是製作游戲中不同的腳本,比如上面提到的怪物刷新腳本、任務腳本等等。
游戲腳本策劃是策劃團隊中的“程序員”
腳本策劃一般需要有一定的編程基礎,因為腳本本身其實就是一種程序。
腳本策劃的工作內容比較單一,屬於偏執行方面的策劃,是策劃團隊中的“程序員”,主要負責游戲中腳本程序的編寫。
腳本策劃類同於程序員但又不同於程序員,因為會負責游戲概念上的一些設計工作。通常是游戲設計的執行者。因此游戲腳本策劃必須要有編程功底,他的工作是任務等的腳本編寫,以及管理程序提供的各種需要策劃維護的腳本介面。
腳本語言就是游戲世界得以運行的基石
如果說開發語言是游戲程序得以運行的基石,那麼腳本語言就是游戲世界得以運行的基石。一切劇本、圖片、音樂、動畫等皆是由腳本語言整合在一起並由程序解釋執行的。所以可以說腳本是程序與劇本之間的橋梁,所以也是主程序與劇情負責必須共同掌握的部分。
腳本是如何形成的?程序設計的本身拓展和設計越來越復雜,而且分劃出不同的類型,同時在繼承發揚中丟失著,底層的構架被越來越多的人所拋棄,程序的東西,讓人望而卻步,無法駕馭,而腳本就如程序管理員一樣抓住程序設計本身一些最基本的構成思路和運行機理,是一種總結概括,把重點提煉,把相關歸類,把過程簡化,保留一般的`規則。 腳本簡單地說就是一條條的文字命令,這些文字命令是我們可以看到的(如可以用記事本打開查看、編輯),腳本程序在執行時,是由系統的一個解釋器,將其一條條的翻譯成機器可識別的指令,並按程序順序執行。因為腳本在執行時多了一道翻譯的過程,所以它比二進製程序執行效率要稍低一些。
各個游戲公司常用的腳本有:LUA和PYTHON
有些游戲公司的腳本,是由公司程序員自己編寫的一種開發工具。
常用游戲腳本中,目前應用比較廣泛的有幾種,一個是LUA,一個是PYTHON。
LUA腳本,在魔獸世界中發揚光大(後來的征途中好像也採用LUA腳本),好多游戲都開始接受並且學習這種腳本知識,以期能應用到自己游戲中,游戲腳本的好處就是,能夠快速的調動一些游戲資源,利用自己手上的關鍵欄位進行指揮,統領,運營部門最適用。
lua腳本與python腳本對比分析
1、兩者的定位不同。python的定位在於自身的獨立開發,即是說python定位於自己能解決所有的問題。lua定位在與其它的代碼,尤其是C++代碼進行相互配合的編譯,單獨的Lua本身沒有任何的意義。
2、站在解決問題的角度上看。python依靠自身越來越強大的庫,讓編程者能實現越來越多,越來越復雜的問題。lua本身則必須與其它的編譯語言結合,才能解決問題。以C+++lua來舉例。單獨的C++,因為C++的復雜性,在其解決問題提供方便的同時,也給程序員帶來了很大的麻煩,這些麻煩主要有兩個方面:1,C++本身,特別是能用好C++,對程序員就來說就是一個很高的要求。2,在解決復雜問題時,C++程序結構的復雜性和邏輯實現的復雜性,給程序員對程序的改進和維護帶來了很大的麻煩。而C++與Lua的結合,讓C++可以只負責為lua提供各種基本的功能函數庫,而Lua調用這些庫來實現各種邏輯功能。這種分工可以讓程序員將程序中的基本代碼庫和邏輯實現代碼進行分離,使程序的效率和可維護有了很大的提高。所以,如果真的要站在解決問題的角度來對python和lua進行對比的話。實際上,是C++與python進行對比,而與lua無關。
3、python與C++對比,我覺得python與C++對比的優勢就在於其所提供的基本庫,大大的降低了程序復雜度與可維護性對程序員本身的要求。比如,同樣的功能,如果是C++來做的話,可能其程序員必須具備三年的經驗,如果是python來做,而python又有解決問題所需要的庫的話,一個具有一年程序經驗的程序員可能就能完成了。但是,同樣的,如果是C++與Lua結合來解決問題的話,可能就只需要半個高級程序員和一個只有c語言一年經驗的程序員就可以了。半個高級程序員負責提供lua的函數庫,另一個程序員,只需要用這些代碼庫實現邏輯就行了。
綜上所述,C+++lua的開發模式,和python源代碼庫開發+python腳本開發模式其實是一樣的。但是站在程序員的角度上來說,C+++lua就更為簡單一些,因為除去基本的lua解釋代碼外,C++可以為lua動態提供各種函數庫。而python程序員則必須受制於python所提供的各種功能庫。所以,如果解決一些具有普遍性和重復性的問題時,python是有優勢的,因為有很多的代碼可以不用重寫,而C+++lua則必須重構。如果是解決一些非普遍的問題,如果python本身沒有提供解決這些問題的庫的話,python程序員,就必須走回C++的老路。
③ 怎麼做wow單機版 越詳細越好
准備工具:1:裝有windows98/2000/xp/2003系統、內存至少256M的電腦一台
2:魔獸伺服器端一個
3: mysql4.0.2(不要用最新的5.0,有問題)
mysql-control-center0.9.4
MyODBC-standard-3.51
(上面3個都是架設伺服器用的資料庫端和資料庫管理端:mysql4.0.2是資料庫主程序,mysql-control center0.9.4是資料庫管理界面程序,MyODBC是MySQL與Windows數據服務的連接驅動)
當然還有wow beta3客戶端和3734(就是0.8.0)補丁
需要的資料庫有:
25M的python.sql
7M的python.sql
幾個1k左右的commands.sql,creatures_mov.sql,gmlogin.sql,npc_text.sql,sh.sql,trainers.sql
1. 先安裝mysql,mysqlcc,ODBC然後重起。
重起後看看右下的系統托盤里有沒有個紅綠燈的圖標,沒有的話運行c:\mysql\bin\winmysqladmin.exe
開始架伺服器:
運行 mysqlcc ,新建伺服器:
name:python
host:localhost
user:root
password:空
2. 確定後雙擊「 python 」,右鍵點擊 DataBases ,新建資料庫取名 wow 。
右擊User Administration,新建用戶。名字隨便,源衡蘆Hose:localhost,密碼自己記好。
選上All Privileges,右邊在Global Privileges和wow上打對勾,應用。
再把系統自動添加的@localhost用戶的All P....和Glo...,wow上也打上對勾應用。
3. 不關程序,到控制面板,管理工具,服務:mysql。
停止服務,在參數空白行里輸入
safe_MySQLd -O key_buffer=16M -O table_cache=128 -O sort_buffer=4M -O record_buffer=1M -O max_allowed_packet=30M
啟用服務。
4. 回到mysqlcc,右鍵點擊/Databases/wow,開啟新窗口。
點擊新開窗口上面的SQL按鈕,再選擇菜單里的雹帶文件\打開...
打開25M的python.sql(載入需要好長時間)然後點擊按鈕欄里的「!」按鈕。
看執行成果,沒有X的就是成功了,有錯誤的話刪掉wow資料庫,從「3.」處重新開始。
5. 打開控制面板\管理工具\ODBC數據源(不同的操作系統名字可能不同)
選擇:系統DNS,添加,MySQL ODBC3.51 Driver。
Date Source Name:(2.里建立的用戶名)
Host/Server Name(or IP):localhost
DataBase Name:wow
User:(2.里建立的用戶名)
Password:(2.里建立的密碼)
6. 啟用python伺服器,但停止wow庫。把7M的python.sql和N個1K的.sql文件拷貝到c:\mysql\bin\
運行c:\mysql\bin\mysql.exe
在命令行里輸入\. python.sql
\. commands.sql
依此類推...
7. 載入完畢後啟動wow庫,運行wowpython0.89,輸入:
host 127.0.0.1(或者你的外網IP或者區域網IP)
lanhost *.*.*.*(你的區域網IP)
db localhost (你剛才「2.」建立的用戶名) (你輸入的密碼) wow
start
出現伺服器開始運行的提示後就可以運行游戲了。
注意事項:只是想單機玩的host地址隨便,lanhost用開始菜單/運行/cmd/ipconfig看到內網地址。
想區域網玩的host,lanhost都用內網IP。想架外網伺服器的就要知道自己的外網實際IP了。
8. 自己玩或者局域攔尺網內玩游戲,進游戲登陸界面後按「~」打開控制台,輸入「realmlist (你在「7.」所輸入的內網IP)」使用wow表account項裡面的GM賬號登陸游戲。
OK!架設完畢!
scripts/items.scp(物品資料與代碼)scripts/creatures.scp(npc資料與代碼)saves/players.save(玩家資料)scripts/areatrigge
scripts/items.scp(物品資料與代碼)
scripts/creatures.scp(npc資料與代碼)
saves/players.save(玩家資料)
scripts/areatriggers.scp(傳誦換場景的資料)
scripts/emu.conf(模擬器連接資料,在這里修改IP,要讓別的電腦也進來玩就改成你的IP)
saves/world.save(刷NPC的資料)
scripts/quests.scp(任務的資料)
scripts/classes.scp(應該是屬於初始的天賦)
scripts/spellcost.scp(技能代碼)
scripts/pages.scp(npc說話定義)
scripts/gameobjects.scp(游戲中物體名稱,模型號定義)
scripts/creatures.scp(npc定義)
scripts/defines.scp(應該是所有代碼編號的定義。如在spellcost.scp中寫[spell10]price=120也就是說,學習SPELL_EFFECT_HEAL(在defines.scp中的208行)需要120銅幣。)
--------------------------------------------------------------------------
emu文件
[system]
server_name=LocalServer——>伺服器名稱
server_rules=PvP
http_host=127.0.0.1——>HTTP注冊頁面(需先搭建IIS伺服器)
http_port=8080
rs_host=127.0.0.1——>填你IP
rs_port=3724
ws_host=127.0.0.1——>填你的IP就對啦
ws_port=8085
world_sleep_ms=500——>照字面來看是白天的時間
network_sleep_ms=100——>那麼這個就是晚上的時間啦
connection_timeout=300——>傳說卡號和這個有關改小就對啦
loglevel=1
save_text_ppoints=yes——>傳說修改經驗倍數要改成yes
spawns_pes_distance=64.0
max_players=100——>最大玩家數
這行貼不上來——>不知道干嗎的應該不能少就是了
[game]
linger=20——>刷怪間隔秒
npc_corpse_delay=60——>怪物屍體存在時間妙
autosave_time_minutes=30——>自動保存間隔秒
health_growing_rate=1——>回血率越大越塊
mana_growing_rate=10——>回魔率
energy_growing_rate=10——>回能量
delete_not_used_accounts_days=0——>刪除多少天未登錄的帳號
[bot]
rs_host=192.168.0.1-------------->這里填本地IP
rs_port=3724
account=WAD2
password=TEST
照以上改法,傳說內外網都能連上。
--------------------------------------------------------------------------
DB2Script文件夾中各scp文件含義——quests.scp篇
定義如下:
[quest編號]任務編號
name=SharptalonsClaw//任務名
desc=//任務提示
levels=2530//任務限制等級
zone=39//任務區域
quest_flags=08//任務標記類型
src_item=16305//任務完成所需物品編號
reward_xp=2450//任務獎勵經驗
reward_choice=60761//任務獎勵物品選擇:編號,數量
reward_choice=30701//同上
reward_choice=601//同上
deliver=1821//交付物品:編號,數量
reward_gold=25//任務獎勵金錢:銅幣
kill=610//任務需要殺目標:編號,數量
——pages.scp篇
定義如下:
[page編號]話語編號
next_page下一個話語的編號
text話語內容
——spellcost.scp篇
定義技能學習需求,含義如下:
[spell編號]//技能編號
reqspell=72//學習所需技能
price=1100//學習所需金錢,銅幣
npc訓練師那裡的限制吧。把所有的reqspell去掉,把price都改成1……
——items.scp篇
對游戲裝備的定義,含義如下:
[item編號]
skill=0//熟練度
stackable=1//可堆疊數量
name=WornShortsword//名稱
class=2//類型編號,對應defines.scp中定義
subclass=7//類別編號,對應defines.scp中定義
model=1542//模型編號
quality=1//品質
buyprice=35//買入價格
sellprice=7//賣出價格
inventorytype=21//存儲類型
classes=07FFF//使用職業限制
races=01FF//使用種族限制
level=2//物品等級
reqlevel=1//需求人物等級
damage=130//傷害
delay=1900//延遲
language=1//語言
material=1//表面貼圖
sheath=3//屬性值,這里指大武器,左手裝備
rability=20//耐久度
——gameobjects.scp篇
這個文件是對游戲中出現的怪物的定義,其含義如下:
[gameobj編號]
name=OldLionStatue//怪物名
type=2//怪物類型
model=6//所用模型
sound0=43//第一種聲音
sound1=73//第二種聲音
漢化的話,應該是在這個文件吧
——defines.scp篇
Script文件夾中的定義,都由defines.scp文件開始。這里定義了幾乎所有東西的編號。首先我們來看看這個文件的內容。
按順序是:
races節:定義種族編號。
classes節:定義職業編號。
powers節:定義能量類型編號。
classes節:(注意和前面的區分)定義裝備類型編號。
subclasses節:定義裝備類別編號。
itemtypes節:定義物品編號。
(ps:前面三個地方很容易搞混,不知道寫的時候是怎麼想的*_*)
sheathtypes節:定義武器屬性編號,如單手,雙手
slots節:定義飾品編號
creaturetypes節:npc類型編號
(接下來的節沒有名稱,汗!我們以數字n來代替)
1節:世界語言定義編號
2節:技能(魔法)效果編號定義
3節:技能(魔法)動作模型編號定義
4節:人物狀態編號定義
5節:游戲物品(城市中)編號定義
6節:表情編號定義
7節:人物動作動畫編號定義
8節:物品動畫編號定義
9節:(不是很明白)推測是砍人動作動畫的編號定義
10節:似乎是射箭動作動畫的編號定義
11節:鎖類型編號
12節:技能訓練師的編號定義
這個文件中定義了游戲世界中幾乎所有東西的編號,在下面的文件中出現的編號,都可以在這里找到。要注意的是,編號採用了2種方式。
首先是在每一節下面都是從1開始編號的。對應的調用應該是在scp文件中對應變數,寫出這個編號。如spell,在spellcost.scp文件中,寫[spell1]就表示這個魔法的效果對應2節下的編號1,同時對應3節下的編號1。
第二種是幾節都擁有順序的編號,7至10節的動畫編號定義就是這樣。在第7節中,是寫出了0x0一直到0x86,8節中之寫出了0x87,後面應該是使用得偏移量寫的,如8節中寫1就表示0x88。以此類推。
——classes.scp篇
classes.scp包含對於種族的初始化定義。以暗夜精靈為例,其含義如下:
startmap=1//Kalimdor出生地圖編號
startzone=14//Teldrassil出生地點編號
startpos=10311.3832.4631326.411.0出生地點位置
startstats=1725192020//Str,Agi,Stm,Int,Spr初始化屬性值
bodymale=55推測是男性身體高度值
bodyfemale=56推測是女性身體高度值
skill=98300300//Language:Common指種族語言
spell=668//Language:Common指spell編號
skill=113300300//Language:Darnassian指種族語言
spell=671//Language:Darnassian指spell編號
spell=019CB//Attack指spell編號
spell=81//Dodge指spell編號
skill=1621300//Unarmed
spell=203//Unarmed指spell編號
spell=20580//Shadowmeld指spell編號
spell=20582//Quickness指spell編號
spell=20583//NatureResistance指spell編號
spell=20585//WispSpirit指spell編號
//RangeAttacks遠程攻擊
spell=75//AutoShot指spell編號
spell=2764//Throw指spell編號
skill=451300//Bows
spell=264//Bows指spell編號
skill=461300//Guns
spell=266//Guns指spell編號
skill=1761300//Thrown
spell=2567//Thrown指spell編號
上面的定義中,spell是指資料庫中技能魔法的編號,而skill是指的熟練度。但是我不明白skill中3個數值的表示是什麼意思。達人指教!
——areatriggers.scp篇
areatriggers.scp文件包含世界跳轉的位置。
其含義如下:
[areatrigger編號]
note=注釋
pos=所屬地圖x坐標y坐標z坐標
topos=目標地圖目標x坐標目標y坐標目標z坐標
totrigger=目標轉換點
[areatrigger編號]定義轉換點的編號,在totrigger中使用。
note,注釋
pos,轉換點所在位置
topos,目標轉換點所在位置
totrigger,轉換到某個轉換點
一般更新都是這里的東西了看看吧也許有你想要的答案
--------------------------------------------------------------------------
如果用戶被卡主,作為GM怎麼辦?
就是說,客戶端中斷了,再連接就說此用戶已經在線了,不能登陸,作為GM怎麼解決?
我以為刷新後就可以了,結果等了半個小時也不行,怎麼辦呢?
connection_timeout=300的值設置小一點,單位是秒,一般1分半到兩分鍾就行了!
產生新NPC的方法
先知道相應NPC模板代碼比如99999
用GM賬號跑到要放導師的地方:
.addspawn99999在GM站立的地方安放一個NPC的刷新點。
.setspawndist00該刷新點刷新的怪物自主移動范圍為0-0
.setspawntime11該刷新點刷新怪物的時間間隔為1-1秒。
出現小人既刷新點
等幾秒鍾出現啦
清除刷新點的GM命令
游戲里選定你要刪除的小人,輸入.del
改經驗:
save_text_ppoints=yes
delete_not_used_accounts_days=0
cript目錄下的startup.tcl文件
setxp[expr{5*$victim_level+5}]這句
前面的5是倍數,後面的5是直接得到的經驗,改哪個都可以
if{$lvldiff<=-5}{return0}
-5是怪少與你5級就沒經驗,你可以該多點,這樣就不會打一隻怪升了很多級再打沒經驗了
關於HP,MP及存檔不能正常設置:
1,打開DB2.0安裝文件夾
2,打開scripts子文件夾
3,打開emuCONT文件,按照「辦法」修改。
大家可能只是修改了主文件夾下的emuCONT,所以造成無法存檔現象。
如何保存
CTRL+C之後過幾秒顯示saveing的提示後會自動關閉請注意
或者GM號進游戲打.save
如何聯機或者說如何做伺服器讓人玩
琢磨一下emu文件上面有詳細解釋
我想把卡號的移動到我身邊該用什麼命令呢?
.goname人物名-你飛到該人物身旁
.namego人物名-把該人物拉到你身旁
我想玩生產系的。請問怎麼樣改資源的刷新速度
舉個例子來說吧:
輸入
.addspawn
.setspawngo1731//加一個coppervein銅礦
.setspawntime100200//100-200秒重新生成,你改小就可以刷的快了
.setspawndist100200//每次重刷的距離在100-200尺,這可以避免礦一直出現在同一地方
server_name=LocalServer——>伺服器名稱
http_host=127.0.0.1——>HTTP注冊頁面(需先搭建IIS伺服器)
delete_not_used_accounts_days=0——>刪除多少天未登錄的帳號
(1)伺服器:先去本論壇的[伺服器下載區]下載最新的JAVAWOW伺服器或者WAD伺服器,如果您使用的是以前的伺服器版本,強烈建議你重新下載。因為技術是一個發展的過程,越新的伺服器功能越強大,BUG也越少。
(2)客戶端:建議購買9C發售的中文客戶端,至於為什麼,不說也知道的。如果你英文實在很好,好到每個物品每個NPC你都能翻譯的話,那就可以不聽我的勸告了。官方網站上有客戶端下的。嫌下得慢的話可以去買,很便宜的。
(3)兩個都安裝好,不一定要在同一目錄。
(4)修改客戶端目錄下的 realmlist.wtf (用記事本打開)文件中的 IP地址為自己的IP,例如 單機的就改成 set realmlist 127.0.0.1 要進區域網的 就改成 set realmlist xxx.xxx.xxx.xxx 其中的xxx.xxx.xxx.xxx是你的區域網IP。
(5)配置你的IP設置 ,啟動伺服器文件夾下的 IP-Configuration.exe 修改,把所有看得的IP全改成自己的。
(5)好了,現在可以啟動伺服器了。主程序是WoWemu.exe或者是No Read map 1.3.1V1.8.exe。
(6)啟動後會出現一個DOS窗口,稍等,......
(7)9:26:13:M:Loading world...
9:26:13:M:Loading PP...
9:26:13:M:done, 365635 ppoints.
好了,到這里就完全啟動好了。
(8)打開http://你的IP:8080 注冊賬號。單機的話是http://127.0.0.1:8080,也可以用伺服器文件夾下的Account Creator.exe 創建賬號和GM賬號。
(9)區域網玩家要進你的伺服器的機器,必須按第四步中的方法修改
set realmlist 你的IP 。
(10)好了,邀請你的好友一起體驗吧
. usr hp 〈hp〉 〈max hp〉 : 改變HP選擇的用戶唯一.
.usr mana 〈mana〉 〈max mana〉 : 改變選擇的用戶mana .
.usr gold 〈num〉 : 改變選擇的用戶金錢.
.usr lvl 〈num〉 : 改變選擇的用戶的標准.
.usr speed 〈num max 30〉 : 改變選擇的用戶的speed.
.usr wspeed 〈num max 30〉 : 改變選擇的用戶的wspeed.
.usr scale 〈num .02-4〉 : 改變選擇的用戶的 scale.
.usr mount 〈id 1-64〉 : 改變選擇的用戶的登入.
.usr exp 〈exp〉 : 改變選擇的用戶的EXP.
.usr aura 〈aura id〉 : 改變選擇的用戶的aura.
.usr spell 〈spell id〉 :增加一個咒語 .
.usr skin 〈skin id〉 : 改變選擇的用戶的Skin.
.usr talentxp 〈num〉 : 增加天分點.
.gm pass 〈oldpass〉 〈newpass〉 : 改變您真正的通行證為帳戶lvl .
.gm off : 取消顯示〈GM〉用戶
.gm on : 增加顯示〈GM〉用戶
.gm kick 〈name〉 : 踢命名的用戶.
.gm save : 保存.
.gm announce 〈message〉 : 寄發一則消息到世界.
.move where : 移動您給的座標.
.move there 〈name〉 : 移動到命名的用戶.
.move here 〈name〉 : 移動命名的用戶到您著.
.move fast 〈x〉 〈y〉 〈z〉 :向您座標移動.
.move world 〈x〉 〈y〉 〈z〉 〈m〉 :向您座標移動和地圖.
.move town 〈town〉 : 移動您鍵入的鎮.
.move prog : 移動您向程序員小島.
.move isle :移動您向管理員小島.
.npc info :顯示信息在選擇的npc .
.npc mobs 〈modelid〉 〈npcflags〉 〈faction〉 〈level〉 〈name〉 : 產生NPC在你的位置.
.npc taxi : 增加一輛出租汽車.
.npc spell 〈spellid〉 〈price〉 :增加一個咒語來教練員NPC .
.npc rmvspell 〈spellid〉 :從教練員取消咒語NPC .
.npc item 〈itemid〉 〈amount〉 :增加一個項目來教練員NPC .
.npc rmvitem 〈itemid〉 :從教練員去除項目NPC .
.npc itemmove 〈srcslot〉 〈dstslot〉 : 搬入項目販賣者NPC .
.npc delete :刪除NPC.
.npc level 〈level〉 : 改變選擇的NPC 的標准.
.npc skin 〈skinid〉 : 改變選擇的NPC 皮膚.
.npc faction 〈faction〉 :改變選擇的NPC 的派別.
.npc name 〈name〉 :更改選擇的NPC 的名字.
.npc flag 〈flag〉 : 改變選擇的NPC 旗子.
.npc animfreq 〈frequency〉 : 改變選擇的NPC 頻率.
.npc random 〈num 0-1〉 :集合任意開關選擇的NPC .
.npc addmove :增加一個小站或設置NPC.
.npc run 〈num 0-1〉 : 設置奔跑開關選擇的NPC .
.npc state 〈num 0-2〉 :設置如果選擇的NPC NPC 意志自動攻擊.
.npc scale 〈num〉 :選擇的NPC集合scale.
.npc hpmin 〈num〉 : 設置選擇的NPC最小HP .
.npc hpmax 〈num〉 : 設置選擇的NPC最大HP .
.admin ban 〈name〉 :禁令命名的用戶從伺服器
.admin lvl 〈name〉 〈lvl account〉 :改變命名的用戶lvl 帳戶.
.admin addspirit : 增加一種Spirit來世界.
.admin die :使用戶死
.admin revive :使用戶復活
.admin update 〈old〉 〈new〉 : 更新Opcodes
.addgo : 在你的坐標添加游戲對象
.add : 添加項目到你的背包中.
.addnpc : 添加NPC到游戲.
.del : 刪除目標NPC
.setlevel : 設置個人或NPC的等級
.setmodel : 給NPC或個人設置模型數量.
.learn : 學習魔法的數目
.save : 保存文件.
.rehash : 改寫目標.
.flag1 : 設置有毛病的標記.
.ppon : 打開pp系統.
.ppoff :關閉pp系統.
.turn : 轉動NPC面朝你.
.come : NPC來到你的位置.
.go : 去世界坐標.
.gotrigger: 進入世界范圍的位置,參數: trigger_number
.kill : 殺死選擇的NPC或個人.
.killallnpc : 殺死所有的NPC的形象.
.resurrect : 復活選擇的個人.
.setsize : 設置NPC的大小.
.setspeed : 設置NPC或個人的速度
.setflags : 設置NPC或O.G的面具. 參數: 〈ftype〉 〈flags〉
.addspawn : 添加大量的點到你的位置. 參數 : [〈npc entry〉] [〈npocs number〉]
.setnpcspawn : 添加條目和數目作成大量NPC到大量的點
.setnpcgo : 設置條目由於大量游戲目標到大量點
.setspawndist : 設置小和大距離到大量
.setspawntime : 設置小和大的時間到大量.
.setxp : 設置經驗到個人.
.paralyse : 不動和動到個人或NPC.
.setaura : 設置預兆數目
.exploration : 打開你地圖的位置.
.dismount : 卸下你.
.listsp :列出你的魔法.
.listsk :列出你的技能.
.delsp : 忘記魔法
.delsk : 忘記技能.
.info : 附近NPC的信息.
.online : 顯示在線玩家數目
.goname : 移動到輸入名字的個人或NPC.
.goguid : 移動到行會.
.targetgo : 嘗試移動到最近的玩家(定位最近的object)
.targetlink : 嘗試到連接目標OF選擇目標
.move :傳送目標.
.retcl : 重裝TCL
.rescp : 重裝 SCP.
.clearqflags : 清楚尋找標記
.bytes : for debug
.pingmm : 製造點在你的地圖
.adddyn : 測試到競技
1.架設伺服器必須安裝的NET Framework 2.0.exe
2.首先修改服務端內的wowemu.key文件
server_name=Dokj 這行是伺服器名稱,假如要中文,請先用"漢字轉"轉換下
ws_host=127.0.0.1 這里是伺服器IP,可以用域名
ws_port=8085
3.然後打開maps文件夾,運行BatCreator.exe,然後選擇Locate the folder with wow.exe指定一下客戶端的路徑,選好後按一下Create,再按Extract,中途需要按兩次y確認,第二次輸入y以後窗口會自動關閉.
4.接下來打開scripts文件夾內的emu.conf文件,用記事本打開
[banned]
//ip=127.0.0.1/255.255.255.0 在127.0.0.1的地方輸入IP,默認是單機的
5.賬號可以通過服務端自帶的DButil.exe程序進行添加,打開後選擇
Edit Accounts,方法是:Find的左邊的空格內輸入賬號,password是密碼,plevel
是GM許可權等級,6是最高,然後按一下Add就可以了(注意:添加賬號必須在伺服器開啟以後才行)
6.運行服務端程序WoWemu.exe,等待一段時間後,伺服器就開好了.
7.客戶端需要打補丁.我試過不打補丁就出現版本無法嚴正的錯誤
把"登陸器"解壓到客戶端,然後運行"SF補丁安裝程序.bat",結束以後.用記事本打開realmlist.wtf,修改裡面的IP,改成你的伺服器IP,改完後運行wow.exe就可以進入游戲了,別忘了啟動游戲後用DButil.exe添加賬號..
8.這是最重要的一點.請大家每次關閉伺服器之前.輸入".save"保存一下,不然下次開F以後所有東西都會沒有的,比如賬號..切記!!!!!!
④ 魔獸世界用的什麼資料庫
引用自cnblogs@Zealic:
最近幾天重溫了一下WOW,結合最近學習的資料庫知識和自己的了解,對WOW的大概體系做了分析。當然,我僅僅只是窺豹見斑而已,希望對WOW有所了解的大俠能給我和向了解WOW的人指點;讓世人更加了解做沒啟WOW,讓中國的游戲能夠學習(不是抄襲)並超越WOW。
不知道哪來的想法,就想到了WOW的資料庫的結構以及程序實現,那麼,就來了解一下吧。
首先想到:Game Server 使用的是什麼OS和Database
起初猜測為 : Unix/BSD ,資料庫為 Oracle
這樣比較適合WOW這樣的大型網路游戲,因為其存儲和數據量極大
網上查到的一些關鍵資料,可以證明我的猜想和實際相差不大
1.9C在一次伺服器故障中的說明,下面只列出關鍵部分
08:29 收到EVA存儲報警郵件,聯系數據中心工程師,聯系惠普工程師.
08:35 故障應急流程啟動,相關人員包括THE9/HP/Blizzard US .
15:33 Oracle專家加入故障應急察絕流程
15:50 暴雪資料庫工程師開始與Oracle專家繼續分析故障情況.
17:15 暴雪表示暫時還未從他們的純如admin以及DBA處獲得任何有新的消息,他們仍然在研究此故障。
2.Blizzard的資料庫管理員招聘要求
Oracle Database Administrator
The World of Warcraft development team is looking for a self-motivated and knowledgeable IT professional to help administer the WoW databases. As the person responsible for handling the database-side of WoW pushes and patches, our Live Team Oracle DBA's job ties would include designing, configuring, maintaining, monitoring, benchmarking and troubleshooting Oracle databases.
Blizzard offers a fun, creative, and technically challenging environment with excellent compensation and a full range of benefits.
Responsibilities:
Provide proction on-call support.
Maintain and enhance existing databases.
Perform routine database maintenance.
Work with end users to ensure smooth proction rollouts and pushes.
Assist in training other employees.
Requirements:
3+ years professional Oracle DBA experience, including Oracle 9i.
Extensive experience with database performance tuning.
Experience working with large databases (>1TB).
Experience with Oracle RAC and Partitioning features.
Proficiency in Linux/Unix environments including shell scripting.
Plusses:
Strong knowledge of SQL & PL/SQL.
Familiarity with UNIX tools and shell scripting
Familiarity with HP EVA's and Data Protector.
Passion for video games, including MMORPG's
因此WOW的伺服器應該為 : HPUNIX + ORACLE
那麼我就對WOW的資料庫做一些猜想,至於正確與否或者符合程度集合,就無從而知了
主要分為以下幾塊
-游戲伺服器:
這里說的是游戲中的伺服器,而非上面提到的物理意義上的伺服器,比如,七區的惡魔之魂、黑鐵、加基森就是游戲伺服器。
-游戲區:
游戲大區,一個大區是由許多個游戲伺服器構成的。之所以分大區,我認為完全是因為物理原因,每個區都其物理構成應應該是一個伺服器群集,而在這群集上,有許多的資料庫實例,每一個資料庫實例都對應一個游戲伺服器。
-驗證系統:
游戲中的登錄、排隊、驗證身份應該都是又這一部分完成的。
-聊天頻道:
聊天頻道是一個獨立的伺服器,這一點可以從游戲中人物、地圖都很卡而聊天卻完全不受影響的情況分析出來,聊天不可以離線發送消息,因此我可以武斷的認為,聊天伺服器基本不操作資料庫,至多在當前無法處理或者玩家暫時接收不到的情況下,使用一些臨時的表來保存消息;或者伺服器將聊天數據全部保存到資料庫中,以方便對玩家的行為查詢。
另外,聊天伺服器是獨立於所有伺服器的,每個區的所有游戲伺服器都是使用對應於該區的聊天伺服器。這樣,可以專門針對聊天伺服器的特性,對伺服器的系統和資料庫進行專門的優化
-副本&戰場:
副本&戰場(以下簡稱副本)我覺得也應該和聊天伺服器相同,是個獨立的伺服器,不過他與普通游戲伺服器不同,並沒有保存其他的地圖數據,僅僅保存了副本地圖的數據。
至於如何實現跨服戰場,我以為,應該是將需要的角色數據做拷貝到副本伺服器中,並且鎖定原本伺服器中的數據(表或行),在退出戰場時,用副本伺服器的數據更新原來的數據。我們可以把戰場看做資料庫中的臨時表,做了處理以後更新到需要保存的地方。
通過上述解釋,也可以理解為什麼在進入戰場時需要載入畫面了,載入畫面並不僅僅是作為一個過渡畫面,它還承載了載入客戶端資源,與服務端通信進行處理;顯示載入畫面時,副本伺服器應該是如上所說游戲伺服器交換了角色數據。
大型副本與普通副本不同的地方,我覺得僅僅是重置時間和副本策略做了改變而已。
-地圖
地圖的定義是在客戶端的資源中的,為防止用戶篡改,BLZ對定義地圖的資源文件和DBC進行使用了混淆命名以及檢查校驗;之所以這么認為,是因為中國WOW公測的時候,出現一些加速外掛,可以讓角色直接穿越牆壁、地表等看起來不可能穿越的物體,這便驗證了BLZ為了減輕伺服器負擔,直接在客戶端進行了大部分的碰撞檢測。
WOW的的實際地圖結構和游戲中我們所見到的不一樣,他是把一塊大陸分成N個小塊的地圖數據,客戶端僅僅需要載入玩家角色所在位置附近的所有地圖塊就可以了。其技術細節就不做詳細分析了。
-東西大陸:
每個大陸都應該是一個獨立的資料庫,之所以出現載入畫面,我認為是因為兩個大陸的地形材質大不相同,客戶端需要先釋放出發大陸的所有資源,載入目的大陸的必要資源,同時轉移角色的數據到目的大陸。
-角色:
游戲中的角色應該是被分離成數個表,包括玩家的屬性,任務,包裹,郵箱,銀行等。一些重要的,比如物品包裹、郵箱、銀行,伺服器會在很短(相對其他數據而言)的時間內將內存中的緩存數據寫入提交到資料庫中;而一些相較以上數據不是很重要的數據,則需要很長時間才會提交到資料庫。這也解釋了為什麼伺服器回檔時,角色的位置和任務等都回檔了,而物品卻沒有回檔,這也造成了傳說中的雙手痛擊。
-怪物:
世界中的怪物生成應該是使用了Prototype模式,那麼保存怪物的數據其實之需要保存其會變化的值就即可。
-其他:
游戲中總是有一些事件發生,比如:暗月馬戲團的來訪,萬聖節的活動,情人節的活動等等,這些東西應該都是具有伸縮性的,可以想像,為了方便BLZ自WOW的管理和擴展,在伺服器或伺服器群集管理中心中,應該有BLZ為自己和代理商提供的工具或者說腳本使用指南。至於WOW採用的腳本是什麼,這個我就猜不到了,可能是Perl\Python\SH吧,反正不會是LUA。
-行為與技能:
為什麼WOW玩起來感覺這么流暢,沒有其他網路游戲看起來或感覺起來反應遲鈍,WOW並沒有每時每刻都與客戶端進行通信;其主要工作原理是,客戶端首先處理用戶的輸入,並執行相應的開始動畫或處理,而實際顯示結果要等待服務端處理並返回後才會顯現出來,這就是為什麼在掉線後,玩家還做操作角色,但是卻無法獲得操作結果。
技能和行為差不多,其實很多游戲中的限制都是在客戶端進行的,這都是BLZ為了減輕服務端的負擔、減少通信量而造成的。那麼,我在這里大膽的猜測,只要分析出內存地址或相應代碼,WOW是有很多地方可以被篡改的;因為據我所知,目前WOW的所有外掛都是通過暴力修改客戶端的內存實現的,而非常見的修改網路封包,BLZ加密還是做的很不錯的 :)。
基本上就分析了這么多了,我試圖從自己的腦子里挖出更多的東西,可惜所了解的東西仍然太少,沒辦法,現這樣吧。
----------------------------------------------
PS:大芒果單機版WOW採用的MySQL
⑤ 現在一些大型游戲,如傳奇、魔獸世界等是用什麼編程語言編出來的
所有的伺服器程序都是用:
主要部分都是用C\C++編寫,然後再用一寫腳本語言
現在非常流行的腳本語言是Python,它和C++搭配簡直天衣無縫,甚至C++委員會都決定將Python嵌入下一代C++標准中..
客戶端也是使用C++,大部分使用微軟的D什麼x的圖形庫,3D游戲的話,一般每個游戲,有他們公司的的3D庫,也就是所謂的3D引擎..
我有熱血傳奇02年編寫的傳奇源代碼,附有開發文檔是用VC++6.0,開發的,使用了巨多的類..
⑥ Python和Lua是什麼
Python
Python(英語發音:/ˈpaɪθən/), 是一種面向對象、解釋型計算機程序設計語言,由Guido van Rossum於1989年底發明,第一個公開發行版發行於1991年,Python 源代碼同樣遵循 GPL(GNU General Public License)協議。Python語法簡潔而清晰,具有豐富和強大的類庫。它常被昵稱為膠水語言,能夠把用其他語言製作的各種模塊(尤其是C/C++)很輕松地聯結在一起。常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),然後對其中有特別要求的部分,用更合適的語言改寫,比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而後封裝為Python可以調用的擴展類庫。需要注意的是在您使用擴展類庫時可能需要考慮平台問題,某些可能不提供跨平台的實現。
Lua
Lua 是一個小巧的腳本語言。是巴西里約熱內盧天主教大學(Pontifical Catholic University of Rio de Janeiro)里的一個研究小組,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所組成並於1993年開發。 其設計目的是為了嵌入應用程序中,從而為應用程序提供靈活的擴展和定製功能。Lua由標准C編寫而成,幾乎在所有操作系統和平台上都可以編譯,運行。Lua並沒有提供強大的庫,這是由它的定位決定的。所以Lua不適合作為開發獨立應用程序的語言。Lua 有一個同時進行的JIT項目,提供在特定平台上的即時編譯功能。
⑦ 游戲開發中常用哪種腳本語言
隨著《魔獸世界》(以下簡稱wow)在世界范圍內流行,腳本漸漸被人們所熟知。由於wow強大的自定義界面系統,Lua這一腳本語言一舉成名。x0dx0ax0dx0a其實早在Lua腳本語言被大眾所熟知以前,游戲業內人士就已經開始使用腳本來開發游戲了。我們熟悉的很多國內的網路游戲大都運用了腳本開發,比如網游的長青樹「夢幻西遊和《大話西遊2就大量應用了腳本技術。特別是《大話西遊2》,其實現基於Lua腳本游戲開發的時間要遠早於《魔獸世界》。在腳本技術上,國內與國外其實是站在同一起跑線上的,並不存在什麼差距,這也為國內游戲產業趕超國外游戲產業提供了強有力的技術保證。x0dx0ax0dx0a在單機游戲時代,腳本這個詞幾乎很少出現,那麼,為什麼在網路游戲時代它卻成了業界的寵兒呢?原因是多方面的。x0dx0ax0dx0a單機游戲時代,無論游戲主機還是PC機,它們的性能都非常低下,從而需要具有較高執行效率的編譯型語言對機器的性能進行「壓榨」。隨著科技發展和硬體性能的不斷提升,腳本逐漸被開發者所接受並利用,但這並不是腳本流行起來的決定性因素,真正的原因還在於游戲市場有這方面的需求。x0dx0ax0dx0a網路游戲時代的市場競爭激烈、變化莫測,如果延用單機時代一年半載才出一個新版本的開發方式,必然會被游戲行業激烈的市場競爭所淘汰。正是這種游戲市場需求旺盛和開發工具效率底下之間的矛盾,促使腳本語言迅速地發展起來。腳本的興起使得傳統編譯吵碰型語言(asngC/C )的性能優勢在硬體功效大幅攀升的今天已經不復存在。x0dx0ax0dx0a除了市場和硬體這兩個因素之外,還有一點我們不能忽略。那就是用C/C 進行游戲開發的高成本和高項目風險。隨著java/.net逐漸流行,學習C/C 編程語言的人越來越少,而網路游戲市場的需求卻越來越龐大,在程序人才大量匱乏的情況下,造成了c,C 人才的高成本。即便是有能力僱傭大量C/C 程序員的公司,在開發游戲的過程中,也不能無視C/C 的高級特性和高度靈活性帶來的高項目風險。C/C 是易學難精的編程語言,在開發大型項目的時候由於程序員的水平參差不齊,所以極易造成溝通不暢。不僅如此,c,C 濫用的高級特性也容易引入大量bug。正是由於這些原因,游戲公司開始在游戲中使用腳本,希望通過腳本來解決這些高成本、高風險的問題。x0dx0ax0dx0a二.腳本的現狀x0dx0ax0dx0a腳本不僅解決了c/C 無法解決的開發效率難題,還降低了開發的成本和風險。因此腳本技術在游戲業內蓬勃發展起來,乎槐並且已經成為游戲業中不可或缺的一環。縱觀當前腳本技術現狀,形勢一片大好,不僅語言百家爭鳴,而且書籍種類也越來越多;不僅在游戲業界開花結果,在web等其它應用領域也大放異彩。x0dx0ax0dx0a首先,我們來看看目前比較流行的腳本:Python、Lua、ruby和Erlang。Python和Lua是網路游戲開發的中堅力量;ruby憑借 rubyonrails的web開發框架的強勁力量,其在游戲業的發展前途亦不可小視;Erlang在高並發性上的原生優勢吸引了無數追求高性能網游伺服器的開發人員的目光。x0dx0ax0dx0a其次,我們來看看書籍方面。大家都知道,文字對語言的普及起到了催化劑的作用,甚至可以看作是語言的有機組成部分。Python經過基金會的多年經營而得到NASA、Google重用的原因,就是由於其相關書籍種類比較豐富;Ruby隨著升頃談RoR的流行,這兩年行情看好,書籍也出版得越來越多了;Erlang是典型的少眾語言,但隨著多核時代的來臨和高並發網路應用的需求,Erlang有著光明的發展前景,現在<
⑧ 有什麼著名的游戲是用Python編寫的
魔獸世界、坦克世界,星戰前夜,文明帝國4,戰地風雲2是用Python編寫的。
Python由荷蘭數學和計算機科學研究學會的Guido van Rossum於1990年代初設計,作為一門叫做ABC語言的替代品。
Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。Python語法和動態類型,以及解釋型語言的本質,使它成為多數平台上寫腳本和快速開發應用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用於獨立的、大型項目的開發。
相關資料
Python解釋器易於擴展,可以使用C或C++(或者其他可以通過C調用的語言)擴展新的功能和數據類型。Python也可用於可定製化軟體中的擴展程序語言。Python豐富的標准庫,提供了適用於各個主要系統平台的源碼或機器碼。
2021年10月,語言流行指數的編譯器Tiobe將Python加冕為最受歡迎的編程語言,20年來首次將其置於Java、C和JavaScript之上。
⑨ 想使用Python做游戲伺服器端開發,需要具備哪些技術
你自己說的太含糊了。游戲服務端。僅這兩個詞只是能說明你要求的伺服器並發量要大,此外可能會有一個游戲引擎。具體的你用的是什麼游戲類型。需要什麼樣的引擎。以及是否是網網游戲,或者是FLASH做的RPG游戲都沒有說。所以很難給出一個具體的框架與協議。
不過簡單的說,python做游戲伺服器足夠,以前有人用python做過魔獸世界的游戲伺服器,做過EVE的客戶端。
通常來講,會使用一個內存資料庫,一組關系型資料庫。還有幾套應用系統,比如交易系統,副本系統,對話系統,用戶管理系統,支付系統系統。都是相互獨立的,與游戲引擎關系不大。
要用的技術挺復雜的。主要是網路,安全,進程管理,C語言介面,資料庫,圖像處理,分布式管理等。