找回密码
 立即注册
搜索
查看: 1487|回复: 14

[软件] 求助:游戏精灵编程

[复制链接]
     
发表于 2024-6-3 16:50 | 显示全部楼层 |阅读模式
本帖最后由 proof1 于 2024-6-3 16:53 编辑

讨论一:

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

未分格:
Sega Genesis 32X - Golden Axe - Dragons.gif

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

2、图片没有切割位置坐标数据。

  已分格的还可以手工查阅位置坐标;
  未分格的若手工切割,则一个人切一个样。



讨论二:

精灵是GIF格式图片:
51.gif

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


回复

使用道具 举报

     
发表于 2024-6-3 16:55 | 显示全部楼层
以前硬件受限吧,图片放在一起合成一个文件载入内存或者分块载入比较高效。
另外这些一般都是开发时候用脚本打包合并的,其实不麻烦。
回复

使用道具 举报

     
发表于 2024-6-3 18:26 | 显示全部楼层
不复杂,而且这是引擎基本功能吧
回复

使用道具 举报

头像被屏蔽
     
发表于 2024-6-3 18:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2024-6-3 19:09 来自手机 | 显示全部楼层
现代引擎都支持,视觉小说游戏都是靠 sprite 渲染的

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

使用道具 举报

     
发表于 2024-6-3 19:36 | 显示全部楼层
早期的游戏rom中应该没有文件名的概念吧
多少地址到多少地址间是boot,多少地址到多少地址间是sprite

回复

使用道具 举报

     
 楼主| 发表于 2024-6-3 20:43 | 显示全部楼层
精钢魔像 发表于 2024-6-3 18:26
不复杂,而且这是引擎基本功能吧

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

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

使用道具 举报

     
 楼主| 发表于 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 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 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
回复

使用道具 举报

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

使用道具 举报

     
发表于 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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-9-28 08:09 , Processed in 0.663929 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表