独立解谜游戏 《InOutPath》现已公开Steam页面

hallo,大家好,我们是独立游戏《InOutPath》的开发团队,随着游戏开发日趋完善,我们现已将《InOutPath》的Steam页面公开。

地址如下: Steam 上的 开关 InOutPath (steampowered.com)

作为一名独立游戏团队的一员,感慨良多。非常感谢cocos团队提供的优秀引擎让我们在打造这款游戏的时候不会被技术掣肘,可以随心所欲发挥创作的空间和能力。

我们是一款冒险解谜游戏,一共7个大章节300+小章节。包含了包括海洋,水面,竹林等各色的7种完全不同风格的场景,也包含了20多种迥异的解谜机制。

我们的游戏在程序实现上,需要满足创作团队海阔天空的想象力,这与cocos提供的强大的可视化编辑器能力是断不可分的。

在此我再次感谢cocos团队的卓越能力。三鞠躬。

话不多说,技术论坛上干货。

首先游戏的整个驱动是分为数据部分和显示部分。数据部分基于cocos编辑器插件进行数据构筑。这里非常感谢cocos团队 2youyou2 提供的思路。

我们基于cce.gizmos api 打造了一个较为舒服的路径规划工具。PS:cce api是cocos editor api的编辑器命名空间API。里面封装了大量对于cocos editor的操作。

API 如下:

image

因为路径数据和物体模型无关,这可以让我们非常方便的在美术资源未准备好的时候就进行大量的创作而不会增加后续研发成本,路径是简单数据也不会带来任何运行时损耗。

首先我们先找个小型关卡看一看。

image

其中路径中间的白色线段既是我们的关卡路径。他几乎承担了整个游戏的的逻辑。无论是小型地图还是超大型地图,都能一把嗦。

无论你的路径是需要旋转,缩放还是平移都可以非常方便的视线,无论你的路径是直线,曲线或者什么物理上不存在的线。

由于我们风格迥异的关卡氛围。所以我们有9个配置好的完全不同的场景数据,我们会在加载不同的风格的时候,使用场景数据同步到当前场景,因为我们在游戏运行中并不会加载其他场景。除开main场景,其他场景只是一个氛围配置表。里面包含了主方向光,雾效等各类参数。

image
image

这样我们可以在一个场景里面跑通所有风格的氛围了。

接下来就是后处理部分了,由于cocos新版的后处理框架在性能方面不满足我们的项目需求,所以我们还是继续延续了我们另一款RPG的后处理架构。

目前我们使用的后处理技术有:
image

同样的,我们也会在加载不同的风格的时候对后处理进行关卡控制。

image

这里我稍微说下我们获取深度图的方式。

由于我们不想先渲染一遍场景获取深度图,我们也不需要特定角度的深度图,比如对于下雨遮罩的顶部深度图。所以我们只需要在渲染透明物体前把深度图拷贝出来使用就行。如果你问我为什么不直接使用,需要拷贝。那是因为会出现gl的写时读问题。

关键代码如下:
image

其次就是全部GrabPass了,我们需要做水底部分的波动,水面部分的正常渲染。

也是一个全屏拷贝pass搞定。

image

就是在渲染透明物体前拷贝一遍已经渲染的结果。

然后就是发布steam需要打包桌面版了。

这里我们采用的是electron+web mobile的方式。

我们采用的steam sdk 库是 whaqzhzd/steamworks.js: A steamworks implementation for nw.js/electron games (github.com)

这个库和原库不同的地方在于我们接入了新版的steam p2p sdk。因为我们另一款多人RPG需要使用。

这里提一句electron的加密。由于web mobile的代码都是裸的。这导致如果有人用asar unpack解包的话是可以看到无代价看到全部源码的。所以我们基于rust实现了一个非常简单的加密。

由于我们知道electron是可以把node文件作为启动文件的。

所以首先就是修改启动文件为加密node文件。

image

然后利用electron-packager的api对源码进行加密:

image

加密后再rust里面对源码加载进行拦截然后进行解密。这里首先我们屏蔽了应用程序的调试。

image

然后就是在rust里面使用napi对node的_compile函数进行覆写。以便可以让js引擎加载已经解密的代码

image

解密函数就是对于前面加密函数的反向。

image

需要注意的是,由于cocos使用的systemjs。所以我们也需要拦截systemjs的createScript函数。

image

到此一个简单的加密就完成了。这个加密非常初级,只可以增加一点点的难度。但本质没有改变。

最后我放几张游戏图给大家看看。也希望大家帮帮忙点点愿望单。谢谢大家啦。

Steam 上的 开关 InOutPath (steampowered.com)

whaqzhzd/electron-asar-encrypt (github.com)

07db95487580f3c12260b5d38b4eb94 9fe32a75f02959e964de12dc587999e 90e31c51bf0a408181e1e9ae1a75274 308203272dec18d2260d77173402d56 a51e7a3ee02df3b60fb81a65039f54d cde304a0bc8885ce6d6bf6dcce653f3 0c34613268663219b1c15a47632f642 1ecf6c02a35c780799614dc26fb4de6 2d5e21da2a50dc311d584c73d1d5afalight

23赞

看起来画面很好啊,用心了,支持

点赞点赞,很强必须添加愿望单 :grinning:

:partying_face: :partying_face: :partying_face: 已+1

不错不错,

画面效果还是很亮眼的。

谢谢大哥们支持。。。。

对的,这种开发模式才是比较舒适的

界面眼前一亮, :+1:

真不错,棒

画质精美到,其实可以放 cocos 官网做案例了 :grinning:

看着不错,有微信小游戏版嘛

游戏现在有3G大小,估计微信小游戏够呛

厉害厉害,祝爆火大卖
话说昨天可以点击放大图片,今天咋又不行了。。。

一看就很:ox:13,预祝大卖

年度最佳!

必买必买必买

最近论坛日常抽风,以前一直可以点击放大的

学习了,感谢大佬的分享