如何面向DeepSeek编程,打造游戏开发工具集,提升工作效率

最近我在思考:

如何基于DeepSeek,来提升工作效率,构建高效游戏开发工作流。

方向有两个:

A: 基于DeepSeek+私有代码框架,让它完成项目代码的续写;

B: 基于DeepSeek来创作一些工具,使用工具来提升效率,如程序化地图等;

方向A,目前我们做了一些预言,包括本地部署,然后把我们的项目框架代码做好知识库,让DS学习,然后让它帮我们完成代码续写,目前效果不佳,很多代码还需要认为修改,才能编译通过。

相比方向A,方向B就方便很多,让DS来写游戏开发中常用的工具,提升工作效率。首先工具本身不复杂,比较独立,代码量小。完全可以让DS开发。我们使用工具来提升我们的工作效率。同时还可以在工具中调用各种AI的 API,来提升工作效率。

对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀

今天给大家分享一个基于DS编写一个Unity插件工具的流程,并尝试接入其他智能体的API。

选择Unity的插件机制作为工具流的基本环境

问题: 为什么选择Unity作为工具开发的基本环境,而不是使用Python脚本等其他环境?

1: 主要是因为Unity的插件扩展机制比较成熟稳定;

2:Unity可以方便的访问到游戏场景等相关的游戏内容内容,能更好的与游戏工作结合起来。

3: 同时导出给其他引擎也方便。

4: DeepSeek基于标准的Unity 插件来自动生成的代码,稳定性高。正确率高。

第一款工具:抠背景工具

很多程序员在做游戏创业的时候,在网上找到一个效果图,想要去掉背景,拿到里面的图片元素。所以急需一个智能的抠背景工具。同时还有一些简单的抠背景的需求,比如把纯色背景变成透明色。而传统的去背景的AI工具,大部分都要收取费用。像简单的抠背景,我们就不用AI,而是直接就通过[0, 0]的像素颜色,直接把背景给换成透明的。提炼出背景工具的需求如下:

需求1: 支持简单的背景色扣图,将每个图片的[0, 0]作为默认扣除的颜色;

需求2: 支持基于支持AI的API调用只能扣图;

需求3: 为了好用,我们除了支持单图意外,还需要支持基于文件夹的批量抠图;

需求明确后,我们开始让DS,帮我们生成Unity编辑器扩展代码。

面向DeepSeek的编辑器扩展编程

1: 创建一个工具类的Unity项目,专门用来做各种游戏开发工具,包括但不限于:抠图工具,程序化地图生成工具,地图编辑器工具,技能编辑器工具等。

项目中的所有的工具,我们都放到专门的Unity工程中,进行处理。

如上图,我这里分成了Editors与WorkSpace,来分别放工具代码+需要处理的数据与文件。

2:提问DeepSeek,来帮我们自动生成工具扩展代码。

提问DS: 帮我写一个 Remove Background Tool 插件

using UnityEngine;
using UnityEditor;
using System.IO;public class RemoveBackgroundTool : EditorWindow
{private Texture2D sourceTexture; // 原始图片private Color backgroundColor = Color.white; // 背景颜色private float tolerance = 0.1f; // 颜色容差[MenuItem("Tools/Remove Background Tool")]public static void ShowWindow(){// 创建自定义窗口GetWindow<RemoveBackgroundTool>("Remove Background");}private void OnGUI(){GUILayout.Label("Remove Background Tool", EditorStyles.boldLabel);// 选择图片sourceTexture = (Texture2D)EditorGUILayout.ObjectField("Source Texture", sourceTexture, typeof(Texture2D), false);// 设置背景颜色backgroundColor = EditorGUILayout.ColorField("Background Color", backgroundColor);// 设置颜色容差tolerance = EditorGUILayout.Slider("Tolerance", tolerance, 0f, 1f);// 扣除背景按钮if (GUILayout.Button("Remove Background")){RemoveBackground();}}private void RemoveBackground(){if (sourceTexture == null){Debug.LogError("Source texture is not assigned.");return;}// 获取图片路径string path = AssetDatabase.GetAssetPath(sourceTexture);if (string.IsNullOrEmpty(path)){Debug.LogError("Failed to get asset path.");return;}// 创建一个新的 Texture2D 对象Texture2D texture = new Texture2D(sourceTexture.width, sourceTexture.height, TextureFormat.ARGB32, false);// 复制原始图片的像素数据texture.SetPixels(sourceTexture.GetPixels());texture.Apply();// 遍历每个像素,扣除背景for (int y = 0; y < texture.height; y++){for (int x = 0; x < texture.width; x++){Color pixelColor = texture.GetPixel(x, y);if (IsColorSimilar(pixelColor, backgroundColor, tolerance)){texture.SetPixel(x, y, Color.clear); // 将背景色设置为透明}}}// 应用修改texture.Apply();// 保存新图片byte[] bytes = texture.EncodeToPNG();string newPath = Path.GetDirectoryName(path) + "/" + Path.GetFileNameWithoutExtension(path) + "_NoBackground.png";File.WriteAllBytes(newPath, bytes);// 刷新 Asset DatabaseAssetDatabase.Refresh();Debug.Log("Background removed and saved to: " + newPath);}// 判断两个颜色是否相似private bool IsColorSimilar(Color color1, Color color2, float tolerance){return Mathf.Abs(color1.r - color2.r) < tolerance &&Mathf.Abs(color1.g - color2.g) < tolerance &&Mathf.Abs(color1.b - color2.b) < tolerance;}}

它帮我生成代码,并给出使用方式与改进建议:

使用说明

  1. 创建脚本:
  • 在 Unity 项目中创建一个新的 C# 脚本,命名为 RemoveBackgroundTool.cs
  • 将上述代码复制到脚本中。
  • 打开插件窗口:
  • 在 Unity 编辑器中,点击菜单栏的 Tools -> Remove Background Tool,打开插件窗口。
  • 选择图片:
  • 在插件窗口中,选择需要扣除背景的图片(Source Texture)。
  • 设置背景颜色和容差:
  • 设置背景颜色(Background Color)和颜色容差(Tolerance)。容差值越小,颜色匹配越严格。
  • 扣除背景:
  • 点击 Remove Background 按钮,插件会生成一张扣除背景后的新图片,并保存到与原始图片相同的目录下,文件名以 _NoBackground.png 结尾。

功能说明

  • 背景颜色: 用户可以指定需要扣除的背景颜色。
  • 颜色容差: 用于控制颜色匹配的严格程度。容差值越大,扣除的背景范围越广。
  • 透明背景: 扣除的背景会被替换为透明色(Color.clear)。
  • 保存新图片: 扣除背景后的图片会保存为 PNG 格式,并自动导入到 Unity 项目中。

注意事项

  1. 图片格式:
  • 确保原始图片的格式支持透明通道(如 PNG 格式)。
  • 如果图片格式不支持透明通道,扣除背景后可能会出现异常。
  • 性能问题:
  • 对于高分辨率图片,扣除背景的过程可能会较慢。可以考虑优化像素遍历逻辑。
  • 复杂背景:
  • 该插件适用于纯色背景的扣除。如果背景复杂(如渐变、图案等),可能需要使用更高级的图像处理工具或插件。

扩展功能

如果你需要更强大的功能,可以考虑以下扩展:

  1. 支持多种背景颜色: 允许用户指定多个背景颜色。
  2. 批量处理: 支持批量扣除多张图片的背景。
  3. AI 背景扣除: 集成 AI 技术,自动检测并扣除复杂背景

先导入到Unity,试试看,没有任何错误,同时我们来体验一下,看用户体验方面还有哪些需要改进,

阅读一下代码,写的很好,同时导出的处理函数也独立出来了,编辑器界面代码和功能代码分离。接下来我们从用户体验上改进:

1: 支持指定文件夹,这样可以批量处理;

2: 每张图片的默认颜色为左上角[0, 0]的颜色。

提问DS:

改进一下代码,帮我增加一个选择文件夹选项,直接处理文件夹里面的所有图片,并输出到同级的dst文件夹中。这个时候DS给出修改的代码与使用建议,同上。

再看效果,默认的背景颜色指定了,同时支持文件夹选项。

阅读代码,没有太多的问题。功能正常,接下来就是接入,AI。

提问DS:推荐一下,接入哪个AI工具的API完成AI智能抠图,并把工具扩展代码增加AI抠图的选项。

DS给出代码与回答,代码省略,回答如下:

集成 AI 自动检测与抠图功能是一个非常有价值的方向!我们可以通过调用现有的 AI 服务(如 Remove.bg 或 DeepLab)来实现自动背景扣除。以下是改进后的代码,集成了 Remove.bg 的 API 来实现 AI 自动抠图。

功能说明

  1. AI 自动抠图:
  • 使用 Remove.bg 的 API 实现自动背景扣除。
  • 用户可以通过勾选 Use AI for Background Removal 来启用 AI 功能。
  • 手动背景扣除:
  • 如果不使用 AI,插件会基于用户设置的背景颜色和容差手动扣除背景。
  • 支持单个文件和文件夹处理:
  • 用户可以选择处理单个文件或整个文件夹中的所有图片。
  • 输出到 dst 文件夹:
  • 处理后的图片会保存到与输入文件或文件夹同级的 dst 文件夹中。
  • 日志输出:
  • 处理过程中会输出日志,方便用户查看处理进度和结果。

使用步骤

  1. 获取 API Key:
  • 前往 Remove.bg 注册并获取 API Key。
  • 将 apiKey 变量替换为你的 API Key。
  • 打开插件窗口:
  • 在 Unity 编辑器中,点击菜单栏的 Tools -> Remove Background Tool,打开插件窗口。
  • 选择处理模式:
  • 勾选 Process Folder 复选框以处理文件夹,否则处理单个文件。
  • 选择文件或文件夹:
  • 在 单个文件模式 下,点击 Choose File 按钮选择图片。
  • 在 文件夹模式 下,点击 Choose Folder 按钮选择文件夹。
  • 启用 AI 功能:
  • 勾选 Use AI for Background Removal 以启用 AI 自动抠图。
  • 处理图片:
  • 点击 Process 按钮,插件会处理图片并将结果保存到 dst 文件夹中。
  • 查看结果:
  • 处理后的图片会保存到与输入文件或文件夹同级的 dst 文件夹中,文件名以 _NoBackground.png 结尾。

注意事项

  1. API 调用限制:
  • Remove.bg 的免费 API 有调用次数限制,如果需要处理大量图片,建议升级到付费计划。
  • 网络请求:
  • AI 功能需要网络连接,确保 Unity 编辑器可以访问外部 API。
  • 性能问题:
  • 对于大量高分辨率图片,AI 处理可能会较慢。可以考虑分批处理。

未来改进方向

  1. 本地 AI 模型:
  • 集成本地 AI 模型(如 DeepLab)以减少对网络 API 的依赖。
  • 进度条显示:
  • 在处理大量图片时,显示进度条以提升用户体验。
  • 错误处理:
  • 增加对异常情况的处理(如网络请求失败、API 调用超时等)。

希望这个改进后的插件能满足你的需求!如果有任何问题,欢迎随时提问!

打开代码,确实增加了 RemoveBackgroundWithAI的函数,里面是把本地的图片,上传到服务器,然后拿处理结果。

private async Task RemoveBackgroundWithAI(string imagePath, string outputFolder)
{// 调用 Remove.bg APIusing (HttpClient client = new HttpClient()){client.DefaultRequestHeaders.Add("X-Api-Key", apiKey);// 读取图片文件byte[] imageData = File.ReadAllBytes(imagePath);ByteArrayContent content = new ByteArrayContent(imageData);// 发送请求var response = await client.PostAsync("https://api.remove.bg/v1.0/removebg", new MultipartFormDataContent{{ content, "image_file", Path.GetFileName(imagePath) }});if (response.IsSuccessStatusCode){// 保存处理后的图片byte[] resultData = await response.Content.ReadAsByteArrayAsync();string fileName = Path.GetFileNameWithoutExtension(imagePath) + "_NoBackground.png";string outputPath = Path.Combine(outputFolder, fileName);File.WriteAllBytes(outputPath, resultData);Debug.Log($"AI-processed image saved to: {outputPath}");}else{Debug.LogError($"Failed to process image with AI: {response.ReasonPhrase}");}}
}

上面是生成的代码,看了一下主要功能,没有问题,接下来生成API Key,根据DS给出的官网,注册账号+API密钥。

完成后,将API Key,放入到工具代码,运行测试,Unity 卡死。杀掉进程后,我重新打开,排除错误(AI不是万能的,一些关键的错误还是需要人来排查)。打开remove.bg的官方文档,找到相关的API代码,和DS生成的代码,进行比对与修改,文档代码如下:

对比调整修改后,测试成功。

private async Task RemoveBackgroundWithAI(string imagePath, string outputFolder){// 调用 Remove.bg APIusing (HttpClient client = new HttpClient())using (var formData = new MultipartFormDataContent()){formData.Headers.Add("X-Api-Key", apiKey);client.DefaultRequestHeaders.Add("X-Api-Key", apiKey);// 读取图片文件byte[] imageData = File.ReadAllBytes(imagePath);ByteArrayContent content = new ByteArrayContent(imageData);formData.Add(content, "image_file", Path.GetFileName(imagePath));formData.Add(new StringContent("auto"), "size");var response = client.PostAsync("https://api.remove.bg/v1.0/removebg", formData).Result;if (response.IsSuccessStatusCode){// 保存处理后的图片byte[] resultData = await response.Content.ReadAsByteArrayAsync();string fileName = Path.GetFileNameWithoutExtension(imagePath) + "_NoBackground.png";string outputPath = Path.Combine(outputFolder, fileName);File.WriteAllBytes(outputPath, resultData);Debug.Log($"AI-processed image saved to: {outputPath}");}else{Debug.LogError($"Failed to process image with AI: {response.ReasonPhrase}");}}}

再次运行,就能正常的使用了(我账户没有充钱,所以返回了Forbidden错误)。

对比调整修改后,测试成功。

再次运行,就能正常的使用了(我账户没有充钱,所以返回了Forbidden错误)。

End

心得1: 使用AI来开发工具代码,基于工具来提升效率,是AI应用的一个很好的思路与方向。

心得2: 基于标准开发规范的小规模代码编写,如:编辑器扩展工具,TA Shader开发等, DeepSeek等大模型能快速的实现,并很好的给出思路,辅助人类完成,所以靠工具类的技术美术要注意了。

心得3: 所有的程序员要注意了,沟通交流能力+阅读代码+系统整合的能力变得更为重要。而这些需要你有更扎实的基础与更全的知识体系结构,才能驾驭AI。分辨出它的优点与错误。

今天给大家演示了《如何基于DS开发插件,如何调用AI工具的API》,后续我们还会推出更多的DeepSeek+AI的工具教程,丰富我们的工具流,比如程序化生成地图,自动化AI怪物逻辑训练等。敬请期待

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/28896.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云原生机密计算:构建基于可信执行环境的数据安全堡垒

引言&#xff1a;数据计算的最后一道防线 蚂蚁集团金融级机密计算平台承载日均20亿次敏感交易&#xff0c;密钥泄露风险降低99.97%。微软Azure DCsv3系列虚拟机实现SGX全内存加密性能损耗<15%&#xff0c;Google Anthos Confidential将跨云数据传输成本压缩45%。Gartner预测…

通用文件模型

一、通用文件模型 通常一个完整的Linux系统有数千到数百万个文件组成&#xff0c;文件中存储了程序、数据和各种信息。层次化的目录结构用于对文件进行编排和分组。 1.ReiserFS(新型的文件系统) -->Reiser4 它通过一种与众不同的方式----完全平衡树来容纳数据&#xff0c;包…

产品管理过程-思维导图

产品管理过程 1. 市场调研 与用户交流与直接面对客户的一线同事如销售、客服、技术支持等交流市场研究报告分析竞争对手分析用户数据分析 2. 需求管理 需求来源管理 市场需求内部需求运营需求战略需求其它需求 需求版本管理 需求分配管理 需求跟踪管理 3. 产品规划 市…

EtherNet/IP转Modbus解析基于网关模块的罗克韦尔PLC与Modbus上位机协议转换通讯案例

在工业自动化控制系统中&#xff0c;常常会遇到不同品牌和通信协议的设备需要协同工作的情况。本案例中&#xff0c;客户现场采用了 AB PLC&#xff0c;但需要控制的变频器仅支持 Modbus 协议。为了实现 AB PLC 对变频器的有效控制与监控&#xff0c;引入了捷米特 JM-EIP-RTU 网…

【进程和线程】(面试高频考点)

【进程和线程】 前言 在计算机编程领域&#xff0c;并发编程是一项至关重要的技术&#xff0c;而进程和线程正是实现并发编程的核心概念。为了让大家更直观地理解并发编程的作用&#xff0c;我们先来看一个简单的生活例子。 想象一下&#xff0c;现在有一大份美味的饭菜&…

HTML 编辑器推荐与 VS Code 使用教程

在进行 HTML 编程时&#xff0c;选择一款合适的 HTML 编辑器能极大地提高开发效率。以下为大家推荐几款常用且功能强大的 HTML 编辑器&#xff0c;同时详细介绍如何使用 VS Code 创建和预览 HTML 文件。 一、HTML 编辑器推荐 VS Code&#xff1a;由微软开发&#xff0c;是一款…

Kubernetes开发环境minikube | 开发部署apache tomcat web集群应用

minikube是一个主要用于开发与测试Kubernetes应用的运行环境&#xff0c;本文主要描述在minikube运行环境中部署J2EE tomcat web应用。 单节点Node多Pod实例部署 如上所示&#xff0c;在minikube运行的Linux部署环境中启动单节点Node 如上所示&#xff0c;在minikube的容器环境…

STM32---FreeRTOS中断管理试验

一、实验 实验目的&#xff1a;学会使用FreeRTOS的中断管理 创建两个定时器&#xff0c;一个优先级为4&#xff0c;另一个优先级为6&#xff1b;注意&#xff1a;系统所管理的优先级范围 &#xff1a;5~15 现象&#xff1a;两个定时器每1s&#xff0c;打印一段字符串&#x…

永磁直驱式风力发电虚拟同步机仿真模型Matlab/Simulink模型

很久没有分享虚拟同步机控制相关的方向了&#xff0c;毕业后在电科院的项目又有所接触。这个课题方向其实作为硕士毕业课题还是够用的&#xff0c;相对来说也是比较容易毕业的&#xff0c;因为涉及的分支比较多。 后续对虚拟同步机的控制&#xff0c;我就延续我前面博客提到的方…

图像分类项目1:基于卷积神经网络的动物图像分类

1、选题背景及动机 在现代社会中&#xff0c;图像分类是计算机视觉领域的一个重要任务。动物图像分类具有广泛的应用&#xff0c;例如生态学研究、动物保护、农业监测等。通过对动物图像进行自动分类&#xff0c;可以帮助人们更好地了解动物种类、数量和分布情况&#xff0c;从…

Vue 3 整合 WangEditor 富文本编辑器:从基础到高级实践

本文将详细介绍如何在 Vue 3 项目中集成 WangEditor 富文本编辑器&#xff0c;实现图文混排、自定义扩展等高阶功能。 一、为什么选择 WangEditor&#xff1f; 作为国内流行的开源富文本编辑器&#xff0c;WangEditor 具有以下优势&#xff1a; 轻量高效&#xff1a;压缩后仅…

Ansys Zemax | 使用衍射光学器件模拟增强现实 (AR) 系统的出瞳扩展器 (EPE):第 4 部分

附件下载 联系工作人员获取附件 在 OpticStudio 中使用 RCWA 工具为增强现实&#xff08;AR&#xff09;系统设置出瞳扩展器&#xff08;EPE&#xff09;的示例中&#xff0c;首先解释了k空间中光栅的规划&#xff0c;并详细讨论了设置每个光栅的步骤。 介绍 本文是该四篇文…

CMake学习笔记(一):工程的新建和如何将源文件生成二进制文件

cmake是我们在工作过程中比较常见的一个工具&#xff0c;该系列文章是自己用来学习的笔记。目前只是记录下自己学习cmake的过程中的一些重要的知识点&#xff0c;其是以项目需求为导向并非完整的cmake的学习路线和系统&#xff0c;同样也并非适合所有的人。 1.生成一个可执行文…

libcoap在Ubuntu下的编译(基于CMake)

引言 libcoap 是一个开源的轻量级 C 语言库&#xff0c;用于实现 CoAP&#xff08;Constrained Application Protocol&#xff0c;受限应用协议&#xff09;。CoAP 是一种专为资源受限设备设计的轻量级通信协议&#xff0c;适用于物联网&#xff08;IoT&#xff09;和嵌入式系…

Docker新手入门(持续更新中)

一、定义 快速构建、运行、管理应用的工具。 Docker可以帮助我们下载应用镜像&#xff0c;创建并运行镜像的容器&#xff0c;从而快速部署应用。 所谓镜像&#xff0c;就是将应用所需的函数库、依赖、配置等应用一起打包得到的。 所谓容器&#xff0c;为每个镜像的应用进程创建…

蓝桥杯C组真题——巧克力

题目如下 思路 代码及解析如下 谢谢观看

SLAM评估工具安装及使用EVO(Ubuntu20.04安装evo)--缺少 onnx 库还有Pandas 版本不兼容解决

介绍一下我的是ubuntu20.04.机载电脑是orinnx&#xff0c;通过源码烧写的系统。 首先打开终端&#xff0c;输入 pip install evo --upgrade --no-binary evo 安装过程中出现如下问题 缺少 onnx 库还有Pandas 版本不兼容&#xff0c; ONNX&#xff08;Open Neural Network E…

在虚拟机上安装hadoop

在虚拟机上安装 Hadoop 是一个常见的实验环境搭建过程。以下是详细的步骤和注意事项&#xff1a; 前面的课程我们已经准备好了三台虚拟设备球供我们学习大数据技术&#xff0c;今天我们将使用其中的一台设备来运行第一个hadoop 程序。 运行第一个 hadoop程序 要运行 hadoop 程序…

Redis 常见数据类型

官方文档 RedisCommands 1&#xff09;Redis 的命令有上百个&#xff0c;如果纯靠死记硬背比较困难&#xff0c;但是如果理解 Redis 的一些机制&#xff0c;会发现这些命令有很强的通用性。 2&#xff09;Redis 不是万金油&#xff0c;有些数据结构和命令必须在特定场景下使用…

VBA信息获取与处理第五节:如何在单个工作表中查找某个给定值

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。这部教程给大家讲解的内容有&#xff1a;跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…