当前位置:首页|资讯|ChatGPT|编程

ChatGpt用于Unity复杂功能的开发测试

作者:硬核的AR_VR王师傅发布时间:2023-02-24

    综合测试感受:显然chatgpt的代码能力会和使用他的人的专业程度以及知识量正相关,个人感觉在未来近几年内能够善用AI工具的个人或者团体可能会在中低竞争环境里取得惊人的优势,比如初高中大学等时期反AI审查工具还未普及的时期内,掌握多种AI工具的学生能够快速完成各种报告、论文、作业等形式化任务,从而将争取出来的时间投入到更高价质量的自身培养上,而未掌握相关技能的学生很有可能会因此被拉开大量时间资源上的差距。而小团体、小作坊等利用各类AI生产力工具能够大幅度提高生产效率,但是生产结果的质量显然需要操作者具备足够的专业知识以及对AI提示有足够的经验积累,这个经验积累最终可能在近未来一段时间内提高小团体综合竞争力的关键要素。实际上chatgpt目前就能帮助王师傅完成一定量的工作,让我可以释放出更多自由时间。

     这或许会对Clever &Greed 的年轻人来说是一次巨大的机遇,而对一些从相较传统行业起来的rich可能不太友好。

提问一:

问题

回答一:


提问二:

优化

回答二:

问题分析
优化方案
要求给出优化后的代码

在优化后的代码中,射线检测仅在检测到击中时进行,而不是在每个 FixedUpdate() 中都进行。这可以通过在 OnTriggerEnter() 或 OnCollisionEnter() 中执行射线检测,或者通过单独的检测脚本来实现。

为了避免使用 Mathf.Pow() 函数和 Mathf.Sqrt() 函数,我们使用了平方和乘法来代替平方根,使用乘法和除法来代替指数运算,并手动计算了向量长度和进行了向量归一化。

我们还减少了 GetComponent() 函数的调用次数,并且避免在 FixedUpdate() 中频繁使用 Time.time。最后,我们使用了 Rigidbody.MovePosition() 来更新子弹的位置,而不是使用 Rigidbody.velocity,这样可以减少一些不必要的计算和内存分配。


提问三:

单人/多人联机,安全问题

回答三:

回答
  1. 子弹生命周期在客户端上受控制。在单人游戏中,这可能不是问题,但在多人游戏中,客户端可以通过修改代码或发送欺骗性的网络数据来延长子弹的生命周期。这可能导致其他玩家或服务器上的物体受到无限伤害。

    解决方案:将子弹生命周期移动到服务器端,通过网络同步子弹的生命周期。

  2. 子弹销毁仅在客户端上进行。在多人游戏中,如果客户端销毁了子弹,但其他玩家或服务器上的物体仍然存在,这可能会导致其他玩家或服务器上的物体受到无限伤害。

    解决方案:在服务器端进行子弹销毁。可以通过在客户端上向服务器发送命令来销毁子弹,并通过网络同步销毁命令。

  3. 射线检测仅在客户端上进行。在多人游戏中,如果客户端检测到了击中,但其他玩家或服务器上的物体没有检测到击中,这可能会导致不一致的游戏状态。

    解决方案:在服务器端进行射线检测。可以通过在客户端上向服务器发送射线检测结果来同步击中结果。

    总的来说,在多人游戏中,应该尽量将游戏逻辑放在服务器端进行,并通过网络同步游戏状态。这样可以避免客户端和服务器之间的不一致,提高游戏的安全性和可靠性。

提问四:

提问

回答四:

回答

服务器端脚本 BulletControllerServer.cs:


在这个版本中,客户端和服务器之间通过PUN2来同步子弹的位置和旋转,客户端只需要在自己的本地上处理子弹的运动和检测,并通过PUN2发送命令到服务器上销毁子弹。服务器负责处理所有子弹的移动和检测,并在击中物体或超过最大寿命时销毁子弹。这样,就避免了客户端篡改子弹位置和检测结果的安全问题。

需要注意的是,服务器上的 BulletControllerServer 脚本不需要添加到任何游戏对象上,而是通过 Photon。




Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1