カテゴリー: Final Fantasy XIV

Home / カテゴリー: Final Fantasy XIV

相変わらずにーむのしょをいじっています

2018-12-08 | Final Fantasy XIV, halipe.co | コメントはまだありません

WP5.0に上げたら編集画面がWordみたいになった。なんでこういう余計なことをするんだ。まあいい。
昨日今日あたりは、スマホでタグ付けらんなかったのを修理(というか回避というか)して、認証コケるやつの背景を調べて(まだ糸口つかめない)、あと運用周りの準備してた。
いままで500エラー出てもなんも気づかないとかだったので、とりあえず500とtracebackひっかけたらSlackに飛ぶようにして、少なくとも検知はできますよと。あと、ユーザ登録時に認証状態が半端になるようなところがあるので、そっちもイベントで引っ掛けて検知だけでもできるように。

仕事でやってるとテストだの運用だの監視だのってダルいんですけど、さすがに自分のサービスなんでモチベーションが違うよね。それでも昔ツール書いてたときって障害とかには無頓着だったんだけども。たぶんGCPとかにあらかたツール揃っていて、アクセス解析や障害検知のセットアップしなくて済んだのが大きい。
そう考えると昔の人は偉かったんだなあ。すっごい他人事なのは、当時はまるっぽ知らんぷりで人任せにしてたからです。

火曜はリセット日なので

2018-12-05 | Final Fantasy XIV, halipe.co | コメントはまだありません

なにかといそがしい。
明日から奥様がバイト行くっていうので、今日は夕ご飯のあとにレクリエーションをしました。いつも気の利いたこと思いつけないので、こういうのは我が家ではけっこう珍しい。

たまたまGoogleがクリスマスのアドベントカレンダー的にアレコレ詰め込んだサービスの塊を出していて、そんなかにScratch(教育用コンピュータ言語。ブロックつなげて動作を作る)をつかったパズルがあったので、一緒にやったりしてました。

奥様もかつては、あちこちのホームページを見てはScriptを目で追い読み込み手で試し、自作のCGIやらも含めていろいろやってたらしい。そのまま続いてたらそれなりに高給取りだったのにもったいない。
今じゃロジカルな部分など毛ほど見せない人ですけど、一緒にパズルを解くくらいは付き合ってくれるかなということで遊んでました。
上下左右に進むのとループのブロックだけのシンプルなパズルだったのだけれど、大変に楽しかったみたいで、よかった。

リセ日です。リセ日なのですが、明日以降は慣れない仕事でヨレヨレということを考えると、のんびり一緒にパズルで遊んでくれるのは今日くらいということでそんなんやってました。

ほんでそのあとFF14にログインし、地図のスクリーンショットを撮り、にーむのしょのイケてないスクリプトを修理し、アルファ編やらエキルレやらを積んできょうはおしまい。

今のとこ大して人も来ないしまるで使われてる気配のないしょぼいWebサービスですが、このまま更新続けていきます。この次に作るやつも粗々まとまっているので、そろそろ設計開始であります。

画像の変換が辛い

2018-11-29 | Final Fantasy XIV, halipe.co, Python | コメントはまだありません

ニームの書(https://halipe.co/

まだ全然データ足りないんだけど、色んな人にボコボコにしてもらうほうがモチベーション保てると思って見切り発車しちゃった。地図足りてないんで日々追加してます。

SS撮る(1600ピクセル四方くらい)→Firewirksでつなげてトリミング→色調補正バッチに食わせて出力→サーバに転送

なんてダルいんだ。色調補正バッチがうまいこと稼働してるので、地図張り合わせるのがすごくダルいくらいで済んでる、それはいいんだ。
今日の問題は色調補正バッチ。さくさく変換してくれるのはいいんだが、一枚あたり30秒かかる。ほっときゃいいとはいえ辛い。というか、あきらかに遅い箇所があって、さすがにバカなことやってる箇所だから直したい。

実験用にJupyterNotebook起動。

import os,sys,re
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from PIL import Image
import matplotlib.pyplot as plt
import itertools as it
import time
%pylab inline --no-import-all

いつものやつ。余計なのも入ってるが気にしない。

img = Image.open(r"la-noscea_サスタシャ浸食洞.png")
im = np.array(img)

サスタシャの地図を一枚読み込む。
今回やろうとしとるのは、ゲーム内の画像そのまんまだと色調があまりにもくすんでいるので明るい感じに修正する、というもの。実際には前にやっていて(FF14の画像をバッチで画質処理+コピーライトの貼り付けしたい)、こんかいはそれのリファクタというかありえないコードになってるとこを直す話。

元のコード

30秒かかるのは流石にやばい。これ書いた当初は「画像の変換って時間かかるんだな~」とか牧歌的に思ってたが、PhotoShopがこんな速度でフィルタかけてたらAdobeは今頃地上から消えていたはずだ。
なにが問題かというとまあさすがに明白で、ピクセル一個ずつをループで丁寧に変換して歩いてるところ。当時は書き方わかんなかったし、改善よりも歩を進める事を優先したので斯様な惨状を放置する運びに。

なんでじゃあ改善するかというと、リリースしてガンガン地図増やすぞという頃合いになると、所要時間がだんだん冗談で済まされなくなってくるから。
いま作り終わってる地図が33枚あるんだけど、こいつの処理完了に15分かかる。ちょっとこれは引く。

修正後

あれこれすっ飛ばして結論。行列への関数適用をずばっとやってくれる関数を見つけたので、何となくこうですか的な具合で書いてみる。
0.27秒。意味がわからん速度が出た。いやわかるわ。30秒が意味分かんないわ。
ということであっけなく変換バッチの改善作業が終わった。

まったく苦労してないので、今回もまたnumpyとからへんが身につくほどの作業量にならずじまい。
画像の変換は触り始めると楽しいので、継続的にやってこうかなという気にはなってる。

こんかいつかったnotebook(gist)
https://gist.github.com/mezquita/0d4d99e2d66c9397949966840853779e

文中の画像の権利表記:Copyright (C) 2010 – 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

日記書くの二年ぶりだって。まじか。
ちょっと開発してるやつあるんで作業メモ。

やりたいこと:

  • たくさん画像あるやつを一律で補正して、固定イメージはっつけて別名で保存したい
  • 素材の画像をバッチに食わせて、別名で新しい画像を得たい
  • 要はFF14の画像を大量に画質処理+コピーライトの貼り付けしたい
  • 年が変わるとコピーライトの年表示が変わるから、繰り返し生成しなおすことを視野に入れたい

ふだんFireworksつかう(Photoshopはもう完全に使い方忘れた。かつては仕事道具だったのに)のだけど、こいつがバッチ処理みたいな機能ある。これつかって楽できんかと思ったけども、せいぜいサブネイル作るくらいのしょっぱい代物で話にならない。
もういい、画像ライブラリ振り回してなんかできるじゃろ、数学得意じゃないけどトーンカーブもなんとかなるじゃろということで。

Jupyter notebookで実験

とりあえずJupyterNotebook起動して、Pillowとかいろいろ読み込んどく

import os
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

はりさんの画像を読み込んでみる。

いいんじゃないすか。上のはりさんはスクリーンショットを切り取って小さくしただけのもので、補正やらは一切なし。暗い屋内だわくすんでるわ、ぱっとしない。

ほんではどっかから拾ってきたサインカーブ作るやつをplotで描かせてみる。
やっべグラフとか描いちゃってかっけえ。理数系ってこういうの鼻歌でやるんじゃろかっけえ。

ともかく、各ピクセルにこいつを食わせると暗い色をより暗く、明るい色をより明るくしてメリハリが付く。

ほんとはカーブの具合を上みたいな感じのカーブにいじりたいが、式の書き方がわかんないのでいったんこれで。拙速がだいじ。
さしあたり効率やらノウハウやらわかんないので、愚直に各ピクセルのRGB値を変換していく。

後ろの照明がぱっと明るくなってたり、はりさんの顔にあたってる明かりが明るくなってたり。フィルタはちゃんとかかったということで進める。

次、コピーライト画像を読み込む。
これを読み込んで、画像(今回ははりさんの画像)の、所定の位置にコピーライトを貼り付けたい。
ちょっと困ってるのが、元の画像ったらわりと大きめのマージンがあること。このマージンがだいぶ邪魔なので、ほんとは空白部分をトリムしたい。
cropでうまくいくとあったんだが、正確に0でないピクセルがありそうな気配でtrimかかんない。
一旦いいや。実際やるときはマージン分をいいぐあいに調整して貼り付けちゃおう。

はりさん画像とコピーライト画像のサイズを取得して、はりさん画像のどの座標にコピーライト画像を貼り付けたらいいかを調べる。テキトウにpaste_pos関数作っておこう。2つの画像をあげると、どの座標に描いたらいいかを返すやつ。横0縦184ピクセルのとこに貼り付けたらいいとわかった。

Image.pasteにコピーライト画像、貼り付け先の座標を渡す。引数のmaskにもコピーライト画像をわたしてるのは、これでアルファチャンネルをよしなにしてくれるとのことで。
上のサンプルではコピーライト画像のほうが横幅が大きいけれども、溢れたぶんはなくなる。
実際にこの仕掛けを利用するときはもっと大きな画像を使うことになるので、横幅あふれた―とかは実際には発生しないので、気にしないでよい。

だいたい実験が完了したので、これをバッチスクリプトとしてまとめたら終わり。
いままで画像処理やること少なかったわ、式わたして数値の変換するなんてこともやったことなかったわで、若干進歩。プログラミングのための線形代数買ってあるのに積んでるんだよなー

そのうち読もう。こういうのに役立つ何かが書いてあるかも。

引用。

513 : 既にその名前は使われています@無断転載は禁止 (ワッチョイ fb6b-c5qS)2016/06/28(火) 05:38:18.71 ID:v1F1o0Rz0
極に行く前に蛮神の動きや雰囲気に慣れたくてFCメンとある真蛮神に通っているんですが
別のFCメンに真に行ってると言ったら時間の無駄、真で練習()とか他色々散々にコケ下ろされました
極行く前に真に通うのって意味ないんでしょうか?
一つだけ極クリアしたのがありますがその時真で数こなして練習しててよかったと思う所が
それなりに(極初見の時は特に)あったのですがその蛮神がたまたまそうだっただけなんですかね?
ジョブは自分も真についてきてくれているフレもタンクです

514 : 既にその名前は使われています@無断転載は禁止 (ワッチョイ 4765-Z7EN)2016/06/28(火) 05:45:00.90 ID:sa75/Bto0
1,2回クリアするくらいは有効だと思うが大体これくらいで覚えるから以降は無駄
真を覚えるのに回数必要なら無駄ではないかもしれない

515 : 既にその名前は使われています@無断転載は禁止 (ワッチョイ eb39-jO4j)2016/06/28(火) 06:45:59.59 ID:wPrOCjC70
>>513
基本的に極をやるつもりなら極へ行く方が良い
真蛮神をやった経験は無駄にはならないけど、真と極では覚えることが変わってくるからね

元記事:http://hanabi.2ch.net/test/read.cgi/ogame/1466414439/

TL;DR
ぜんぜん無駄じゃないから心ゆくまで通い、ギミック個々を「ああこれね」ってかんじに慣れたらいいよ。


あたしの心の琴線に触れる書き込み。まとめサイトで見っけてきた。
あたしは真蛮神での練習を推す。
むろん、真蛮神に行ってまるで練習にならないケースもあるとおもうけど、細かな場合わけをせずに話を平らにした場合、あたしは真蛮神で慣らしてから極蛮神に行くのが良い派です。

たぶんこれは、極蛮神戦というコンテンツに慣れているかどうかでかなり変わる部分なんでないか。
うざい昔話をします。2秒位で終わります。
極蛮神戦にトライしてみようと思い立ったのが、あたしはたしか極タイタン戦。ああいうのトライできるのかっこいいなーって思ってて、ちょっと憧れてたんだよ。
いざ挑戦となった契機はファンフェスのライブで、目の前で演奏されるタイタンの曲聞いて大いに盛り上がり、
「あたしもアイビートタイタンしたいいいぃぃいぃ!!」
となったのがきっかけ。わかる?このナメた感じ。
当時ビートできてなかったので気後れし、タイタンTシャツ買わずに帰ってきたんだ。代わりにギルガメッシュのTシャツ買ってた。
ちなみにギルガメッシュも未勝利でした。代わりって。

それまではIDばかりで、いきなりボスと戦ううえ、各種ギミック満載のコンテンツへの知見はないに等しかった。
上の書き込みもそのくらいの人であるというイメージでこの記事は書かれています。
ものは試し、と超カジュアルに飛び込んだ極タイタン戦は地獄の様相そのもので、始まってから自分が死ぬまでずーっとパニックだったと記憶しています。

今でこそ見てから余裕くらいですいすい動けるあのコンテンツも、始めた当時は「なにが」「どうなって」いるのか、何もわかりませんでした。ヘタするとそういうのを目にする前にテーブルの下で音楽だけ聴く係(さいきんは上空から見守る視点になったとか聞いたような)になるので、なおさらわからないという。
いろいろギミックがバーン!バーン!なって意味分かんない(ランスラが激震が云々じゃなくて、なにかがバーン!バーン!ってなってる)状態の人は、落ち着いて画面見ることにたくさんの障害が発生します。意味不明なものへの防御行動として、脳がわざわざ理解を妨げる。
腹づもりとしてはクリアしたいから覚えたい、しかし意味不明で不快だから脳にはストレスだという状態。
これを、ちょっと優しい「まあこれならクリアできないこともない」というコンテンツを土台にして練習することで、このエフェクトはこうしたらいい、というパターンを手に覚えさせる部分での意味が生まれます。
というわけであたしは何回か忘れたがとにかく真タイタンへはわりと熱心に通い、ランドスライドのエフェクトはこれ、激震はたくさん踏むと危ない、ボムの範囲はこのくらい、ジェイルの時は云々、という、戦いの流れではなくてギミック一個一個、パーツとして認識した場合のやっつけかたを覚えていきました。
よし、いざ極蛮神タイタンを討伐にゆかんという時、あたしはガンダムのシャーばりに叫んだものでした。
みえる!みえるぞ!
「見えるぞ!」
そのとき?負けたよ。

昔話終わり。1.97秒くらいか?結構ギリだったねー

さて、上のコメしてる人も
「1,2回クリアするくらいは有効だと思うが大体これくらいで覚えるから」
「真蛮神をやった経験は無駄にはならないけど」
と、無駄でない事自体は肯定しています。

まあ1,2回で覚えるわけない。
いままでのコンテンツで「このギミックはこのコンテンツにあったこのギミックと同じものだ」というヒモ付がすでに出来ており、たとえばニーズヘッグのカータライズを見た瞬間に「ああ、ストーンヴィジルのイスケビンドね」と脳の辞書引きができる状態に仕上がっている人の感覚だと1,2回は理解できなくもないというくらい。
ランスラの線消えたら、もう動いていいよとかあるじゃん。あれを知見というんだ。
1,2回で覚えられるのはその前提をクリアしているからだ。
「え~ おれ2回行ったら覚えたけどな~w」とか言うことで満足を得たい人もいるじゃろうけれども、その手の子供の話は今回は無しだ。もしそういうお友達が身近にいたら、ラグナロクオンラインかなんかを勧めて視界から消えてもらおうね。物理的に消してもいいよ。

>極に行く前に蛮神の動きや雰囲気に慣れたくてFCメンとある真蛮神に通っているんですが
そんなわけで、この質問をした彼には届かないことろでつぶやいてるわけですが、無駄じゃないからどんどんやれと私は申し上げたい。

FCで行くなんていい仲間持ってるよね。

参考というか関連というかの記事:

超えた壁はどう見えるか

I BEAT TITAN
真タコ引率