-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
LICENSE, README, docs
- Loading branch information
0 parents
commit b99eb2c
Showing
13 changed files
with
301 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
[submodule "lodepng"] | ||
path = src/Graphics/lodepng | ||
url = https://github.com/lvandeve/lodepng.git |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
MIT License | ||
|
||
Copyright 2018 Ryu Noguchi | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
# アリスのミュージックフライト | ||
|
||
歌いながら空を飛ぶような音楽ゲーム | ||
|
||
![slides](documents/alice_slides.pdf) | ||
|
||
## ビルド | ||
(注意) GitHub への移植作業がまだ完了していないため Windows, MacOSX でのビルドはできないかもしれません. | ||
|
||
### 依存 | ||
Linux を基準にしている. | ||
Windows は `src/lib/win` にライブラリ本体を, `src/include` にヘッダを入れて下さい. | ||
MacOSX は `src/lib/macosx/Framework` にライブラリの Framework を入れて下さい. | ||
|
||
- g++ または clang : C++14 をサポートするもの. Windows の場合は Cygwin 環境など. | ||
- lodepng : git submodule で解決 | ||
- glew | ||
- glfw : linux では `pkg-config` で `glfw3` が見つかるか確認して下さい. | ||
- SFML : sfml-audio に依存. linux では `pkg-config` で `sfml-audio` が見つかるか確認して下さい. | ||
|
||
ArchLinux での一例 | ||
``` | ||
% sudo pacman -S base-devel glew glfw-x11 sfml | ||
``` | ||
|
||
### ビルド手順 | ||
Windows と MacOSX は make の `os` 変数をそれぞれ win, osx と指定. | ||
無指定で Linux と仮定する. | ||
|
||
下記は Windows の例 | ||
|
||
本体プログラム | ||
``` | ||
% cd src | ||
% make os=win | ||
``` | ||
|
||
譜面エディタ | ||
``` | ||
% cd src | ||
% make os=win ChartEditor | ||
``` | ||
|
||
## 実行 | ||
トップディレクトリ直下の `AlicesMusicFlight` (もしくは `.exe` 拡張子がついたもの) を起動する | ||
|
||
## 遊び方 | ||
遊びたい曲を選択します | ||
曲が始まったら右からノーツが迫ってくるので, 赤なら上キー, 青なら下キーを押します. | ||
曲が終わったらESCを押して終了してください. | ||
リザルトやスコア機能は未実装です. | ||
|
||
## 曲の追加と譜面エディタ | ||
### 曲の追加 | ||
1. `charts` ディレクトリ以下に `.chart` で終わるディレクトリを作成します. | ||
2. 遊びたい曲を `song.ogg` としてそのディレクトリに放り込みます. | ||
3. 曲のカバーアートを `bg.png` としてそのディレクトリに放り込みます | ||
|
||
### 譜面エディタ | ||
``` | ||
% ChartEditor.exe charts/譜面ディレクトリ | ||
``` | ||
|
||
#### 操作方法 | ||
``` | ||
[U][I] [P] | ||
[D][F] [H][J][K][L] | ||
[Ctrl] [S] [N] | ||
[Shift] [^] | ||
[Space] [<][V][>] | ||
``` | ||
|
||
- `[Space]` : 曲の再生/一時停止 | ||
- `[H][L]` : 曲の停止時に時間を進める/戻す(Vimの左右移動) | ||
- `[F]` : トレースを選択する. | ||
- `[N][P]` : 選択中のトレースの次/前のものを選択する(Next, Prev) | ||
- `[J][K]` : 選択中のトレースの高さを変える | ||
- `[I][U]` : 現在位置にトレースを挿入(Insert, Uはトリルを打ちやすくするため) | ||
- `[D]` : 選択中のトレースとそれにバインドしたノーツを削除する | ||
- `[^][V]` : 選択しているトレースにノーツを挿入する. その後次のトレースを選択する. | ||
- `[<][>]` : 使用しない. | ||
|
||
- `[Shift]`を押しているとき | ||
- `[H][L]` : ゆっくりと時間移動 | ||
- `[J][K]` : 選択したトレースを左右にゆっくりと移動 | ||
- `[^][V]` : 選択したトレースにバインドしたノーツを削除 | ||
|
||
- `[Ctrl]`を押しているとき | ||
- `[S]` : 保存 | ||
|
||
## ライセンス (License) | ||
特に指定がない限り MIT ライセンス. | ||
Resources on this repository is licensed under MIT License UNLESS OTHERWISE SPECIFIED. | ||
|
||
<a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/"><img alt="クリエイティブ・コモンズ・ライセンス" style="border-width:0" src="https://i.creativecommons.org/l/by-nc/4.0/88x31.png" /></a><br /><a xmlns:cc="http://creativecommons.org/ns#" href="https://github.com/ryu-raptor/amf.git" property="cc:attributionName" rel="cc:attributionURL">ryu-raptor</a> 作『<span xmlns:dct="http://purl.org/dc/terms/" href="http://purl.org/dc/dcmitype/Sound" property="dct:title" rel="dct:type">Hitodenashi ReEdit v2</span>』は<a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">クリエイティブ・コモンズ 表示 - 非営利 4.0 国際 ライセンス</a>で提供されています。 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
# 譜面のデータの流れ | ||
|
||
ChartBuilder | ||
|- NotesBuilder <- TraceBuilder | ||
|
||
TraceBuilder -> sharedptr<vector<Trace>> | ||
sharedptr<vector<Trace>> -> NotesBuilder -> sharedptr<vector<Note>> | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
# 判定 | ||
|
||
x----- | ||
-x---- | ||
|
||
x----- | ||
x----- | ||
|
||
x===x- | ||
---x-- | ||
|
||
## 前提 | ||
- ノーツを置ける枠をトレースという. | ||
- トレースにはUp/Downの枠がある. | ||
- 枠にはTap, Pressのどれかが入る. | ||
- トレースは時刻の早い方から順に処理される. | ||
- 入力は現在時刻に最も近いトレースに渡される. | ||
- 渡されたトレースより早いトレースは全て処理済みにされる. この時判定は全てBadである. | ||
- 判定にはNiceとBadの2種類がある. | ||
|
||
## 実装 | ||
- トレースにノーツを保持させるのはトレースの負荷が大きい. | ||
- upperNotesとlowerNotesの2つのリストにノーツを登録しておく. ノーツは対応するトレースを記録してある. | ||
- ノーツは現在時刻から自分が選ばれる指標(メトリック)を計算できる. これをもとに処理するノーツを決定する. | ||
- メトリックは小さいほど選ばれやすい. 一番選ばれやすいノーツを軸にV字にグラフを描ける. 負の無限大から走査した時, 最小値を踏んだ後はそれより大きな値が出ない. そういう関数を選ぶ. | ||
- 処理されるノーツより時間的に早いノーツで, 処理済みでないものは全てBadとして処理し, 詰める. こうして一番最初の要素が一番最初に処理されるようにする. | ||
- ノーツは時刻情報とボタン押下情報を与えられ, 処理を行う. | ||
- ノーツはスコアが入った時にputScoreフックを呼び出す. | ||
- ノーツの処理の戻り値によりノーツの処遇を決める. {Keep, Release} : Keepはリストに保持しておく, Releaseはファイナライズベクターに転送する. | ||
- ファイナライズベクターはノーツが処理を終わらせた後のエフェクトなどを行わせるためにある. Finalizableを継承しており, finalizeメソッドがtrueを返した時に完全にdeleteされる. | ||
|
||
## メトリック | ||
|
||
### Tap | ||
|
||
V | ||
-----X----- | ||
|
||
metric = abs(V-X) | ||
|
||
### Press | ||
|
||
V | ||
-----X------Y-----Z---- | ||
|
||
metric = abs(V-X) | ||
|
||
|
||
|
||
V | ||
-----X------Y-----Z---- | ||
|
||
metric = 0 | ||
|
||
|
||
V | ||
-----X------Y-----Z---- | ||
|
||
metric = abs(V-Z) | ||
|
||
## state | ||
|
||
### Tap | ||
|
||
### Press | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# キー入力 | ||
|
||
KeyBuffer | ||
update() -> Void //> フレームごとに呼び出されてキーバッファの状態を更新 | ||
keyUpdate(KeyCode, State) -> Void //> コールバックが利用する. この後にupdateが呼ばれて更新される. | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# ペースメーカ | ||
|
||
## 動機 | ||
- 楽曲の再生秒と実際の位置の間を何とかして欲しい | ||
- 秒を入れると位置が, 位置を入れると秒が出るのがいい | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
# リソースファイル | ||
|
||
シンプルなペア構造 | ||
|
||
iniファイルのサブセット | ||
リソースファイル管理用の特殊文法がある. | ||
再帰構造で用いられる前提. | ||
|
||
## 構造 | ||
``` | ||
[Category] | ||
Key : Value | ||
``` | ||
|
||
## 実装 | ||
単純な辞書 | ||
|
||
``` | ||
std::unordered_map<std::string as `Category`, std::unordered_map<std::string as `Key`, std::string as `Value`>> | ||
``` | ||
|
||
## 拡張機能 | ||
1. 変数展開 | ||
Valueにて | ||
``` | ||
${Category : Key} | ||
``` | ||
|
||
2. 再帰的読み込み | ||
``` | ||
ResourceFiler::_ctor("ResourceInfo.ini", withdir: "ResourceDirectory"); | ||
``` | ||
|
||
withdirにはキー. それぞれのディレクトリに入って再帰的にResourceInfo.iniを読み込む |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
# Syncの計算 | ||
sync rhythm tempo startms | ||
|
||
speed := 1小節あたりの時間(s) | ||
musiccounter := 音楽の現在再生時刻(s) | ||
stagecounter := ゲームの再生位置(s) | ||
sectionno := 小節番号 | ||
sectionpos := 小節を1とした時の位置 | ||
|==== ==== ==== ====| | ||
0 0.5 1 | ||
|
||
tempo = [rythm / minutes] | ||
sectiontempo[Section / minutes] = tempo * [rhythmの分子] | ||
speed = 1 / (sectiontempo * 60) | ||
|
||
stagecounter = musiccounter - startms | ||
sectionno = floor(stagecounter / speed) | ||
sectionpos = (stagecounter - (sectionno * speed)) / speed | ||
= (stagecounter / speed - sectionno) | ||
|
||
## stage counterの進め方 | ||
fore = getTimeTick() | ||
loop { | ||
do some work | ||
now = getTimeTick() | ||
sec = toSeconds(now - fore) | ||
stagecounter += sec | ||
fore = getTimeTick() | ||
} | ||
|
||
# 音ズレ | ||
どんなに高性能なパソコンでも音ズレは起きる. | ||
それの訂正が大事. | ||
|
||
V 0 | ||
game: ==== | ==== ==== ==== ==== | | ||
muse: --- | ---- ---- ---- ---- | | ||
|
||
0 の地点になったらstagecounter <- musiccounterにする. | ||
|
||
V | ||
game: === | ==== ==== ==== ==== | | ||
muse: --- | ---- ---- ---- ---- | | ||
|
||
nextscoutner = (sectionno + 1) * speed | ||
loop { | ||
if stagecounter >= nextscoutner { | ||
stagecounter = musiccounter | ||
nextscoutner = (sectionno + 1) * speed | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# トレース | ||
|
||
## 方針 | ||
|
||
- Traceは構造体 | ||
- Traceはコピーしていい | ||
- ただしTraceの配列は生成したあとは参照で渡す |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# includeとライブラリパス | ||
|
||
Graphics/ | ||
|- files... | ||
|- g2d/ | ||
|- g3d/ | ||
|- lodepng/ | ||
|
||
インクルードパスはプロジェクトルートを基準にする. | ||
-I../../などとする | ||
|
||
cmakeにはいらないけど |