如果用 delphi 寫 online RPG, 雖要配合什麼? |
|
simonk
一般會員 發表:3 回覆:6 積分:1 註冊:2003-01-21 發送簡訊給我 |
|
computer18
一般會員 發表:1 回覆:11 積分:2 註冊:2002-03-17 發送簡訊給我 |
引言: 請問有經驗的各位, 我總覺得用 delphi 好難寫出即時的地圖轉換和角色走動, 應該用什麼方法? 還有跟 Server 溝通時又應採用什麼方法? PS. 假設RPG 是平面2D 的雖然我沒有經驗,但是我想應該可以這麼做 即時的地圖轉換和腳色的走動,地圖用捲動的方式來做,然後到底的時候,在控制腳色的圖層移動 跟server的溝通,最好是用socket的方式來做,udp的方式雖然快,但是他不控制database是否有收到封包,更何況,用socket來做的話,只需要開放一個tcp port,不需要開放很多的udp的port,更好管理以及更好防止駭客,也可以用128bit的方式加密封包,讓人不會去修改封包的內容 |
orson
中階會員 發表:5 回覆:135 積分:58 註冊:2002-07-11 發送簡訊給我 |
引言: 請問有經驗的各位, 我總覺得用 delphi 好難寫出即時的地圖轉換和角色走動, 應該用什麼方法? 還有跟 Server 溝通時又應採用什麼方法? PS. 假設RPG 是平面2D 的Long time ago. When there are only Turbo C and MASM for me. We put map that is 8 times bigger than what we are seeing. So when you move your character move the MAP. It is okay with both 2D and 3D. And if you want to develop a server can handle thousands of connection, you have only one choice UDP, and of course you have to handle repeated packet and lost packet yourself. But it is much faster. |
computer18
一般會員 發表:1 回覆:11 積分:2 註冊:2002-03-17 發送簡訊給我 |
引言:受教了,謝謝引言: 請問有經驗的各位, 我總覺得用 delphi 好難寫出即時的地圖轉換和角色走動, 應該用什麼方法? 還有跟 Server 溝通時又應採用什麼方法? PS. 假設RPG 是平面2D 的Long time ago. When there are only Turbo C and MASM for me. We put map that is 8 times bigger than what we are seeing. So when you move your character move the MAP. It is okay with both 2D and 3D. And if you want to develop a server can handle thousands of connection, you have only one choice UDP, and of course you have to handle repeated packet and lost packet yourself. But it is much faster. |
simonk
一般會員 發表:3 回覆:6 積分:1 註冊:2003-01-21 發送簡訊給我 |
|
orson
中階會員 發表:5 回覆:135 積分:58 註冊:2002-07-11 發送簡訊給我 |
引言: Server 端的程式要怎麼寫? 因為要處理的東西很多, 如人物位置, event, items...etc. 好像蠻難處理的.心情不好,不想工作,回答一下好了。 server端的處理,沒有那麼多事情,你可以去網路上抓mud的source code看, 在server端的主要工作只是一直update 每一個人 每一個地點的 data structure 引言: And what is UDP? A software or a method?UDP 這是一種網路協定 TCP/IP聽過吧 UDP是他的底層架構 引言: 還有, 如果一張 bitmap 裏面有 buildings, 應該怎讓阻止角色走上去?同上 既然是資料結構 你只要設定為該點不得前進就好了 或著是暴力一點,邀消耗多少體力才能前進,甚至於你愛給那面牆多少生命值也可以。 重點只是在地圖上把那一點設為不得前進,沒任何特殊技巧。 |
simonk
一般會員 發表:3 回覆:6 積分:1 註冊:2003-01-21 發送簡訊給我 |
|
computer18
一般會員 發表:1 回覆:11 積分:2 註冊:2002-03-17 發送簡訊給我 |
引言: 謝謝 Computer18 and Orson! 但再來再來....哈 如果要應付2-3 百人同時上線, 需要多少資源? (eg. server, bandwidth..etc) 一般的 web hosting 公司會不會接受?那就要看你同一秒鐘要傳多大的資料 如果一秒鐘一個人傳4K的話 那麼1.5MB的專線上下傳大概可以容納下384個人吧 如果是1.5MB/384K的ADSL的話,那就要以384K去計算 384K還要再除以8K 因為ADSL雖然說是給你專線,但是在ISP那邊的話還是有壓縮比的,大部分都是1/8~1/10,所以真正的流量應該除以8才算真正的速度 所以說ADSL 1.5MB/384K的大約只能夠容納下12~24個人吧 只要你的WEB HOSTING的公司沒有限制你不能做商業用途或是有流量的限制就可以,但是你用WEB HOSTING的公司的空間,可能會沒有DATABASE 建議如果是自己在試用的話,那自己架一台伺服器吧 |
orson
中階會員 發表:5 回覆:135 積分:58 註冊:2002-07-11 發送簡訊給我 |
引言:可以容納的人可以更多或更少 你每一步移動要發多少封包 這是你的程式決定的 如果每一步發一個 那 一秒可以走幾步 ? 不會是每一步發一個封包的,那要怎麼發,定時發,定量發, 在戰鬥的時候又怎麼辦? 這就是 線上遊戲外掛程式作弊的原理了 至於機器啊,同時兩三百個連線需要多大的CPU跟RAM,這要看你寫出來的 軟體,寫出來之後,實測的最準,當然不寫也是估的出來的引言: 謝謝 Computer18 and Orson! 但再來再來....哈 如果要應付2-3 百人同時上線, 需要多少資源? (eg. server, bandwidth..etc) 一般的 web hosting 公司會不會接受?那就要看你同一秒鐘要傳多大的資料 如果一秒鐘一個人傳4K的話 那麼1.5MB的專線上下傳大概可以容納下384個人吧 如果是1.5MB/384K的ADSL的話,那就要以384K去計算 384K還要再除以8K 因為ADSL雖然說是給你專線,但是在ISP那邊的話還是有壓縮比的,大部分都是1/8~1/10,所以真正的流量應該除以8才算真正的速度 所以說ADSL 1.5MB/384K的大約只能夠容納下12~24個人吧 只要你的WEB HOSTING的公司沒有限制你不能做商業用途或是有流量的限制就可以,但是你用WEB HOSTING的公司的空間,可能會沒有DATABASE 建議如果是自己在試用的話,那自己架一台伺服器吧 |
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 謝謝 Computer18 and Orson! 但再來再來....哈 如果要應付2-3 百人同時上線, 需要多少資源? (eg. server, bandwidth..etc) 一般的 web hosting 公司會不會接受?站長也沒真正寫過online rpg, 但以本站的Delphi Chat程式來說, 20多個人同時Talk速度還可以,(512/512K) 我想網路頻寬的重點在於您封包的大小, 要隨時傳回所有人物的即時座標, 光是座標的封包就會粉大, 可能要採用傳回相對的座標, 也是是距上一次後移動了多少相對位置, 如此座標就可以從兩個byte節省為一個byte, 再配合每隔60秒再傳回一次絕對座標,以防止誤差, 還有就是一定要配合多執行緒Multi-Thread, 才能即時反應所有人物的Request, 總之,可以想見主機程式的複雜程度! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
simonk
一般會員 發表:3 回覆:6 積分:1 註冊:2003-01-21 發送簡訊給我 |
wa....好像蠻難寫的麻...hoho
我原本打算寫一個 online rpg, 但在 bandwidth 和沒有人畫圖之下... 還是寫一個 delphi 版的 mud 比較好. 這樣bandwidth 會用比較小吧?
但我不太會用 delphi 的 tcp/ip 連結(其實是完全不會...-o-)
請問在 delphi 裏要怎樣把訊息傳逹呢? (between server and client)
client 的資料應該存在那一種 database 裏面? 我覺得 mysql 應該會比較好吧?
|
computer18
一般會員 發表:1 回覆:11 積分:2 註冊:2002-03-17 發送簡訊給我 |
引言: wa....好像蠻難寫的麻...hoho 我原本打算寫一個 online rpg, 但在 bandwidth 和沒有人畫圖之下... 還是寫一個 delphi 版的 mud 比較好. 這樣bandwidth 會用比較小吧? 但我不太會用 delphi 的 tcp/ip 連結(其實是完全不會...-o-) 請問在 delphi 裏要怎樣把訊息傳逹呢? (between server and client) client 的資料應該存在那一種 database 裏面? 我覺得 mysql 應該會比較好吧?其實說,online game 是把它的client 程式安裝在client端,而所有的資料都處存在server端,所以client不需要database,如果你想在server端用mysql的話,建議不要,因為mysql資料庫太過於簡陋了,不能夠用procedure,trigger,也因為這樣,你在server的ap裡就要寫上太多的東西,而導致系統處理速度降低,建議用postgresql,他的功能比oracle還強,但是處理速度不一定比他還快,所以可以考慮看看 至於連結方式,看看delphi裡面的demo吧,有關於udp client, udp server, tcp client, tcp server (delphi 6 裡的 indy client, indy server) |
aip999
初階會員 發表:10 回覆:63 積分:44 註冊:2002-03-29 發送簡訊給我 |
引言:server 只要知道座標跟記錄資料就好,and 移動的話只要對看得到你的人送出你改變的座標,或是做了什動作..etc,看不到你的人就不用管他了引言: 謝謝 Computer18 and Orson! 但再來再來....哈 如果要應付2-3 百人同時上線, 需要多少資源? (eg. server, bandwidth..etc) 一般的 web hosting 公司會不會接受?站長也沒真正寫過online rpg, 但以本站的Delphi Chat程式來說, 20多個人同時Talk速度還可以,(512/512K) 我想網路頻寬的重點在於您封包的大小, 要隨時傳回所有人物的即時座標, 光是座標的封包就會粉大, 可能要採用傳回相對的座標, 也是是距上一次後移動了多少相對位置, 如此座標就可以從兩個byte節省為一個byte, 再配合每隔60秒再傳回一次絕對座標,以防止誤差, 還有就是一定要配合多執行緒Multi-Thread, 才能即時反應所有人物的Request, 總之,可以想見主機程式的複雜程度! ~~~Delphi K.Top討論區站長~~~ |
simonk
一般會員 發表:3 回覆:6 積分:1 註冊:2003-01-21 發送簡訊給我 |
|
computer18
一般會員 發表:1 回覆:11 積分:2 註冊:2002-03-17 發送簡訊給我 |
引言: 原來如此. 我可以用 client 的 programe 直接傳給在場的 users嗎? 還是要通過 server 來傳送? 用 client 端直接傳會比較省資源吧 and 為何用 mysql 儲存角色資料不好? postgresql 有什麼比較好的地方? 因為我就只用過 Paradox, Access, 跟 Mysql 三種 database. 我覺得mysql 比較快.client 以及 server 都要傳送資料,最好是利用linux的multicast的功能廣播,這樣效能會更高,在來,你一定沒玩過oracle,雖然mysql的速度很快,但是你要擅用資料庫的storeprocedure & trigger的功能,在mysql裡,沒有這些功能,而可能使得原本可以在資料庫裡先做的東西,要寫在client以及server端,這樣就大大的增加主機以及使用者的電腦資源,使的處理速度降低,而postgresql來說的話,她跟oracle的效能都遠比mysql好多了,功能也比oracle, mysql強太多了,所以如果不打算買資料庫的話,用postgresql比較好 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |