Siv3dで立体的な音ゲー作りたいね。

発音のラグを減らしたい、これだとFPSが下がってしまうのが原因なのかなぁ?

発音のラグを減らしたい、これだとFPSが下がってしまうのが原因なのかなぁ?

  • タグ:
  • タグはありません
# include <Siv3D.hpp>
double pickMod(double a){
return (a - (int)a);
}
bool boolFlip(bool a){
return !a;
}
void Main()
{
/*
60FPS60F/sec = 3600F/min
Shift+D
*/
//
int frameCount = 0; //
double recordFrameCount[5] = { 0, 0, 0, 0, 0 }; //
const int startMusicFrameCount = 285; //gap
const int bpm = 144;
const Font font(16); //
const Sound sound(L"Music/.mp3");
if (!sound){ return; };
const double fpb = 3600 / bpm; //frame per minitue
frameCount = -1 * startMusicFrameCount;
int i = 0;
bool isDebugMode = false;
sound.play();
while (System::Update()) {
frameCount++;
if ((Input::KeyShift + Input::KeyD).clicked){
isDebugMode = boolFlip(isDebugMode);
}
if (isDebugMode){
font.draw(Format(L"F.count:", frameCount, L" | B.count:", (frameCount / fpb), L"(fpb:", fpb, L")"));
if (pickMod(frameCount / fpb) <= 0.1){
font(L"*").draw(0, 30);
}
else{
font(L"-").draw(0, 30);
}
font(pickMod(recordFrameCount[0])).draw(0, 60);
font(pickMod(recordFrameCount[1])).draw(0, 90);
font(pickMod(recordFrameCount[2])).draw(0, 120);
font(pickMod(recordFrameCount[3])).draw(0, 150);
font(pickMod(recordFrameCount[4])).draw(0, 180);
if (Input::KeyK.clicked){
recordFrameCount[i % 5] = (frameCount / fpb);
i++;
}
if (Input::KeySpace.clicked){
exit(0);
}
}//debugmode
if (Input::KeyK.clicked){
if (pickMod(frameCount / fpb) <= 0.02 || pickMod(frameCount / fpb) >= 0.98){
//Just
font(L"JUST").draw(0, 0);
}
else if (pickMod(frameCount / fpb) <= 0.1 || pickMod(frameCount / fpb) >= 0.9){
//Great
font(L"Great").draw(0, 0);
}
else if (pickMod(frameCount / fpb) <= 0.2 || pickMod(frameCount / fpb) >= 0.8){
//Good
font(L"Good").draw(0, 0);
}
else{
//miss
font(L"miss").draw(0, 0);
}
}
}//Update
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX