Day08_OpenGfx源码分析

返回目录

《Day05_OpenTTD的Sprite介绍》,我们学习了OpenTTD的资源文件以及加载内存的全过程,在ubuntu环境下,资源文件放在 ~/.openttd/baseset 目录下,我们把grf文件用16进制方式打开后,发现都是 00 00 47 52 46 82 0D 0A 1A 0A 开头,如下:
在这里插入图片描述

通过 https://newgrf-specs.tt-wiki.net/wiki/Main_Page 的学习,我们了解到 OpenGfx使用nml进行数据压缩生成grf文件,然后压缩成tar文件

简单讲,就是把图片文件,切割编号压缩,其中图片文件 存放位置 ~/sprites/png ,切割的规则文件 扩展名pnml 存放位置~/sprites/ 子目录下

下面这个是最普遍的提取形式,图片文件名 gui04.png ,切割图片的范围在后面数组确定。
在这里插入图片描述

下面这种方式,切割图片的数组用template确定,这样可以复用
在这里插入图片描述

下面这种是带参数调用template
在这里插入图片描述

下面这种形式比较少,文件名带 recolor 关键字,估计是用在交通工具车身,不同公司渲染不同颜色
在这里插入图片描述

下面,我们来尝试修改一个sprite的格式,并加载到游戏中。
在 tree_gui.cpp 使用 tree_sprites[] 数组获取一颗树对应的sprite
在这里插入图片描述

通过1978 这个id,我们找到 base-1576-trees.pnml Line 226
base_graphics spr1978(1978, “sprites/png/landscape/landscape031.png”) { [ 658, 984, 21, 39, -10, -33] }

通过画图,我们定位到Sprite对应的图片位置
在这里插入图片描述

我们直接用windows画图 修改这个png文件,然后上传重新编译结果报错了。
在这里插入图片描述

https://www.tt-wiki.net/wiki/Save_paletted_image_files ,我们了解需要用photoshop导入paletted image files 然后进行编辑保存。
在这里插入图片描述

我们修改好png文件后保存,上传到 OpenGFX目录下面,编译成功后 放到 ~/.openttd/baseset ,启动游戏后,启动对应的主题地图,可以发现我们修改的sprite 在新游戏出现了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值