2011-06-24 197 views
0

我已經知道如何使用Wi-Fi和藍牙在線遊戲,但現在我試圖通過互聯網實現一個簡單的遊戲(如井字遊戲),但我是親切的失落。iPhone網絡遊戲

我試過GET/POST,但我不知道如何通知一個等待移動的玩家,以及如何保存遊戲狀態。

我必須在服務器端打開一個套接字,並從應用程序內連接嗎? 我已經做了大量的搜索,但我只能找到關於藍牙和wifi,這不是我需要的。

謝謝大家!

回答

0

我會推薦這個庫:http://code.google.com/p/cocoaasyncsocket/

對於服務器端,可以使用類似node.js或Python Twisted的東西來打開套接字連接。

來自我自己的項目之一的示例代碼。這設置了一個每隔10秒從主機讀取一個套接字。你的遊戲會有點不同:

- (void) createSocket { 
    aisSocket = [[AsyncSocket alloc]initWithDelegate:self]; 
    NSError *error; 
    [aisSocket connectToHost:myServerString 
        onPort:myServerPort 
        error:&error]; 
} 


- (BOOL)onSocketWillConnect:(AsyncSocket *)sock { 
    NSLog(@"socket will connect"); 
    return YES; 
} 


- (void) readData:(NSNotification*)note { 
    [[note.userInfo objectForKey:@"sock"] readDataWithTimeout:100 tag:0]; 
} 


- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port { 
    NSLog(@"The socket is connected: %d", [aisSocket isConnected]); 
    NSDictionary *dict = [NSDictionary dictionaryWithObject:sock forKey:@"sock"]; 
    NSTimer *timer = [[NSTimer scheduledTimerWithTimeInterval:(10) 
                target:self 
                selector:@selector(readData:) 
                userInfo:dict 
                repeats:YES]retain]; 
    [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; 
} 
+0

謝謝你們的答案。我已經下載了asynchSock,現在我可以連接服務器。我有一個php腳本爲我創建服務器套接字。我現在懷疑的是如何設置遊戲結構...我如何同步用戶/遊戲?再次感謝! – Fernando

+0

我認爲本教程將幫助你:http://www.raywenderlich.com/3276/how-to-make-a-simple-multiplayer-game-with-game-center-tutorial-part-12 –

+0

你也可能會想要在這個論壇上列出的書 - http://www.cocos2d-iphone.org/forum/topic/12893 –

0

去看蘋果的WiTap Sample code,它應該匹配你正在嘗試做的事情。

亦可以參考GameKit Programming Guide知道如何使多個設備發現自己然後彼此在遊戲(或其他任何東西)通信

+0

我已經知道如何做無線網絡和bounjour的東西。問題是與服務器相關的使用哪些工具...另外,我不知道是否必須將遊戲邏輯放在服務器上,或者只使用服務器將數據包發送到其他連接的設備。 – Fernando