我已經知道如何使用Wi-Fi和藍牙在線遊戲,但現在我試圖通過互聯網實現一個簡單的遊戲(如井字遊戲),但我是親切的失落。iPhone網絡遊戲
我試過GET/POST,但我不知道如何通知一個等待移動的玩家,以及如何保存遊戲狀態。
我必須在服務器端打開一個套接字,並從應用程序內連接嗎? 我已經做了大量的搜索,但我只能找到關於藍牙和wifi,這不是我需要的。
謝謝大家!
我已經知道如何使用Wi-Fi和藍牙在線遊戲,但現在我試圖通過互聯網實現一個簡單的遊戲(如井字遊戲),但我是親切的失落。iPhone網絡遊戲
我試過GET/POST,但我不知道如何通知一個等待移動的玩家,以及如何保存遊戲狀態。
我必須在服務器端打開一個套接字,並從應用程序內連接嗎? 我已經做了大量的搜索,但我只能找到關於藍牙和wifi,這不是我需要的。
謝謝大家!
我會推薦這個庫: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];
}
去看蘋果的WiTap Sample code,它應該匹配你正在嘗試做的事情。
亦可以參考GameKit Programming Guide知道如何使多個設備發現自己然後彼此在遊戲(或其他任何東西)通信
我已經知道如何做無線網絡和bounjour的東西。問題是與服務器相關的使用哪些工具...另外,我不知道是否必須將遊戲邏輯放在服務器上,或者只使用服務器將數據包發送到其他連接的設備。 – Fernando
謝謝你們的答案。我已經下載了asynchSock,現在我可以連接服務器。我有一個php腳本爲我創建服務器套接字。我現在懷疑的是如何設置遊戲結構...我如何同步用戶/遊戲?再次感謝! – Fernando
我認爲本教程將幫助你:http://www.raywenderlich.com/3276/how-to-make-a-simple-multiplayer-game-with-game-center-tutorial-part-12 –
你也可能會想要在這個論壇上列出的書 - http://www.cocos2d-iphone.org/forum/topic/12893 –