mac下实现游戏多开

本文介绍了在macOS系统中如何实现游戏多开。由于mac下程序是以包形式存在,双击已开启的游戏包只会激活原有客户端。通过直接运行包内的可执行文件或使用Qt库的QProcess::startDetached方法可以开启新客户端,但可能会导致socket共享问题。最终,通过shell命令`open -n 应用包名`可以避免这个问题,实现真正独立的游戏窗口,且不会影响到其他已打开的游戏客户端。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mac下的程序是以包的形式体现的,玩家可以通过双击包的方式打开我们的客户端。当玩家想多开客户端的时候却不能通过再次双击包来完成,因为当已经开启一个游戏客户端的时候再次双击包会将原来的客户端激活到前端,而不会再次开启一个程序。
    其实如果玩家双击包下 Contents/MacOS/Conquer 这个真正的可执行文件,还是可以再次开启一个客户端的。这就说明mac下程序多开是可行的。
    我们可以通过代码来进行控制,以代码的方式开启另一个客户端,这样不仅没有直接双击可执行文件会出现的控制台,而且是对玩家友好的方式。我们可以添加一个开启新客户端的菜单,来完成多开客户端的功能。

    我们的游戏客户端使用了Qt库,通过Qt来开启一个新程序是非常简单的。 QProcess::startDetached("../MacOS/Conquer");

    但是经测试发现一个很诡异的问题:如果我们使用父窗口(先打开的窗口),通过此方法创建一个子窗口,当父窗口游戏关闭的时候,子窗口中观察,父窗口中角色并没有退出游戏。经调查发现当父窗口关闭游戏时,虽然有关闭socket的过程,但是可能socket已经被子窗口共享,即对服务器而言这个socket依然连接,并未关闭。

    经过新的尝试,发现一个更加完善的开启新游戏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值