如何面向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 Database
        AssetDatabase.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 API
    using (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 API
     using (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怪物逻辑训练等。敬请期待

相关推荐

【实操篇】做爆款超休闲游戏的一些经验与教训!

表里有一个难度等级,我们指定一个难度等级的评判标准,比如,不用看广告过关的就是0星难度,看1次广告能过关的就是1星,最高我们是3星,然后内部我们把这些关卡体验进行难度评价。有了这些难度等级后,我们把表格数据,丢个AI,再给它设定一个难度曲线模型,比如螺旋上升曲线方程,这样,AI就可以给你生成一个关卡映射脚本,把映射好的,写回表格。经验4:当自己没有办法去买量验证的时候,应尽快的联系发行+合作,让他们先买起来,不要等时间,时间才是最宝贵的,有发行对接与搭配,能学习到外部的很多技巧。

voidinit的专栏 308

2026 AI大模型产业布局分析

一说到垂直领域的大模型,大家立刻会想到参数少,没有那么智能,但是能满足行业的需求的模型+机密的行业数据。目前AI主要是替代工具,并没有产生新的商业模式与生产力,除非免费使用AI的用户,能通过另外的商业模式变现回来,目前还没有看到。To B卖云服务给企业,相当于企业有一块"私有的机房+私有模型+私有数据",行业数据不会泄露的同时能获得专属大模型提供的服务,这里未来就是阿里云,腾讯云,百度云,华为云的阵地,他们获得各种推理大模型,然后部署,企业向他们购买服务,使用专属大模型的同时,构建自己的知识库等。

voidinit的专栏 320

【启发级】拆解与分类小游戏畅玩榜前100名的玩法模板,看下你手里有几个致富模板

今天(2026年5月8日)闲着无聊,我来把微信小游戏《畅玩榜》的所有游戏的玩法模板统计归纳一下,看看超休闲小游戏目前是哪些模板玩法在影响着我们的玩家。有两个或两个以上的同类游戏,我就把它称为"模板",只有一个游戏的类型,我称为"个例"。大家可以都玩一下,看看别人的创意与变种,看看这么多人做的题材为什么它火了,有哪些创新。羊了个羊+抓大鹅+救救我鸭+麻将消除模板。打螺丝 + 毛线 + 3D打螺丝毛线模板。拼图找茬+狙击找茬类游戏模板。躺平发育类塔防游戏模板。压力消除+三消类模板。消水果+物理阻挡模板。

voidinit的专栏 177

【收藏级】个人开发者如何使用AI解决美术问题实操经验分享(一)

我们与专业的美工,除了审美,美术设计以外,还缺的就是对各种基本美术工具的操作,比如ps等。让我们去学习PhotoShop的操作,显然也不现实,我的路径如下,把一些要切图的等一些美工的操作,都做成代码工具,用脚本来执行处理,代码工具的代码,用AI来完成。比如我专门有个文件夹是用Node.js来写的工具(建议大家用Node.js与Python,后期转MCP会更容易),这些工具完成特定的美术功能,比如,去掉周围多余的透明度,Gif转帧动画,图片缩放等,每个工具,我都做成了命令行,都能批量处理。

voidinit的专栏 431

【收藏级】小游戏如何安排工作计划能最快上线运营微信+抖音双平台

游戏名字一定不能有违规敏感字,避免做完软著后,微信通过了,抖音却过不了(在抖音里名字可能能创建小游戏后台,但未必审核通过,《废土摸金小队》在抖音创建小游戏的时候能通过,但是基础信息审核的时候无法通过,后来重新换名字做软著,浪费了时间还有两个品牌)。(6)微信的游戏名字创建的时候能过,表示就能通过,抖音的游戏名字要到基础信息审核通过后才能正式确定,所以会出现微信通过,抖音初步创建成功,可是当软著下来,到抖音提交基础信息审核时,抖音审核不过,所以游戏名字尽量不要有违规敏感字。

voidinit的专栏 457

AI实战:如何更好的使用AI开发游戏项目

这个过程AI就不是那么的擅长,所以需要你一步步的先搭建框架,再来指导AI主要的流程,分割出一个个的模块,一步步的把整个架子搭起来,最后再用AI将一个个功能区填充。比如你GameMgr里面有两种模式的玩法,AI分析出来以后,就会得到两种模式玩法的概念,这样你用这些"概念"去下提示词,就能更精准的操控AI,生成你要的代码。AI擅长开发工具脚本代码,有了AI,我们能出很多提升我们工作流效率的代码工具,以前为了节约工具开发时间的功能,而被迫手动处理的,现在都可以无限的交给AI写工具脚本来完成。

voidinit的专栏 569

个人开发者如何拉升产品运营数据

2: 皮肤,这个是最常用的通用手段,"奖励"是"每日登录"等模块的灵魂,玩家为什么会来挑战,因为有他想要的奖励,而奖励最常见的就是皮肤。拉升运营数据一般的指标有:人均用户时长,人均看广告的次数与看广告的动力,游戏的留存数据,社交裂变,产品矩阵。1:搭建产品矩阵,不再以单个的产品来看用户留存来看运营数据,而是通过多款产品来拉升用户的整体的运营数据。游戏上线后需要一波波的加一些内容上去,拉升爬坡产品数据,获得更好的运营结果,从而有机会获得更多的流量。这里列举的是通用的游戏模块,每个游戏都可以从,同时可重用。

voidinit的专栏 271

总结篇:新游戏如何调试买量模型与运营数据

一个个变量的调整,我们的调整顺序为:用户时长,用户次留,核心用户的时长,用户的pv,最后上“流氓广告”手段。例如游戏定位12~18岁的目标用户,就找对应的周边用户体验,拿反馈。加入,你一天买10W的量,可能5W是目标用户,5W为非目标用户,会导致整体的运营数据无法分析,波动很大。我们买到目标用户的判断为平均用户时长,所以我们只有在假定"产品匹配目标用户后用户平均时长>= 5+分钟"前提下去调整买量,当我们买回一批批量时,我们看用户平均时长是否达标,不达标继续调买量区间,价格,素材,广告计划,投放版位等。

voidinit的专栏 451

Unity转微信小游戏的版本迭代时的资源缓存过期的方案处理

老用户的"新代码+旧资源"加载的时候,会读取到旧资源的版本号,与服务器固定地址的最新版本号(干脆直接带到代码里的资源版本号,这样就不用部署服务器了)进行比对,如果不一样,就比较"最新的"与"老的"资源列表文件,删除掉md5不一致的资源文件,再进入游戏,这样老用户就能使用到 "新代码+新资源"。Unity+YooAssets关于新版本功能更新后,新用户使用的是"新代码+新资源",而老用户使用的却是"新代码+老资源",老用户使用的还是本地缓存的老资源,导致程序报错,无法正常启动。

voidinit的专栏 556

《废土摸金小队》2月8日~2月11日的运营总结与技巧分享

刚开始,我也是百思不得其解,我猜是买不到好的用户的量,然后打算错峰去买,同时我感觉系统会带你去那些没有人买的流量区去探索,所以我就排除掉一些不用的渠道,专注于朋友圈,视频号,小程序广告等,2月11日凌晨,我设置好日预算200,排除掉其它"垃圾渠道",把单价直接拉升到2块,高于大盘"射击类目"的平均值。我的操作手段有:提高出价,降低ROI,提高ROI,再次提高出价,限定年龄,排除49岁以上的,排除掉渠道"优量汇",换账号投放,使用AI智能投放等。到2月10日,我的问题仍然没有解决。其实目前的比例还挺好。

voidinit的专栏 728

Unity转3D微信小游戏从研发到上线发布踩坑记录与经验分享

对于H5来说,跑在微信上的小游戏没有这个问题,我们降帧到60FPS后,之前有问题的 1+ ace3也能流畅的运行,考虑到小游戏,而且小游戏的60FPS与120FPS没有差别,所以最后我们降帧到60FPS上线,手机apk的120FPS要比小游戏120FPS效果要强很多。裁剪的时候,一个个裁剪级别提升。某些情况下只能用同步加载的(比如UI界面的ICON,当你打开一个界面,要显示ICON,这就不适合异步加载,因为界面关闭后,还有icon没有加载完成,加载完成后会报错)我们被迫会要使用预加载+缓存Get的模式。

voidinit的专栏 780

Unity自动化美术资源校验工具(模型/材质规范检测)技术详解

csharp[CreateAssetMenu(fileName = "ValidationRule", menuName = "Tools/校验规则")]// 条件判断// 适用于的资源类型Model,Material,Texture,Animation,Prefab,AnyFileSize,Dimension,CountEqual,NotEqual,LessThan,Contains,EndsWith质量保障。

voidinit的专栏 1138

Unity基于GraphView的可视化关卡编辑器开发指南

csharp// 添加交互控制器// 缩放控制// 背景样式// 获取兼容的端口用于连接// 防止自连接// 防止同一节点连接// 输入只能连接输出// 类型必须匹配});// 创建房间节点// 创建敌人节点css/* 基础样式 */#关卡图 {/* 节点通用样式 */.node {/* 房间节点样式 *//* 敌人节点样式 */

voidinit的专栏 1281

分享一个好玩的:一次提示词让AI同时开发双引擎框架

既然是两个引擎的代码要同时生成,我就要把这两个引擎的框架代码做好规划,统一的放到一个文件夹下,让Cursor的工程关联到这个文件夹。在你的设计下,使用AI 写框架,具体代码不用自己写,能节约大家的时间,提升工作效率。对框架来说目录结构很重要,当用AI把大部分的框架的核心接口都生成出来后,我们进一步对目录结构做好规范,并同步设计思路给到AI,让它接下来的工作更"懂你",符合你的要求。AI 要用的好,需要人来给他指明一些方向,所以我们在使用AI写框架的时候,先给他指明一些基本的方向,目录结构就是很重要的一环。

voidinit的专栏 1188

试玩小游戏运营投放全流程详解

试玩基础库与小游戏基础库一样,API 会挂载在全局的 wx 对象上,但试玩里面能用的 wx 接口是不一样的,有些接口名虽然和小游戏的接口名一样,但定义上有细微差别,请仔细查看试玩的 API 文档。管理试玩内容在微信服务商平台完成,服务商管理员或服务商运营人员登录微信服务商平台后,点击【小游戏】->【试玩广告】->【去制作】即可进入试玩内容管理界面,管理该账号下的已有的试玩内容和创建新的试玩内容。当某个小游戏想要做试玩小游戏投放时,首先要开通小游戏的试玩能力,登录"MP后台",开通"试玩能力"。

voidinit的专栏 1384

AI游戏开发全自动编程课程体系(Cursor版,支持Unity/Cocos, Laya后续支持)

1: 基于AI工具+阅读《C#服务器+双客户端(Unity/Cocos)TurnKey》方案的架构与设计;基于《C#服务器+(Unity/Cocos)客户端Turnkey方案》全栈自动开发《好友对战五子棋》基于《C#服务器+(Unity/Cocos)客户端Turnkey方案》全栈自动开发《对战射击类游戏》基于《C#服务器+(Unity/Cocos)客户端Turnkey方案》全栈自动开发《捕鱼达人3D》基于《C#服务器+(Unity/Cocos)客户端Turnkey方案》全栈自动开发《割草类》

voidinit的专栏 1272

技术分享:游戏战场中如何处理角色死亡时各种姿势的“尸体“

Step2: 要模拟角色"死亡"后不同的骨骼摆放的位置,姿势各有不同,那么我们要给人形动画的每个关节带上一些物理刚体RigidBody+物理形状。(3)全部把"物理人形骨骼"开启以后,在脚下给"物理人形骨骼"一个"物理爆炸"的力。Step5: "物理爆炸"结束2秒后,再禁用"物理人形骨骼",这样角色就会躺在地面上,骨骼摆放为不同的姿势。运行的时候,正常情况下,"物理人形骨骼"都被禁用,不会对角色正常控制产生任何的影响。单独的针对"人形骨骼"的节点做一个独立的物理分组,不与其它的物理分组产生任何碰撞。

voidinit的专栏 831

搜打撤类技术分享:基于人形动画的上下半身分层状态控制

Move(下半身)+Idle(上半身)做为普通的Move状态,Move(下半身)+瞄准射击(上半身)做为带攻击的Move状态。支持Unity/Cocos双客户端,以“第三人称射击类”游戏为玩法主体,基于目前比较火的”搜“,”打“,”撤“的游戏结构,玩家通过战斗,收集装备,升级装备,获取宝物等可以战斗,可以撤退。ShootLayer: 播放角色的idle 或者 瞄准射击动画,把ShootLayer的人形动画,带一个动画Mask, 只作用上半身。(2):完整的第三人成射击类的”地图编辑器“的工具开发;

voidinit的专栏 637

给出一套方案:角色如何自由搭配枪械与武器

支持Unity/Cocos双客户端,以“第三人称射击类”游戏为玩法主体,基于目前比较火的”搜“,”打“,”撤“的游戏结构,玩家通过战斗,收集装备,升级装备,获取宝物等可以战斗,可以撤退。如果每种武器对于不同的模型,手臂的挂载点的位置不一样,我们可以在骨骼里面添加特殊的挂载点,来做到更好的匹配。分为"单手"模式与"双手模式",单手又分为"左手"与"右手",左手就绑定到左手的"锚点",右手就绑定到右手的"锚点"。step4: LateUpdate里面武器把自己的"锚点"与角色的"骨骼点"同步;

voidinit的专栏 748

关于“SUD全资收购Cocos“对开发者影响的一些看法

每次版本重大的升级,都会有很多的调侃,"这很Cocos",“这很王哲”。对于开发者而言,其实也没有必要过于的担心,如果下一阶段Cocos的引擎还可以满足企业的需求,那继续用就可以了,如果不能满足需求,换别的引擎即可,从一个引擎换到另外一个引擎,对于开发者的技术成本没有那么高,代码能力,设计思想,处理经验等,不会随着引擎的切换而改变。不同的工具,不同的生态,不同的做法,也会带来很多思路上的不同和思维上的碰撞,其实对开发者更多是好事。"变化"能给"一潭死水"的生活带来"意想不到"的变化。

voidinit的专栏 576

新课发布:《逃离鸭科夫》搜打撤类商业化方案

考虑射击游戏的题材,本游戏为3D游戏,不考虑2D模板。游戏的商业化渠道主要面向微信抖音小游戏,来做关卡和策划案,如果是手游或Steam,再做更复杂的场景+关卡。《肉鸽类》同一套数值,同时支持2D/3D类游戏,商业化方案已经完成,很多学员关心接下来是哪个方案。我们在找全免素材的过程中发现一套素材还不错,角色也是百搭,正好结合最近很火的《逃离鸭科夫》我们决定下一个课程方案为:第三人人称射击类游戏,核心玩法为鸭科夫的核心玩法”搜,打,撤“。(1):完整的第三人称射击类的"搜打撤"玩法的策划案,数值与成长体系;

voidinit的专栏 586

如何基于全免费素材,0美术成本开发游戏

最近我们肉鸽游戏原型方案开发完毕,接下来做商业化。遇到的第一个问题就是美术成本太贵。找了一些美术外包公司评估,报价都在15万以上。和之前的游戏美术成本评估有比较大的差距。IAA纯小游戏在没有验证的时候就投入"高成本"(相对于小游戏来说)无疑风险比较大。我们内部商议决定:"游戏商业化可以分为"数值商业化+美术精品化“。先快速试水与迭代,做好数值精品化。如果数据可以,再做美术精品化"。对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀观点1:免费素材3D比2D好,精品化2D比3D成本低

voidinit的专栏 1522

战斗系统核心设计:如何提供机制解决游戏项目中的成百上千的Buff

每一类Buff我们称为一个BuffModel, BuffModel实现了Buff的计算逻辑与策略,Buff框架根据BuffId的类型,找到匹配的BuffModel,再根据相关"属性"找到对应的处理函数,而BuffModel的编写留给具体的项目逻辑,我们只提供BuffModel的机制。比如复活以后,5秒的无敌状态,我们的实现逻辑为,计算伤害的时候,如果目标有"无敌Buff",那么我们就不计算伤害直接返回。-1,表示的是大类默认的,如果有特殊的小类,我们就可以注册这个属性的特殊的小类。有限状态机,行为决策树?

voidinit的专栏 1378

战斗系统架构:为什么游戏战斗适合ECS架构?

以此来代替传统复杂的继承体系。2: 游戏世界中的角色:玩家(主角,其它玩家角色,小兵队友等),敌人(近战小怪,远战小怪,精英怪,Boss怪等),道具(戒子,宝石,加速鞋等), 传送门,NPC(任务NPC, 商城兑换NPC等),游戏子弹等。8: 面对5种英雄,8种军团兵种,25种敌人怪物,37种道具,49种技能,32种局内升级,15级的局外天赋升级,我们是如何做好技能与Buff的架构?优势4: 组织结构更加的清晰规范,基于不同的迭代,分开代码文件,避免一个代码文件中,N个不相关的代码逻辑,也方便重构与替换。

voidinit的专栏 953

《商业化陪跑肉鸽项目》正式结束!

2: 本教程的详细目录如下:(注:框架使用我们商用框架,课程没有包含在内)(8): 战斗逻辑采用ECS架构,扁平独立的逻辑处理,替代继承体系;(5)适合微小,抖小的创业者,快速基于我们的工具构建自己的产品项目;(2): 8种暗影军团角色,包含远战与近战,局外天赋与局内升级;(1)熟练掌握商业化项目的框架设计,策划案,项目开发;第048节战斗范围的调试区域绘制与被攻击时的决策规则。第080节局外战斗Buff与局内升级Buff的初始化。(4): 16种技能,17种道具,59种Buff;

voidinit的专栏 500

游戏开发中的暂停的设计

如此一来,当游戏战斗世界要暂停的时候,只要针对"游戏管理"来暂停不迭代,从而导致游戏管理的update不再迭代其它的战斗单元的"Logic Update",这样导致整个的游戏世界+游戏战斗单元全部暂停。思考2: 游戏暂停,我们是针对战斗逻辑暂停,其它的部分可以不用暂停,这样开宝箱等动画需求时,都不会受到影响,我们只是暂停游戏的逻辑迭代+游戏角色的动画暂停,游戏世界中的粒子暂停。(一)针对游戏战斗世界暂停,游戏逻辑管理负责做好游戏战斗单元的暂停与恢复即可:暂停战斗单元迭代,暂停战斗单元动画,特效。

voidinit的专栏 933

团体战斗核心技术:如何防止团体进攻中角色堆叠在一起

比如A, B两个角色同向向右移动,当A,B发现彼此"堆叠"后,A迭代完移动,然后堆叠处理模块再把A往回迭代,这样A就不动,B正常移动,这样多次处理后,A与B保持安全距离了,则A继续移动。如:角色与怪物走进了自己的攻击区域,则发起攻击,不会继续前进,自然就通过攻击来将"异类"的堆叠避免,如果有必要,也可以把同类堆叠处理改成全类防堆叠处理。"堆叠模块"在每次迭代的最后的逻辑处理。如下图的代码接口,战斗迭代的时候,堆叠发生在寻路导航,AI处理,技能释放等迭代的最后,最后再调用堆叠模块"来"修正堆叠"现象。

voidinit的专栏 721

经典面试题:“你们的项目中是如何做红点系统的“?

面试官你好,红点是复杂游戏必备的提醒玩家与推进玩家游戏进程的工具与手段,在项目中非常常用。每个公司的项目的需求不同,设计的方式和结构可能不一样,我们公司之前的某个项目是这样做的。

voidinit的专栏 607

面试经典问题:如何设计红点系统?

游戏开发中,随着功能越来越复杂,我们会有一些重点的提示,需要让玩家每天都了解与清楚,比如新触发的任务,未领取的奖励,商城中的特惠活动,有未读的系统消息,有新的装备可以穿戴上,达成可以升级条件,升级相关的角色与装备等需求。而二级界面下面可能又有不同,比如任务,二级分类为"系统任务",“好友任务”,下面就有新的任务需要显示红点,一级分类"任务"有红点,同时二级分类"系统任务",“好友任务”也要有红点提示。红点数据,不同的界面层级,有不同的红点数据,比如,一级界面的红点可能显示的是,任务,邮件,商城,奖励等。

voidinit的专栏 1061

Unity面试技巧每日分享

某个类型的某个新上架的商品。1: 方便有红点需求的地方,调用一个接口就可以把红点展示出来,所以我们会提供一个显示红点的接口,只要调用,就能在特定的位置显示红点;而二级界面下面可能又有不同,比如奖励,下面就有未领取的奖励需要显示红点,而正式因为有未领取的奖励,所以一级界面"奖励"那里才有红点。3: 红点的显示有对应的层级,我们会把红点单独的放一个层级,这样避免红点来打乱界面的合批,同时能让红点在一起渲染。红点数据,不同的界面层级,有不同的红点数据,比如,一级界面的红点可能显示的是,任务,邮件,商城,奖励等。

voidinit的专栏 291
上一篇: Unity多Pass渲染与GPU Instancing深度优化指南
下一篇: Unity ECS与MonoBehaviour混合架构开发实践指南
Clank的游戏栈
Clank的游戏栈 企业官方账号 企业官方账号
博客等级 码龄21年 2889粉丝 561原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值