Amazon GameLiftの恐怖

Amazonからいかなるメールが突然来ました。

Greetings from Amazon Web Services,

This e-mail confirms that your latest billing statement, for the account ending in ****6128, is available on the AWS web site. Your account will be charged the following:

Total: $32.95

You can see a complete break down of all charges on the Billing & Cost Management page located here:

https://console.aws.amazon.com/billing/home#/bill?statementTimePeriod=1538352000

To protect your privacy, we can only communicate account information to the e-mail address on file for your account.

Thank you for using Amazon Web Services.

Sincerely,

Amazon Web Services

To learn more about managing your AWS costs with Cost Allocation and Tagging, visit http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html

This message was produced and distributed by Amazon Web Services, Inc. and affiliates, 410 Terry Ave. North, Seattle, WA 98109-5210.

AWS will not be bound by, and specifically objects to, any term, condition or other provision which is different from or in addition to the provisions of the AWS Customer Agreement or AWS Enterprise Agreement between AWS and you (whether or not it would materially alter such AWS Customer Agreement or AWS Enterprise Agreement) and which is submitted in any order, receipt, acceptance, confirmation, correspondence or otherwise, unless AWS specifically agrees to such provision in a written instrument signed by AWS.

The AWS Customer Agreement was updated on May 14, 2018. You can see more information about these changes at https://aws.amazon.com/agreement/recent-changes/.

なに!32ドル92セント払え!何のこっちゃ!と思い、詳細を見てみると「GameLift」で32.92利用になっとる!ゲーム のサンプルで無料の筈が何故!

それの課金が!やられた!って感じでググってみたら案の定他のひとも悲惨な方がいらっしゃった。

チュートリアルを途中まで進めただけで数万円の支払が発生したAWS

 

あわてて僕もフリートを削除しました。

Amazon GameLift 入門 #5 フリートの削除

 

まあ、無料をうたうんだったらサンプルのダウンロードと通信も無料にしろよ!

高い勉強代になっちゃった!気をつけよう。

サポートに無料が課金されている旨を伝えたところ返金をする旨の連絡をいただきました。サンプルをビルドすると無料ではなく有料になる旨を記載すべきと進言しましたがどうなるかな?

少なくともサンプルをステップにしたがって進めると無料ではなくなるのでそれは明記すべきだと思います。

Sequenceノードの誤解

誤解してたのだけど、Then0へ処理が走って、Then0の処理が終わったらThen1の処理をする訳ではないので気をつけないと変な結果になる。

Then0の処理が走って、次にThen1の処理が走るって事。Then0の処理が終わったらThen1の処理が走る訳じゃないよ。

Then0の処理が終わってなくとも走ればThen1の処理が始まっちゃうよ。

フォントと段落を設定する

まず、外部*.cssを読み込ませてフォントを設定させる

以下setfont.cssファイル

/*タイトル用*/

p.fonttitle{font-size:36px;font-family:monospace;font-weight:600;line-height: 200%;}

/*小見出し用*/

p.fontmidasi{font-size:24px;font-family:monospace;font-weight:600;line-height: 200%;}

/*本文用*/

p.fontname{font-size:12px;font-family:monospace;font-weight:400;line-height: 200%;}

/*脚注用*/

p.fontnotes{font-size:10px;font-family:monospace;font-weight:600;color:#ff0000;line-height: 200%;}

でHTMLで読む

<html>
  <head>
    <link rel="stylesheet" href="setfont.css" type="text/css">
  </head>
<body>
  <p class="fonttitle">タイトル</p>
  <p class="fontmidasi">見出し</p>
  <p class="fontname">本文</p>
  <p class="fontnotes">脚注</p>
</body>
</html>

こんな感じ

CSS辞書

タイトル

見出し

本文

脚注

パッケージのアンインストール

インストールしたパッケージのアンインストールは簡単

パッケージのみアンインストール

apt-get remove パッケージ名

設定ファイルごとアンインストール

apt-get purge パッケージ名

AWSでWordPressのプラグインのインストール・アップデート

AWSで運用しているとWordPressのプラグインがインストール・アップデートできないって現象に見舞われるんですが、これはどうやら所有権の問題のようなのでその対処法を記載

まず、wp-config.phpに以下を追記。

define('FS_METHOD','direct');

これはFTPでエラーというのを防ぐためのもの。

続いてプラグインインストール・アップデート時のみwordpressディレクトリの所有権をrootに変更する。

chown -R root:root /home/wp

終わったら元に戻します。

chown -R user:user /home/wp

戻しておかないとWINSCPなどでアクセスできなくなっちゃいます。

超便利なWebminをAWSでも使う

まず、Webminをセットアップします。

で、デフォルトでは外部からアクセスできないので設定を変更します。rootでログインして、

vi /etc/webmin/miniserv.conf

を編集します。

最後の行の

allow=127.0.0.1

#allow=127.0.0.1

にして再起動

systemctl restart webmin

でアクセスできます。

アクセスしたら英語になってんので日本語にしましょ。

ここの設定をJapaneseに変えれば日本語になります。

キーボード入力の実装

キーボードの入力は直接もできるのですがここでは「プロジェクト設定」の「インプット」で行います。

こんな感じで

レベルBPで設定します。(動かすPlayerPawnでも記述できます。)

細かく見て行くと、BeginPlayで初期位置と向きを設定していて一旦位置を変数に格納してResetイベントが呼ばれたら初期値に戻すという仕様です。

次にキーのWが押されたら前進、Sが押されたら後退、Aが押されたら左、Dが押されたら右に移送する仕様です。ここで重要なのはForward(向き)を取り、ローカルで前進後退左右に移動しているという点です。

また、Z軸に左右回転とZ軸にUpDownと見上げる見下ろす処理も実装しています。

さらにこのままではゲームが終わらないのでESCキーを押されたらゲームが終了する処理も入れてます。

スプライトがプレイヤーのカメラ方向を常に向き、ふわふわ・くるくる。消えたり、現れたり

レベルにスプライト(平面)を置いて常にカメラを向く仕様を実装します。

まず、プレイヤーを作りますがPawnで作成してCollisionをつけてカメラもくっつけときます。collisionは当たりの判定用に使います。

で、平面を置いて、まず、マテリアルを作ります。

こんな感じで作ります。LerpにAlphaって名前をつけてます。

Alphaの設定はこんな感じ。デフォルトは1です。

マテリアルを作ったら平面に貼ります。

こんな感じ。でこれが常にPlayerを向くようにします。

実装はこんな感じです。

ちなみにお化けなのでふわふわさせます。

こんな感じ。上下にふわふわしながらやや周回します。

まあ、これだけじゃ面白くないのでお化けに近づくとお化けが驚いて怒って逃げる(消える)ってのを実装します。

全体はこんな感じ。

詳しくはお化けのcollisionを350cmに設定しているので、playerがお化けのcollisionに触れて、お化けのダイナミックマテリアルの値が1ならテクスチャを差し替えるって事をします。

で、0.5秒後に怒った絵に差し替えて

2秒後にイベントが発生してタイムラインが動いて2秒でAlphaが0になって消えるって実装です。

ダイナミックマテリアルはコンストラクションスクリプトの中で設定しています。

で、何でAlphaが1か1以外かを見ているのかというと、消える2秒の間で再びお化けのcollisionに触れた場合に絵を差し替える処理をさせないためです。

ちなみにお化けのcollisionから出た場合は以下の処理になります。

またここでAlphaが0かどうかの判定がありますが、0なら10秒後に現れるんですが、でもお化けとPlayerの距離が350cm以上離れてないとAlphaが0から戻らないようにしています。

350cm以上はなれると再び2秒でAlphaが1に戻り姿を現します。

という感じ。