使用 Libgdx 和 Kryonet 将 main() 方法分离到 运行 DesktopLauncher.main() 和服务器

Separate main() methods to run DesktopLauncher.main() and Server using Libgdx and Kryonet

我希望我的 GameServer 运行 与游戏本身分开。因此,玩家(客户端)可以加入一个静态 GameServer,我可以一起处理它们并查看当前连接了多少客户端。

但问题是,我只能同时运行这些类(GameServer.main()和DesktopLauncher.main())中的一个。如果我没记错的话,GameServer 一定 运行ning 总是在后台,对吧?然而,如果不停止 GameServer,我无法 运行 游戏本身。 (一直在说正在执行任务 'DesktopLauncher.main()'...)我有一些图片可以了解正在发生的事情以及项目结构是什么样子的:

Pic 1 , Pic 2 , Pic 3

这是我的项目结构:

core -java --com.mygdx.game ---Multiplayer ----Packets -----GameClient.java -----GameServer.java -----GameClientListener.java -----GameServerListener.java ---screens ---utils ---Application.java

GameServer.class

package com.mygdx.game.Multiplayer;


imports..

public class GameServer {

public int TCP_PORT,UDP_PORT;
public Server server;
public GameServerListener listener;

public static int totalClients = 0;

public GameServer() {

    TCP_PORT = UDP_PORT = xxxx;
    server = new Server(TCP_PORT,UDP_PORT);
    listener = new GameServerListener(this);

    startServer();
}


public void startServer() {

    server.addListener(listener);

    try {
        server.bind(TCP_PORT,UDP_PORT);
        //server.bind(TCP_PORT);

    } catch (IOException e) {
        e.printStackTrace();
    }
    registerPackets();
    server.start();

}

private void registerPackets() {
    server.getKryo().register(LoginRequest.class);
    server.getKryo().register(LoginResponse.class);
    server.getKryo().register(ChoiceRequest.class);
    server.getKryo().register(ChoiceRespond.class);

}

public static void main(String[] args) {
    new GameServer();
}

}

感谢您的帮助。

有同样的问题。降级到 Android Studio 3.4 对我有用。

检查:https://www.reddit.com/r/libgdx/comments/fxrlsm/unable_to_run_two_or_more_application_in_parallel/