talk to myself -3ページ目

talk to myself

趣味のブログです

ファイアーエムブレムはファミコン版の初代「暗黒竜と光の剣」からSwitchの「風花雪月」まで、一部を除いて、ずっとプレイしてるシリーズ(やってないのを数えた方が早い)。もちろんエンゲージもやるつもり!

 

初代から「面白い」と思ってなければ、こんなに続けてプレイすることもなかったと思います。でも、初代から比べると随分と様変わりしていて、例えば、最新作に馴染んでいる人が初代をプレイして、果たして「面白い」と思ってもらえるのか、甚だ疑問ではあります。
 
じゃあ、あの頃の面白さって一体何だったんだろうな、と振り返ってみて、3つのポイントにまとめました。
 

 

  1.全てのキャラに活躍するチャンスがある

 

これがあるから、時間がかかっても何周もプレイしてしまうんですよね…

 
三姉妹+シーダでペガサス四姉妹にして遊ぶとか、騎兵を使わないでクリアするみたいな縛りプレイとか、自分で色々考えて遊べる自由度がありますよね。ドーピングアイテムも初代からあるんで、推しキャラに貢いで最終マップで無双することもできます。
 
まぁこれは今のFEにも通じる話ですが、それはそれとして、実は昔のFEは「主人公が強くない」というのもポイントなのかなと。正直マルスは、ユニット性能としてはそれほど強い訳ではなく。マルスで無双できてしまったら、他のキャラの育て甲斐がないはずです。マルスでは突破困難なところを、育てたキャラで適材適所で捌いていく。そして最後にマルス様どうぞ…って玉座に座らせる(笑)
 
でもラスボスは、いくら普通のキャラを育てていても倒しにくくて(まぁ倒せるんですが)、マルスなら比較的簡単に倒せる。そういうバランスがエモポイントだと思うんですよ。好意的に解釈すると、決して一人で戦っている訳ではなく皆で戦っているんだぞ、という群像劇の演出なのかなと思います。
 
今のFEって、だいたい主人公が強くて、かばい甲斐は…あまりないですね(笑)恐らく、ヘクトルあたりが強い主人公の元祖かな?で、アイクはもう完全に頭一つ抜けた強さがありますね。難易度の面から考えると、倒されたら即ゲームオーバーの主人公に強さが求められるのは自然な流れだと思います。
 
ちなみに、暗黒竜は中古で買ったんですけれども、前の人のセーブデータが残っていたので、それで初めてみたら、レベルMaxのマルスがいて、カダインの章で止まってたんですよね。ガーネフが倒せなくて詰んだと思っちゃったのかな…
 

 

  2.ストーリーとマップがリンクしている

 

これが一番のメインにお伝えしたいことです。例えば、紋章の謎の4章、ユミナとユベロを連れたオグマが海賊の襲撃を受けて、シリウスに話かけて助けを求める。そして、そこにマルス軍が追いついて無事に救出する、というところ。この話の展開を、うまくマップ上で表現しているんですよね。
 
まず、オグマでは捌ききれない数の海賊を配置して、シリウスに頼らざるをえない状況が作られています。また、ユミナとユベロは、戦えてしまうとかばい甲斐がないので(笑)最弱レベルになってます。そして、マルスの初期位置がオグマと近すぎては、オグマとシリウスの活躍場面が少ないですし、このバランスを取るのもストーリー展開には重要です。
 
そんな感じで、ストーリーがマップ上で表現されるのがエモポイントだと思うんですね~
 
ストーリーって、別にテキストを読めば分かるし、ムービーを見れば分かるんです。でも、それをわざわざマップ上に落とし込んで、コマを動かしてストーリーを追体験していくことで感情移入しやすいし、さらに、マップ上でのキャラの動かし方によって、自分で細かなストーリーの組み立てもできるわけです。あいつを活躍させようとか、こいつを一緒に連れていこうとか。自分で選択した道を歩めるところが、FEの面白さの原点だと思うわけです。
 
ちなみに↓は、今話題のAIに書かせてみた2部4章のマップですw
 

 

  3.計算できる

 

昔のFEは、計算式が簡単だったので、自分で戦闘予測の計算ができるのが良かったと思うのです。
 
今はスキルとか環境変数が色々とありすぎて、それを含めて自分で計算しようとすると、かなり複雑になってしまいます。なので、自動で戦闘予測してくれなかったら逆に困るんですけど(笑)
 
計算が複雑だと、例えば、攻撃力の強い武器を持ってるのに敵が倒せなくて、その原因を探りたいときに、何が原因かパッと見わからなかったりするんですよね。隣にいるキャラのバフが効いてなかったのか、敵のデバフなのか、武器の相性なのか、地形効果なのか、武器に付いてるスキルが発動してないのか、キャラに何か特別な能力があるのか、などなど…
 
昔は、攻撃力-防御力でダメージがパッと分かりますし、特攻と、追撃と、あと考慮するのはせいぜい地形効果ぐらいでしょうか。自分で計算ができるのがメリット、というより、何かあったときに原因を特定しやすい、というのがメリットですね。あと、計算できるということは、「自分が戦況をコントロールしている感」に繋がっている気がします。
 
今の複雑なシステムも、何が原因なのかを探ることに面白みがあるのかもしれませんし、様々な要因でキャラが強くなって推しキャラが使えるようになると思えば、一概に昔が良かったといえるようなものではないです。むしろ、今の方が多彩でよいのではと思います。ただ、シンプルが故に良かったこともあるよって感じですね。
 
確か、GBA三部作までは、戦闘予測を簡易にするか詳細にするかのオプションがあった気がしますが、テリウスもありましたっけ?
 
 
 
以上、私なりに絞りだした「FEの面白さ」でした。
 
最近は、ここで挙げたものよりも、支援会話でキャラ同士の関係性を知ることができるのが楽しくてプレイしてる感じですね。さぁ、来年はあの子とエンゲージしちゃうぞ!?!?ww
初プレイは同盟ルートで、クリアタイムは70時間弱。支援会話をいかに効率よく開放していくか、を重視しながらやっていたからか、かなり時間がかかってしまったように思います…
 
その割には、クロードとヒルダの支援会話が時間切れになってしまったし、せっかくレオニーとのEDを楽しみにしていたのに、うっかり(?)ジェラルトを仲間にしないルートに行ったもんで、同じルートでやり直しましたww
 
いや、一応、フラグが立ってたのは分かっていた、というか、シェズが「仲間にできるかも」みたいなこと言うじゃないですか。でも、例えばリンハルトとかを仲間にするときには普通に撃破してたんで、撃破したあとに仲間にするしないの分岐でもあるのかな?と思ったら、そんなことは全くなくw
 
総評としては、良いところとそうでないところと、色々あったなーという印象。
 
同盟ルートのシナリオは、いわゆる「打ち切り」っぽいですよね。王国軍のその後とか、闇うごとの決着とか。どうもスッキリしないっすね。ストーリーの大筋としては、序盤は「もし出会ったのがシェズだったら」というテーマでワクワクしましたし(学級に参加するのはかなり強引でしたけど)、帝国に攻め入られる→逆に押し返す→パルミラ襲来の流れとかは良かったですが。ジェラルト仲間にしたルートで最後の展開が変わるのかと思ったら、そうでもなく。ザラスの闇の件も、仕組みがちょっと本編と違うんですけどそういうもんですかね。面白かったんだけど、ちょっと詰めの甘いストーリーだったかなと思いました。
 
一方で、個々のキャラクターにフォーカスすると、今回は主人公がよくしゃべるので、人となりが分かって良かったですね。普段あまり主人公を推すことはないんだけど、今までのFE主人公で一番好きかもしれないw ベレトスはちょっと無口が過ぎて、まぁそれがミステリアスで良いんでしょうけど、もうちょいセリフほしいなって思ってたんで。
 
支援会話は、全ての段階で用意されてる訳ではないし、組み合わせ自体も厳選されましたね。そもそも、ABC全てに会話を用意しなくても構わないし、キャラの相性もあるんで、全ての組み合わせでAにならなくても良いし、現実的で良いかなと思います。原作ではAまであったのに、無双ではB止まりになった、というケースもかなり多かったと思うので、人によっては残念だったかもしれませんが。
 
後日談がないのがちょっと寂しいですが、そのおかげで、Aまで進めてしまうことによるデメリットも無くなったし、これはこれで良かったと思います。原作の風花では、Aまで進めると、大半がカップリングを匂わせる感じの会話になっていたけど、そうじゃないものが多くなった印象です。広い意味で、将来を共に歩んでいこうという約束をするものが多いですよね。今までの後日談の導入部分がAになった感じかな。
 
戦闘については、無双ゲー自体が初めてだったんで、こんなものなのかなーとも思うんですが、ぶっちゃけると、あまり自分は馴染めなかったかも。まず、奥義やら戦技やら個人スキルやら、色々と出し物があって、把握するのが大変でした。正直、どういう場面でどういう出し物を出したらよいのかパッと判断できないので、いつも適当に戦技を出してました。そして、戦闘の途中で色々な会話がリアルタイムに流れるんで、会話の内容が頭に入ってこない時がありました。混乱して、次に何をすべきかも分からなくなることも。そのときはポーズして確認すればいいんですけど、もっと戦闘会話をじっくり味わって聞きたかったなぁ…
 
副官システムは支援値上げたいときにだけ使ってたかな。特定の押しカプとかはないし、副官にする操作もちょっと面倒くさいなと思ってしまったので…。マップ上で、だれをどこに向かわせる、とかを指示していくのは、楽しかったですね。戦闘評価Sを取るコツが中盤になってようやく分かって(プレイアブルを切り替えて、敵の多そうなところを自操作で無双する)、それ以降は結構な確率でS取れるようになりました。
 
その他のシステムについては、まぁ最初はやることが多くて大変だったけど、イージーでやってたし、武器は買わずに拾い物を復元するだけで事足りたので、そこまで細かく把握しなくても何とかなったかな。
 
2周目以降は、ほとんどの要素が引き継ぎ可能ということで、サクサク進めそうです。支援会話コンプリートを目標に、帝国、王国とやっていくつもりです。
巷のエクラ達に謎イベントと評される「護れ!英雄最前線」、私もなぜこれをFEでやる必要があるのか謎だと思ってますが、何となく少しリサーチしてみて分かったことなどを攻略情報として共有しようかなと思います。本腰入れて調べる気にはならないんですけどw
 
結論から知りたい方のために、まず結論から書きます。
「9.9倍盾使用が最強だが、通常は4~5倍に賭けるが吉と見た。但し、傾向は今後変わる可能性がある。」
 
まず、表示切り替えっていうボタン押すと、各陣営ごとに4つの数字が見れますね。最小倍率、最小倍率の時の勝率(最小勝率)、最大倍率、最大倍率の時の勝率(最大倍率)、の4つです。この4つの数字、よく観察すると互いに関連性があって、4つの数字のうち、どれかひとつが決まれば、その他の3つが決まることが分かりました。
例えば、ディミトリの最小倍率は5.5ですが、5.5倍のときの勝率は66%で、その時の最大倍率は8.5で、最大倍率での勝率は24%、と決まってます。まぁ、若干ずれたりするのですが、ほとんど同じです。誤差は、ちゃんと調べてませんが四捨五入の範囲かなと思います。例えば、5.5倍なのに勝率65%になったり、とかはありえます。
 
その関係性を表したのが次の2つのグラフです。サンプルが少ないんですけど、ほぼ直線上に乗るので、これ以上データ取らんでもいいかなとw
1つ目のグラフは、横軸が倍率、縦軸が勝率です。青い線が最小倍率と勝率の関係、オレンジが最大倍率と勝率の関係になります。最大倍率の方が、勝率の落ち込み方が急なんですね。
 
2つ目のグラフが、最小倍率と最大倍率の関係です。横軸が最小倍率、縦軸が最大倍率です。
 
いずれも直線なのでax+bの式で表現できて、その式は線に併記してあるやつです。エクセル君が計算してくれました。
 
この式が分かれば、あらゆる倍率のときの勝率が分かる訳です。但し、この傾向は今後変わる可能性がある(というか、こないだいつの間にか変わってた)ので、イベントの度に確認した方が良いかもしれません…今回のグラフは、2022年6月のイベントでの傾向ということでご了承下さい。
 
で、結局どの勝率が狙い目かを知りたいので、期待値を計算してみます。期待値とは、どれぐらいリターンが期待できるかを表した数で、計算方法は、倍率と勝率を掛け算するだけです。例えば、倍率3.0で勝率50%のとき、3.0倍のリターンがあるかないか半々の確率なんで、期待値は1.5倍ということになります。もし勝率0%なら期待値0です。
 
但し、最前線さんの仕様で、敗北しても1倍のスコアは貰えるので、少し計算方法を変えます。先の例だと、3.0倍のリターンと、1.0倍のリターンが半々の確率になりますので、期待値は2.0倍になります。勝率0%でも、期待値は1.0倍あります。
 
こうして、最小倍率に対して期待値を計算したのが次のグラフです。
横軸が「最小倍率」です。線が複数あるのは、最終的な勢力による倍率変動が、最小のときと最大のときがあるからです。最小がオレンジ、最大が青ですね。もうひとつの緑色の線は、その倍率変動が中間だったときを仮定して引いたものです。
 
線は上に凸のカーブで、頂点が一番期待値の高い場所になります。しかし、最小と最大で、結構開きがありますよね。最小だと7~8倍ぐらい、最大だと3倍ぐらいにピークが来ます。実際には、最小と最大の間のどの辺になる事が多いのでしょうか…
 
これについては、勝利したときの倍率を記録しておして、統計を取ってみないと分からないのですが、もしかしたら、中間倍率が、実際の勝利倍率にわりと近いんじゃないか?と予想してます。(ここから先は、検証をしている訳ではなく、予想のお話ですので、ご注意くださいね。)
 
というのは、援軍情報で「みんなの援軍」というのが見られるんですけど、こんなデータです。
倍率の高い場所に一番多く援軍が派遣される傾向があり、その時の派遣率が、だいたい50%前後なんですね。ということは、最小と最大のちょうど中間の倍率になる可能性が一番高い、と予想していいんじゃないかなと。そんな訳でもう一度期待値のグラフを見ると、中間倍率のピークになっているところ、つまり、最小倍率が5.0倍前後が派遣の狙い目になりそうです。ただ、倍率が高いと勝率が下がっていくんで、ブレも大きくなります。なので、ピークの手前の4~5倍あたりを狙うのが堅実なのではないかと思います。
 
気を付けて欲しいのは、これはあくまで期待値であって、期待どおりのリターンが得られるかどうかは「運」です。この運要素を減らしたいのならば、なるべく施行回数を増やすべきです。つまり、「こまめに派遣する」「倍率が同じような陣営が複数あったら、分散させる」事が肝要です。もし、期待値以上のリターンが欲しいのなら、その逆をやって、上ブレに祈りを込める事になります。そこは、その人のポリシー次第ですね。
 
さらに、ここまでの話をちゃぶ台返しする「盾」の存在もありますので、期待値だけ見てても勝てないことは明白です。
 
ということで、これを参考に、各々駆け引きを楽しんで頂けたら幸いです、が、リサーチとしては全然不足してますので(大勝利・大敗北の話もある)、あとは若者に任せますw
 
 
 
…最後に。なんだか、結局、最前線さんをちょっぴり楽しんでる自分もいますが、どちらかというと、「このシステムがどういう仕様になっているか」「完全に運任せで遊ぶのではなく、どうすれば運の要素を減らせるか」、などに興味があり、このミニゲーム自体に面白味を感じてる訳ではないような気がしてますww(ソシャゲって往々にしてそうですよね、どうすれば効率が良いか、どうするのが近道か、などを探る作業になる)

C#で「ログをファイルに出力して、一定行溜まったら押し出す」という方式のものを作りたいと思って、FileStreamまわりをいじってました。

 

一定行溜まったかどうかを判定するためには、単純に書き込むだけじゃなくて、ファイルの中身を見ないといけないんで、ReadWrite両方できるようにFileStreamを作って、さらにそこからStreamWriterとStreamReaderの両方を作ったんですけど、それぞれusingを入れ子にしてみると、System.ObjectDisposedExceptionを吐いて落ちます。

 

調べると、https://docs.microsoft.com/ja-jp/visualstudio/code-quality/ca2202?view=vs-2022 が引っかかりました。

 

 

つまり、sr(StreamReader)をDisposeすると、sw(StreamWriter)もfs(FileStream)も勝手にDisposeされるらしい?(答えは後述)

 

例2のようにやってみようかと思ったんだけど、usingブロックに入っていきなりstream=nullするとstreamのメソッドが使えないし、同じようには書けない…
てか、外側はusing使わず自前でtry/catchしろってのが、なんとも解せない。usingって、リソース漏れを防ぐために自前でDisposeしなくてよくなるように存在する構文じゃなかったっけ…?usingという名前のクセにno useである。

というわけで、むしゃくしゃして一個もusingを使わず以下のように書いてみました。

 

 

どうせtry/catchを使うんだったら、自前でObjectDisposedExceptionを無視するように書きますよってことで。例えば最深部のsrについて見ると、

・Disposeに成功したら次のステップでsrにnullを代入する。

・Disposeに失敗したら多分ObjectDisposedExceptionが吐かれるので、その時は別にDisposeする必要はないので結局catchブロックでsrにnullを代入する。

・その他の例外が発生したときにはsrがnullになってないから、finallyでDisposeが呼ばれる。

これを3つ入れ子にしてやってみたら、一応うまくは動きました。が、もっと美しい書き方はないんだろうか。

ステップ実行してみると、どういう動きしてるか何となくわかりました。まず最深部のsr.Dispose()で止めます。この時点では、srもswも_disabled = false、fs.IsClosed = falseです。

 

sr.Dispose()を呼んだあとは、sr._disabled = trueになるのと同時に、fs.IsClosed = trueに変わります。
 

 

次に、sw.Dispose()を呼び出すと、catchに飛びますが、例外が発生しててもswはちゃんと_disposed = trueになってます。
 

 

多分、srをDisposeしたとき既にfs.IsClosed = trueになってるんで、その状態でswをDisposeすると、内部でさらにfsをDisposeしようとして例外が発生したんだと思います。


つまり、こういうことですかね。

・fsからsrとswの2つの子ストリームを生成した。

・子ストリームをDisposeすると、親ストリーム(fs)も勝手にDisposeされる仕様になっている。

⇒2回目の子ストリームのDisposeで、親が既にDisposeされてるので例外を吐く。

これでは、どうやっても例外発生を回避できないですよね。

そもそも、親を勝手にDisposeする仕様がおかしいと思うんだけど、こういう仕様になっているということは、1度のファイルオープンでReadとWriteを同時に行うケースって想定されてないんですかね?

ちなみにfsだけDisposeしても、当然swとsrは勝手にDisposeされません。それでリークが起きなければそうしたいんですけど。

なんかもうちょっと工夫したいですね…(そこまでやるかという問題もあるけど、時間があったら考えます)

あけましておめでとうございます。
本年もどうぞよろしくお願い申し上げます。

 

昨年直接ご挨拶した人には分かる話ですが、お引っ越しをしました。

ここを読んでる人はだいたい、どこの都道府県に引っ越したか分かりますね?
分からない?

今までより、都心までちょっと遠くなっちゃったけど、
別に普通に行ける距離なので、何かあれば全然遊びに行けます。
終電は早くなったから、夜のライブはちょっと行きにくくなっちゃったかなぁ。

ここは、ポツンと…じゃないんだけど、だいぶ長閑なところです。
以前の住居は交差点の角で、バイクの騒音や大型車が通る時の振動などがあり、
そういうのと比べたらだいぶ静かになりました。
でも、こっちはこっちで特有の騒音があったりします。

春になったらカエルの大合唱でしょう。

ちなみに、ストビューには写らない場所ですねww

 

実は、昨年4月ぐらいに転職活動してたのは、引っ越すからというのもありました。
ちょっとね、面倒見ないといけない人がいましてね。
そこにちょうど、在宅勤務が当たり前の時代が遂にやってきたんで、
今が転職に良いタイミングかな、と。そういうことです。

今年は、新しい仕事で一年なんとか乗り切ることが目標かなー?

あと、リングフィットをできる限り毎日続けられるよう頑張ります。

あと、もうひとつやりたいことがありますけど始められるかどうか。

 

 


で、結局、どこに引っ越したか分からない?
プロフィールにドイツ語?で書いてありまぁす!!