[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
https://note.com/xxxx_kt_xxxx
今迄の記事も引っ越そうかと思ったのですが画像ファイルは引っ越し出来ないようで個別に設定する訳にもいかないのでこのまま置いておきます。
当初私はどんな銀行でも良いと思っていてペイペイ銀行で登録していたのですが、最初の報酬の支払いの時に入金に失敗したとメールが来たので調べてみるとペイペイ銀行は外貨受け取りが出来ない銀行だった事がわかりました。
外貨受け取りする為にはSWIFTコードを入力しないと駄目なのですが、ペイペイ銀行にもSWIFTコードはあったので大丈夫だと思っていたら国内の口座にある外貨を受け取るためで海外からの送金は出来ない模様。
そういう銀行は結構あるようなので最初の登録の時に良く調べておいた方が良いかもです。
ざっと調べてみた感じだと大手の銀行は大体大丈夫そうでしたが手数料が結構かかるなぁと言う印象でした(2000円~5000円程度かな?)
そんな事をTwitterで呟いていたら新生銀行が良いと教えて貰って調べてみると手数料は2000円か14ドルで新生銀行を給料の振り込み口座などにしておくと口座のステージが上がり手数料はキャッシュバックされる(実質無料)って感じでしたので早速口座を作って登録してみました。(口座を作った当初6か月間は自動的にプラチナステージなる模様)
新生銀行の場合はこれだけで良かったのですが、銀行によっては中継銀行も記入しないと駄目っぽいです。
と言う事で無事に入金されていました。
振り込み手数料は14ドル引かれていました。またドルから円に換金するのに1ドルにつき0.07円かかるようです。
結局、総売り上げからSteamに30%支払った残りより振込手数料14ドルが引かれた物が入金されました。
USドルで入金されていたので換金する時は出来るだけ円安の時に換金するのが良いのでしょうけど、ここ最近上下しまくってるのでタイミング難しすぎます。。。
制作に当たって下記のサイトさまを参考にさせて頂きました。
http://www.ne.jp/asahi/music/marinkyo/matematiko/kurbo.html.ja
https://r-dimension.xsrv.jp/classes_j/sine_cosine/
メモ:曲線のプログラムを色々試したので忘備録。
— kt. (@xxxx_kt_xxxx) December 24, 2022
八の字
float A1 = 8f;
float ds = 0.5f;
x = A1 * Mathf.Sin(rad) * ds;
y = A1 * Mathf.Sin(rad * 2) * ds;
rad += 0.02f;
(続#Unity #gamedev pic.twitter.com/qQScFjUaeW
アステロイド、A2A3の値を変えると色々変化
— kt. (@xxxx_kt_xxxx) December 24, 2022
float A1 = 4f;
float A2 = 1f;
float A3 = 1f;
x = A1 * Mathf.Pow(Mathf.Cos(rad * A2), 3);
y = A1 * Mathf.Pow(Mathf.Sin(rad * A3), 3);
rad += 0.02f;
(続 pic.twitter.com/gQisj5JBJb
リサジュー。w1, w2, p1, p2の数値を変えると図形が変化
— kt. (@xxxx_kt_xxxx) December 24, 2022
float A1 = 4f;
float A2 = 4f;
float w1 = 2f;
float w2 = 3f;
float p1 = 0f;
float p2 = 0f;
x = A1 * Mathf.Sin(w1 * rad + p1);
y = A2 * Mathf.Sin(w2 * rad + p2);
rad -= 0.01f;
(続 pic.twitter.com/YrPiDJdCBx
サイクロイド
— kt. (@xxxx_kt_xxxx) December 24, 2022
ds = 0.9f;
float A1 = 0.4f;
x = A1 * (rad - Mathf.Sin(ds * rad));
y = A1 * (1 - Mathf.Cos(ds * rad));
rad += 0.1f;
(続 pic.twitter.com/DcuyuaecDJ
トロコイド(A1 = A2の時にはサイクロイドになる)
— kt. (@xxxx_kt_xxxx) December 24, 2022
ds = 0.9f;
float A1 = 0.4f;
float A2 = 0.8f;
x = A1*(rad) - A2* Mathf.Sin(rad);
y = A1 - A2* Mathf.Cos(rad);
rad += 0.1f;
(続 pic.twitter.com/Rl1nAX9Yfj
内サイクロイド
— kt. (@xxxx_kt_xxxx) December 24, 2022
ds = 0.5f;
float A1 = 5f;
float A2 = 1f;
x = ((A1 - A2) * Mathf.Cos(rad * 1 * ds)) + (A2 * Mathf.Cos((((A1 - A2) / A2) * rad)));
y = ((A1 - A2) * Mathf.Sin(rad * 1 * ds)) - (A2 * Mathf.Sin((((A1 - A2) / A2) * rad)));
rad += 0.02f;
(続 pic.twitter.com/afwRuJIi8V
内トロコイド(A2 = A3内サイ)
— kt. (@xxxx_kt_xxxx) December 24, 2022
ds = 0.5f;
float A1 = 5f;
float A2 = 1f;
float A3 = 2f;
x = ((A1 - A2) * Mathf.Cos(rad * 1 * ds)) + (A3 * Mathf.Cos((((A1 - A2) / A2) * rad)));
y = ((A1 - A2) * Mathf.Sin(rad * 1 * ds)) - (A3 * Mathf.Sin((((A1 - A2) / A2) * rad)));
rad += 0.02f;
(続 pic.twitter.com/7H4HOi4Zyi
外サイクロイド(A1=A2とした曲線はネフロイド)
— kt. (@xxxx_kt_xxxx) December 24, 2022
ds = 0.5f;
float A1 = 3f;
float A2 = 1f;
x = ((A1 + A2) * Mathf.Cos(rad * 1 * ds)) - (A2 * Mathf.Cos((((A1 + A2) / A2) * rad)));
y = ((A1 + A2) * Mathf.Sin(rad * 1 * ds)) - (A2 * Mathf.Sin((((A1 + A2) / A2) * rad)));
rad += 0.02f;
(続 pic.twitter.com/A8qxV8wEHX
外トロコイド(A2 = A3外サイ)
— kt. (@xxxx_kt_xxxx) December 24, 2022
ds = 0.5f;
float A1 = 2f;
float A2 = 1f;
float A3 = 2f;
x = ((A1 + A2) * Mathf.Cos(rad * 1 * ds)) - (A3 * Mathf.Cos((((A1 + A2) / A2) * rad)));
y = ((A1 + A2) * Mathf.Sin(rad * 1 * ds)) - (A3 * Mathf.Sin((((A1 + A2) / A2) * rad)));
rad += 0.02f;
(続 pic.twitter.com/TiiobZr6YQ
レムニスケート
— kt. (@xxxx_kt_xxxx) December 24, 2022
ds = 0.5f;
float A1 = 5f;
x = A1 * Mathf.Cos(rad * ds) / (1 + Mathf.Pow(Mathf.Sin(rad * ds), 2));
y = A1 * Mathf.Sin(rad * ds) * Mathf.Cos(rad * ds) / (1 + Mathf.Pow(Mathf.Sin(rad * ds), 2));
rad += 0.05f;
(続 pic.twitter.com/QUeG0T96oQ
カーディオイド
— kt. (@xxxx_kt_xxxx) December 24, 2022
ds=0.2f;
float A1 = 3.5f;
x = (A1 * (1 + Mathf.Cos(rad * ds)) * Mathf.Cos(rad * ds));
y = (A1 * (1 + Mathf.Cos(rad * ds)) * Mathf.Sin(rad * ds));
rad += 0.1f;
(続 pic.twitter.com/9cs3s4E4SJ
バイフォリウム
— kt. (@xxxx_kt_xxxx) December 24, 2022
ds = 0.1f;
float A1 = 20f;
x = A1 * Mathf.Sin(rad * ds) * Mathf.Pow(Mathf.Cos(rad * ds), 3);
y = A1 * Mathf.Pow(Mathf.Sin(rad * ds), 2) * Mathf.Pow(Mathf.Cos(rad * ds), 2);
rad += 0.1f;
(続 pic.twitter.com/wTV0Mlda1C
バラ曲線(A1とA2を変化させると良い)
— kt. (@xxxx_kt_xxxx) December 24, 2022
ds = 0.2f;
float A1 = 2;
float A2 = 1;
float A3 = 6;//全体の大きさ
x = A3 * (Mathf.Sin((A1 * rad * ds) / A2) * Mathf.Cos(rad * ds));
y = A3 * (Mathf.Sin((A1 * rad * ds) / A2) * Mathf.Sin(rad * ds));
rad += 0.1f;
(続 pic.twitter.com/R1TXULhmYJ
バラ曲線(A1とA2を変化させると良い)
— kt. (@xxxx_kt_xxxx) December 24, 2022
ds = 0.2f;
float A1 = 2;
float A2 = 3;
float A3 = 6;//全体の大きさ
x = A3 * (Mathf.Sin((A1 * rad * ds) / A2) * Mathf.Cos(rad * ds));
y = A3 * (Mathf.Sin((A1 * rad * ds) / A2) * Mathf.Sin(rad * ds));
rad += 0.1f;
(続 pic.twitter.com/ZuS4ZqB76c
バラ曲線(A1とA2を変化させると良い)
— kt. (@xxxx_kt_xxxx) December 24, 2022
ds = 0.2f;
float A1 = 5;
float A2 = 2;
float A3 = 6;//全体の大きさ
x = A3 * (Mathf.Sin((A1 * rad * ds) / A2) * Mathf.Cos(rad * ds));
y = A3 * (Mathf.Sin((A1 * rad * ds) / A2) * Mathf.Sin(rad * ds));
rad += 0.1f;
(続 pic.twitter.com/bi3BCkzG8S
螺旋
— kt. (@xxxx_kt_xxxx) December 24, 2022
ds = 0.4f;
float A1 = 0.1f;
x = A1 * rad * Mathf.Cos(rad * ds);
y = A1 * rad * Mathf.Sin(rad * ds);
rad += 0.1f;
(終 pic.twitter.com/xtQm9Fj1VC
(書いてる筆者はド素人ですので色々間違っている可能性あります)
大前提としてSteamworks.NETをUnityにインストールしておいて下さい。
インストール方法は
https://ktstg.blog.shinobi.jp/Entry/1011/
で書いています。
当初は実績なんて無くても良いかなーと思っていたのですがゲームリリース後に実績目的で遊ぶ人もいるので実装した方が良いよとアドバス受け実装してみました。
ランキングと比べると実績の実装は簡単なのでやってみても良いと思います。
実装にあたり
Steam実績を実装する(Steamworks側設定編)
Steamの実績をUnityで実装する【Unity】【Steam】
コチラのサイトさんを参考にさせて頂きました。
まずはSteamworks管理画面のデータ&実績から実績を開きます。
実績にはクリアで達成などのオンオフのみで実装できる実績と、100万点とったら実績といった数値データが必要な実績があると思います。
これの数値データが必要な実績で何%まで達成みたいな表示を行いたい時は「データ&実績」のデータ画面でデータを先に作る必要がありますが今回は使わないので書きません。
(上記参考サイトさんで解説されています)
逆にオンオフのみで達成出来る実績の場合はデータを作る必要はなく実績の方だけ作れば良いです。
まずは実績アイコンを作ります。
実績アイコンは256x256のjpg画像が推奨されていますが実際に表示される時は凄く小さく表示されるので最少サイズの64x64くらいで表示されると思って作った方が良いです。
取得していない時のアイコンは取得している時のアイコンをモノクロにした物にします。
こんな風に作りましたが、実際の画面では全然文字が読めませんでした(笑)
実績画面で実績の項目を作っていきます。
新しい実績ボタンをクリックすると実績作成の項目が出てきます。
それぞれの意味は
API名:Unityでプログラムなどから指定する時の名前
進行状況:オンオフのみの実績なら「なし」最小値/最大値も0で良い。何%まで達成の表示を行うときはデータ画面で作成したAPI名を選択して最小値/最大値を入力する
ディスプレイ名:実績の名前。Steamクライアントなどで表示される実績名です。
説明:ディスプレイ名の下に表示させる実績の説明(「ステージ1をクリアした」みたいな感じ)
設定:データを修正できる人を設定
Client / ゲームアプリから更新(基本はコレを選択する)
GS / 自分でサーバーを立ててソコから更新する
Offical GS / Steamゲームサーバーから更新する
非表示?:獲得するまで表示しない(隠し実績)
達成アイコン:実績解除後のアイコン(カラー推奨)
未達成アイコン: 実績解除前のアイコン(白黒推奨)
以上をそれぞれ埋めていきます。アイコンは設定してもすぐに反映されません。途中で一度保存してから再度読み込むと上手くアップロード出来るようです。
@Unityへの実装
まずはスクリプトの最初にusing Steamworks;を記述します。Steamクライアントも起動させておかないとエラーになります。
実績解除の流れとしては
1.SteamManager.Initializedで初期化
と言った感じ
実際の実績解除はこんな風に書いています。
あと、すべての実績を解除した時の実績を作りたいなと思ったので
SteamUserStats.GetAchievement("作成したAPI名", out bool);で解除した実績を調べられる(trueだと実績を解除している)ので全ての実績を調べて解除するようにしました。
@実績のローカリゼーション
作った実績を色々な言語にローカリゼーションしたい時はSteamworks管理画面のデータ&実績から実績のローカリゼーションを選択します。
作成したい言語にレ点を入れて保存。
ALL Languagesを選択してローカリゼーションデータをダウンロードします。
ダウンロードしたデータをテキストエディタ等で開きます。
設定したい言語の所が空白になっているので埋めて上書き保存します。
保存したファイルを選択してアップロードすればOK
実績画面に戻ると言語が選択出来るようになっています。
これで上手く出来るはずなんですが自分の場合は日本語だったからか上手く反映出来なくて、結局実績を作成する画面のEditで一つづつ更新しないと駄目でした。
オンラインランキングを実装する流れとしては
①Steamworks管理画面にランキングを作成
②Steamworks.NETをUnityにインストール
③UnityにてオンラインランキングをC#で実装
といった感じになります。
実装にあたり
Steamのランキング(リーダーボード)をUnityで実装する【Unity】【Steam】
Unity製ゲームで、Steamのランキング実装をするには
コチラのサイトさんを参考にさせて頂きました。
①Steamworks管理画面にランキングを作成
Steamworks管理画面のテクニカルツールにあるSteamworks設定編集→データ&実績→ランキングを選択します。
ランキングを追加で任意の名前を付けて作成します。
パラメータの内容はSteamworksの説明から抜粋
書き込みと読み込みは特別な事をしない限りは設定する必要なさそうです。
並べ替え方法1位から順番に表示したい場合は降順にします。
実施したいランキングの数だけ作成します。
(例えばイージーとノーマルとハードに分けたかったら3個作る)
ランキングを作成したらココでの設定は終了です。
②Steamworks.NETをUnityにインストール
アセットストアにもあるみたいですが公式の?Githubからダウンロードするのが良さげ
Releases · rlabrecque/Steamworks.NET
ちょっと下にあるSteamworks.NET_20.1.0.unitypackageをダウンロードしてAssets→Import Package→Custom Packageでインストールします。
インストールしたらゲームプロジェクトフォルダの一番上の階層にsteam_appid.txtがあると思うので、それを開くのですがUnityからは見えないのでWindowsからテキストエディタで開きます。
初期は480?かと思いますので、自分のゲームのID(Steamworksに表示されているゲームタイトルの横にある数字)を入力して保存します。
保存したらココでの設定は終了です。
③UnityにてオンラインランキングをC#で実装
※オンラインランキングを使用するときはUnityと同時にSteamも立ち上げておかないとエラーが出るので注意が必要です。
ランキング送受信する時のC#スクリプトはこんな感じ
リーダーボードの取得
ランキングの取得
スコアの送信
流れとしてはリーダーボードを取得してランキング取得して表示もしくは送信を行うだけなので、ランキングの取得とスコアの送信が出来れば何とかなる感じです。
取得した順位はテキストなどに入れて表示すればランキング表が出来ます。
ただ、あまり頻繁に取得すると表示制限?が掛かるみたいで取得出来なくなるので、あまり更新頻度は上げない方が良さそうです。
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!