Code Monkey home page Code Monkey logo

open-taiko-chart's Introduction

Open-Taiko-Chart

太鼓譜を記述するためのオープンなフォーマット。

Rev.1

日本語

(多言語への翻訳などContributionしてくれる方お待ちしております。)

Rev.2

段位認定の対応

日本語

(多言語への翻訳などContributionしてくれる方お待ちしております。)

Rev.2.1

日本語

Rev.2.2

日本語

Rev.2.3

日本語

Rev.2.4

日本語

Rev.3

譜面分岐の対応

(現在仕様の策定中です。もしよろしければ、issueの方に挙がっていますのでよろしくお願いします。)

open-taiko-chart's People

Contributors

aioilight avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

Forkers

yuma1116-ops

open-taiko-chart's Issues

"songvol","sevol"変数の追加

tciに追加。
曲と効果音の音量調整。
tjaにおけるSONGVOL: SEVOL:と同じものです。

"songvol": 80,
"sevol": 100,

Rev.2 - 段位認定への対応

TJAPlayer3で実装された段位認定モードでは、段位認定専用の難易度を作成し、そこに譜面を曲数分記述するという方法が取られていましたが、これでは譜面ファイル自体、他の難易度との共存が難しく、またふうせん連打などの記述も分かりづらいものです。命令上に譜面情報を格納する仕様上制約もありました。

そこで、Open Taiko Chartでは、「.tjc」フォーマットのように、複数の「.tci」ファイルを読み込んでそれを連奏するという仕組みにしようと考えています。そうすることで、譜面ファイルをひとつに結合する作業がなくなり、また譜面の情報は「.tci」ファイルから取得できるため、再利用性も高まります。

では、段位認定用のフォーマットはどのようなものにすべきでしょうか。自由に書き込んで構いません。

BMSCROLL/HBSCROLL

現状のOTCフォーマットの構想には、tjaフォーマットにあったBMSCROLL/HBSCROLLの要素が無いように思われます。
tjaからの移行を考える上では必要不可欠な要素と考えており、ぜひ導入してほしいです。
個人的には、OTCフォーマットでこれらを表現するならば、.tccの変数名(tjaで考えるなら、COURSE以下の各ヘッダーと譜面部分?理解不足があったらすみません)として、

"scoreinit": 800,
"scorediff": 200,
"scoreshinuchi": 1200,
"balloon": [ 6, 10, 24 ],
"bmscroll": 0,
"measure":(以下譜面に続く)

のような位置にねじ込むのが最善かな、と考えています。
こうした場合、変数名 bmscroll の値は 0, 1, 2 のいずれかとし、それぞれがtjaフォーマットで言うところの

0:通常のスクロール
1:BMSCROLL
2:HBSCROLL

とする・・・のが個人的にはしっくりきます。

皆さんの意見や問題点の指摘などがありましたら、お願いします。

ワープ命令

主にギミック譜面に使える命令として、譜面をワープさせる命令が欲しいです。
BMSCROLL時、今まではワープを実装しようとすると"#bpm 9999999"のように書かなければならず、スマートではありませんでした。

挙動について

  • #warpstart, #warpendで囲んだ間隔をワープする。
  • 例えば
["1000","#warpstart","10001000","#warpend","1000"]

とした場合、この小節では2拍目から4拍目にワープする。

  • ワープの間に存在する音符は全てダミー(見た目だけで判定のない音符)として処理する。

音符の回転

音符を回転できるようにする。

#rotate n1

n1: 音符の角度。度数法で指定する。

多くのプログラミング言語において三角関数は弧度法を用いるので、プログラム上で度数法から弧度法に変換する必要がある。

MOVIEOFFSETに代わるもの

MOVIEOFFSETに代わるものがないことに気づいたので。
オフセットの基準をどこにするかが問題。

パラメータの相対指定対応

#bpm#scroll 等に対して相対指定を行えるようにする。

今までは絶対的な値を指定していた e.g. #bpm 160 が、これに加えて、「前の値から加算・減算する」という書式を作る。

e.g. 現在のBPMが160で、小節毎に10ずつ増やしたい場合

[ "#bpm +10" ],
[ "#bpm +10" ],
[ "#bpm +10"],

e.g. 現在のスクロール速度が1で、小節毎に0.1ずつ減らしたい場合

[ "#scroll -0.1" ],
[ "#scroll -0.1" ],
[ "#scroll -0.1" ],

スクロールの負数指定は、今まで未定義だったがこの変更を持って負数になるスクロール速度はフォーマットとして正しくなくなる。
逆走に関しては、音符の回転命令を作ることで代用する。

Rev.3 譜面分岐への対応

既存の「.tja」フォーマットでは、譜面分岐は#SECTIONで条件をリセットし、#BRANCHSTART X,Y,Zで譜面分岐を開始し、#N#E#Mで普通譜面、玄人譜面、達人譜面を記述するという形でした。ですがこれでは各譜面で小節数の違いができてしまったり、そもそも上から下へ譜面が流れていくこのフォーマットでは、複雑な譜面分岐になればなるほど難解なものになります。また、強制○○譜面分岐なども取り得る数値を超えたものを指定して分岐させるのではなく、ひとつの機能として提供するべきだと思います。

そこで、「Open Taiko Chart」ではより譜面分岐を簡潔に表現するためのフォーマットを作ろうと思っています(現時点譜面分岐というのが本家独自の仕様であり、また自分が使うこともないため優先度はかなり低いですが……)。

もしよろしければ意見などどうぞ。

#scrollとは別に、譜面のスクロール速度をBPMで直接指定できる命令

#scrollとは別に、譜面のスクロール速度をBPMで直接指定できる命令が欲しいです。
名前の候補としては#bscrollとか?

挙動について

  • 例えばBPMが120で"#bscroll 150"が命令されていた場合、スクロール速度のみBPM150で譜面が流れることになる。
  • "#bscroll 150"が命令されている限り、途中でBPMがいくら変化してもBPM150のスクロール速度で流れることになる。
  • "#bscroll null"で元のBPMスクロール速度に戻す。(もっといい書き方があるかも…)
  • "#bpm 120","#bscroll 150","#scroll 2"と命令されていた場合、120*2ではなく、150*2がスクロール速度になる(乗算の対象が#bpmから#bscrollに切り替わる)。

#scrollだけでも同じ見た目の譜面は実現可能ですが、とにかく計算が面倒です。
特に、BPMが細かく変わるなか、一定のスクロール速度を実現しようとしたときに効果を発揮するかと。
煩わしさを軽減するための命令。

問題点

この名前だとbmscrollと名前が似ているのでややこしい。bmscroll側をhbscrollに改名する?

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.