当前位置: 首页 > backend >正文

制作一款打飞机游戏14:资源优化

在目前的开发中,我们发现精灵表的使用效率非常低。尤其是我们的飞船(Jet)精灵,尽管它几乎是对称的,但我们仍在完整地存储其两侧的精灵数据,这造成了空间浪费。

解决方案:镜像精灵
  1. 精灵表重组‌:

    • 首先,我创建了一个新的精灵表,将不必要的测试精灵移除,为优化后的精灵腾出空间。
    • 然后,我将飞船精灵复制到新表中,并开始进行微调。
  2. 去除冗余空间‌:

    • 我注意到飞船精灵的底部有两行完全是黑色的,这是不必要的空间浪费。通过微调精灵的像素位置,我移除了这些黑色行。
  3. 添加轮廓‌:

    • 为了提高飞船在森林等深色背景中的可读性,我决定为飞船添加浅蓝色轮廓。虽然可以通过代码绘制轮廓,但考虑到CPU效率,我选择直接修改精灵图,将轮廓添加到精灵中。
  4. 精灵打包‌:

    • 通过让飞船精灵的轮廓部分重叠,我进一步节省了精灵表空间。这样,两个几乎相同的精灵(一个向左倾斜,一个向右倾斜)可以共享轮廓数据。
  5. SSPR函数应用‌:

    • 我引入了SSPR函数来绘制飞船精灵。SSPR函数比SPR函数更强大,但也需要更多的参数。为了简化调用,我创建了一个名为mySPR的数组,用于存储每个精灵的绘制参数。
    • 通过mySPR数组,我可以轻松地通过单个索引值绘制精灵,而无需每次都输入大量的参数。
      
      function mspr(si,sx,sy)local ms=myspr[si]sspr(ms[1],ms[2],ms[3],ms[4],sx-ms[5],sy-ms[6],ms[3],ms[4],ms[7]==1)end

  6. 精灵中心偏移‌:

    我注意到,之前精灵的中心点总是默认在左上角,这在视觉上并不直观。因此,我在mySPR数组中添加了偏移量参数,允许我们更灵活地定位精灵的中心点。
  7. 镜像精灵实现‌:

    为了进一步节省空间,我设计了一个系统,允许我们仅存储精灵的一半数据,并通过镜像功能绘制另一半。我在mySPR数组中添加了一个标志位,用于指示精灵是否需要被镜像绘制。
http://www.xdnf.cn/news/997.html

相关文章:

  • Nginx下搭建rtmp流媒体服务 并使用HLS或者OBS测试
  • 性能比拼: Nginx vs Caddy
  • NHANES指标推荐:PhenoAge
  • Ldap高效数据同步- Delta-Syncrepl复制模式配置实战手册(上)
  • 极验4滑块笔记:整理思路--填坑各种问题
  • 傲来云分享,负载均衡:提升网站性能与稳定性
  • 无人机飞控运行在stm32上的RTOS实时操作系统上,而不是linux这种非实时操作系统的必要性
  • 【前端】【面试】【业务场景】前端如何获取并生成设备唯一标识
  • 报错 | 配置 postcss 出现 报错:A `require()` style import is forbidden.
  • C++中的算术转换、其他隐式类型转换和显示转换详解
  • 开发指南:构建结合数字孪生、大语言模型与知识图谱的智能设备日志分析及生产异常预警系统
  • ByteTrack自定义数据集训练指南
  • 如何将SpringBoot前后端项目制作成windows运行的exe文件
  • 【python实用小脚本系列】用Python让鼠标“动起来”:光标自动移动、自动点击、自动图象识别的小技巧
  • 【教程】Digispark实现串口通信
  • 计算机是如何工作的
  • 使用Python可视化偶极子的电场
  • 2025年一站式AI创作平台主要功能介绍及使用教程
  • rac防火墙未禁用服务器重启导致二节点启动异常
  • Unity 场景管理核心教程:从 LoadScene 到 Loading Screen 实战 (Day 35)
  • 简单了解一下Unity Shader中的Swizzle操作
  • AI Agent认知框架(ReAct、函数调用、计划与执行、自问自答、批判修正、思维链、思维树详解和对比,最后表格整理总结
  • 移动端数据抓取:Android App的TLS流量解密方案
  • Springboot集成websocket实现消息推送
  • 深入解析 Spring 中的 @Value 注解(含源码级剖析 + 自定义实现)
  • jmeter跟踪重定向和自动重定向有什么区别?
  • 【计算机视觉】CV实战项目- CMU目标检测与跟踪系统 Object Detection Tracking for Surveillance Video
  • JavaScript-原型、原型链详解
  • Kubernetes相关的名词解释POD(13)
  • Spring Boot+Mybatis设置sql日志打印