type
status
date
slug
summary
tags
category
icon
password
Property
Nov 17, 2022 10:15 AM
任务目标
找到任意一只年兽并截图;
实现寻找玩家自己附近年兽的程序;
正确回答年兽的Actor Name;
提交年兽的世界坐标,每找到一只年兽得一部分的分数;
实现自动瞄准玩家自己附近的年兽的程序,需要阐述具体实现原理;
击杀任意一只年兽,拾取掉落物并截图;
分析并实现自动击杀玩家自己附近年兽的程序,需要阐述具体实现原理。
分析过程
开始之前
直接用的初赛APP,GName和GWorld可以直接沿用初赛的
寻找年兽
根据题目中随机分布的、透明的且随机移动的年兽可以判断,想手找基本上是找到死都找不到的。
绘制所有距离在500m以内的actor。
在军事基地外找到一只 BP_GameForPeace_C 开枪发现没掉血,而且也没动,最开始以为不是年兽,继续找了大半个地图没找到一只会动的年兽。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Ffc94fd9e-ea98-42b5-8b1e-95c3dde3dd4a%2FScreenshot_2022-05-13-12-22-18-538_com.tencent.tmgp.projectg.jpg?table=block&id=8f224998-f82e-4792-87ed-11d9a0ff40e7&t=8f224998-f82e-4792-87ed-11d9a0ff40e7&width=2340&cache=v2)
第二局在P城外再次发现 BP_GameForPeace_C, 而且会到处跑,初步确认这玩意就是年兽。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fed0119ca-c842-4df2-9029-87646c0b100f%2FScreenshot_2022-05-13-12-41-51-404_com.tencent.tmgp.projectg.jpg?table=block&id=4e11a905-9b2e-40f3-b0ef-f4dcbeab9ef4&t=4e11a905-9b2e-40f3-b0ef-f4dcbeab9ef4&width=2340&cache=v2)
导出SDK,搜索BP_GameForPeace_C,根据父类类名中的TreasureBeast确定这就是年兽
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F44dcef58-eaed-4540-9a26-3f19c0a85d55%2F%E6%88%AA%E5%B1%8F2022-05-13_13.08.13.png?table=block&id=d560cbd9-c741-4de2-99a9-85f7eb1821a0&t=d560cbd9-c741-4de2-99a9-85f7eb1821a0&width=2472&cache=v2)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F022101d4-2a64-4470-a184-44afbf11c76b%2FScreenshot_2022-05-13-12-51-09-917_com.tencent.tmgp.projectg.jpg?table=block&id=90fc6022-5413-40e1-b7a7-6c843c88050d&t=90fc6022-5413-40e1-b7a7-6c843c88050d&width=2340&cache=v2)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fe6521bc1-e828-46e1-aeb3-525ef85f3948%2FScreenshot_2022-05-13-12-51-14-029_com.tencent.tmgp.projectg.jpg?table=block&id=80a6285f-4f42-460f-a063-e60aabbf5f7f&t=80a6285f-4f42-460f-a063-e60aabbf5f7f&width=2340&cache=v2)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fa19df42b-afb6-4df6-9506-3d8b4564c8dd%2FScreenshot_2022-05-13-12-51-18-757_com.tencent.tmgp.projectg.jpg?table=block&id=18665798-8f17-44ce-b8ad-3dfbe80544f4&t=18665798-8f17-44ce-b8ad-3dfbe80544f4&width=2340&cache=v2)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F4fa4a19f-7d11-4cac-9fdb-27b07e09991b%2FScreenshot_2022-05-13-12-51-23-579_com.tencent.tmgp.projectg.jpg?table=block&id=4e62a12b-4dd9-47e9-b6ef-8117e37bd44d&t=4e62a12b-4dd9-47e9-b6ef-8117e37bd44d&width=2340&cache=v2)
想顺手杀了拿物资,结果身上子弹全部打完了这个东西都没有死,在SDK中找到血量的偏移并进行绘制
结果发现这玩意还锁血到10点了,离大谱。
后发现毒圈能够击杀年兽,掉落一张3周年工卡。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fddfbecb5-3901-435d-86ec-e59e02771757%2FScreenshot_2022-05-13-13-34-17-527_com.tencent.tmgp.projectg.jpg?table=block&id=85a9573b-3362-4442-b1dd-0820b258227f&t=85a9573b-3362-4442-b1dd-0820b258227f&width=2340&cache=v2)
发现使用拳头可以击杀年兽,会掉落一张3周年工卡
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fb6c1e9b8-4b1d-4e2c-9f53-2dfc171bd6bf%2FScreenshot_2022-05-13-18-21-59-975_com.tencent.tmgp.projectg.jpg?table=block&id=de8c8e69-f833-4557-a76c-ad601d830bf0&t=de8c8e69-f833-4557-a76c-ad601d830bf0&width=2340&cache=v2)
世界坐标如图,SpawnTriggerLocation 为 (0,0,0) ,未找到年兽出生点位置,在内存中搜索 BP_GameForPeace_C 对应ID,未发现其他实体。在内存中搜索年兽对应坐标,大约有14个结果,一个个去看,在附近未找到其他年兽坐标。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fd7610be5-d3c2-4a91-a09f-4d15321c5e7e%2FScreenshot_2022-05-13-21-19-15-323_com.tencent.tmgp.projectg.jpg?table=block&id=e450bddf-f54e-4dad-adce-a5f8518ff937&t=e450bddf-f54e-4dad-adce-a5f8518ff937&width=2340&cache=v2)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F1acb1af9-a0a7-484e-9f12-9369ced46ce3%2FScreenshot_2022-05-14-11-27-33-007_com.tencent.tmgp.projectg.jpg?table=block&id=96de879e-44d4-41f2-b861-e7489aab060f&t=96de879e-44d4-41f2-b861-e7489aab060f&width=2340&cache=v2)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F43ee1a0f-c028-4138-a578-87e7e3b64507%2FScreenshot_2022-05-14-12-43-43-794_com.tencent.tmgp.projectg.jpg?table=block&id=0eca7153-72c3-4333-a958-10a9c44376f0&t=0eca7153-72c3-4333-a958-10a9c44376f0&width=2340&cache=v2)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F0711f1fb-6533-479c-b572-ac5bb1796d3d%2FScreenshot_2022-05-14-13-02-33-067_com.tencent.tmgp.projectg.jpg?table=block&id=3448124a-4059-44d7-9d5d-231aad2fee34&t=3448124a-4059-44d7-9d5d-231aad2fee34&width=2340&cache=v2)
在SDK内搜索Beast发现
测试可知,年兽有20只,有三个疑似刷新点,位于出生岛
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fbfaa26dd-46b8-4e09-9025-b55e571b5847%2FScreenshot_2022-05-14-15-01-44-952_com.tencent.tmgp.projectg.jpg?table=block&id=21634184-0f19-44c1-a9cb-dea7f914528a&t=21634184-0f19-44c1-a9cb-dea7f914528a&width=2340&cache=v2)
自动瞄准
瞄准算法流程:
- 获取相机位置 cameraLocation,旋转角 cameraRotator
- 获取年兽位置 targetLocation
- 求差值 diff = targetLocation - cameraLocation
- 计算 ( 常量 angleToRad = 180.0f / PI ) Pitch = atan2f(diff.Z, sqrt(diff.X * diff.X + diff.Y * diff.Y)) * angleToRad Yaw = atan2f(diff.Y, diff.X)
- 判断 Pitch 值
- 计算 Pitch、Yaw 与 cameraRotator 中 Pitch、Yaw 的差值
- 得出最终结果
自瞄实现:
将算法得出的值写入内存 PlayerController → RotationInput
自动击杀
在内存中发现年兽时,通过内存写 Pawn → ControlInputVector 移动到目标年兽附近,到附近后模拟点击攻击键击杀年兽。