【バトエン】私は優勢であるのか劣勢であるのか

■私は優勢であるか、劣勢であるか
バトエンに限らず、駆け引きがあるゲームでは基本的に優勢か劣勢かに状況が移り変わっていく。

バトエンで劣勢な状況とは
・総hpが低い
・チェンジの回数が少ない
・対面が不利
・残りの鉛筆が少ない
・アイテムが自分だけ利用済み
・自分だけが全ての鉛筆の種類が公開されている
・クライマックスが遠いのに攻撃出来る鉛筆がない
などがあげられ、総合的にみて、もっとも今試合において勝利から遠いほど劣勢であるといえる。

何故この話を出すかというと、対戦ゲームにおいて自分が優勢であるか、劣勢であるか判断できることは非常に重要であるからだ。

確率も選択肢もないゲームがもしあるとすれば優勢であるプレイヤーがそのままその試合の勝利者になる。

基本的に優勢であるプレイヤーは
・優勢の状態を維持する
・より優勢の状態を目指す
のどちらかを行うべきで、

劣勢のプレイヤーは
・いかにして優勢になるか考える
必要がある。

博打行為(ハイリスクハイリターン)を行って良いのは優勢のプレイヤー、劣勢のプレイヤー果たしてどちらだろうか。

詳しくは後述する。

■劣勢ボーナス
バトエンにおいて劣勢ボーナスが存在していない。
バトエンは優勢な者がそのまま勝利に近い。

劣勢ボーナスとは不利になったときまたは不利なプレイヤーに対して優勢のプレイヤーよりも有利になる要素だ。

例えばマリオカートなら順位が低いプレイヤーはより順位が高いプレイヤーを追い抜きやすくなるアイテムの確率があがる。

クイズ番組では後半にいくにつれて獲得点があがり追い抜きやすくなる。

某カードゲームでは攻撃を受けたプレイヤーの手札が増える。

バトエンには劣勢のプレイヤーに優しい要素が基本的にない。
一見逆転はしにくそうにみえる。

では劣勢なプレイヤーはどうすればいいのだろうか。

答えは博打行為(ハイリスクハイリターン)である。

■博打行為
盤面の有利さを点数で表現する手法がある。
優勢プレイヤーが25点、劣勢のプレイヤーが13点とする。
優勢プレイヤーは着実に3点づつ稼いでくるとき、劣勢プレイヤーは同じ手を打っていると勝つ事が出来無い。
40%で10点増え、60%で20点失うなどの手があればその中でもっとも良い博打行為をしなければならない。

優勢プレイヤーは優勢さを捨てるわけにはいかず、博打をうつことはできないが、劣勢プレイヤーは失うものはなにもない。
不利になればなるほどリスクを負ってでもリターンを勝ち取る。
現実世界においては全てをかけることはリスクが命や未来となるが、ゲームにおいてはどんなに負けても次の試合はまた0からだ。安心して全掛けをしよう。

■都合のいい未来、都合の悪い未来
優勢プレイヤー、劣勢プレイヤーにとって考えるべき要素の一つにどんな未来がくるかがある。

優勢プレイヤーはどのような驚異があり、小さくともどのようなリスクがあるのか把握し、潰すようにする。

劣勢プレイヤーは完全に積むその瞬間までもっとも現実的でありえる都合の良い未来を想像し、行動して逆転の機会を伺う。相手は6分の1を三あてて攻撃してこないかもしれないし、最後に出たきたチャッピー用のステーキはもっていないかもしれない。本当に完全に詰むその瞬間まで、投げ槍になってはだめだ。

優勢プレイヤーは「こうなったらマズイな」といった状況を回避し、劣勢プレイヤーは「こうなるかもしれないからそこにかけよう」と考えるべきだ。

■そもそもバトエンにどうつながるんだよこの話
バトエンをおいて盤面に出す鉛筆は
・敵に攻撃されないバトエン
・敵を攻撃できるバトエン
・この場面でしか使わないバトエン
を基準に考えて選んでいると思う。

私はここに上の優勢劣勢を考慮して以下の観点も考慮にいれている。
・図形(○☆)か盤面と揃えるか、孤立させるか
である。

もちろん☆しか殴れない○のみが場にいるときに☆を投げる意味はほとんどないが、他の考慮要素からみて自分のだす鉛筆の図形を○☆どちらか選べるとき、私は以下の考えで○か☆かを選んでいる。

・優勢の時は図形を揃える
・劣勢の時は図形を孤立させる

図形を孤立させる行為は基本的にハイリスクハイリターンだ。
自分以外の図形が攻撃されたとき自分はかなり有利になり、自分の図形が攻撃されたときは自分だけが著しく不利になる。

逆に図形が揃っている場合はどうだろうか。
攻撃者にはダメージが入らないが、攻撃者以外の三名にはダメージが入る。
攻撃者は有利になるが、攻撃された側は全体からみると柄を孤立させたときに比べて不利になっていない。

もちろん様々な条件が混じって選択は考えるべきだが、自分が優勢で自分以外が☆1体のみ、自分が○か☆か選んでだせるのならばベースの考えは☆から出すべきだと考える。○を先にだすと○分のアドバンテージがただ溶けてしまう可能性があるからだ。☆が先なら最悪○をだすとき、周りの☆は削れている。

逆に劣勢の時は図形を揃えている場合ではない。
誰かが攻撃を受けるとき自分も攻撃を受けてしまう。そのままだと巻き返すことはできない。
劣勢のときは自分の図形だけは出ない都合のいい攻撃がでる未来にかけて、自分の図形は孤立させよう。

劣勢時ほどリスクを抱えてでもリターンを取りに行く考え方は図形を揃える以外にも応用がきく

自分が優勢か劣勢か適切に判断し、選択を決めよう。

アイテムの利用先やバトエンの交換先を考えるときに応用していただければ幸いだ。

(C)2017 ARMOR PROJECT/BIRD STUDIO/SQUARE ENIX All Rights Reserved.(C)SUGIYAMA KOBO(P)SUGIYAMA KOBO

oracleのUNIONでORA-01790が出まくった話

不慣れにもポチポチoracleのSQLを書いていたとき、ある壁が立ちはだかった。
もし、同じ問題に躓いている人の助けになれば幸いである。

あるテーブルとあるテーブルをUNION ALLし、総件数を求めるというもの
※ここでは最小限のSQLを記載している

SELECT count(*) FROM
(
SELECT
USER_NAME
FROM
SCHEMA.T_USER_MASTER
) UNION ALL (
SELECT
USER_NAME
FROM
SCHEMA.T_USER_MASTER_OLD
)

上記を実行すると下記エラーが発生するのだ。
ORA-01790 式には対応する式と同じData型を持つ必要があります

はて、さてはテーブル定義が違うなと調べてみても全く同じ。
USER_NAMEを別の列名に変更すると出来るものとできないものが・・・うむむ

いろいろいじってみて
SELECT count(*) FROM
(
SELECT
USER_NAME
FROM
SCHEMA.T_USER_MASTER
) UNION ALL (
SELECT
USER_NAME
FROM
SCHEMA.T_USER_MASTER
)
に変更しても同様のエラーが起きことが発覚。そんな馬鹿な。
そこで一つ思い付き試すとしっかりと通った。

結論としては以下のようにすると解決する。

SELECT count(*) FROM
((
SELECT
USER_NAME
FROM
SCHEMA.T_USER_MASTER
) UNION ALL (
SELECT
USER_NAME
FROM
SCHEMA.T_USER_MASTER_OLD
))

UNION ALLの上側のSQLがどこまで対象であるか明示されていなかった。
詳しい優先度はもっと詳しい人にお願いするとして、今回のケースでは
SCHEMA2.T_USER_MASTERのUSER_NAME(char型)とcount(数値型)をUNIONしようとしていたために発生していたようだ。

PCの設定・ソフトのメモと簡単な紹介

自宅も職場もどの環境にもいれたいソフトや設定のメモなど。

■Windowsの設定
細かいところは省く、個人的にやらなきゃいけない設定は以下
・拡張子の表示
・alt+tabのサムネイルを無効化
参考:http://shumitenten.thick.jp/blog/2017/04/08/windows10%E3%81%AEalttab%E3%81%AE%E8%A1%A8%E7%A4%BA%E3%82%92%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/
・CapsLockを削除してctrlキーに変換する
参考:http://www.shin-tan.com/swapKey

■IME
Google日本語入力
英語苦手マンにとってはカタカナ英語を英語にしてくれるのはありがたい

■ブラウザ関連
・chrome
・Vivaldi
・vimium(プラグイン)
キーボードのみでブラウザ操作が可能になるプラグイン。

■フォント
・Ricty_Diminished_Discord
読みやすいフォント。プログラマー向けな配慮もされている。

■ランチャー
・CLaunch
Alt + Qで起動するようにしてる。よく忘れるけどキーボード→ホットキーで設定してる。
主要アプリケーションは[Windowsキー+数字]から起動するけど、一部ファイルや細かいソフトはここから起動
いつかオリジナルスキン作りたい

■キーボード設定
・AutoHotKey
参考:http://sato001.com/high-speed-input-keyboard
※少し情報が古いので普通に設定するだけだとだめ。sc~を消すなど
あとはVim風キーバインドにアレンジしてる
追加で[無変換]+eは esc になるように変更している

■エディタ
・Vim
・sakura
※Vimに完全に移行しようと思ったら日本語入力メインだとしんどい面もあったので現在は併用中
Vimプラグインは色々使ってるけどここでは割愛
Vimの設定も長くなるのでここでは割愛

■クリップボード拡張
・Clibor
まとめてコピペしてあとから選んで貼り付けみたいな動きができるようになる。

ツイッターみるツールとかはあんまりこだわりない

Intensity Pro 4Kの設定に関する覚書

何度か設定しなおす度に設定値を忘れてしまって不便しているので、Intensity Pro 4Kでnintendo switchとPS4をアマレコでキャプチャするための設定値メモ

■nintendo switch

デバイス:Decklink Video Capture

設定値: *w=1920, h=1080, fps=60.00,  fcc=r210, bit=30

※スプレッターを利用するなどし、switch側の解像度を固定させる必要がある

■PS4

デバイス:Decklink Video Capture

設定値:*w=1920, h=1080, fps=59.94,  fcc=r210, bit=30

※ゲームにより設定値が変わる場合がある

■Intensity Pro 4K

videoformat:1080p 10bit 4:4:4 RGB

関係あるかは不明

 

フィルターの問題がでた場合は公式サイトよりデスクトップセットアップを入れなおす。

→大体はカメラをソースにつかうアプリケーションが悪さしている

以上