線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3195
推到 Plurk!
推到 Facebook!

如果用 delphi 寫 online RPG, 雖要配合什麼?

 
simonk
一般會員


發表:3
回覆:6
積分:1
註冊:2003-01-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-01-28 06:49:05 IP:217.34.xxx.xxx 未訂閱
請問有經驗的各位, 我總覺得用 delphi 好難寫出即時的地圖轉換和角色走動, 應該用什麼方法? 還有跟 Server 溝通時又應採用什麼方法? PS. 假設RPG 是平面2D 的
computer18
一般會員


發表:1
回覆:11
積分:2
註冊:2002-03-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-01-28 10:18:34 IP:61.57.xxx.xxx 未訂閱
引言: 請問有經驗的各位, 我總覺得用 delphi 好難寫出即時的地圖轉換和角色走動, 應該用什麼方法? 還有跟 Server 溝通時又應採用什麼方法? PS. 假設RPG 是平面2D 的
雖然我沒有經驗,但是我想應該可以這麼做 即時的地圖轉換和腳色的走動,地圖用捲動的方式來做,然後到底的時候,在控制腳色的圖層移動 跟server的溝通,最好是用socket的方式來做,udp的方式雖然快,但是他不控制database是否有收到封包,更何況,用socket來做的話,只需要開放一個tcp port,不需要開放很多的udp的port,更好管理以及更好防止駭客,也可以用128bit的方式加密封包,讓人不會去修改封包的內容
orson
中階會員


發表:5
回覆:135
積分:58
註冊:2002-07-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-01-28 10:21:40 IP:211.74.xxx.xxx 未訂閱
引言: 請問有經驗的各位, 我總覺得用 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-01-28 11:13:39 IP:61.57.xxx.xxx 未訂閱
引言:
引言: 請問有經驗的各位, 我總覺得用 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-01-29 02:08:56 IP:217.34.xxx.xxx 未訂閱
Server 端的程式要怎麼寫? 因為要處理的東西很多, 如人物位置, event, items...etc. 好像蠻難處理的. And what is UDP? A software or a method? 還有, 如果一張 bitmap 裏面有 buildings, 應該怎讓阻止角色走上去? 對不起, 因為我還是新手, 有很多不懂的地方! 謝謝!
orson
中階會員


發表:5
回覆:135
積分:58
註冊:2002-07-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-01-30 10:49:54 IP:211.74.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-02-01 01:19:44 IP:217.36.xxx.xxx 未訂閱
謝謝 Computer18 and Orson! 但再來再來....哈 如果要應付2-3 百人同時上線, 需要多少資源? (eg. server, bandwidth..etc) 一般的 web hosting 公司會不會接受?
computer18
一般會員


發表:1
回覆:11
積分:2
註冊:2002-03-17

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-02-06 14:14:15 IP:61.57.xxx.xxx 未訂閱
引言: 謝謝 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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-02-06 16:13:18 IP:211.74.xxx.xxx 未訂閱
引言:
引言: 謝謝 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 建議如果是自己在試用的話,那自己架一台伺服器吧
可以容納的人可以更多或更少 你每一步移動要發多少封包 這是你的程式決定的 如果每一步發一個 那 一秒可以走幾步 ? 不會是每一步發一個封包的,那要怎麼發,定時發,定量發, 在戰鬥的時候又怎麼辦? 這就是 線上遊戲外掛程式作弊的原理了 至於機器啊,同時兩三百個連線需要多大的CPU跟RAM,這要看你寫出來的 軟體,寫出來之後,實測的最準,當然不寫也是估的出來的
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-02-06 17:53:37 IP:192.168.xxx.xxx 未訂閱
引言: 謝謝 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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-02-07 07:22:12 IP:217.39.xxx.xxx 未訂閱
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

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-02-07 08:56:36 IP:61.57.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-02-08 02:22:19 IP:218.187.xxx.xxx 未訂閱
引言:
引言: 謝謝 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討論區站長~~~
server 只要知道座標跟記錄資料就好,and 移動的話只要對看得到你的人送出你改變的座標,或是做了什動作..etc,看不到你的人就不用管他了
simonk
一般會員


發表:3
回覆:6
積分:1
註冊:2003-01-21

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-02-08 07:10:02 IP:217.34.xxx.xxx 未訂閱
原來如此. 我可以用 client 的 programe 直接傳給在場的 users嗎? 還是要通過 server 來傳送? 用 client 端直接傳會比較省資源吧 and 為何用 mysql 儲存角色資料不好? postgresql 有什麼比較好的地方? 因為我就只用過 Paradox, Access, 跟 Mysql 三種 database. 我覺得mysql 比較快.
computer18
一般會員


發表:1
回覆:11
積分:2
註冊:2002-03-17

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-02-10 13:02:00 IP:61.57.xxx.xxx 未訂閱
引言: 原來如此. 我可以用 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比較好
系統時間:2024-04-23 20:13:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!