找回密码
 立即注册
搜索
查看: 4186|回复: 13

[怀旧] HoneySelect2的VNGE这个玩意儿主要在哪里讨论

[复制链接]
     
发表于 2023-4-9 14:35 | 显示全部楼层 |阅读模式
这个东西按说功能挺强的,作者也一直在更新。但是就是哪儿都不见讨论。
最近摸索了一个大概,写了一个简单的介绍,有没有同好来一起摸索这个东西。
需要基本的python了解。

文章如下

VNGE这玩意其实功能还是有点强的,只是不知道为啥,到处都看不到讨论,但是更新又很多。各种基于SSB和SSSB的制作也不少。关于偏代码方向的讨论还真不多。

其代码核心位于BepInEx下的Plugins/Console/Lib中

其中主要有三个组件 VNFrame VNActor和VNAnime, 这三个组件都是python文件。Console这个插件应该是直接给Unity框架开的口子,本身游戏运行时打开的Console,除了显示加载信息错误信息,也可以输入python函数,让Python可以直接和游戏进程中的对象交互。

其他各种SSB SSSB,SceneUtils都基于或者大部分基于这三个组件所提供的功能。

VNFrame提供基本框架,可以调用游戏中的多数系统级别的功能。

VNActor提供人物和道具的操作。

VNAnime提供一个动画框架,可以实现基于关键帧的动画,并且导出为Json。

基本介绍就是如此,下面是基本操作。

_____________________________________________________________________

这玩意儿在游戏里的热键就是Ctrl+F3和Ctrl+F8

建立VNGE新游戏的时候

在NeoStudio中,先Ctrl+F8叫出界面。

然后Clip Man—>  Scene Helper->new python 建立游戏

game name 自己起,game folder要在UserData/Studio/scene下预先建立,

png名字自己起,python名字也是自己起。

执行成功之后,会在UserData/Studio/scene下面自己起的game folder下看到一个自己起名字的png,也就是场景存档

同时在BepInEx/Plugins/Console/Lib 下面看到一个按照自己起名字的py文件。这就是自己的游戏代码文件了。

同目录下的simplegamedemoavg.py,  techdemo.py, vnftut_neo.py是一些作者提供的例子。

建立好的游戏在Ctrl+F8唤出的VNGE主界面中的All games可以找到。同时也可以运行作者提供的例子游戏。

还要注意在编辑场景png的时候,需要在scene helper里,选save scene来保存修改,否则alt+S会在UserData/Studio/scene下存一个新的,保存时候需要写gamefolder\游戏.png

----------------------------------------------------------------------------------------------------------------

用VNGE写游戏的基本流程就是在场景png里添加人物和道具

在python脚本里实现逻辑和对话。

在场景添加人物(char)和道具(prop)之后,在scene helper里选create tag,这一步就是起一个名字,在python中可以用这个名字来调用这个道具或者人物,实际上是在这个东西下面加了一个节点。加载游戏的时候会注册。任何修改都需要保存在png中,这样启动游戏的时候才能起作用,并且找到这个物体。

游戏会给你一个基本的代码框架,基本是一系列以game为参数的函数,这些函数可以互相跳来跳去。其中对话部分的代码非常简单,看一下例子就能了解。

其他的一些需要摸索的有。

基本代码有获得人物

act=game.scenef_get_all_actors()['g1']    ##g1是tag时候给人物的名字。

获得人物之后,就可以用VNActor里的方法和人物交互。

从json加载某个pose。这个不分ik或者fk。

看json例子就知道

pose1="""{"pose": {"hands": {"list": [1, 1], "__tuple__": true}, "fk_active": {"list": [false, false, false, false, false, false, false], "__tuple__": true}, "fk_set": {"10000": {"z": 0.000, "__Quat__": true, "y": 0.000, "x": 0.309, "w": 0.951}, "10001": {"z": 0.000, "__Quat__": true, "y": 0.000, "x": 0.161, "w": 0.987}, "10002": {"z": 0.000, "__Quat__": true, "y": 0.000, "x": 0.304, "w": 0.953}, "10003": {"z": 0.000, "__Quat__": true, "y": 0.000, "x": 0.154, "w": 0.988}, "10004": {"z": 0.000, "__Quat__": true, "y": 0.000, "x": 0.254, "w": 0.967}, "10005": {"z": 0.000, "__Quat__": true, "y": 0.000, "x": 0.241, "w": 0.971}, "10006": {"z": 0.000, "__Quat__": true, "y": 0.000, "x": 0.304, "w": 0.953}, "10007": {"z": 0.000, "__Quat__": true, "y": 0.000, "x": 0.212, "w": 0.977}, "10008": {"z": 0.000, "__Quat__": true, "y": 0.000, "x": 0.292, "w": 0.957}, "10009": {"z": 0.000, "__Quat__": true, "y": 0.000, "x": 0.269, "w": 0.963}, "10010": {"z": 0.000, "__Quat__": true, "y": 0.000, "x": 0.154, "w": 0.988}, "10011": {"z": 0.000, "__Quat__": true, "y": 0.000, "x": 0.214, "w": 0.977}, "10012": {"z": 0.000, "__Quat__": true, "y": 0.000, "x": 0.244, "w": 0.970}, "10013": {"z": 0.000, "__Quat__": true, "y": 0.000, "x": 0.170, "w": 0.986}, "10014": {"z": 0.000, "__Quat__": true, "y": 0.000, "x": 0.164, "w": 0.986}, "10015": {"z": 0.000, "__Quat__": true, "y": 0.000, "x": 0.116, "w": 0.993}, "10016": {"z": 0.000, "__Quat__": true, "y": 0.000, "x": 0.000, "w": 1.000}, "10017": {"z": 0.000, "__Quat__": true, "y": 0.000, "x": 0.381, "w": 0.924}, "10018": {"z": 0.000, "__Quat__": true, "y": 0.000, "x": 0.158, "w": 0.987}, "10019": {"z": 0.000, "__Quat__": true, "y": 0.000, "x": 0.000, "w": 1.000}}, "rotate_to": {"z": -0.000, "y": 0.000, "__Vector3__": true, "x": -0.000}, "anim_lp": false, "kinematic": 1, "ik_set": {"cf_J_LegLow01_L": {"list": [{"z": -5.286, "y": 2.778, "__Vector3__": true, "x": -2.877}], "__tuple__": true}, "cf_J_ArmUp00_R": {"list": [{"z": 2.594, "y": 2.161, "__Vector3__": true, "x": 1.187}], "__tuple__": true}, "cf_J_LegUp00_R": {"list": [{"z": -1.481, "y": 0.863, "__Vector3__": true, "x": 0.803}], "__tuple__": true}, "cf_J_Hand_L": {"list": [{"z": -1.691, "y": 2.281, "__Vector3__": true, "x": -0.324}, {"z": -0.000, "__Quat__": true, "y": 0.718, "x": -0.000, "w": -0.696}], "__tuple__": true}, "cf_J_ArmUp00_L": {"list": [{"z": 2.548, "y": 2.077, "__Vector3__": true, "x": -1.187}], "__tuple__": true}, "cf_J_Hand_R": {"list": [{"z": -1.744, "y": 2.283, "__Vector3__": true, "x": 0.220}, {"z": -0.001, "__Quat__": true, "y": -0.707, "x": 0.001, "w": -0.708}], "__tuple__": true}, "cf_J_Hips": {"list": [{"z": 0.000, "y": 0.741, "__Vector3__": true, "x": 0.000}], "__tuple__": true}, "cf_J_LegUp00_L": {"list": [{"z": -1.481, "y": 0.863, "__Vector3__": true, "x": -0.803}], "__tuple__": true}, "cf_J_Foot01_L": {"list": [{"z": -3.585, "y": 4.144, "__Vector3__": true, "x": 0.069}, {"z": 0.101, "__Quat__": true, "y": 0.498, "x": -0.861, "w": 0.027}], "__tuple__": true}, "cf_J_Foot01_R": {"list": [{"z": -3.113, "y": 4.031, "__Vector3__": true, "x": -0.156}, {"z": -0.024, "__Quat__": true, "y": -0.399, "x": -0.903, "w": 0.161}], "__tuple__": true}, "cf_J_ArmLow01_R": {"list": [{"z": -0.128, "y": 3.273, "__Vector3__": true, "x": 0.298}], "__tuple__": true}, "cf_J_LegLow01_R": {"list": [{"z": -5.293, "y": 3.862, "__Vector3__": true, "x": 2.161}], "__tuple__": true}, "cf_J_ArmLow01_L": {"list": [{"z": -0.178, "y": 3.106, "__Vector3__": true, "x": -0.509}], "__tuple__": true}}, "ik_active": {"list": [true, true, true, true, true], "__tuple__": true}, "anim_spd": 0.000, "face_to": 4, "anim": {"list": [0, 1, 17, 0.000], "__tuple__": true}, "anim_ptn": 0.000}, "tags": ["Base"]}"""

active中已经指定了那些ik或者fk是激活状态,可以同时起效。

加载时需要用反序列化器,然后才能应用于人物

from libjsoncoder import sceneDecoder

res = json.loads(pose, object_hook = sceneDecoder)

act.import_status(res['pose'])

镜头操作则是

game.move_camera(pos=(0.0,23, 0.0), distance=(0, 0,-27.0), rotate=(16.0, 196.0, 0), fov=23.0)

pos是镜头位置,distance是偏移量,rotate是旋转角度,fov是可视范围。

回复

使用道具 举报

     
发表于 2023-4-9 14:51 来自手机 | 显示全部楼层
以前是去hongfire,现在不知道了。

—— 来自 samsung SM-G9730, Android 12上的 S1Next-鹅版 v2.5.4
回复

使用道具 举报

头像被屏蔽
发表于 2023-4-9 15:06 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
 楼主| 发表于 2023-4-9 16:21 | 显示全部楼层
stmule 发表于 2023-4-9 14:51
以前是去hongfire,现在不知道了。

—— 来自 samsung SM-G9730, Android 12上的 S1Next-鹅版 v2.5.4 ...

现在有个F95,但是人气好低。而中文的坛子则有一种圈钱的味道........
回复

使用道具 举报

     
 楼主| 发表于 2023-4-9 16:35 | 显示全部楼层
stage111st 发表于 2023-4-9 15:06
steam版去码应该下什么

先去github找IllusionMods/IllusionLaunchers
然后加载去码的mod
回复

使用道具 举报

     
发表于 2023-4-9 16:36 | 显示全部楼层
zodgame 不知道现在是不是开放注册
回复

使用道具 举报

     
发表于 2023-4-9 17:55 | 显示全部楼层
ZOD有HS2专区 之前我还在里面看到过讨论这个的帖子
回复

使用道具 举报

     
发表于 2023-4-9 20:28 | 显示全部楼层
i 社游戏应该都可以去 zodgame,在一些节日会开放注册

—— 来自 S1Fun
回复

使用道具 举报

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

使用道具 举报

     
发表于 2023-4-9 22:20 | 显示全部楼层
看到2楼才发现红火倒了。
回复

使用道具 举报

     
发表于 2023-4-10 00:53 | 显示全部楼层
HS2的Discord,要不就作者Github里讨论。
回复

使用道具 举报

     
发表于 2023-4-10 01:02 来自手机 | 显示全部楼层
本帖最后由 stmule 于 2023-4-10 01:04 编辑
herryk159 发表于 2023-4-10 00:53
HS2的Discord,要不就作者Github里讨论。

但是inquisitor还活着,hf patch还有人发。
回错人。


—— 来自 samsung SM-G9730, Android 12上的 S1Next-鹅版 v2.5.4
回复

使用道具 举报

     
发表于 2023-4-10 03:21 | 显示全部楼层
hongfire 倒了?记得当初 还有 死蛙 deadfrog......

zodgame 是不是还在?
回复

使用道具 举报

头像被屏蔽
发表于 2023-4-10 04:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-11 14:07 , Processed in 0.054793 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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