by

Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Jun 11 00:43
    palxex edited #106
  • Jun 11 00:43
    palxex edited #106
  • Jun 10 01:24
    palxex commented #77
  • Jun 10 01:24
    palxex commented #77
  • Apr 17 08:37
    Travis sdlpal/sdlpal (master) passed (1404)
  • Apr 17 08:34
    Build #1239 passed
  • Apr 17 08:23

    CecilHarvey on master

    fix google play deploy (compare)

  • Apr 17 08:17
    Travis sdlpal/sdlpal (master) fixed (1403)
  • Apr 17 08:17
    Build #1238 passed
  • Apr 17 08:06

    CecilHarvey on master

    fix google play deploy (compare)

  • Apr 17 07:42
    Build #1237 passed
  • Apr 17 07:38
    Travis sdlpal/sdlpal (master) failed (1402)
  • Apr 17 07:31
    Build #1236 passed
  • Apr 17 07:29
    Travis sdlpal/sdlpal (master) broken (1401)
  • Apr 17 07:27

    CecilHarvey on master

    fix google play deploy (compare)

  • Apr 17 07:21
    Build #1235 passed
  • Apr 17 07:21
    Travis sdlpal/sdlpal (master) errored (1400)
  • Apr 17 07:15

    CecilHarvey on master

    fix google play deploy (compare)

  • Apr 17 07:11

    CecilHarvey on master

    fix google play deploy (compare)

  • Apr 15 04:41
    Travis sdlpal/sdlpal (master) passed (1399)
PalMusicFan
@PalMusicFan
此外,作为民间MOD,建议所有的修改都考虑多平台通用,游戏逻辑的修改不建议在平台专用部分(例如安卓的java部分)实现。
PalAlexx
@PalAlexx
每一个道具的作用 属性等等也都是写在脚本里的 只要你吃透了palresearch里的内容 基本就可以开工了,当然如果你想引入一些奇奇怪怪的功能,可能需要自己去修改源代码,因为SDLPAL的初衷是尽量的还原PAL.EXE,比如梦幻2.2.2里的四人组队还有敌人动态等级都是这个MOD作者自行修改源码的
Tong Guo
@guotong1988
image.png
这个被调用的都在哪
Tong Guo
@guotong1988
文档说sss第3个文件共6780字节,我下98版sss出来是7910字节,咋整
Pal Lockheart
@palxex
SSS.3对象定义的话,DOS和98不同,palresearch里的资料是对DOS版的。98每个对象多2字节,是一个脚本入口,具体功能是指向脚本清单中当前对象的解释(多半都是ffff打印指令),物品和法术都有。这是98多出来的新功能,所以对象定义从12字节扩充到了14字节。
Pal Lockheart
@palxex
SSS.1事件索引,我习惯叫NPC定义。其实就是每个地图对象的定义。每个此类对象,如果有6666自动脚本,那么每时钟(仙剑里事件时钟是10fps)执行一次,比如怪物追人;如果离主角足够近且为自动触发(根据7777触发状态和8888触发方式判定),那么就执行5555触发脚本。这里自动脚本和触发脚本其实都是一个SSS.5脚本清单中的入口编号。我来找个具体的例子说明下。
下面用98百游版作为数据来源,请确保已在palscript里执行make-98-baiyou.sh / cmd ,并获得了98-baiyou.txt这个脚本清单解释文件。
Pal Lockheart
@palxex
然后手动解出SSS.1,或者使用pal95tools找到仙剑98版的目录,在Edit菜单下展开Event Objects。找到第0x97号对象,这是十里坡的一个灯笼。其自动脚本a082,在98-baiyou.txt中找到为如下无限循环(palscript会自动根据脚本是否结束执行分段,看到空行就是一个逻辑上的结束):
a082: 004c 0008 0004 0001 ;本对象追向主角 8 4 1
a083: 0003 a082 0000 0000 ;跳转 a082 0
可见其地图对象的功能就是不断追向主角(因为仙剑的追逐写的每那么复杂,碰到中间有任何障碍物都会卡死……)。然后其触发方式为5,意为中距离接触触发,表现是怪物追到人物旁边就会自动执行其触发脚本A0ad,继续回到98-baiyou.txt查找:
a0ad: 0007 0001 a073 a071 ;开战 (灯笼|无|无|无|无) a073 a071
a0ae: 0003 a0a7 0000 0000 ;跳转 a0a7 0
(上文的a073、a071、a0a7分别是被打死、我方逃跑、我方战胜的功能脚本入口。具体每个脚本指令的功能——包括其参数——在scr_desc.txt里看,不再赘述)
这就是一个最简单的地图怪物的实际功能:见人就追,追上就打。每个对象有32字节,除了上面提到的固定定义部分,共有4字节、2个变量可以充当寄存器(但自动脚本和触发脚本各占了一个所以实际上无法同时使用)。
Pal Lockheart
@palxex
关于物品。仙剑中的物品是和其他对象一样放在SSS.3对象定义里的,sssplusA里讲的相当细了,感觉没啥需要单独讲的。非要说的话就是,仙剑的对象没有tag说明自己的类型,而是根据位置判断的,这对扩展相当不友好,如果想加自己的物品,多半只能靠砍掉老的无用物品(老仙剑里还是蛮多的)。当然也可以新增物品,但不改代码的前提下忌讳颇多,而且无人总结。有时间的话最好是看看经典mod比如梦幻版的实现,自己再尝试总结下。
Tong Guo
@guotong1988
感谢:)
弱问下梦幻版在哪看
Pal Lockheart
@palxex
Tong Guo
@guotong1988
请问下android studio用的什么版本,我打开项目失败了,我用的android studio2.3
顺便问下ndk的版本:)
Pal Lockheart
@palxex
一直用的当前最新版本,担心跑不了可以看看travis-ci上用的版本。android studio时不时就出此类问题,多清清缓存吧。
Hsiao
@StudywithHsiao
请问哪里修改移动的操作按键
PalMusicFan
@PalMusicFan
@StudywithHsiao https://github.com/sdlpal/sdlpal/blob/master/input.c 58行到92行。
月光双刀
@huoshan12345
找到组织了
Pal Lockheart
@palxex
🤝
月光双刀
@huoshan12345
大佬们,有谁研究过新仙剑的文件解析吗,之前我想在老仙剑里引用新仙剑的图片和素材,但是苦于不知道新仙剑素材文件的结构。我私信问过新仙剑图片浏览器的作者,他说让我自己研究不难。可是= =我无从下手,是要去看新仙剑主程序的反汇编还是啥。可否不吝赐教指点一二。
或者土星版的也行,我主要是为了学习一下,现在是不知道怎么下手。
Pal Lockheart
@palxex
新仙剑图片的话用van太守的rpgviewer即可解出。土星版目前没有现成的,可以看看palresearch里的palss,是楼兄之前的研究代码。
月光双刀
@huoshan12345
@palxex 多谢鲁痴大佬。我说的其实就是rpgviewer,我是想研究怎么解的,好在游戏里能不解压直接用,就像98版的素材那用。那我是应该去研究rpgviewer的反汇编吗。
Pal Lockheart
@palxex
呃……你的意思是想导入到仙剑游戏里吗?可以看看palresearch里面的packageutils,可以导入任意外源图片到仙剑的rle,包括rpgviewer导出的。如果是想研究新仙剑本身的结构,恕不清楚。
不过你需要相当熟悉原版的mkf/smkf/yj1等结构。另外外源图片基本都需要调整大小。
Pal Lockheart
@palxex
image.png
Pal Lockheart
@palxex
上图是群里@Alex 导入的轩辕剑3图片作为敌人的示例。
月光双刀
@huoshan12345
把图片变成rle我之前有一点了解。不过我最近是想自行修改sdlpal的源码,然后支持直接读取新仙剑的素材。现在就是不知道怎么研究新仙剑素材的结构。
Pal Lockheart
@palxex
这个恕无能为力,自己研究下吧。
月光双刀
@huoshan12345
多谢啦
PalMusicFan
@PalMusicFan
@huoshan12345 请问,SdlpalEdit是您维护的吗?握手!您说直接读取新仙剑的素材……我们知道老仙剑在技术上是完全不同的,要让为老仙剑而写的SDLPal直接去加载新仙剑的资源……假设资源解析顺利完成,具体到SDLPal这边需要如何进行组织呢?比如说新仙剑的地图是比较大的地形图像组合而成,而老仙剑地图则要求是拼图实现。这之间的差异要如何解决?另外,SDLPal加载老仙剑的数据后,如何确定正确的对应关系来读取新仙剑的资源?以及,新仙剑引擎支持的一些特性,例如真正的半透明,老仙剑没有,据我所知SDLPal也不支持,这类问题怎么办?谢谢!
月光双刀
@huoshan12345
@PalMusicFan 对,上学时候弄的,后来发现我写的部分实在太糙了,已经放弃治疗了。如果我准备再搞的话,我会直接fork最新的sdlpal搞。至于你说的问题,如果知道资源怎么解析了,就把相关的算法在sdlpal里面实现了。然后就分类处理嘛,如果data文件里面记载的图片属于新仙剑资源,那就用新算法加载就行了(反正已经是个人使用了,怎么方便怎么搞就行了)(至于什么画风啊,图片效果啊,这类的问题都是后续了,完全取决于对素材的处理能力了)
PalMusicFan
@PalMusicFan
这样的话……那不就成了移植新仙剑了?和SDLPal成了两个工程了……老仙剑的脚本与地图定义之类的和新仙剑的没法对应啊……
咱们拿最简单的来说,BGM。SDLPal直接播放新仙剑的MP3应该没有问题,但是这个编号的对应怎么办?
月光双刀
@huoshan12345
差远了,图片素材只是新仙剑的一小部分东西呀。bgm的话,把mp3的文件名编号对上就行。sdlpal直接就可以播放,如果mp3不存在就退化成播放midi。我当时还额外用到了其他音乐,比如说最终战专用音乐,没有对应的midi,那就需要做兼容。也就是如果这个mp3存在就播放这个,如果不存在就播放普通boss战音乐。这个是通过修改主程序实现的
其实你看一下源码你就都知道了,有些功能不用改主程序就能实现,有的不得不改
PalMusicFan
@PalMusicFan
您说到,把mp3的文件名编号对上就行。如何才能对上呢?是人工整理吗?而且我们知道,老仙剑的具体到什么时候播放什么音乐,大部分情况是写在脚本的,而不是可执行程序本身控制。
月光双刀
@huoshan12345
@PalMusicFan 我记得我是人工整理的,就一个一个听,然后改名成01.mp3这种。脚本里写的是放哪一首音乐,主程序播放音乐模块是先找mp3然后midi
PalMusicFan
@PalMusicFan
这样啊……既然需要人工整理,那么图形资源直接读取也许不如导出转换方便?我想图形部分对应关系会更复杂。而且新老仙剑地图不一样……
PalAlexx
@PalAlexx
个人感觉 想效果比较好的使用新仙剑的素材 得先让SDLPAL支持现代分辨率(真彩色都可以往后靠) - - 大工程来的
月光双刀
@huoshan12345
@PalMusicFan 我个人目的主要还是为了研究和学习
Pal Lockheart
@palxex
高分、真彩其实现在都有(否则shader部分咋做的),但没对游戏内部开放。游戏内部画面抽象一直被圈禁为一个320x200x256色16位调色板的小屏幕,而且这是好多内部实现(主要是帧缓冲相关,集中在对话相关脚本和战斗)的共同假设。除非有人有时间一次改好然后从头测一遍确保没造成原游戏兼容问题,没人敢动这块。不过对不考虑原版兼容性的第三方fork这块应该不是问题,各种不同分辨率的贴图如何用一个统一的方案(比如超高分整数upscale后再向下)确保最终渲染质量才是。
Wei-Zhou, Hong
@WeiZhouHong
请问一下,我发现仙剑98一个在执行的问题。虽然这可能本来就是游戏的问题,但仍希望在sdl上执行能和dosbox一致。状况如下:仙剑速通通常会在石长老那边先让逍遥和月如吃下紫罂粟和幻蛊让之后的盖姊和白苗少女受到该状态与减少体力
Wei-Zhou, Hong
@WeiZhouHong
在SDL没办法达成,因此又去测试了能否先吃金刚符,去战斗测试是可以达成的(这边一致)。
然后又做了另一个测试,假如有出现队友增减或改变就会失效。这边就和DOSBOX或95PC版不一致。
在同样的游戏版本下,SDL没办法用预先吃幻蛊套路减少石长老时间,先吃了金刚符,如果吃完时有队友加入也会失效。
虽然不会造成游戏问题,只是好奇有无办法可自行编译解决
PalAlexx
@PalAlexx
原版个人感觉是BUG 因为原版战前吃金刚符 醍醐香之类的道具是按照队伍序列吃的 盖罗娇打石长老这里 李逍遥的队列是1 林月如是2 在原版里战前吃下 开战时重新组队了 1是阿奴 2是盖罗娇 所以正常 而SDLPAL是按照人物ID来吃的 只认人 所以开战后阿奴和盖罗娇就不会混乱
几个典型的例子 在原版里会遇到bug 尚书府打彩衣前是林月如一个人行动 此时你给林月如使用金刚符 进入彩衣战斗后 林月如是没有效果的 金刚符的效果跑去李逍遥身上了。 第二个打明王, 同理开局2个金刚符给李逍遥和林月如 进入战斗后重新组队 林月如成3号了 又没有吃到 而2号位的灵儿这里肯定会被明王打死 所以这张金刚符等于白吃- -
Wei-Zhou, Hong
@WeiZhouHong
感謝您的解惑,這樣我大概清楚著手的方向了,
另外SDL在輸入方面也不如原本順手,不能預先輸入,速通抓鹿套路那邊尤其明顯
(感覺上指令無法預先輸入,需要上一個按鍵結束一段時間才能下一個按鍵),
不過本來就無法盡善盡美,還是很感謝有這個開源軟體能讓我移到平板和手機上練習。
JCaoSeu
@JCaoSeu
请问编译不通过是为什么呢,The run destination My Mac is not valid for Running the scheme 'PalTests'.
Pal Lockheart
@palxex
运行请选用sdlpal scheme,paltests是单元测试。