proof1 发表于 2024-6-3 16:50

求助:游戏精灵编程

本帖最后由 proof1 于 2024-6-3 16:53 编辑

讨论一:

下载的sheet精灵图。
已分格:


未分格:


1、我看的教程,是一种精灵单独放在一张图上,并且单元格等高等宽。
  这种大小不同的精灵,放到同一张图上。游戏编程是否比较复杂?

2、图片没有切割位置坐标数据。
  已分格的还可以手工查阅位置坐标;
  未分格的若手工切割,则一个人切一个样。



讨论二:

精灵是GIF格式图片:


3、这种精灵。游戏编程是否复杂一点。速度能够保证吗?网上有示例吧?


yseternal 发表于 2024-6-3 16:55

以前硬件受限吧,图片放在一起合成一个文件载入内存或者分块载入比较高效。
另外这些一般都是开发时候用脚本打包合并的,其实不麻烦。

精钢魔像 发表于 2024-6-3 18:26

不复杂,而且这是引擎基本功能吧

すぴぱら 发表于 2024-6-3 18:48

散图在打包时自动合成一张图集是现代引擎最基础的功能 不需要编程

JetBrains 发表于 2024-6-3 19:09

现代引擎都支持,视觉小说游戏都是靠 sprite 渲染的

—— 来自 HONOR REA-AN00, Android 14上的 S1Next-鹅版 v3.0.0.81-alpha

chachi 发表于 2024-6-3 19:36

早期的游戏rom中应该没有文件名的概念吧
多少地址到多少地址间是boot,多少地址到多少地址间是sprite

proof1 发表于 2024-6-3 20:43

精钢魔像 发表于 2024-6-3 18:26
不复杂,而且这是引擎基本功能吧

没用引擎。
用DirectX + D3DX扩展库 + C++

即便是引擎,它能自动切割图片、划分单元格吗?

proof1 发表于 2024-6-3 20:48

すぴぱら 发表于 2024-6-3 18:48
散图在打包时自动合成一张图集是现代引擎最基础的功能 不需要编程

下载的一张合成后的图集。
设计游戏时,借用这张图,也不复杂吗?

如何切割呢?引擎能自动切割吗?精灵不同、大小不一、位置不定,如何自动?

天气姐姐 发表于 2024-6-3 20:48

这种图一般是配一个json或者其他格式的配置文件使用吧,里边描述了每一个元素的范围是多少,你解析位图的时候按照json里写的来

—— 来自 OPPO PGEM10, Android 14上的 S1Next-鹅版 v2.5.4

精钢魔像 发表于 2024-6-3 21:21

proof1 发表于 2024-6-3 20:43
没用引擎。
用DirectX + D3DX扩展库 + C++



b站看看unity、godot的2d像素游戏教程

建议从引擎开始,折腾图形接口对游戏设计来说没什么意义

すぴぱら 发表于 2024-6-3 21:25

proof1 发表于 2024-6-3 20:48
下载的一张合成后的图集。
设计游戏时,借用这张图,也不复杂吗?




做游戏都有一套前端工具链的,当代游戏开发人员并不需要对着directx手k代码,甚至可能游戏做了五年都不知道dx是什么, 你要的东西都有成熟的制作流程,没事多看看**

问一连串问题之前建议是下载一个unity或者ue看看图集部分,现代商业级开发环境都能做哪些不能做哪些说明书里一目了然, 说过了图集拆解和合并都是基础功能

gawain 发表于 2024-6-3 22:14

单纯对图集打包可以看下texturepacker。dx是渲染库和游戏引擎不是一回事。

岛风酱 发表于 2024-6-3 22:38

texturepacker+aseprite 职业级的像素画精灵工作流方案
1,不用自己去开发了,在主流通用引擎上都有着完整的工具链支持
2,的支持也都很完善,unity和ue都支持对uv拆分后的sprite位置微调

讨论二,2d精灵游戏基本上是开发难度最低的美术表达方式了,这方面的参考案例b站就有不少,关键词2d 游戏开发

—— 来自 nubia NX729J, Android 14上的 S1Next-鹅版 v2.5.2-play

hourousha 发表于 2024-6-4 13:01

LZ说不用引擎直接用API写,也许是想学习API顺带了解图形硬件.LS一堆讨论引擎的,是不是跑偏了.
对于问题2,GIF的问题是,由于每个frame都可以设定调色板,区域,delay,而delay甚至可以是0,所以理论上不支持随机时间访问,想得到时刻n的画面,需要从0时刻开始迭代.
再者对于效率而言,更新的纹理越大越耗费时间还可能造成stall,你示例的那个飞机,大部分内容是静态的,连同它一起高频率更新显然是不合理的,所以合理的方法还是拆开,并把螺旋桨动画变成序列帧.

q8f13 发表于 2024-6-4 13:22

那就是自己手控spritesheet了,如果不用库的话实际上就是用工具合并成spritesheet(再手动点就是自己用图像编辑软件拼),然后从合并出来的文件获取clip单帧的信息(手动拼的要自己算好x, y, width, height,行列数等)
再用代码组织动作,帧速度,blend方法——对应不同的行列位置
用库的话sdl之类的就有api,比如 https://dzone.com/articles/animations-with-sprite-sheets-in-sdl2
页: [1]
查看完整版本: 求助:游戏精灵编程