はてなキーワード: ngワードとは
同じ業界にいて自分もNGワードをメンテナンスする作業をしたことあるけど、こういうトラブルがあるので新しい人には極力割り当てないタスクにしておいた。
リストにはエロの他に差別用語もたんまり入ってて、それはそれで別種のリスクがあった。
けれども放送禁止用語みたいな別業界が作った自主規制をどこまで適用するか、結構悩みながらメンテナンスした覚えがある。
ちょっと別の話だけど、検閲を委託する会社とのMTGで先方の女性がそういう説明をしている場面に出くわしたことが複数回ある。
「ち〇こはNG、ぱち〇こはOKというパターンもあってなかなか難しいんです」
「みみず千匹みたいなマニアックなキーワードを防ぐことのメリットも悩ましいところです」
(投稿画像のNGサンプルを掲示して)「このようにモロなやつはハナからNGなのですが、こちらのようにとてもきわどい水着などは都度判断をお願いすることになります」
(ここに自分の会社での立ち位置が書かれているとより分かりやすい)
ゲームにはNGワードってやつがある。ゲームのプレイヤーが名前や自己紹介文などに卑猥な言葉や差別的な用語を使用することができなくするようにするためのものだ。
そのNGワードのリストに運営チームから編集リクエストが来てて、見てみると下ネタ系の単語が全てNGワードリストから削除されていた。削除理由には「運営判断」とある。
削除対象となっていたNGワードには「まんこ」みたいな直截的な言葉から差別的ニュアンスのある用語まで含まれていたので、これは流石に少しおかしいと思って運営チームの方に確認の連絡を取った。ところが運営チーム側ではそういう依頼は出した認識はないとのことだった。
そこでリクエストを出した本人に直接確認してみると、「卑猥な単語なので削除しました」と回答された。
その卑猥な単語をゲーム内に出さないためのリストなんだよって話しをしたんだけど、彼/彼女にはどうにも理解してもらえない。彼/彼女が主張するには「頭では理解出来ているけど自分の作っているゲーム(のコード?リソース?)の中に卑猥な単語が含まれているのが許せない」とのことで、うまく話が噛み合わないのだ。
とりあえずこの事(独断に拠るNGワード削除の件?)について上の人にインシデントを報告しないといけないので、彼/彼女に報告書を書いてもらうことにした。「NGワードを削除しました」だけだと上の人に詳細が伝わらないので、「実際に削除した単語一覧とその理由も追加しておいてね」と提出された報告書の添削をして彼/彼女に修正をお願いしていたのだけど、その数日後に人事から呼び出しを食らった。
卑猥な単語を無理やり書かせるセクハラを受けていると彼/彼女から相談が来ているらしい。
なんだそりゃーと思いつつ、後日運営チーム(の担当者?上長?)と人事の人と自分と彼/彼女の4人(?)で話し合いの場が設けられる事になった。
その話し合いの中で人事から「有給も余ってるし明日は休んだらどうですか?」って言われたので、今日は休んでる。
んだけど、やっぱモヤモヤするんだよなぁ。
増田に書いても「お前が悪い!」で終わりそうな話しではあるんだけどw
ゲームにはNGワードってやつがあって、それが入力できないようにされてる。
そのNGワード集に編集リクエストみたいなのが来てて、見てみると運営判断って名目で下ネタ系の単語が全てNGリストから削除されていた。
「まんこ」とか下手すると差別用語的なニュアンスで使われる単語も削除されていたので、運営の方に確認の連絡をするもそういう依頼は出してないとのことだった。
なのでリクエストを出した本人に聞くと、「卑猥な単語なので削除しました」との回答だった。
その卑猥な単語をゲーム内に出さないためのリストなんだよって話しをしたんだけど、頭では理解出来ているけど自分の作っているゲームの中に卑猥な単語が含まれているのが許せないとかで話がうまく噛み合わない。
とりあえず上にインシデントを報告するために報告書を書いてもらったんだけど、「NGワードを削除しました」だけだと上の人に詳細に伝わらないので削除した単語一覧と削除した理由も追加しておいてねって報告書の添削をしたら数日後に人事から呼び出しを食らった。
卑猥な単語を無理やり書かせるセクハラを受けていると相談が来ている、らしい。
なんだそりゃーと思いつつ、後日運営と人事と自分とNGリストを削除した子で話し合いが行われることになった。
んで、有給も余ってるし明日は休んだらどうですか?ってことで今日は休んでる。
んだけど、やっぱモヤモヤするんだよなぁ。
200回ほど出力させてみたが、暴力的、性的、差別的、政治的、その他公序良俗に反する言葉がプロンプト(説明文)に含まれているとポリシー違反でブロックされる。
NGワードが含まれていなくても、出力された画像をAIがダメだと判断した場合もブロックされる。また、AIがNGだと学習したであろう一部の言葉やスラングもブロックされるようだ。
不便なのが画像の構図を指定する際によく使われるバストショットやヘッドショットという言葉はshot(発砲)が含まれているのでブロックされる。つまりAIのご機嫌を伺いながら代替になるプロンプトを書くことになる。
一部ブロックされない方法として、AIがNGワードと判断していないけれど良くないとされる言葉、代替になる言葉に置き換えることでNGワードを迂回することもできるようだ。(world war 2 →WWII Underwear → bikini)
ブロックされすぎるとサービスからBANされて利用できなくなることもあるようだ。
twitterで見たのはエロ絵描きの人が、Dalle2のアップロードした画像を編集する機能を利用して、ミロのヴィーナスのコラージュを作ってエロ画像を作ろうとしただとか、水着画像を出力しまくったとからしい。
というわけで自分が試したワードとredditのフォーラムで挙げられていたワードをまとめてみた。
もちろん下記以外の直接的な言葉も当然ブロックされるので注意。
───Sexy Porn Hot Bukkake Succubus Penis Gay Butthole Piss Fetish Lingerie Hentai Uterus Ovaries Shirtless Underwear Naked
───War Headshot Dead Weapon Gun Rifle Revolver Knife Blood Bandit Gang Corpse Skull Hell Kidnap Seppuku Lynch Murder Slaughter Shoot Fear Attack Beating "Clockwork Orange"のような暴力的な描写がある映画名
───Soviet Dictator Pakistani "Ukrainian Flag" "Donald Trump" ほか政治家名
その他
───"Emma Watson" Unicycle Fart Shit
自動で安価をつけて返信するプログラムでもこんなに長く複雑になる(一部抜粋)
/**************************************
以下のCSV_DIR, FILE_PATHS, SETTINGSを書き換えてね。 <h3>o- *************************************/</h3>
//CSVファイルが置かれてるディレクトリのパス。投稿前にエラー出たら大体ここの設定ミス。 例:"C:\\Users\\sakuraimasahiro\\Documents\\iMacros\\Macros\\rentou\\";
'C:\\Users\\USER\\Desktop\\iMacros\\Macros\\rentou\\';
//ファイルのパス。CSVは絶対パスで、拡張子も必要。iimは相対パスでよく、拡張子不要。
const FILE_PATHS = {
textCsv: CSV_DIR + 'textNoAnker.csv',
//レス用投稿文が書かれたCSV。通常とレス用で分けないなら同じファイルを使えばいい。
replyTextCsv: CSV_DIR + 'textReply.csv',
};
baseWaitTime: 5,
//baseWaitTime+0~waitTimeRange(ランダム)だけ待つ
waitTimeRange: 5,
//連投しすぎだと忠告された場合に処理を一時停止させる時間(秒)
waitTimeForAvoidingPunishment: 60 * 30,
//メール
mail: 'sage',
//名前設定
name: '',
//以下、偽装ワッチョイ設定。浪人でワッチョイを非表示にしてるときだけtrueにしてね。
//妙なニックネーム(ワッチョイ、アウアウウーなど)をランダムで決めて付加するかどうか。true=付加する。false=付加しない。
//妙なニックネームの後に付く8桁の文字列をランダムで決めて付加するかどうか。
},
//アンカー無し投稿をするならtrue。しないならfalse。noAnkerPostかreplyPostのどちらかはtrueにすること(両方trueでもOK)。
//アンカー付き投稿(返信)をするならtrue。しないならfalse。もしnoAnkerPostとreplyPostの両方がtrueの場合、投稿は返信が優先され、返信対象が見つからなくなったらアンカー無し投稿をする。
//最初に取得するアンカー無し投稿文CSVファイルの行番号。もし返信用と同じCSVファイルを使うなら-1と入力。
noAnkerPostTextCsvStartRow: 1,
//最初に取得する返信用投稿文CSVファイルの行番号。もしアンカー無しと同じCSVファイルを使うなら-1と入力。
//テキストCSV/返信用テキストCSVの取得行が最終行に達したら最初の行まで戻るかどうか。true=戻る。false=マクロ終了。
//返信する場合、これより小さなレス番には返信しない。返信を投稿すると、この数値は前回の返信先のレス番に更新される。
minAnker: 895,
//返信する場合、名前に以下の文字列を含む投稿にアンカーをつけて返信する(ワッチョイやIPなど名前フィールドにあるものならなんでも可)。配列で複数指定可能。指定無しなら空配列([])。filterNamesとfilterNamesNotIncluded共に無指定ならレス番1から順に返信していく(minAnkerが設定されてればそこから順に)。以下のfilter系は全て併用可能。
//↑とは逆に、名前に以下の文字列を含まない投稿にアンカーをつけて返信する。↑と併用も可能。
//返信する場合、本文に以下の文字列を含む投稿にアンカーをつけて返信する。
filterText: ['自演かな', '自演わらわら', 'スクリプト使うの', '安価ガバ', '>>660', '自演で擁護', '最後' ,'あいうえお', 'かきくけこ', 'さしすせそ', 'なにぬねの', 'はひふへほ', 'まみむめも', 'やいゆえよ', 'やゆよ', 'らりるれろ', 'わいうえを', 'わをん', 'わいうえをん'],
},
//自分のIPアドレスの確認。VPNとかでIPを変更してマクロを動かしてるとき、突然VPNが作動しなくなってIPが元に戻ったときにマクロを止めるためのもの。
//以下の文字列が自分の現在のIPアドレスに含まれている場合、マクロを一時停止する。基本的に自分の本当のIPアドレスを入力。
},
//浪人設定。最後に動作を確認したのは5年くらい前で、今も同じように動作するかは、浪人を持ってないから確認できずわからない。
//浪人にログインしてるかどうかをチェックするかどうか。trueならする。falseならしない。trueにしていてもし浪人にログインしていないことを確認したらログインしにいく。
password: '1234',
},
};
/**************************************
設定箇所終わり。
https://info.5ch.net/index.php/%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%81%E3%81%AA%E3%81%84%E6%99%82%E3%81%AE%E6%97%A9%E8%A6%8B%E8%A1%A8 <h3>o- *************************************/</h3>
/**************************************
・NULL演算子(??)は使えない。論理積(&&)は使える。
・オブジェクトの分割代入はできない。
・importはできない。 <h3>o- *************************************/</h3>
/**************************************
関数 <h3>o- *************************************/</h3>
/**
* ここから始まる。
*/
checkSettings();
var _TextCsvCursors = new TextCsvCursors(
SETTINGS.postSettings.noAnkerPostTextCsvStartRow > 0
? SETTINGS.postSettings.noAnkerPostTextCsvStartRow - 1
: SETTINGS.postSettings.noAnkerPostTextCsvStartRow,
SETTINGS.postSettings.textCsvLoop,
),
SETTINGS.postSettings.replyPostTextCsvStartRow > 0
? SETTINGS.postSettings.replyPostTextCsvStartRow - 1
: SETTINGS.postSettings.replyPostTextCsvStartRow,
SETTINGS.postSettings.textCsvLoop,
),
);
var _LoopStatuses = new LoopStatuses(0, SETTINGS.postSettings.minAnker);
const _MyPosterName = new MyPosterName({
name: SETTINGS.nameSettings.name,
});
const _ThreadUrl = openPromptThreadUrl();
//ループ
while (true) {
SETTINGS.ipSettings.checkIp && checkCurrentIpNotTheIp();
//スレを開く
openUrl(_ThreadUrl.fullUrlHttps());
//浪人にログインする設定なら、浪人にログインしているかどうかを確認し、していなければログインしにいく。
if (SETTINGS.roninSettings.checkLogin) {
}
}
if (SETTINGS.postSettings.replyPost) {
const targetAnkerNumber = createPostDOMList()
.filterPostnumberHigher(_LoopStatuses.currentMinAnker())
.filterByPostername(SETTINGS.postSettings.filterNames)
.filterByPosternameNotIncluded(
SETTINGS.postSettings.filterNamesNotIncluded,
)
.filterByText(SETTINGS.postSettings.filterText)
if (targetAnkerNumber !== null) {
const r = _TextCsvCursors.takeNextRowTextAsReply(targetAnkerNumber);
messageDisplay(`返信対象有り。アンカー先: ${targetAnkerNumber}`);
return {
...r,
updatedLoopStatuses:
_LoopStatuses.updateMinAnker(targetAnkerNumber),
};
}
}
if (SETTINGS.postSettings.noAnkerPost) {
//返信対象無し、或いは返信しない設定の場合。アンカー無し投稿文を作る。
const r = _TextCsvCursors.takeNextRowTextAsNoAnker();
messageDisplay('返信対象無し。アンカー無し投稿。');
return {
...r,
updatedLoopStatuses: _LoopStatuses,
};
}
return null;
})();
if (p) {
//投稿。
nickname: SETTINGS.nameSettings.nickname,
korokoro: SETTINGS.nameSettings.korokoro,
area: SETTINGS.nameSettings.area,
}),
SETTINGS.mail,
p.text,
);
//_TextCsvCursorsと_LoopStatusesを更新。
_TextCsvCursors = p.updatedTextCsvCursors;
_LoopStatuses = p.updatedLoopStatuses.incrementPostCount();
`投稿回数: ${_LoopStatuses.currentPostCount()}`,
`minAnker: ${_LoopStatuses.currentMinAnker()}`,
`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,
`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,
]);
} else {
`返信対象が現われるのを待機中...。`,
`投稿回数: ${_LoopStatuses.currentPostCount()}`,
`minAnker: ${_LoopStatuses.currentMinAnker()}`,
`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,
`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,
]);
}
wait(SETTINGS.baseWaitTime + randomRange(0, SETTINGS.waitTimeRange));
}
}
/**
* 投稿処理と投稿結果を見てリトライしたりマクロ終了したり。
* @param {string} serverName サーバー名
* @param {MyPosterName} _MyPosterName
* @param {string} postMail メール
*/
serverName,
postMail,
_MyText,
retryTimes = 0,
) {
const r =
retryTimes === 0
? new ValuesOfPost(serverName, _MyPosterName, postMail, _MyText).post(
postTo5chTread,
)
serverName,
postMail,
_MyText,
).postSubstring(retryTimes, postTo5chTread, postConfirm);
if (r) {
back();
return;
}
wait(7);
const error = createPostErrorMessage().analyze();
messageDisplay(error.message);
if (error.order === 'KILL') {
kill();
} else if (error.order === 'SKIP') {
return;
} else if (error.order === 'TRUNCATE') {
back();
serverName,
postMail,
_MyText,
retryTimes + 1,
);
} else if (error.order === 'WAIT') {
wait(SETTINGS.waitTimeForAvoidingPunishment);
serverName,
postMail,
_MyText,
retryTimes,
);
} else if (error.order === 'LOGIN') {
serverName,
postMail,
_MyText,
retryTimes,
);
}
return;
}
/**
* 現在のIPアドレスに、SETTINGS.ipSettings.avoidTheIpの値が含まれていないことを確認する。含まれていたらマクロを一時停止。
* @returns
*/
function checkCurrentIpNotTheIp() {
openUrl('https://www.cman.jp/network/support/go_access.cgi');
const _IpAdress = createIpAdressFromCMan();
if (_IpAdress.includes(SETTINGS.ipSettings.avoidTheIp)) {
pause('現在のIPに指定した値が含まれていることを確認。');
}
return;
}
/**
* @returns
*/
if (
SETTINGS.postSettings.noAnkerPost === false &&
SETTINGS.postSettings.replyPost === false
) {
return kill('設定エラー。noAnkerPostとreplyPost両方ともfalseになってる。');
}
if (
SETTINGS.postSettings.noAnkerPostTextCsvStartRow < 0 &&
SETTINGS.postSettings.replyPostTextCsvStartRow < 0
) {
return kill(
'設定エラー。noAnkerPostTextCsvStartRowとreplyPostTextCsvStartRow両方とも-1になってる。',
);
}
if (
SETTINGS.postSettings.noAnkerPostTextCsvStartRow === 0 ||
SETTINGS.postSettings.replyPostTextCsvStartRow === 0
) {
return kill(
'設定エラー。noAnkerPostTextCsvStartRow/replyPostTextCsvStartRowの初期値は-1或いは1以上で。',
);
}
}
/**
* 入力フォームを表示して入力されたスレのURLを受け取る。
*/
function openPromptThreadUrl() {
const url = prompt('スレURLを入力');
}
/**
* 開いてるスレのレス全て読み取ってPostListインスタンスを作って返す。
* 重すぎるので使うのやめ。どうやらインスタンスの大量生成が原因な模様。
*/
const posts = window.document.getElementsByClassName('post');
return new PostList(Array.from(posts).map((e) => new Post(e)));
}
/**
* 開いてるスレのレス全て取得してPostDOMListに格納して返す。
* @returns
*/
function createPostDOMList() {
const posts = window.document.getElementsByClassName('post');
for (let index = 0; index < posts.length; index++) {
//HTMLCollectionからElementを1つずつ抽出して配列に。
arrPostDOMList.push(posts.item(index));
}
return new PostDOMList(arrPostDOMList);
}
/**
* 開いてる投稿結果画面に表示されてるエラーを読み取ってPostErrorMessageインスタンスを作って返す。
*/
function createPostErrorMessage() {
window.document
私はtwitter上でよくオタクのおじさんの呟きを眺めている。
オタクおじさんを眺めててイイと思うところは、おじさんたちが四六時中2次元のことしかしゃべらないことだ。
おじさんたちは常にエッチなイラスト、男くさいゲーム、突発的なネットミームなどの話をしている。
私が気が落ちようと社会が荒れようと、年単位で変わらず2次元の話をしてくれたのだ。
そしてその内容もマニアックで、私の身の回りで話題に上がらないようなものも多い。
例えば女児アニメや負無オトナ氏の替え歌動画が象徴的なメスガキ文化、10年以上前のネット文化など。
常に頭が2次元なおじさんを眺めることは私にとって、そこでしか楽しめない要素がある息抜きなのだ。
そんな眺め方を続けること、もうかれこれ5,6年になる。
ここまでくるとおじさん達のパーソナルな部分もよく分かってくる。
何きっかけでネットに来たのか、どのおじさん同士の関わりが深いのか
地元はどこなのか、業種は何か、HNの由来、アイコン遍歴 など…。
そしておじさんが大病を患えば心配になるし、おじさん同士で不和が発生するとドギマギする。
オフで楽しく遊んでいる様子が伺えればなんだか楽しくなる。
だから私はオタクおじさんを簡単にブロックしたくないし、おじさんにはずっと変わらずにいてほしい、そんな思いがある。
しかしながら今年に入って、一部のオタクおじさんの雰囲気が変わってきた。
具体的には毎月チャンピンズミーティングがあるたびに愚痴が吐かれる。
しかしおじさんはチャンミ及び新育成シナリオへの似たような愚痴を毎月吐くのだ。
もう分かったよ、キャラ格差脚質格差ひどくて、新シナリオの1周に要する時間長くて目覚まし消費多くて距離Sもつきにくくて、そのくせ大逃げとか温泉見れなくて、マスクデータしっかり見ないと戦いの土俵立てなくて、チャンミの決勝は一発勝負で運要素でかくてクソなのは。
この3か月半で何回同じ話する???
なまじ遊んでいるゲームの内容なのでNGワードでも対応しにくい。
大して変わらないネガティブな意見を見続けるのは心に来てしまう。
せめてこの記事のようにブログに一度まとめて終わりにしてくれないだろうか。
「最近はSNSの反応も運営は見てる!」という名のもとに声を上げ続けている側面もあるようだが、つぶやき見る側は辛いんだわ。
一方でおじさんが持ち上げることが多いゲームというのも同時期に出てきた。
おじさん好みのエッチな女が多数いるほか、最近実装されるシナリオが軒並み好評なのが強い。
これらに対しておじさんは、愚痴と褒めの割合がウマ9:1、ブルアカ1:9ぐらいの勢いでつぶやくのだ。もちろん私の色眼鏡はかかってる。
私もブルアカはおじさんに触発されプレイしたが、中々続かず辞めてしまった。
一方ウマ娘は、最近は配布SSRある時だけ周回して、良いのができたらチャンミを楽しむぐらいのペースで緩く今まで続けている。
つまり最近のおじさんの呟きは私にとって、緩く遊んでいるゲームに関しては愚痴が多く、続かず辞めてしまったゲームに関しては持ち上げが多いというひどく苦しいものなのだ。
そしてこの傾向にあるおじさんが複数いるというのが私の頭を抱えさせる。
ずっとROM勢な私はこの不満をおじさんにぶつけられるわけもなく、一人抱えることになる。
そしてそんなモヤモヤを抱え続けたある日、私はある考えに至った。
ウマを散々sageといてブルアカをage続ける論理はおかしいと自分の中で結論付けたくなったのだ。
こうして私は故郷の村を燃やされた勢いでブルアカと向き合うことになった。
どんなに任務を進めるのが面倒でも義務的にやるし、前回自然消滅したときの反省を生かして攻略系Youtuberや有志のwikiも漁るようにした。
その結果、現在先生レベル58、任務はステージ14、シナリオはエデン条約3章読み切るところまで進めた。
以下ではこのプレイを通して感じたブルアカの良い点・悪い点を挙げて結局ブルアカへの考え方がどうなったかを書きたい。
まずは悪い点から
ブルアカはシナリオ解放のためにたくさんの戦闘を行わなければならない。
しかし今作はソシャゲで重要になるオート戦闘がかなりポンコツなのだ。
キャラが動く範囲が2次元でただでさえスキル発動先が広いのに、奥義的なスキルは全キャラで共通のゲージを使うため発動の順番待ち状態になっているのだ。
戦闘は何回かやっているとスキルを効率よく打つよう工夫するから楽しくなってくる。
上で私はステージ14まで進めたと書いた。
この1ステージを終えるのに1時間ほどかかる。しかもオート無しでだ。
もちろん今後の育成のため最高評価を狙う際、最後のボスで評価を落としてしまったらやり直しとなる。
序盤のステージは同じパーティをずっと使い続けるため特に退屈感が強い。
シナリオを目的にプレイしているのに似た戦闘を繰り返されるのは面白くない。
ウマも時間がかかるのは問題だが、まだ自分は育成の上振れに若干味を感じることと、ウマならアニメを垂れ流して見れるくらいの感覚になっているからマシに感じる部分がある。
上で書いた任務はノーマル任務のことで、プリコネよろしくキャラの星上げに必要な石が掘れるハードクエストがブルアカにはある。
これの基本構造はノーマルと同じだが、こちらは視界が制限されている。
最高評価を目指すにはクリアターン数が一定以下でなければならない。
しかしボスの位置はどこだろう?ボスに行くまでに踏む必要のあるスイッチはどこだろう?このステージは敵の属性が複数あるがどっちに進むとどっちの属性に会うのだろう?
……不親切が過ぎる。一部のおじさんはノーマルのミニマップを知育パズル的でつまらないと言うが、あちらはマップを一目見たら概要が分かるからまだマシだ。
ブルアカは属性の他に地形適正というのもあり、クエストごとに適したパーティはコロコロ変わる。
しかし保存部隊数は地形と属性の組み合わせに比べ少ない。プリセットもない。
またキャラの重複も許されない。(ミニマップで複数部隊出るため)
そして編成途中で育成画面に飛ぶとそれまでの変更が反映されない。
あとクエストの地形情報がアイコンだけなのにソートは文字情報だけで選ぶのはかみ合ってない。
アイコンは色も似通ってて覚える気になれない。
その他ログインボーナスの受け取り場所はこれまでやってきたソシャゲで一番主張が弱い。
そしてシナリオ画面もひどい。今読んだものから2話先までしか確認できず、“すでに満たした解放条件は記述されない”。
これのせいでブルアカプレーヤーのほとんどは各シナリオを読み切れるのが任務をどこまで進めたタイミングなのか把握していない。
シナリオが売りのゲームなのに環境の整備が整っていないと感じる。
一応補足しておくとVol.1の1章全開放が7-4あたり、Vol.2の1章が8-3あたり。これ以降の条件は自分も見逃した。
この構成もよく分からない。例えばシナリオVol.1の途中でVol.2が解放される。
Vol.1の1章と2章の間にVol.2の出来事が起こったとは到底読み取れない。
この作りもシナリオの没入感を削いでいる。
この中に低レアでお世話になりがちなキャラがいる百鬼夜行が入っていないのだ。
私の戦闘を古くから支えてくれたツバキというおっぱいも盾もデカい女がいる。
彼女のいる学園がどういう立ち位置で、所属する部が学園内でどういう立ち位置なのかを私は知らないのだ。
プレイヤーLv上げるための経験値は消費スタミナと1:1のレートで得られる。
だからどんなにゲームがうまい人でも得られる経験値はスタミナ全消費する他の人と変わらない。
これが理由でブルアカでは石を割ってスタミナにすることが推奨されている。
キャラのレベルは重要で、クエストの推奨レベルから1低い毎に与ダメージが2%減衰する。被ダメも増える。
「装備」で強化できる側面もあるが、それでも自分は詰まった。
詰まってしまうと、プレイヤーレベルが上がるまで適当に毎日スタミナ全消費するゲームになってしまって厳しい。
大体悪い点はこのくらい。
総じて「シナリオだけ読めればいいや…」という人への壁になる要素が多い。
次は良い点
前評判通りメインシナリオはどれも面白い。というか世界観がやや奇妙なのでその謎をひっぱってもらうだけで続きが気になる。
ブルアカは学園に属す少女らの物語だが、その学園の規模は国家に近いものとなっている。だから内部抗争も起きるし政治的対立、侵略も起きる。
好評なエデン条約編もそこらへんを軸としていると思う。各々の理念とか策略とかが交差して、各々が大切なものを守るために戦う。
その一方で本来の学園的機能もある。委員会や部活動があり、同一学園内ではそれらの距離が近い。だから本来の国家間の争いの話より濃い密度で各組織が絡み合う。
そして学生の能力も本来のそれとは大きく異なる。全員銃の扱いには長けているし、よく分からんレアスキルを持つ者もいる。そして何より3年生が強すぎる。1,2年生との差は数年分の差ではない。BLEACHで言えば班目一角と隊長クラスくらい違う。十分強そうな1,2年生の後ろに控えてる部長、委員長、団長の存在が仄めかされるだけでワクワクするし、実際出てきて話が動き出すところもいい。
またキャラクターの日常とシリアスのギャップもいい味出している。
よくある緩い美少女学園モノという見た目と重めのシナリオがいい感じに作用していると思う。
ただ全てが面白いかと言われると一応そうでもない。Vol.3の1章序盤における毒にも薬にもならない美少女日常話は後半への布石とはいえ退屈だった。
それと伝統の「話の途中だがワイバーンの群れだ!」論法で戦闘挟むのも辞めてほしい。一部はちゃんとシナリオ的に重要な戦闘だけど。
②羽振りがいい
石や素材を配るペースはかなり良心的だと思う。悪い点で書いた通り石を割る前提のゲームなのでそこを補っている節はあるかもしれない。
また恒常ガチャ星3キャラのイベント入手のハードルもかなり低い。
また期間限定ミッションの報酬も、一部は初心者がクリアできる内容ながら報酬が高レベルプレイヤー基準で設定されているので大分おいしい。
まだイベントは少数しか経験してないが、どれもノルマラインが緩い。もうゼニーとかカス素材しかもらえなくなる段階に入るまでが凄い早い。
おそらくイベント期間の半分も待たずに終わる。この軽さは類を見ない。
結論としてはやはりブルアカは面白い部分はあるが完全無欠なゲームではなかった。
シナリオはやはり面白いし、今は1.5周年で羽振りも一段といいので興味持った方は触ってみてもいいかもしれない。
ただトゲはあるので気を付けてほしい。
ともかく私は当初の狙い通り、オタクおじさんの論調を自分の中で否定できたのだ。
「やった!!!おじさんが褒め続けるのは偏向報道だったのだ!!!」
「俺の勝ちだ!!!」
Foo~~↑↑↑
…と思ってから我に返る。
…実に空虚じゃありゃせんか?
残されたのはわずかに持続する満足感と、手放しでブルアカを勧める言説への嫌悪感。
「もっと謙虚に勧めろ!『ちょっと遊びづらい部分も多いし序盤は特に厳しいんですけど美少女祭りだしシナリオも面白いのでどうですか…?』くらいのテンションにしろ!!!」
と心が曇ってやまない。
そんな歪んだ私の心に先日追い打ちが来た。
1.5周年記念にミニマップのボス以外の戦闘をスキップできるようになったのだ。
これを聞いたとき非常に動揺した。
これが有用なら、上で挙げたブルアカ悪いところの重要な柱「シナリオ解放のための任務が辛い」が崩れてしまうのだ。
本当は自分がやっているゲームの面倒な部分が改善されて喜ぶところを、私の脳は「それはあってはならない」と拒否し始めたのだ。
私は公式の仕様改善にアンビバレントな感情を持つ歪んだ存在へとなり果ててしまった。
熱心なアンチみたいな取り組みをした結果得たのは、歪んだ頭だったのだ。
ちなみにこの戦闘スキップの戦闘評価はオート戦闘の結果に準拠する。
だからレベル差が厳しく手動でないと最高評価を取れないor勝てない場合は使えない。
よって今回の場合はぎりぎり耐えた。耐えたってなんだ?
以上がここ1,2か月の私の戦いの結果となる。
ブルアカは良い点もあれば悪い点もある。
あるゲームについてずっとネガティブな愚痴をこぼす一方で、このブルアカを是非是非!!という論調で進めるのは歪んでいる。
※一応おじさんを擁護することはできる。というのもウマとブルアカは苦しいポイントの性質が正反対なのだ。
しかし煮詰まった後の運ゲーとの戦いはガチ勢ほど厳しい影響を受ける。「勝てて当然!」という思いで運負けするのが一番苦しいし、勝つためにやっちゃいけないことがウマ娘に求めた期待を踏みにじってくる。
一方のブルアカは、シナリオを十分開放するまでが苦しい。戦闘は似たようなことの繰り返しだし時間もかかる。オートも使いにくい。情熱があっても進行ペースは一定のまま。
しかし十分進めた後はほぼスキップしながら新規コンテンツに舌鼓打つだけ。イベントの負担も少ない。
まとめると、ウマは最初のうちは楽しいがガチ勢に厳しく、ブルアカは最初が苦しいが古参のガチ勢には優しいゲームなのだ。だからこそ今回みたいなことになる。
私のおじさんへの願いを書くとしたら、以下の通りになる。
できればネガティブな愚痴を一か所にまとめるとか、同じ愚痴は表にださないようにするとかしてほしい。これは傍観者の私以外におじさんの相互フォロワーの方々にとってもプラスだと思うから。
それができないならブルアカについても苦しいところを認知してつぶやいてほしい。えこひいきのような立ち回りは私のような異常者を生み出しかねないから。
あとは体に気を付けてずっと楽しそうに2次元の話しててもらえると助かります。
ここまで読んでくださったオタクおじさんでない方々も自分の発言の各ジャンルへのネガ・ポジの比率に気を付けていただければこれ幸い。
5chの連投スクリプトが送ってくるグロ画像は、まあグロい。グロくなかったらグロ画像じゃなくなるからだ。人間がバーンしたり、ズギャーンしたり、バコーンしたりしてる画像がたくさんある。体感ではボコッが一番多い。
少し前になんJだかなんGだかで以前猛威を振るっていたのが、エロ画像スレを建てると見せかけてグロ画像を貼るというスクリプトだ。まあ、エロ画像とグロ画像は一文字違いだから大して変わらないかもしれない。
基本的に「巨」と「乳」をNGワードに入れるか性欲を捨てるかすれば簡単に回避できる荒らしだから、この害悪度の道を歩んだID腹筋スレみたいなのはあまり相手にされなかった。しかし俺は相手にした。「乳」をNGワードに入れることも性欲を捨てることもできなかったからだ。開いた。グロ画像だった。閉じた。開いた。グロ画像だった。閉じた。開いた。ID腹筋スレだった。一周回って安心感みたいなものを覚えながら、冷たい床に両手をついた。そんな風にして、流れ的に俺はグロ画像を踏みまくった。そして、「>>1 グロ」というレスを残した。
しかし、最初の数回の時点で、俺はスクリプトの異変に気付いた。スレタイ時点ではいつもと変わらず、「【悲報】おっぱいかけ算九九 乳の段」みたいなザ・電子ゴミって感じの益体もない文字列だった。しかしザ・電子ゴミって感じの益体もない文字列をタップした俺の目に入ってきたものは、グロ画像でもID腹筋スレでも、エロ画像でもなかった。
マグロだった。
紅とは言えないが赤とはいえるくらいの、少し薄い色をしたマグロの寿司が、スーパーか何かのトレイに入って、グロ画像の代わりに俺を見ていた。
目を擦ったしリロードもしたが、マグロはマグロのまま、低めの解像度で俺のスマホのディスプレイを占有していた。俺は仕方なく「>>1 マグロ」とレスして、その場を去った。
そのあとも、マグロは定期的に現れた。
スクリプトが何かの間違いを犯した、としか考えられなかった。俺が落ち込んでいる時も舞い上がっている時も、マグロは等しくそこに現れて、めちゃくちゃ美味そうというほどでもないが普通に食べられそうな外見で、俺に何かの感情を抱かせようとしてくる。その感情が何か知りたくても、俺は知ることができなくて、そのまま次のグロ画像ないしID腹筋スレへと旅立つしかなかった。
いつしか、俺はマグロを求めるようになっていた。やったエロ画像だと考えながら、あるいはどうせグロ画像だと考えながら開いたスレの>>1に存在するマグロを見た時の、あのどうしようもない感情に名前を付けたかった。十連ガチャを引いているような感覚もあった。いつしか、俺にとって「マグロは当たり」という考えが刷り込まれるようになった。スレタイがエロ画像である以上、当たりはエロ画像ということになり、そうなると三段論法でマグロはエロ画像ということになる。マグロはエロ画像だった。
あれから数か月、俺の観測範囲内では、偽装エロ画像スレを見ることもなくなってしまった。今のスクリプトは夏目漱石か何かから生成した支離滅裂な文章を連投したり、マグロ抜きのもっと厳選したグロ画像を連投したり、そういうことをするのに留まってしまった。けれども俺が夢の中とか、街角とか、ふと目に入ったネット広告とかで、ふと赤々としたマグロを発見した時に、何度でも去来する感情だけは、決して途絶えることもなく、延々と人格の中で残響している。
ああ、マグロ。