设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

Java多玩家libgdx教程

2014-6-3 11:43| 发布者: joejoe0332| 查看: 5446| 评论: 0|原作者: --zxp, GoodLoser, 海王|来自: oschina

摘要: 正如 libgdx的官网上提到的,这个示例依赖于libgbx。如果你试图运行libgbx网站上的superjumper示例程序,你会得到关于gdx,gdx-backend-lwjgl, gdx-jnigen, gdx-openal的错误。你需要将这些工程设置为你的应用(super ...


  现在你需要在第二个模拟器/设备上做同样的操作,AppWarp的匹配API会将第二个玩家连接到相同的游戏房间,然后游戏开始。玩家需要到达城堡来完成这个游戏。同时用户会发现他们的对手在实时地运动。这个游戏内实时通信正是AppWarp的强大之处。



  游戏会在这三个条件下完成


  1. 用户离开:当一个玩家离开游戏时,另一个玩家被判定为胜利者。因为他的对手已经离开的游戏。

  2. 闯关成功:到达城堡的玩家成为胜利者

  3. 游戏结束:如果玩家碰到了松鼠或者玩家掉了下来那另一个玩家会成为胜利者。




  怎样与AppWarp集成

开始游戏

  首先你需要用你的应用密钥初始化Warpclient单例(WarpController.java).

1WarpClient.initialize(apiKey, secretKey);


  接下你需要连接到AppWarp云端并且加入一个游戏房间(WarpController.java)


  注意: AppWarp SDK 提供通过异步API提供它的功能。这意味着你只需简单的将请求{敏感词}添加到WarpClient实例中区接受响应和通知即可。


  这个文件 (WarpController.java) 有我们这步所需的所有代码。它创建连接请求,房间请求,区域请求(如果有必要创建一个房间)。因此我们添加相关{敏感词}到OnStart()方法中。


1public WarpController()
2{
3    initAppwarp();
4    warpClient.addConnectionRequestListener(new ConnectionListener(this));
5    warpClient.addChatRequestListener(new ChatListener(this));
6    warpClient.addZoneRequestListener(new ZoneListener(this));
7    warpClient.addRoomRequestListener(new RoomListener(this));
8    warpClient.addNotificationListener(new NotificationListener(this));
9}
1private void initAppwarp(){
2    try {
3        WarpClient.initialize(apiKey, secretKey);
4        warpClient = WarpClient.getInstance();
5    catch (Exception e) {
6        e.printStackTrace();
7    }
8}


  设置好listener后我们可以继续创建连接。用户需要传入一个惟一用户名(username)以连接到AppWarp云。在示例中我只是使用了一个随机字符串(你也可以从用户或像facebook的第三方服务处取得来惟一标识用户)。随机字符串是在MainMenuScreen.java文件中生成的。


1WarpClient.connectWithUserName(userName);


  连接的结果会交给以下回调函数。


1public void onConnectDone(ConnectEvent e) {
2    if(e.getResult()==WarpResponseResultCode.SUCCESS){
3        callBack.onConnectDone(true);
4    }else{
5        callBack.onConnectDone(false);
6    }
7}
1public void onConnectDone(boolean status){
2    if(status){
3        warpClient.initUDP();
4        warpClient.joinRoomInRange(11false);
5    }else{
6        isConnected = false;
7        handleError();
8    }
9}


  如果连接成功,我们会试着加入一个房间。我们也可以选择初始化UDP(稍后的游戏玩家会用到)。为了加入房间,我们使用JoinRoomInRange方法并传入参数(1,1),它会请求服务器将客户端加入只有一个用户的房间。如果失败我们会新建并加入一个容纳两个玩家的房间。


01public void onJoinRoomDone(RoomEvent event){
02    if(event.getResult()==WarpResponseResultCode.SUCCESS){// success case
03        this.roomId = event.getData().getId();
04        warpClient.subscribeRoom(roomId);
05    }else if(event.getResult()==WarpResponseResultCode.RESOURCE_NOT_FOUND){// no such room found
06        HashMap<string, object=""> data = new HashMap<string, object="">();
07        data.put("result""");
08        warpClient.createRoom("superjumper""shephertz"2, data);
09    }else{
10        warpClient.disconnect();
11        handleError();
12    }
13}


  一旦加入某个房间(不管是现在还是创建新房间之后),客户端需要订阅这个房间来接收房间的通知(这在游戏中是必须的)。这里详细解释了这些概念。订阅之后我们要调用getLiveRoomInfo来检查房间是否有两个玩家了,如果是我们就开始游戏,否则就等待其他玩家加入这个房间。


1WarpClient.getLiveRoomInfo(roomId);
01public void onGetLiveRoomInfo(String[] liveUsers){
02    if(liveUsers!=null){
03        if(liveUsers.length==2){
04            startGame();    
05        }else{
06            waitForOtherUser();
07        }
08        }else{
09            warpClient.disconnect();
10            handleError();
11    }
12}



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部