PSO2EP5の楽しかったことと楽しくなかったこと
はじめに
これは PSO2 EP5 Advent Calendar 2018 25日目 の記事です。半年遅れです。本当に申し訳ありませんでした。
タイトルも最初は「楽しいことと楽しくないこと」だったんですが、EP6が始まったということもあり過去形です。
基本的にEP5は「どっからどう見てもダメだったところをプラマイゼロのところまでは改善した」って内容がほとんどなんですが、改善は改善として扱っていこうと思います。
目次
楽しかったこと
- ヒーローが強すぎたせいで基本職もヤケクソな強化調整が入って気持ちいい
- 紋章で14武器が交換できた
- S級特殊能力の付け替えが便利
- 森ブーストでアトライクスが作れた
- ペルソナ後半の見た目がまあまあかっこいい
楽しくなかったこと
- ヒーローが強すぎたこととその後の対応
- バスタークエストは飽きる
- 強化値上限
まとめ
楽しかったこと
ヒーローが強すぎたせいで基本職もヤケクソな強化調整が入って気持ちいい
基本職も通常攻撃が見れるダメージになったり、動きが快適になったりPP周りが快適になったりと、とりあえずただ動かしてて気持ちのいい挙動になったのは本当にEP5の良い点だと思いました。怪我の功名ですが。
いつも使っているジェットブーツも、ロックオンしたらだいぶ強めの追尾がついたり派生攻撃がヌルヌル動いたりまあまあ威力あったりで、バウンサーを使い続ける分にはとてもよい調整でした。
紋章で14武器が交換できた
レア集めるゲームなのはわかってるんですが、そもそも緊急が来る時間にゲームをやってないと抽選の権利すらないので、ちまちま紋章集めていれば手に入るのはありがたかったです。あまりにギレスヴァイエンが欲しかったので。
後で楽しくなかった文脈で強化値上限の話を書くんですが、これに関してはやってりゃ手に入るという代わりに強化値上限が+30なのは妥当な調整だと思っています。14ドロップが上限+35確定なのもありましたし。
S級特殊能力の付け替えが便利
継承100%だし好きなように付け替えできるのはストレスフリー!因子がS級能力だと因子生産工場にできるのも面白いと思います。ズィレンNTを入手できて本当に良かった。
EP6の話になりますがBoPhでクリ率モリモリ盛れるので、妙撃が他の威力系よりお得に使える感があってオススメです。
森ブーストでアトライクスが作れた
☆15作ろうキャンペーンのときに完全にPSO2を離れていたせいで機会を逸していたのですが、森ブーストのときにグッとガッツポーズをしただけでリュミエルブーツが落ちたのでサクっとアトライクスを作ることができました。
表記上は最高レアとはいえ実質レアでもなんでもないんですが、やはり当時最先端に位置する武器を作れたことはモチベーションにつながったので、ブースト期間に作りきれてよかった。
支援限長ブーツの快適さは異常。ソロとかTeがいないマルチだと本当に麻薬。
ペルソナ後半の見た目がまあまあかっこいい
めっちゃかっこよくないですか?
ゼクトさんと同じでなんでペルソナと戦ってるかは全然知らないんですが
楽しくなかったこと
ヒーローが強すぎたこととその後の対応
新しい武器使ってクソ強いならまだ納得いくかもしれないんですが、ソードとかあんなブンブン振り回してハンターとはなんだったの?みたいな気持ちになってしまったのが一番モヤモヤするところでした。
その後の対応についても、ヒーローだけキャップ開放おあずけっていうネガティブな理由で基本職やらせる状況にした上で「ヒーロー一極集中は解消してきている」って言い放ったり、EP5は全体的に場当たり的な対応が目立っていた印象です。
先にも書いたように、基本職の動きがめっちゃ快適になったことについてはとても良いことだと思ってます。
バスタークエストは飽きる
飽きませんか?あれを続けるモチベーションは私には無かった。
ぶっちゃけただ面倒になった防衛だし、マップ広すぎる割に広さ活かしてるわけでもないし、最後の魔神城倒しに行くところの盛り上がりの無さも凄い。これをEP5のメインコンテンツにしようとしてたのはある意味で凄いと思います。
強化値上限
私としてはいままでのPSO2の中で一番ヘイトを持ってるのがこの要素。初期の頃は属性60にさえできれば+32でも妥協できたんですが、アップグレード系で尽く+35を要求してくるので+35にできないものの価値が自分の中でゼロを通り越してマイナスになってました。ドロップしてもテンションが下がる。
最近は☆13でもドロップ時に属性60強化値上限+35が確定するようになったので、だいぶ快適になったのですがそれはぞれで「じゃあオーバーリミットシステムってなんだったんだ?」と思わなくもない。
まとめ
PSO2は色々ツッコミどころがあるけどなんだかんだ友達とワイワイやる分にはずっと楽しいゲームという評価だったんですが、EP5初期ではそれすらも楽しくなくなって一旦離れていました。
たくさんのアップデートを経て再び友達とやる分には楽しくなってきましたし、EP6も(例によって色々ツッコミどころはあるものの)概ね良い状態にはなっていると思います。
あとはデュアルブレードの価値をもう少し上げていただけると......!何卒!
あとネオカブリス落ちてくれ......
Day3: コーヒー
この記事は373 Advent Calendar 2017の3日目の記事です。
本日はここ最近ハマっているコーヒーについて書きます。
きっかけは転職
5月に転職した職場が、コーヒーを豆から挽いて淹れられるシステムになっていて、それでハンドドリップに挑戦してみたのがきっかけでした。
ハンドドリップが楽しい
お湯を沸かして、豆を挽いて、お湯を注いで……という、コーヒーを淹れるまでの一連の作業が「かっこいい趣味をやってる人」感を得られてとても楽しいのです。
そういう気分的な部分とは別に、淹れ方なり挽き方なりで味が結構変わってくるので、自分好みの味を追求していくの楽しく、そんな部分も自分にはとてもマッチしているのだなと思っています。
家でもやりたい
コーヒーを飲みたくて、というより、ハンドドリップで淹れる作業を家でもやりたくなって、道具を買ってしまいました。
コーヒーサーバー・ドリッパー・フィルターだけなら全部で3000円ちょいで揃うので、趣味としてはめちゃくちゃローコストな初期投資で触れられますね。
豆を選ぶ楽しみ
わからないなりに「これ良さそうだな」という豆を選んで、家で淹れてみるのがとても楽しいです。
最近は家の近所にあるコーヒー屋さんで豆を買っています。
また、豆を入れておくためのビンも良さげなのを選んでみたりと、コーヒー一つで色々な方面にこだわりができてしまい、毎日が楽しくなっています。
終わりに
373 Advent Calendar 2017、4日目はid:r4k9が担当です。よろしくお願いします。
Day2: PSO2
この記事は373 Advent Calendar 2017の2日目の記事です。
今日は、結構長く遊んできたゲームの一つ、PSO2について書こうと思っていました。
思っていました
そしたら初めての☆14武器が出て、興奮でそれどころではなくなってしまいました。
1時間近く経った今、ようやく落ち着いてきたので、ブログを書いています。
ただ、書こうと思っていた内容が完全に吹き飛んだので、☆14が出たぜ!とSSを一枚貼って終わるという内容で今日は終わりにします。
終わりに
373 Advent Calendar 2017、3日目はid:r4k9が担当です。よろしくお願いします。
Day1: 導入
この記事は373 Advent Calendar 2017の1日目の記事です。
一人相撲です。よろしくお願いします。
何するの
一日一記事書きます。お題は特に決めてないのですが、基本的にポジティブな内容のものを書く予定です。
本当は今日までに色々とネタをストックしておく予定だったんですが、全くストックがないので勢いでいきます。
なぜやるの
「ブログ書きてぇな~」と思ったからです。基本的にきっかけがないと動けないタイプなので、きっかけをどうにか見出しました。
今日はなんなの
上でも書いたようにネタがないので、導入をネタにしました。
これからゆるーく書いていくので、よろしくお願いします。
終わりに
373 Advent Calendar 2017、2日目はid:r4k9が担当です。よろしくお願いします。
RubyでFizzBuzz(15進数編)
15進数にして一桁目をみればええやん、という考え方。
modと似たような考え方だけど、こっちの方が気持ちよく書けるね。
(1..100).each do |n| case n.to_s(15)[-1] when "3","6","9","c"; puts "fizz" when "5","a"; puts "buzz" when "0"; puts "fizzbuzz" else; puts n end end
「ドットインストール Sass入門」をざっくり一周した
メモ。
学んだこと
1 Sassとはなにか?
CSSを効率的に書くための記法
2つの記法がある
今はscssの方が主流
2 はじめてのSass
// scssは子要素のスタイル指定を以下のように入れ子で書ける #main { width: 90%; p { // -> #main p font-size: 14px; } }
3 自動で変換させてみよう
# 変更があった場合、自動で変換を走らせる sass --watch (監視ディレクトリ):(変換先ディレクトリ)
4 入れ子構造を使ってみよう
// 疑似要素の書き方の例 // '&'は親要素を表すセレクタ a { &:hover { // -> a:hover font-weight: bold; } }
5 変数を使ってみよう
// '$'で変数宣言ができる('='ではなく、cssと同じように':'で宣言) $baseFontSize: 14px; p { font-size: $baseFontSize; // -> 14px .sub { // 計算も行える font-size: $baseFontSize - 2px; // -> 12px } }
6 文字列を扱ってみよう
// 文字列は""で囲う $imgDir: "../img/"; #main { // 文字列結合は'+'でできる background: url($imgDir + "bg.png"); // -> ../img/bg.png // 文字列内で変数展開する場合は'#{変数}'とする background: url("#{$imgDir}mg.png"); // -> ../img/bg.png p { // '{}'内は評価せよという意味合いなので、計算も行える font-size: #{12 + 12}px; // -> 14px } }
7 色を扱ってみよう
// CSSで解釈できる記法で色を指定できる $brandColor: red; p { // 指定した分明るくする color: lighten($brandColor, 30%) }
lighten()
などの、ビルトイン関数はModule: Sass::Script::Functionsで確認できる
8 @if文を使ってみよう
$debugMode: true; // scssでの条件分岐 #main { @if $debugMode { color: red; } @else { color: green; } }
9 @for,@while文を使ってみよう
// scssでのforループ @for $i from 10 through 14 { .fs#{$i} { font-size: #{$i}px; } } // scssでのwhileループ $i: 10; @while $ i <= 14 { .fs#{$i} { font-size: #{$i}px; } $i: $i + 1; }
10 リストを扱ってみよう
// リストはカンマ区切りで宣言 $animals: cat, dog, tiger; @each $animal in $animals { .#{$animal}-icon { background: url("#{$animal}.png"); } }
11 関数を使ってみよう(1)
12 関数を使ってみよう(2)
$totalWidth: 940px; $columnCount: 5; // scssでの関数作成の例 // 横幅とカラム数から、カラム1つ分の横幅を計算 @function getColumnWidth($width, $count) { $padding: 10px; $columnWidth: floor($width - ($padding * ($count - 1)) / $count); // 変換時にコンソールに値を出力する @debug $columnWidth; @return $columnWidth; } .grid { float: left; width: getColumnWidth($totalWidth, $columnCount); }
13 ファイルを分離させてみよう
分割したファイルは'_‘で始まるファイル名にする
// "_settings.scss"を読み込む @import "settings"; // "_functions.scss"を読み込む @import "functions";
14 @mixinを使ってみよう
@mixin
で定義したコード片が、@include
で挿入した箇所で展開される
// 引数や、デフォルト値をつけることもできる @mixin round($radius: 4px) { border-radius: $radius; // 引数がなかった場合、4px } .label { font-size: 12px; @include round(5px); // -> border-radius: 5px; }
15 @extendを使ってみよう
スタイルの継承
// 返還前のscssファイル .msg { font-size: 12px; font-weight: bold; padding: 2px 4px; background: red; color: white; } .errorMsg { @extend: msg; background: red; } .warningMsg { @extend: msg; background: orange; }
これがCSSになると以下のようになる
// 変換後のcssファイル .msg .errorMsg .warningMsg { font-size: 12px; font-weight: bold; padding: 2px 4px; background: red; color: white; } .errorMsg { background: red; } .warningMsg { background: orange; }
共通するプロパティは一つのルールセットに、差分だけが新たなルールセットに、と合理的なコードとして生成される。
感じたこと
「ドットインストール PHP入門」をざっくり一周した
メモ。
他言語と共通している、既に理解している部分は省略
学んだこと
1 PHPを使ってみよう
PHPとは、webアプリケーションを作るためのプログラミング言語
2 はじめてのPHPプログラム
PHPはHTMLに直接埋め込んで書くことができる
<?php ?>
と書くと、phpを埋め込める
文字列出力はecho "hoge"
文の区切りはセミコロン
3 ビルトインWebサーバーを使ってみよう
php -S IPアドレス ポート番号 でビルトインwebサーバーが立ち上がる
エラーが発生した場合、コンソールがエラーを吐いているので確認(ビルトインwebサーバーの場合)
4 変数とデータ型について理解しよう
変数定義 $hoge = "hoge"
使うときもそのままecho $hoge
var_dump()
で型と値を確認できる
5 定数を使ってみよう
定数定義 define(HOGE_FUGA, "abc")
定数名は大文字スネークケースで
変数と違って$をつけない
自動的に定義される定数
__LINE__ // 行数 __FILE__ // ファイル名 __DIR__ // ディレクトリ
6 数値の演算をしてみよう
PHP5.6以降は**
演算子でべき乗
7 文字列を扱ってみよう
""
(ダブルクォート) : 特殊文字(\n, \t) 変数が展開される
''
(シングルクォート): 展開されない
変数展開の際は、{$name}
や${name}
という形で変数であることを明示できる
文字列連結の基本はドット"hello" . "world"
8 if文で条件分岐をしてみよう
- elseifはスペースなし(else ifではない)
===
で型も含めた比較
9 真偽値について理解しよう
falseになる場合
- 文字列: 空、"0"
- 数値: 0, 0.0
- 配列: 要素の数が0
- null
10 switch文で条件分岐をしてみよう
11 while文でループ処理をしてみよう
12 for文でループ処理をしてみよう
13 配列を使ってみよう
# 連想配列 $sales = array( "taguchi" => 200, "fkoji" => 800, "dotinstall" => 600, ) // PHP5.4 $sales = [ "taguchi" => 200, "fkoji" => 800, "dotinstall" => 600, ]; # 配列 $colors = ["red", "yellow", "green"] var_dump($colors[1]); // -> red
14 foreachを使ってみよう
# keyとvalueを取り出す
foreach ($sales as $key => $value) {
echo "($key) $value";
}
# valueだけ
foreach ($colos as $value) {
echo "$value";
}
# endforeachを使う
foreach ($colors as $value) :
echo "$value";
endforeach; //HTMLに埋め込むときにスッキリする書き方
15 関数を使ってみよう
返り値と引数に型宣言が必要ない
16 ローカル変数を理解しよう
17 便利な組み込み関数を使ってみよう
strlen(); // 文字数 mb_strlen(); // マルチバイト文字数 printf() // 指定したフォーマットで表示 count() // 配列の要素の数 implode() // 指定した文字で配列を結合して表示
18 クラスとインスタンスを理解しよう
フィールドへのアクセス
$hoge->name
(変数)、$hoge->fuga()
(メソッド)
19 クラスを作ってみよう
コンストラクタ
__construct()
というメソッドで定義
20 クラスを継承してみよう
21 アクセス権について理解しよう
22 staticキーワードを使ってみよう
staticな変数・メソッドへのアクセス
クラス名::変数・メソッド名
23 抽象クラスを使ってみよう
24 インターフェースを使ってみよう
25 外部ファイルを読み込んでみよう
読み込みの方法
# require → 読み込みに失敗したらエラー require # include → 読み込みに失敗しても処理続行 include # ~_once → そのファイルが読み込まれているかをチェックして、読み込まれていた場合スキップ require_once include_once # autoload → クラスが未定義だった場合に、自動的に読み込む autoload
26 名前空間を使ってみよう
名前空間の接続はバックスラッシュで行う
名前空間に別名をつけることができる
27 例外処理をしてみよう
28 フォームからのデータを処理しよう
# 定義済みの変数 $_SERVER['REQUEST_METHOD'] // リクエストメソッドが何か $_POST['(フォームの属性)'] // フォームからpostされてきた内容が入っている
29 Cookieを使ってみよう
# 定義済みの変数 $_COOKIE['(key)'] // setcookieで設定したvalueを引っ張ってくる
30 セッションを使ってみよう
$_SESSION['(key)'] // sessionに設定したvalueを引っ張ってくる
感じたこと
- 文字列連結がドットなせいで、フィールドへのアクセスが面倒だなと感じた
- 変数にいちいち$をつけるのも若干面倒だなと感じてしまった
- HTMLとの組み合わせで、見た目上スッキリとforeachなどが表現できるのは良い
- 型推論なのはいいけど、関数の返り値と引数に型宣言がないのは少し不安
- 想像していたよりは、自分が身に付けた他言語の知識が使い回せて、そこは安心した