わけあってC++でwaveファイルを読み書きしようとしている
2015年2月14日 ゲームんです。
この日記は完全に自分用メモです。(読んでもつまらない内容だよ)
2/10ぐらい
とりあえずC++の開発環境として
Visual Studio Express 2013 for windows desktop
http://www.visualstudio.com/ja-jp/products/visual-studio-express-vs.aspx
(このページの真ん中ぐらいに置いてあるや)
を落としてインストール。とりあえずHello worldする。
2/11ぐらい?
とりあえずWaveをバイナリとして読み込むプログラムのサンプルとかを色々探して
自分で改良して動かしてみたりした。
2/13
どうやらWaveファイルにも色々な形式があって、
音声信号データの部分が8bitだったり16bitだったり24bitだったり32bit-floatだったりするみたいだ。
参考:http://www.web-sky.org/program/other/wave.php
ほとんどの音声ファイルは8か16なので、サンプルプログラムもこれにしか対応してない。
だが私はやりたい事の関係上、32bit-floatのwaveファイルを扱いたい。
となると、良い感じのサンプルプログラムが無い。
32bit-floatを扱う部分を自力で書くという手段もあるが、
それよりも完成したライブラリを探したほうがはやいし完成度も高いのでは?
というわけで、waveの読み書きができるライブラリを探してみたところ、
http://www.mega-nerd.com/libsndfile/
これが出てきた。
くそっ、私の嫌いな英語だ。
しかし、ちらっと見たところ、こいつはfloatも扱えるみたいで、
こいつが使えればかなりゴールに近づきそう。
なのでこいつを使ってみることに。
ライブラリの入れ方なんてさっぱりわからんので、適当にぐぐって出てきた
http://imagingsolution.blog107.fc2.com/blog-entry-231.html
このページの通りにテキトーにファイルをつっこんだり指定したりして
試しに適当なサンプルプログラムを拾ってきて実行。
変なエラーが出まくる。
原因を色々調べた結果、libsndfileを for 64bit から for 32bit のに変えたら、
とりあえずエラーが出なくなった。
とりあえず、ネットで拾ってきたサンプルをいじって、
waveファイルを読み込んで、波形データそれぞれを2で割って出力する
というプログラムを作って、音量1/2のwaveファイルができた。
しかし、依然としてプログラムが一体何をやってるのかさっぱり分からないので、
目的のプログラムを作るにはまだしばらくかかりそうだ。
つづく。
この日記は完全に自分用メモです。(読んでもつまらない内容だよ)
2/10ぐらい
とりあえずC++の開発環境として
Visual Studio Express 2013 for windows desktop
http://www.visualstudio.com/ja-jp/products/visual-studio-express-vs.aspx
(このページの真ん中ぐらいに置いてあるや)
を落としてインストール。とりあえずHello worldする。
2/11ぐらい?
とりあえずWaveをバイナリとして読み込むプログラムのサンプルとかを色々探して
自分で改良して動かしてみたりした。
2/13
どうやらWaveファイルにも色々な形式があって、
音声信号データの部分が8bitだったり16bitだったり24bitだったり32bit-floatだったりするみたいだ。
参考:http://www.web-sky.org/program/other/wave.php
ほとんどの音声ファイルは8か16なので、サンプルプログラムもこれにしか対応してない。
だが私はやりたい事の関係上、32bit-floatのwaveファイルを扱いたい。
となると、良い感じのサンプルプログラムが無い。
32bit-floatを扱う部分を自力で書くという手段もあるが、
それよりも完成したライブラリを探したほうがはやいし完成度も高いのでは?
というわけで、waveの読み書きができるライブラリを探してみたところ、
http://www.mega-nerd.com/libsndfile/
これが出てきた。
くそっ、私の嫌いな英語だ。
しかし、ちらっと見たところ、こいつはfloatも扱えるみたいで、
こいつが使えればかなりゴールに近づきそう。
なのでこいつを使ってみることに。
ライブラリの入れ方なんてさっぱりわからんので、適当にぐぐって出てきた
http://imagingsolution.blog107.fc2.com/blog-entry-231.html
このページの通りにテキトーにファイルをつっこんだり指定したりして
試しに適当なサンプルプログラムを拾ってきて実行。
変なエラーが出まくる。
原因を色々調べた結果、libsndfileを for 64bit から for 32bit のに変えたら、
とりあえずエラーが出なくなった。
とりあえず、ネットで拾ってきたサンプルをいじって、
waveファイルを読み込んで、波形データそれぞれを2で割って出力する
というプログラムを作って、音量1/2のwaveファイルができた。
しかし、依然としてプログラムが一体何をやってるのかさっぱり分からないので、
目的のプログラムを作るにはまだしばらくかかりそうだ。
つづく。
2/14
実験に必要な物を作ったり。
プログラムは何もやってない。
2/15~18
何もやってない。
途中1日実験装置を少し改良したり。
2/19
libsndfileのクッソ分からん部分を教えてもらって解決。
32bit floatのwavを読んで数値を変えて32bit floatのwavで出力できた。
実験に必要な物を作ったり。
プログラムは何もやってない。
2/15~18
何もやってない。
途中1日実験装置を少し改良したり。
2/19
libsndfileのクッソ分からん部分を教えてもらって解決。
32bit floatのwavを読んで数値を変えて32bit floatのwavで出力できた。
【ネトゲ】TERAにガチプレイヤーは居ない。
2015年2月20日 ゲーム コメント (6)TERAというネトゲは運営開始から3周年が経過した、なかなか長続きしてるネトゲだ。
内容はよくある3DのMMORPGで、フィールドを歩きまわって敵を狩ったりPvPしたり。
色々特徴とかあるのだが、今回の記事には関係ないのでここでは書かない。
最近このTERAというゲームについて調べてみる機会があったのだが
このTERAというゲーム、私が調べてみた感じだと、ガチプレイヤーが居ない。
いやそれは言い過ぎかな。ほとんど居る気配がしないのだ。
なぜか? それについてだらだらと説明していく。
まずTERAは他のゲームにもよくあるアクティブスキルが主体のゲームだ。
例えばこんな感じ。
スキルA:威力100 クールタイム3秒
スキルB:威力50 クールタイム2秒
スキルC:威力45 クールタイム5秒 相手が1秒間スタンする
~以下色々なスキル~
こんな感じで、色々なスキルを使って戦闘する感じだ。
で、このゲームも他のゲームと同じで、敵を倒すスピードが速いほうが良い。
つまり、時間あたりのダメージが高ければ高いほど良いというわけだ。
ここで問題
まず、スキルをA→B→C→( D か E )という順番で使えば、
クールタイムのせいで攻撃できないということが起こらず
絶え間なく攻撃できることがわかった。
だが、最後の1個は D と E のどちらを使ったほうが敵を倒すのが速いのか?
D :大振りで敵をゆっくりと殴るスキル 威力150
E :敵をすばやく敵を殴るスキル 威力70
答えは 「この情報だけでは分からない」 だ。
超ゆっくりの D よりも、E を撃ってさっさと次のAにつなげたほうが良いかもしれないし、
E が実はそんなに速くなく、D の方がダメージ大きい分良いのかもしれない。
といった感じで、どちらの方がどれぐらい秒間ダメージが高いかを求めるには、
各スキルの威力とは別に「モーションにかかる時間」という情報も必要だ。
というように、ガチで火力(時間あたりのダメージ)を高めるためには、
「威力」と「所要時間」の2つのデータは必須である。
ここで本題。
各スキルの威力は、スキルの説明文に書いてるから問題無いのだが、
モーションにかかる時間についてはゲーム内に情報が無い。
というわけで、ガチプレイヤーが調査したモーションの所要時間一覧を見てみようと、
それっぽい単語をぐぐってみたのだが、全くと言っていいほど出てこない。
いや、出てきたといえば出てきたが、特定の職のほんの一部のスキルだけだった。
つまり、ガチでプレイするならば必須レベルの情報が、全く無いのだ。
もうサービス開始から3年も経過しているのに無いのだ。
ゆえに、TERAにガチプレイヤーなんて居ないんじゃないかと私は思うのだが。
実際どうなんですかね。
私をTERAに誘った友人に聞いてみたが、彼はライトユーザーらしく、
こういうことについては何も考えてなかったようだ。
TERAプレイヤーの方、特にガチな方にこの辺どうなってるのか聞いてみたい。
内容はよくある3DのMMORPGで、フィールドを歩きまわって敵を狩ったりPvPしたり。
色々特徴とかあるのだが、今回の記事には関係ないのでここでは書かない。
最近このTERAというゲームについて調べてみる機会があったのだが
このTERAというゲーム、私が調べてみた感じだと、ガチプレイヤーが居ない。
いやそれは言い過ぎかな。ほとんど居る気配がしないのだ。
なぜか? それについてだらだらと説明していく。
まずTERAは他のゲームにもよくあるアクティブスキルが主体のゲームだ。
例えばこんな感じ。
スキルA:威力100 クールタイム3秒
スキルB:威力50 クールタイム2秒
スキルC:威力45 クールタイム5秒 相手が1秒間スタンする
~以下色々なスキル~
こんな感じで、色々なスキルを使って戦闘する感じだ。
で、このゲームも他のゲームと同じで、敵を倒すスピードが速いほうが良い。
つまり、時間あたりのダメージが高ければ高いほど良いというわけだ。
ここで問題
まず、スキルをA→B→C→( D か E )という順番で使えば、
クールタイムのせいで攻撃できないということが起こらず
絶え間なく攻撃できることがわかった。
だが、最後の1個は D と E のどちらを使ったほうが敵を倒すのが速いのか?
D :大振りで敵をゆっくりと殴るスキル 威力150
E :敵をすばやく敵を殴るスキル 威力70
答えは 「この情報だけでは分からない」 だ。
超ゆっくりの D よりも、E を撃ってさっさと次のAにつなげたほうが良いかもしれないし、
E が実はそんなに速くなく、D の方がダメージ大きい分良いのかもしれない。
といった感じで、どちらの方がどれぐらい秒間ダメージが高いかを求めるには、
各スキルの威力とは別に「モーションにかかる時間」という情報も必要だ。
というように、ガチで火力(時間あたりのダメージ)を高めるためには、
「威力」と「所要時間」の2つのデータは必須である。
ここで本題。
各スキルの威力は、スキルの説明文に書いてるから問題無いのだが、
モーションにかかる時間についてはゲーム内に情報が無い。
というわけで、ガチプレイヤーが調査したモーションの所要時間一覧を見てみようと、
それっぽい単語をぐぐってみたのだが、全くと言っていいほど出てこない。
いや、出てきたといえば出てきたが、特定の職のほんの一部のスキルだけだった。
つまり、ガチでプレイするならば必須レベルの情報が、全く無いのだ。
もうサービス開始から3年も経過しているのに無いのだ。
ゆえに、TERAにガチプレイヤーなんて居ないんじゃないかと私は思うのだが。
実際どうなんですかね。
私をTERAに誘った友人に聞いてみたが、彼はライトユーザーらしく、
こういうことについては何も考えてなかったようだ。
TERAプレイヤーの方、特にガチな方にこの辺どうなってるのか聞いてみたい。