ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

アサシンクリード オデッセイ

www.ubisoft.com
アサシンクリードオデッセイをプレイしてクリアした。
DLCも含めてプレイしてトロフィーをコンプリートした。トータルのプレイ時間は98時間ほど。
とにかくボリュームが凄かった。クリアしたけどまだ攻略していない場所は結構残っている。
追加コンテンツもそれぞれ本編とは違った雰囲気でまた広いエリアとなっていた。
さらに主人公が男か女か選べるようになっており、セリフも変わるし、しかも日本語ボイスにもなっている。収録が大変だったろう。
アクションもいろいろなスキルが選べて面白いが、自分で使いやすいパターンを見つけてからは、ほとんどそのスキルで攻略出来てしまったので、あまりスキルを切り替えて使うということはほとんどなかった。
次はアサシンクリードヴァルハラ。これでやっと最新作に追いつくことが出来た。

C++で乱数

C言語のrand関数は乱数としての性能が良くないということで、C++の乱数ライブラリを使うことにした。
しかし、これがややこしくて難しい。ということで、自分用にメモ。
乱数のときに良く聞くメルセンヌ・ツイスタは

std::mt19937 mt(0x1234);
cout << mt() << endl;

で利用できる。引数は初期シード値。これだと初期シードが同じなので毎回同じ乱数となる。省略しても同じ。得られる値は32ビットの符号なし整数。

std::random_device rnd;
std::mt19937 mt(rnd());

実行するたびに変わるようにするには、初期シード値に非決定的な乱数生成器で生成した値を指定する。
std::random_deviceはハードの状態や時刻を使うものらしい。これを使って乱数を取得しても良いのだが、動作が重いので、std::mt19937のような決定的な乱数生成器を使う。
乱数の範囲を指定したい場合は、整数の場合は std::uniform_int_distribution, 浮動小数点数の場合は std::uniform_real_distribution を使う。
実際に試してみたコードがこちら。

#include <iostream>
#include <random>
using namespace std;
int main(void){
    std::random_device rd;
    std::mt19937 mt(rd());
    std::uniform_int_distribution<> dist_int(1,6); 
    std::uniform_real_distribution<> dist_float(-1.f,1.f); 

    for(int i=0; i<10; i++) {
        cout << mt() << endl;
        cout << dist_int(mt) << endl;
        cout << dist_float(mt) << endl;
    }
}

とりあえず、一応使えるようにはなったけど、もっと正しいやり方とかあるのかもしれない。乱数は奥が深くて大変。

Pro Tools Intro

www.avid.com
icon.jp
プロが使っている音楽ソフトのPro Tools。
それの無料版 Pro Tools Intro がリリースされた。
トラック数とかに制限があるそうだが、自分が使う分には全然問題なさそう。
とはいっても、一応インストールして起動してみたが、まずどこから手をつけて良いか分からない。
まずはチュートリアル的なものから始めないと。

Quest Link

PCとOculus Quest 2を無線でつなげようとAir Linkを有効にしたが、PC名は見えて認識しているのに繋がらないという状態に。
そこで、ケーブルを使って接続することにした。
公式のケーブルを買おうと思ったが、USB-Cのものしか無かったので、こちらのUSB-AのAnkerのUSBケーブルを買って試してみた。

ちょっとアプリを実行してみたが、途切れることもなく問題なく使うことが出来た。
これでSteamのVRゲームもプレイしやすくなるだろう。

JavaScriptの画像保存が分からない

JavaScriptを使って生成した画像をpngとして保存したり、クリップボードへコピーしたいのだが、どうすれば良いか分からない。
使っているライブラリのPhinaにそれらしいメソッド SaveAsImage() があったのだが、どう設定すれば良いか分からない。
またクリップボードへコピーするような機能はなさそうだった。
Html5Canvasの知識も乏しいので、はてどうしたら良いものか。

Dynamic Volumetric Sky

gamemakers.jp
9月の無料マーケットプレイスコンテンツで提供されているDynamic Volumetric Skyを解説したページ。
今作っているプロジェクトでも導入してみたが、パラメータの設定がよく分からなかったので、この解説ページは非常に助かる。
City Environment Megapackも使ったマップへの導入方法も解説されているので、自分のレベルへ適応してパラメータをいろいろ調整してみよう。
そして、このページでサードパーソンのデフォルトプレイヤーの名前が「クイン」だということを初めて知った。

PythonとPyGame

WindowsマシンのほうでPythonを使おうとコマンドプロンプトPythonと入力したら、Microsoft StoreのPythonのページが立ち上がった。
そういえば、こちらのWindowsマシンにはPythonをセットアップしていなかった。
ということで、Pythonをセットアップ。
www.python.org
ここからPythonをダウンロード。Windows版の最新は3.10.7だった。
最初インストールするときに環境変数の設定をするオプションにチェックを入れるのを忘れてた。インストール後にもう一度インストーラーを実行して、Modifyを選び"Add Python to envrionment variables"にチェックを入れてセットアップした。
ついでにPythonのゲーム用ライブラリのPyGameもインストール。
https://www.pygame.org/
こちらはコマンドプロンプトで次のように入力。

python -m pip install pygame install

これでSucceslly installedと表示されたので無事インストール終了。バージョンは2.1.2だった。