专栏首页循迹漫聊虚幻引擎Profiling IOS With Unreal Insight

Profiling IOS With Unreal Insight

Unreal Insight是UE自4.23之后提供的一个Profiling工具,可以非常方便地看到游戏运行的各个线程的火焰图,但是官方文档只提供了PC和Android的连接方法,并不直接支持IOS,不太方便。研究了一下发现IOS主要是网络策略的问题,本篇文章提供一个UE与IOS设备的真机Profliing以及端口互通方案,可以支持实时的Profiling以及Cook on the fly等IOS真机与PC数据互通的需求。

UE的Unreal Insight本质上是在PC上创建了一个端口为1980的TCP监听服务,在我们的游戏程序启动时,会主动连接到这个端口,实现实时Profiling时数据传递的目的。

在同一LAN的环境下,IOS设备可以直接与LAN内机器互通,只需要在程序启动时指定tracehost(Unreal Insight)或者filehostip(cook on the fly)来指定主机IP。

所以想要实现我们的需求有两步:

  1. 让IOS设备能够访问PC的端口或者与PC在同一LAN
  2. 在设备上启动游戏时指定PC的IP地址能够正确创建连接

在Android上,可以通过数据线连接设备,通过adb reverse将PC的端口转发到设备端口,在游戏启动时指定127.0.0.1即可。因为通过adb实现了端口的反向转发,所以在Android设备上连接设备本地的1980端口,就相当于连接了PC的1980端口。在IOS上,想要实现这一点不那么容易。

最开始考虑的是USB连接设备,找到一种类似adb reverse的方案,把PC端口映射到IOS的设备端口,但是发现没有很好的实现,usbmuxd倒是提供了一种forward的方案,能把IOS设备端口映射到PC,但是这和我们需求不符合,硬要实现的话还需要自己做一层转发服务,太过麻烦。

所以只能从另一个方面入手:让IOS设备与PC保持在同一LAN内!

但是这种需求在部分内网的网络策略上也有限制:

  1. 办公网与WIFI不在同一网段,子网隔离
  2. 不允许自己部署路由

所以最终想到的方法是:通过IOS通过USB分享热点给PC,使PC与IOS在同一网段。下面介绍一下配置方法。

首先,在IOS设备的设置中启用个人热点(IOS要求必须要有SIM卡才能开启个人热点):

然后通过USB连接PC,在PC上打开设备管理器查看网络适配器中是否存在Apple Mobile Devices Ethernet项:

然后打开控制面板中的网络连接的适配器设置,可以看到自动创建了两个虚拟适配器:

这种情况下,PC就已经连接上了IOS设备共享的网络。可以通过ipconfig查看IP地址:

172.20.10.2就是PC连接IOS共享网络后被分配的IP地址,可以通过arp -a查看IOS设备在这个LAN里的IP地址:

目前的网络情况:

  1. PC 172.20.10.2
  2. IOS 172.20.10.15

在同一个LAN的同一网段,可以开始真机Profiling了!

首先,还是需要在PC上启动Unreal Insight,然后编辑一个ue4commandline.txt,将以下内容填入其中(根据情况修改项目名、PC的IP地址):

../../../FGame/FGame.uproject -Messaging -tracehost=172.20.10.2 -Trace=CPU 

通过爱思助手或iMazing之类的工具,放入游戏的数据目录即可:

然后启动IOS APP,即可在PC上Unreal Insight端看到数据:

最后,使用这种方式,就能够通过USB实现UE与调试设备的数据互通。只要能让IOS设备与PC在同一LAN,Profiling或Cook on the fly等都可以实现,能够避免因为网络策略导致的开发障碍。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Oculus Quest Development with UE4

    Oculus Quest是Oculus发布的新一代支持6DoF的VR一体机设备,不需要连接PC以及额外的定位基站,而且支持Guardian,当戴着头显走出定位边...

    查利鹏
  • BuildGraph:构建支持多平台打包的二进制引擎

    从EpicGamesLauncher安装的是公版引擎,不能修改代码重新编译,可以在根据选择安装支持的平台、调试符号等。 自己从Github上Clone代码进行编...

    查利鹏
  • 游戏开发完整学习路线(各个版本都有)

    在软件开发中,游戏开发这个方向看起来目标很明确,但其实是个领域很广的方向,入门的时候如果得不到指点一二,很容易误入歧途,相反,如果走这条路之前能得到前人的一些指...

    用户1198337
  • 在浏览器上播放虚幻引擎:像素流前端教程

    在之前《UE像素流技术:边缘计算与RTC架构》一文中论证了WebRTC的基本原理,以及WebRTC与虚幻引擎结合使用的可行性。之后在《像素流协议》一文中介绍了虚...

    Jean
  • UE Build System:Target and Module

    Module是构成Unreal的基本元素,每一个Module封装和实现了一组功能,并且可以供其他的Module使用,整个Unreal Engine就是靠各个Mo...

    查利鹏
  • DeepCrawl:回合制策略游戏的深度强化学习(CS lg)

    在本文中,我们介绍了DeepCrawl,一个适用于iOS和Android的可完全播放的Roguelike游戏,其中所有代理均受使用深度强化学习(DRL)训练的政...

    木樾233
  • UE开发笔记:Mac/iOS篇

    本篇文章的主要内容是介绍UE在Mac上的开发环境部署、配置iOS远程出包、UPL在iOS上的应用(介入ipa出包过程)、工具和开发技巧、以及分析相关的引擎代码等...

    查利鹏
  • Why Use React Native for Your Mobile App Development in 2020

    There is a lot of hype about React Native among developer communities and a lot ...

    用户4822892
  • UE开发笔记:Android篇

    在之前的一篇文章中,介绍了Mac/IOS的开发笔记和一些工程实践:UE4 开发笔记:Mac/iOS 篇。本篇文章作为姊妹篇,记录我在使用UE在开发Android...

    查利鹏
  • UE和VR开发技术笔记

    平时随笔写下的一些UE4和VR开发中的技术笔记,以及一些相关资料的收录,之前零零散散放在imzlp.com/notes中,今天整理了一下,后续的笔记都会放到这篇...

    查利鹏
  • 15 Best Tools for Java Developers in 2020

    Software engineers have just begun making a decent procedure to their objectives...

    用户4822892
  • Linux调试工具

    Printf(“valriable x has value = %d\n”, x)

    战神伽罗
  • GitHub上25个最受欢迎的开源机器学习库

    在过去的几年里,机器学习为各行各业开创了新纪元,诞生了许多成功的案例: Facebook 的面部识别,Netflix 的智能电影推荐系统,PrimaAI 的图像...

    昱良
  • GitHub上25个最受欢迎的开源机器学习库

    在过去的几年里,机器学习为各行各业开创了新纪元,诞生了许多成功的案例: Facebook 的面部识别,Netflix 的智能电影推荐系统,PrimaAI 的图像...

    CDA数据分析师
  • GitHub上25个最受欢迎的开源机器学习库

    在过去的几年里,机器学习为各行各业开创了新纪元,诞生了许多成功的案例: Facebook 的面部识别,Netflix 的智能电影推荐系统,PrimaAI 的图像...

    AI科技大本营
  • Linux或者Mac环境安装Photon network

    官方安装文档: https://photonnetwork.readthedocs.io/en/latest/installation_guide/

    rectinajh
  • V8、JSCore、Hermes、QuickJS,hybrid开发JS引擎怎么选

    在一般的移动端开发场景中,每次更新应用功能都是通过 Native 语言开发并通过应用市场版本分发来实现的。

    公众号@魔术师卡颂
  • 2019-08-17 awesome-java,JAVA开发的武器库

    A curated list of awesome Java frameworks, libraries and software.

    Albert陈凯
  • UE热更新:基于UnLua的Lua编程指南

    UE使用的是C++这种编译型语言,在编译之后就成了二进制,只有通过玩家重新安装才能打到更新游戏的目的。但是对于游戏业务而言,对于需求调整和bug修复时间要求非常...

    查利鹏

扫码关注云+社区

领取腾讯云代金券