好玩遊戲

banggood 18% OFF Magic Cabin Hat Country LLC HearthSong 15% Off Your First Purchase! Code: WELCOME15 Stacy Adams

開屎玩遊戲

加入書籤:

加入書籤: Add this page to FunP HemiDemi Add this page to Search 2.0 MyShare und Fiigo Baidu Google Bookmarks Yahoo! My Web PChome Del.icio.us Digg technorati furl 其他更多書籤

遊戲用戶資料被覆蓋,問題出在哪裡? - iThome Online

遊戲 - Google 新聞
Google 新聞
遊戲用戶資料被覆蓋,問題出在哪裡? - iThome Online
Mar 9th 2012, 08:45

遊戲用戶資料被覆蓋,問題出在哪裡?
到iT邦幫忙

alice0920(iT邦初學者10級)發問:
最近在研究使用C#寫多人連線遊戲,但出現下列狀況:後來的玩家會覆蓋掉前一個玩家的資料,造成兩個Client端畫面的資料都變成後一個玩家的。請問要如何在每個Client只顯示各自的資料,而不被後來的玩家覆蓋掉呢?

slime(iT邦初學者8級):
應該有一個「現有Session(概念)表」來處理:

當玩家A透過電腦甲登入,若Session表內無相關資料,系統允許登入,並配發Session 1,之後該主機需要更新資料,都要同時告知目前Session 1。

當玩家A透過電腦乙登入,由於Session表內已經有一個A登入,系統必須停止Session 1,或不再配發新的Session,以確保同一遊戲內只有一個A。

當玩家B登入,Session 表內無相關資料,系統允許登入,並配發 Session 2,之後該主機需要更新資料,都要同時告知目前為Session 2,達到不同使用者會取得不同資訊。

sula3065408(iT邦初學者3級):
1. 要抽象化遊戲通訊的行為,應該不是叫Client直接存取資料庫,除了安全的理由,同步問題及資料量也會變麻煩。

2. Socket Server要Multi Client,理論上應該是要做Multi-threaded based Client/Server Socket,先傳入登入資料連線,連線起來之後開出分支的Process或是Thread處理Client要求,Server會給Client端Session number,並且建立以Session number索引的連線資料塊,資料塊可以用矩陣、串鏈或是乾脆存取資料庫都行,而是否要鎖定玩家不可以跨Session,是另外一回事。

資料回傳會給到非預期的Client,該是Server端作法有問題。假設Server監聽Port 978,A Client連上之後,Server要另外派一個Port給Client A,比如10001,那B連線一樣是先問候Port 978,Server可能會給出10002給B,以此類推,那Server程式對Port 10002要求回應的資料,然就不會給到Client A,所以Multi-thread Client/Server架構上應該有Bug吧。

godstamp(iT邦初學者8級):
用看看Photon(www.exitgames.com)吧,TCP和UDP都有。有完整Server端應用範例,甚至於MMORPG都有。

幾乎直接拿範例套用,就能滿足即時遊戲需求,如果需要連接資料庫,只要從Server端應用中,找出監聽接收資料的Method,解析收到的資料即可,要將資料庫資料送回給Client也差不多方式。

不過做遊戲一定會有客制化需求,所以也可以自由設計Server應用的遊戲邏輯。免費使用有限制100人同時在線,但無使用期限,用來測試及學習已綽綽有餘。

This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: Donate to Wikileaks.

You are receiving this email because you subscribed to this feed at blogtrottr.com.

If you no longer wish to receive these emails, you can unsubscribe from this feed, or manage all your subscriptions

0 意見:

張貼留言

隨機文章