求助:游戏精灵编程
本帖最后由 proof1 于 2024-6-3 16:53 编辑讨论一:
下载的sheet精灵图。
已分格:
未分格:
1、我看的教程,是一种精灵单独放在一张图上,并且单元格等高等宽。
这种大小不同的精灵,放到同一张图上。游戏编程是否比较复杂?
2、图片没有切割位置坐标数据。
已分格的还可以手工查阅位置坐标;
未分格的若手工切割,则一个人切一个样。
讨论二:
精灵是GIF格式图片:
3、这种精灵。游戏编程是否复杂一点。速度能够保证吗?网上有示例吧?
以前硬件受限吧,图片放在一起合成一个文件载入内存或者分块载入比较高效。
另外这些一般都是开发时候用脚本打包合并的,其实不麻烦。 不复杂,而且这是引擎基本功能吧
散图在打包时自动合成一张图集是现代引擎最基础的功能 不需要编程 现代引擎都支持,视觉小说游戏都是靠 sprite 渲染的
—— 来自 HONOR REA-AN00, Android 14上的 S1Next-鹅版 v3.0.0.81-alpha 早期的游戏rom中应该没有文件名的概念吧
多少地址到多少地址间是boot,多少地址到多少地址间是sprite
精钢魔像 发表于 2024-6-3 18:26
不复杂,而且这是引擎基本功能吧
没用引擎。
用DirectX + D3DX扩展库 + C++
即便是引擎,它能自动切割图片、划分单元格吗? すぴぱら 发表于 2024-6-3 18:48
散图在打包时自动合成一张图集是现代引擎最基础的功能 不需要编程
下载的一张合成后的图集。
设计游戏时,借用这张图,也不复杂吗?
如何切割呢?引擎能自动切割吗?精灵不同、大小不一、位置不定,如何自动? 这种图一般是配一个json或者其他格式的配置文件使用吧,里边描述了每一个元素的范围是多少,你解析位图的时候按照json里写的来
—— 来自 OPPO PGEM10, Android 14上的 S1Next-鹅版 v2.5.4 proof1 发表于 2024-6-3 20:43
没用引擎。
用DirectX + D3DX扩展库 + C++
b站看看unity、godot的2d像素游戏教程
建议从引擎开始,折腾图形接口对游戏设计来说没什么意义 proof1 发表于 2024-6-3 20:48
下载的一张合成后的图集。
设计游戏时,借用这张图,也不复杂吗?
做游戏都有一套前端工具链的,当代游戏开发人员并不需要对着directx手k代码,甚至可能游戏做了五年都不知道dx是什么, 你要的东西都有成熟的制作流程,没事多看看**
问一连串问题之前建议是下载一个unity或者ue看看图集部分,现代商业级开发环境都能做哪些不能做哪些说明书里一目了然, 说过了图集拆解和合并都是基础功能 单纯对图集打包可以看下texturepacker。dx是渲染库和游戏引擎不是一回事。 texturepacker+aseprite 职业级的像素画精灵工作流方案
1,不用自己去开发了,在主流通用引擎上都有着完整的工具链支持
2,的支持也都很完善,unity和ue都支持对uv拆分后的sprite位置微调
讨论二,2d精灵游戏基本上是开发难度最低的美术表达方式了,这方面的参考案例b站就有不少,关键词2d 游戏开发
—— 来自 nubia NX729J, Android 14上的 S1Next-鹅版 v2.5.2-play LZ说不用引擎直接用API写,也许是想学习API顺带了解图形硬件.LS一堆讨论引擎的,是不是跑偏了.
对于问题2,GIF的问题是,由于每个frame都可以设定调色板,区域,delay,而delay甚至可以是0,所以理论上不支持随机时间访问,想得到时刻n的画面,需要从0时刻开始迭代.
再者对于效率而言,更新的纹理越大越耗费时间还可能造成stall,你示例的那个飞机,大部分内容是静态的,连同它一起高频率更新显然是不合理的,所以合理的方法还是拆开,并把螺旋桨动画变成序列帧. 那就是自己手控spritesheet了,如果不用库的话实际上就是用工具合并成spritesheet(再手动点就是自己用图像编辑软件拼),然后从合并出来的文件获取clip单帧的信息(手动拼的要自己算好x, y, width, height,行列数等)
再用代码组织动作,帧速度,blend方法——对应不同的行列位置
用库的话sdl之类的就有api,比如 https://dzone.com/articles/animations-with-sprite-sheets-in-sdl2
页:
[1]