Giter Site home page Giter Site logo

ipol-studio / cyanstars Goto Github PK

View Code? Open in Web Editor NEW
23.0 23.0 1.0 189.19 MB

中文虚拟歌手同人音游企划 Chinese Virtual Singer Fan-made Rhythm Game

Home Page: https://ipol-studio.github.io/CyanStars_Docs/

License: Apache License 2.0

C# 89.77% ShaderLab 7.78% HLSL 1.26% GLSL 1.18%
csharp cyanstars game rhythm rhythm-game unity vocaloid vocaloid-china

cyanstars's People

Contributors

axix-official avatar catimmortal avatar chen-luan avatar lanzhou371 avatar memorydream avatar qedsama avatar tgsredstone avatar ybr2007 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

chen-luan

cyanstars's Issues

测试

请确认:

  • 我的问题可能涉及代码,而非单纯的玩法建议。不涉及安全性问题。

此 Bug 出现的平台是

Windows 11

详情

**经过以下操作后...**
1. 11112222
2. 
3. 

**出现了这些问题...**
1. 111222
2. 2222333
3. 

**预期结果是这样...**
1. 123
2. 
3. 123

**有一些可能的解决方案...**
1. 
2. 123123
3. 
3

[需求] ESC暂停界面

按下一次ESC后呼出暂停界面,同时所有东西暂停

包含:继续、重开、退出按钮

其中继续和退出可以先不用做(需要更多方案)

实装场景

#167 已合并,但仍有一些待处理的事项:

  • 新场景需要能够在游戏内切换与加载。

  • 新场景缺乏UI(Combo数、计分板、判定表示如Exact,不需要其他UI),UI同Dark场景。

[草案] 负速度和0速度的提议

内容未确定

允许速度为负值或0

对于负值,音符将在玩家视角后方生成并倒流至判定线

对于0,音符将在进入BPM时轴时在判定线上生成并准点判定

有相关问题可评论

安卓版 Key 的暂停 Bug

描述Bug
安卓版Bug: 按下 Key 后暂停,在暂停期间松开,继续游戏后 Key 仍一直判定为手指按下,并可以对 Note 进行判定

复现步骤
1、按下某个 Key
2、不松开 Key,暂停游戏
3、在暂停界面松开手指
4、继续游戏
5、Key 仍一直判定为手指按下,并可以对 Note 进行判定

预期表现
手指松开后 Key 判定为手指未按下

Note打击特效的优化

目前音游场景的轨道、背景、UI还欠缺一些效果
目前Note的打击效果(烟花)缺乏打击感

考虑把现在打击音符时的球形烟花替换成更加贴合note形状的打击特效?

或许可以先改成矩形试试?

Gal 框架与剧情对话

基本的 gal 实现

  • framework :

    • #166
    • 独立脚本格式 (这应该会在上游实现)
  • scenes :

    • 可在任意位置调用的部分
      • 基本的人物立绘和小图片的显示与变换等
      • 角色对话框
      • 选择分支 等...
    • 提供全功能支持的独立scene
      • 支持背景图层以及相关变换等
  • Commands :

[debug] Hold按住的判定逻辑修正

目前的Hold音符逻辑存在以下问题:
在Hold中间松开按键时,无论还有多少key被按住,均会判定为Hold离手。

期望的效果为:
在Hold头判之后,只要在HoldNote判定范围内有Key处于按下状态,则该Hold视为被按住的情况

[提案]编码规范:将所有送入TrackBuilder的userData以特定方式封装

#83 中,添加了CameraTrackData EffectTrackData NoteTrackData三个用于创建Track的数据封装

这些 TrackData 是用于创建 Clip 的数据源,这是一个很不错的变化

我认为应该推动这一变化的标准化,将此类数据源统一使用 xxxTrackData进行封装,并修改相关参数的命名,必要时通过接口进行标识与约束

如果接受这一变化,我们当前需要修改这些

  • NoteTrack的数据源: MusicGameData -> NoteTrackData
  • 添加 LrcTrackData

AudioClip应该保持现状,PromptToneTrackData需要再讨论

对选曲 UI 进行数据持久化

#202 这些优化可以在 beta1 之后完成

  • 首次游戏后从第一张谱面开始,而非目前的第二张谱面 (#204)
  • 将进入的谱面序号记录(持久化),重启游戏或返回选曲时(游戏内暂停退出或结算后)从上次选定的谱面继续,若存在异常(比如版本更新引起),则从第一张开始

[低优先级] 优化文件结构

发现大量资源文件的不规范命名、重复、冗杂,需要设定命名规范和分类规范,并加以优化

  • 命名规范&分类规范
  • 优化整理

修改 Hold 机制

HoldNote 头判 Miss 后不销毁音符,而是从之后按下的时间点继续累加

优点:

  • 可以与 #210 在判定表示效果上统一,并减少销毁音符时的突兀效果:
    • Hold首次按下时,判定JudgeTime(头判),同时开始截断Hold,即使后续松手依然截断
    • Hold被按住时持续展示打击粒子
    • 尾判给分:按住时间总和 / (HoldEndTime - (Max(头判时间, JudgeTime))

缺点:

  • 涉及到机制修改

设计到暂停功能变化 #221 :计划在暂停谱面时将 Note 倒退一段距离,此时需要处理 Note 逻辑

Issue 规范 Issue guidelines

感谢提出 Issue,请在提出 Issue 时注意以下事项:

  • 请务必尊重每一位贡献者与创作者,他们为此项目无私、且不求回报地贡献了大量的时间和精力,沟通时请遵循 社区准则
  • 此项目目前处于开发早期,且是兴趣所做,作品尚未成熟,可以预见一定存在大量的缺陷。请在提出 Issue 前先行搜索,不要提出已有的 Issue。

Thank you for raising the Issue, please note the following when raising an Issue:

  • Please be sure to respect every contributor and creator. They have selflessly contributed a significant amount of time and effort to this project without seeking rewards. When communicating, please adhere to the community guidelines.
  • This project is currently in its early stages of development and is driven by interest. The work is not yet mature, and it can be anticipated that there will be a significant number of defects. Please search before raising an Issue to avoid duplication.

重构Input模块

目前我们支持两种输入方式,它们给游戏主模块提供数据的方式完全不一致

这让人有点懵,不容易找到对应实现,需要统一多种输入与游戏模块之间交互的方法,简化相关的结构

命中音符后Log格式统一

统一为Debug.Log

Tap、Drag、Break按下显示:
[type]音符[grade],位置[pos],开始时间[st]

Click头判显示:
Click头判[grade],位置[pos],开始时间[st]

Click尾判显示:
Click尾判[grade],位置[pos],开始时间[st],按住时间[ht]

Hold头判显示:
Hold头判[grade],位置[pos],开始时间[st],结束时间[et]

Hold尾判显示:
Hold尾判[grade],位置[pos],开始时间[st],结束时间[et],按住时间[ht],按住比例[pe]

注意大小写
type:Tap、Hold、Click、Drag、Break
grade:Exact、Great、Right、Bad、Out、Miss

为代码添加namespace,进一步规范项目结构

在目录规范化的基础上更进一步,让我们为代码添加一个namespace,并且使namespace匹配目录结构
形式类似CyanStars.Framework.Loggers

我知道当前的代码中,有部分已经有了namespace——比如Timeline,但是此处使用的namespace为CatTimeline
我们应该考虑将这些代码在一定程度上分离开来,并且考虑对于不是以项目名称作为namespace的代码视作外部依赖项,迁移到单独的目录中

对于被项目视作外部依赖项,但是目前仅在此代码库中的代码,如果足够通用,我们可以考虑在之后单独作为库,或作为从项目中抽离出的框架的一部分,托管在其他的仓库中进行发布

切换音频输出设备导致谱面音频停止

请确认 Please confirm:

  • 我的问题可能涉及代码,而非单纯的玩法建议。不涉及安全性问题。My issue may involve code rather than just gameplay advice. No security issues involved.

此 Bug 出现的平台是 The platform where this bug appears is

其他平台(请在下方完善)Other (Please improve below)

详情 Details

经过以下操作后...
After the following operations...

  1. 进入游戏,播放谱面
  2. 切换音频输出设备(外放改耳机,耳机改外放)

出现了这些问题...
These issues have arisen...

  1. 谱面发生卡顿并停止,无声,将输出设备切换回来后才会继续

预期结果是这样...
The expected outcome is as follows...

  1. 切换输出设备时进入谱面暂停页,继续时以切换后的设备输出

Windows版与Android版均存在此问题

现在安卓平台上 Key 的行为是有轨的

描述Bug
现在安卓平台上 Key 的行为是有轨的

具体:手指按在判定线上时并不是在手指位置出现 Key 并进行判定,而是手指按下的 “轨道”(虽然看不见)出现 Key 并判定

预期表现
手指按在判定线任何一个位置都应该直接在按下位置出现 Key 并进行判定

音游结算 UI

为音游添加结算 UI,以展示玩家得分、FC/AP 情况、Note 判定情况、玩家个性名片、启用的特殊玩法,并提供返回选曲和重开等功能。

依赖于:

  • 结算 UI 美术设计(在做了)
  • L2D 看板娘立绘(可选)

初版Demo要求

  1. 包含一张预览铺面

  2. 包含所有种类的音符

  3. 包含摄像头特效画面


音符种类说明(其中颜色为暂定)

蓝色Tap 到达判定线时按下按键

黄色Drag 在到达判定线前后一段时间内,若按键有按下状态,则判命中

绿色Hold 长按,开始时检测一次位置,结尾时计算按住的时间长度(百分比)来给分(类似maimai)

红色Click 短按,到达判定线时快速按下抬起,给高分,若长按则正常给分

粉色Break 仅位于倾斜轨道,用空格来接,类似于Tap,给高分


PV应当包含基础的玩法展示和少量画面特效

[debug] Hold尾判机制确认与修复

Hold音符的尾判开始时间目前为StartTime(待核实),应当修改为以玩家命中音符后开始计算所需的按住时长,避免玩家晚按+全程按住而尾判出现Great的反直觉情况

理论上此现象在短Hold可能会更加明显

安卓平台使用蓝牙播放时出现音频卡顿

描述Bug
在安卓平台游玩时,若使用蓝牙耳机播放,会出现严重的 Note 运动卡顿(掉帧),附带正解音与背景音乐存在偏离。
背景音乐、打击特效、边框闪烁无异常。
补:在谱面播放时断开/链接蓝牙设备会导致直接暂停的异常。

系统环境
仅安卓复现

暂停谱面时将 Note 倒退一段距离

暂停谱面时将谱面时间倒退一段时间,玩家在继续时将从暂停前几秒继续无缝衔接

设计:

  • 暂停前已判定的 Note 维持原有判定,继续时不再显示
  • 继续后,一段时间内拒绝再次暂停

待议:

  • Hold Note 在继续后的逻辑?
    • 思路:在继续后立刻允许玩家按住 Hold Note,但仅当时间超过暂停时时间之后才继续累加按住时长

Screenshot_2024-02-27-09-47-20-403-edit_com miui notes

[bug] Hold尾判机制修改

当前Hold尾判时总时长(分母)是计算StartTime到EndTime时间差,这会导致短Hold大量掉分

请修改成玩家第一次按下按键到EndTime的时间差作为分母

安卓平台下游玩中未暂停切入后台再返回会导致音轨note轨不同步

请确认 Please confirm:

  • 我的问题可能涉及代码,而非单纯的玩法建议。不涉及安全性问题。My issue may involve code rather than just gameplay advice. No security issues involved.

此 Bug 出现的平台是 The platform where this bug appears is

其他平台(请在下方完善)Other (Please improve below)

详情 Details

经过以下操作后...
After the following operations...

  1. 在不暂停游戏的状态下将游戏切入后台
  2. 重新将游戏调回前台

出现了这些问题...
These issues have arisen...

  1. 游戏变得卡顿
  2. 音轨和note轨不同步

预期结果是这样...
The expected outcome is as follows...

  1. 切出后自动暂停,重新运行没有问题

使用设备
Redmi Note 11 Pro
Android 12

public之前的备忘清单

  • 整个license #157 Apache License Version 2.0
  • 改一下readme的开发者名单
  • 检查一下版权内容(含插件)
  • 贡献规范整一个 #205
  • 搞个tsa
  • 换个阳间点的组织名

[需求讨论] 如何处理游戏内对话展示

目前暂时确定的需求

  1. Galgame样式的对话展示
  2. 为mod预留解决方案(文本读取?)
  3. 为画面特效(屏幕闪光?立绘切换?)、特殊文本(部分文字颜色改变?)等内容预留解决方案
  4. 为玩家选择按钮和文案剧情分支预留解决方案

边框控制系统

边框闪烁的参数:
颜色
强度(边框大小)
模式(常隐/呼吸)

-常隐(闪一下,然后淡出):
-开始时间(或调用时获取)
-衰减系数(每秒减去的alpha百分比,下限0,无上限)
-是否循环
--循环:
--BPM(时间间隔=60/BPM)
--循环次数(int,>=2)

-呼吸(采用三角函数缓动计算alpha):
-偏移时间(float,可正可负)
-BPM
-循环次数

[需求] 添加严判、宽判

玩家实力不同,需要设置不同的难度

-为提前按下,+为延后按下

严判 误差(ms) 分数倍率 备注
/ ~-201 / 不判
Bad -200~-101 x0 断连
Great -100~-41 x0.75
Exact -40~+40 x1
Great +41~+100 x0.75
Right +101~+160 x0.5
Miss +161~ x0 断连
标判(目前) 误差(ms) 分数倍率 备注
/ ~-201 / 不判
Bad -200~-141 x0 断连
Great -140~-81 x0.75
Exact -80~+80 x1
Great +81~+140 x0.75
Right +141~+230 x0.5
Miss +231~ x0 断连
宽判 误差(ms) 分数倍率 备注
/ ~-201 / 不判
Bad -200~-181 x0 断连
Great -180~-121 x0.75
Exact -120~+120 x1
Great +121~+180 x0.75
Right +181~+230 x0.5
Miss +231~ x0 断连

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.