高速シミュレータに得点がない？最終投の盤面を再現して検証。




g++ -std=c++17 -O2 -fopenmp -I/usr/include/python3.8 -I$(python3 -m pybind11 --includes) -o fcv1_simulator.so -shared -fPIC fcv1_simulator.cpp -lBox2D

cmake -DCMAKE_PREFIX_PATH="C:/Users/kurai/AppData/Local/Programs/Python/Python311/Lib/site-packages/pybind11/share/cmake/pybind11" ..



visualstudioを使う！！！




FCV1-Simulation
DC3のストーンシミュレーションをマルチスレッドで高速化するためのリポジトリです。
(下の表は同じseconds_per_frameで行っております)
Ryzen 7 5800U 16GB


Setup Submodule
以下のコマンドを使用して、サブモジュールを初期化してください。

bash
コードをコピーする
git submodule update --init --recursive
Build Box2D
Box2Dをビルドするには以下の手順に従ってください。

PowerShellを管理者権限で開く
必要に応じて、CMakeとビルドツール（例：Visual Studio 2022）がインストールされていることを確認してください。

ビルド手順

bash
コードをコピーする
cd extern/box2d
mkdir build
cd build
cmake -DBOX2D_BUILD_DOCS=ON -DCMAKE_INSTALL_PREFIX="./" -G "Visual Studio 17 2022" ..
cmake --build . --config Release
cmake --install . --config Release
Build Simulator
以下の手順でシミュレーターをビルドしてください。

CMakeLists.txtの修正
4行目で指定されているCMakeのバージョンが8以上であることを確認してください。

ビルド手順

bash
コードをコピーする
mkdir build
cd build
cmake .. -G "Visual Studio 17 2022"
cmake --build . --config Release
Usage
スレッド数の設定
srcディレクトリ内にあるconfig.jsonファイルで設定します。以下の例を参考にしてください：

json
コードをコピーする
"thread_num": 8
注意事項
このプログラムを使用する際は以下のようにしてStoneSimulatorクラスをインスタンス化してください。

python
コードをコピーする
stone_simulator = StoneSimulator()
この時点でOpenMPによるスレッドの作成が行われるため、試合開始前の準備時間中にインスタンス化する必要があります。

シミュレーターの使用方法
簡単な使用例はtest.pyをご覧ください。

simulator関数の引数：

先攻・後攻の順に格納したストーン座標
ストーンのショット数（0～15）
x方向の初速度ベクトル
y方向の初速度ベクトル
回転方向（cw→1, ccw→-1）
戻り値：

simulator関数の引数にあるx・y方向の初速度ベクトル、回転方向のインデックス番号順に、シミュレーション後のストーン座標
ファイブロックルールが適用されたかどうかのbool値
Dependencies
以下のライブラリが必要です：

numpy < 2.0
python >= 3.9





{
    "position": [-2.0, 34.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    "shot": 2,
    "x_velocities": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1],
    "y_velocities": [2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4],
    "angular_velocities": [-1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0]
  }
