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

[其他] 【技术】要从零开始写一款 VN 引擎有多难?

[复制链接]
     
发表于 2020-6-11 19:21 来自手机 | 显示全部楼层 |阅读模式
如题。注意关键字从零开始,因此只能用操作系统自带的功能,图形只有 DirectX 或 OpenGL 或 Vulcan 或 Metal,什么 RenPy、Cocos、Unity 之流一概不考虑。

评分

参与人数 1战斗力 +1 收起 理由
eggplant + 1 造轮子前先看看开源,对我来说难度非常低.

查看全部评分

回复

使用道具 举报

发表于 2020-6-11 19:52 | 显示全部楼层
本帖最后由 Lunamos 于 2020-6-11 20:54 编辑

只是实现基本功能的话不算难。VN其实就是根据脚本去显示图片文字和播放声音的工具。因此关键就是准备两件事,资源管理和展示部分(文字,图片,声音),以及脚本理解部分。资源展示部分用一些音频图像相关的库去管理和展示即可。略难的可能是脚本理解部分。你要自己定义一种脚本语言,写parser去控制资源的展示。可以照着RenPy定义的脚本功能抄一下,关键要处理好flag、分支这些东西即可。这样用户编写脚本并准备资源,就可以用你的引擎生成VN了。
要做成个好用的引擎,最好提供GUI让用户使用,就麻烦了不少。比如用户自定义分支树,图形化地拖拽一些资源文件之类。(——当然如果只是要做VN而不是VN引擎,那难度再降两个档次。)


回复

使用道具 举报

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

使用道具 举报

     
 楼主| 发表于 2020-6-12 00:43 | 显示全部楼层
Lunamos 发表于 2020-6-11 19:52
只是实现基本功能的话不算难。VN其实就是根据脚本去显示图片文字和播放声音的工具。因此关键就是准备两件事 ...

能不能不完全自定义脚本语言,而是借用某种现有语言,在其基础上扩展?譬如说网页版 VN 引擎就要把游戏脚本转化成 JavaScript,这时候脚本语言本身如果和 JavaScript 差不太多就很方便。

评分

参与人数 1战斗力 +1 收起 理由
eggplant + 1 你一会要dx,ogl,一会又js,到底要干嘛.

查看全部评分

回复

使用道具 举报

发表于 2020-6-12 01:59 | 显示全部楼层
本帖最后由 darkfall 于 2020-6-12 02:03 编辑

基础的几千行够了,主要就几个地方
* 2D渲染,贴quad
* 脚本,直接用现成,lua, angel, JS(水果平台上系统自带JSCore,别的麻烦点)等等都可以方面集成到C/CPP里
* 集成,控制流,用脚本控制你的核心,i.e.
     setLeftWaifu("1st Waifu.jpg")
     setRightWaifu("2nd Waifu.jpg")
     setDialog("Oniisama, daisuki")

扩展下去就是更复杂的功能提高表现力,2D图形特效,3D特效,表情控制(live2D etc)。你还要考虑网页版的话那直接全JS写都可以,桌面版套一个Chromium。
麻烦的永远是工具,如果要提供这方面的东西的话。u3d的优势就在于非常方便做自定义工具,不然从头手写工作量非常大
回复

使用道具 举报

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

使用道具 举报

     
发表于 2020-6-12 07:25 来自手机 | 显示全部楼层
直接js+electron
回复

使用道具 举报

头像被屏蔽
     
发表于 2020-6-12 07:43 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2020-6-12 07:55 | 显示全部楼层
sdl sfml
回复

使用道具 举报

     
发表于 2020-6-12 08:00 | 显示全部楼层
跨平台的话那基本是用gles或vulkan,想要兼容更多设备就是gles了
但是要从这一步开始得包装api还得写双缓冲等等底层开始写一个2d渲染引擎出来
那不如拿ogre或者cocos改一改,渲染从头写没什么必要啊

在一个开源多平台的渲染引擎之上,像楼上几位说的实现一个自己的Gal脚本系统比较靠谱
回复

使用道具 举报

     
发表于 2020-6-12 09:15 来自手机 | 显示全部楼层
vn是啥
回复

使用道具 举报

     
发表于 2020-6-12 09:26 | 显示全部楼层
ohi 发表于 2020-6-11 20:44
其实一款游戏画面多好看和游戏引擎没多大关系,主要还是取决于美术的资源,普通的游戏引擎,其实就是把DX, ...

引擎确定了个框,美术在里面发挥,引擎不行,美术也是巧妇难为无米之炊
回复

使用道具 举报

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

使用道具 举报

     
 楼主| 发表于 2020-6-12 22:21 | 显示全部楼层

VN = Visual Novel 视觉小说。大多数 Galgame 都是 VN。
回复

使用道具 举报

     
 楼主| 发表于 2020-6-12 22:24 | 显示全部楼层
本帖最后由 mchan 于 2020-6-12 22:29 编辑
darkfall 发表于 2020-6-12 01:59
基础的几千行够了,主要就几个地方
* 2D渲染,贴quad
* 脚本,直接用现成,lua, angel, JS(水果平台上系统 ...

如果是别的平台需要 JS,可以上 node.js 分支的 V8。要么直接做成网页 VN。
其实我有做苹果开发的经验,按照苹果审核的尿性,最理想的苹果用脚本是要走转编译器,转换成 Swift 或 Objective-C 然后和引擎连接在一起的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 19:28 , Processed in 0.513235 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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