石橋を叩いて壊すブログ

FF14を翻訳したら国によって結構特色が違った

久しくブログ更新してませんが、代わりにこの1年ほどかけてこんなものを作ってました(そしてまだ終わってない)。

YouTubeが好みの方はこっち(画質・内容は同じ)。

日本語・英語・フランス語・ドイツ語の4ヶ国語で展開されているファイナルファンタジー14を題材に、
同じカットシーンの4言語分を翻訳して聞き比べてみる動画です。
翻訳と言っても自分は日本語以外できないので専らGoogle翻訳とBing翻訳と各種辞書のお世話になりっぱなしだけど。

同じゲームの同じカットシーンなのに、それぞれ言語ごとに声優さんはもちろん発言内容も違っていて、
特に罵倒語などはお国柄が出たりして面白いです。
訳者によっても違うのか、ベースは日本語と思われるのに、原文のテイストもないほどはっちゃけた訳をする英語版、
基本は英語版の直訳なのに女性に対すると妙に下手に出るフランス語版、
そして日英を足して割ってさらに独自のテイストを入れて最近妙に頭角を現しだしたドイツ語版と特色があります。

興味あったら見てみてください。

ちなみに気づくかもしれませんが、動画製作にもプログラム書いてます。
編集ソフトにはAviUtl使ってますがほとんどコンバータ扱い。
基本はExcelでソース動画ファイル名・再生開始/終了タイミング・表示テキスト訳文/原文/表示タイプ/表示タイミング…をシートに記入して
jscriptでCSV化→PHPでexo化→AviUtlに読み込んで動画を"ビルド"。
ffmpegで元ソース動画を静止画にして台詞ダイアログの表示/消去タイミングを数値化して訳文の表示タイミングを制御。
それだけだと本当に同じことの繰り返しで機械臭が出てしまうので時々右コメントやコラ画像など差し込んで手作業臭さを追加してみたり。
案外みれる形になるもんですねこれ。

この記事を評価

7 3

コメント

【この記事にコメント】
お名前:
コメント:

ゼロから始めるFactorioの回路構築(実践例編)

前回までに書いたFactorioにおける回路構成のまとめ。

前回までに、鉄板や銅版の量に応じてランプを光らせるといった動作をさせてみたが、それを具体的にどう活かしていけばいいか、
自分が実際に構成した例を引き合いに出してみたい。


自分が油田地帯に建てた石油処理プラントの全体俯瞰。
一昔前はサイエンスパック3(青パック)と電池とプラスチックと固形燃料のプラントが複雑に絡み合ってお祭り状態だったが、
研究もすべて終わって大抵の部材の備蓄も整ったため、つい最近全部取り壊してリプレースしてさっぱりさせた。
左から順に、硫酸、プロパンガス、軽油、重油、潤滑油のタンクが置かれている。

この石油プラントには、小さな機能を受け持つ複数の回路が設置されているが、それらは大きく分けると、
一番最初の記事で自分が困っていると書いた「軽油をプロパンに分解し過ぎ問題」を解決するものと、
タンクが満タンにならない程度に固形燃料を作って原油を可能な限り掘り続けて最大活用するための「オーバーフロー制御」を行うものがある。
以下に説明する。

軽油をプロパンガスに分解し過ぎ問題を解決する

一番最初の記事にも書いたが、軽油をプロパンガス(以下、単にガスと記載)に分解するプラントを動かし続けると、
いざ軽油が大量に必要になったときに軽油が足りなくなってしまう。
逆にプラントを動かさなければ、ガスが大量に必要になったときにガスが不足してしまう。
この問題を自動的に解決するのが本節で書く回路である。

結論を先に書いてしまうと、この回路は以下の制御を行っている。

上記により、ガスが消費されて減った場合は場合は軽油を分解してガスの補給に努め、
軽油が消費されて減った場合は分解を止めて軽油の温存に努めることが可能になる。

具体的な回路の構成を見てみよう。


軽油タンクとガスタンクから、それぞれケーブルで内容量が小型ポンプに伝えられる。
小型ポンプは両タンクの内容量を比較し、「ガス<軽油」の条件が成立したときだけ動作し、軽油をプラントに流し込む。
プラントが軽油をガスに分解してガスの容量が増すと、前述の条件が満たされなくなり、小型ポンプが停止し、分解が停止する。
ちなみに、ポンプの近くに置かれているランプは動作状況を視認するための表示灯で、ポンプが動くのと同じ条件で光るように設定されている。
こうすると、ポンプが動くたびランプが光るので見た目が楽しくなる。ただし、夜間にチカチカと明滅されて目に悪い。

ここで書いた軽油~ガス間の分解制御は一例に過ぎず、ほぼ同じ方法で重油~軽油間、重油~潤滑油間、ガス~硫黄~硫酸間すべての制御が可能である。
硫黄と硫酸の間の制御は、小型ポンプで石油の流入を制御する代わりにスマートインサータを接続して硫黄の投入を制御する。

各タンクが満タンになるのを防いで原油を絶えず生産しながら、固形燃料を生産し続ける

原油を原油処理施設で処理すると、重油と軽油とガスが採れる。
しかし原油処理施設は、3つのうちどれかのタンクが満タンになると、以降の処理を停止してしまう。
このため、あまり大量に特定の資源を使い続けると、例えば「ガスは満タンなのに軽油が空で、
しかも原油処理が動かないので補充もない」といった八方塞がりの事態が起きてしまう。

また、Factorioの油田は産出量が減りこそすれ、決して尽きることはない。
このため、産出量が最低まで低下した油田は、温存しても意味がないので掘り続けたほうが得と思われる。
しかし原油のタンクが満タンになると産出が止まってしまう。

このように石油精製関連の貯蔵タンクは、満タンになるといろいろ非効率である。
かといって固形燃料を延々と作り続けたら、いざ石油が必要なときにタンクが空という事態が発生してしまう。
そこで、いざというときに備えてタンクの内容量がほぼ満タンの状態を維持しながら、
満タンになりそうになったら固形燃料を生産してタンクの中身を減らすという制御を考えた。

話が脱線するが、これはタンク付き水洗トイレのタンクの中の構造と同じである。
故障か何かでタンクに水が注がれ続ける状態が起きると、タンクから水があふれ、トイレが水浸しになってしまう。
これを防ぐため、タンクの中には予めプラスチックの管が垂直に設置されており、その上端はタンクのふちよりわずかに低くなっている。
タンクに水が注がれ続けると、水位がタンクのふちに達する前にそれより低い位置にある管の中に水が流れ、下水に流すことで水浸しになるのを防いでいる。
この管のことをオーバーフロー管と呼ぶ。今回説明するのはまさにこの挙動である。
貯蔵タンクの貯蔵量が予定限界より多くなったら、あふれた石油を管に流して固形燃料を生成し、決して満タンにさせないよう振舞うのである。

無駄なことを記載したが、やることは結局先ほどと同じ、タンクの容量と小型ポンプの組み合わせである。
制御内容は以下のとおりである。


画像には映っていないが、原油タンクの近くに条件回路を置き、原油の量を調べる。軽油タンクも同様に量を調べる。
あとは条件回路の記事に書いたとき同様、信号が足し算されるのを利用してAND条件が成立したかを調べポンプを動作させる。

こうすることで、原油や軽油のタンクに充分な資源がある状態を維持しつつも、軽油のタンクが満タンになるのを防ぐ。

なおFactorio@Wikiの記載によると、固形燃料の生産はガス・軽油・重油のうち軽油から行うのが最も効率が良いらしい。
このため重油のタンクについてはオーバーフロー管を設置せず、代わりに前記の「分解し過ぎ問題」の回路と「重油を軽油に分解」のプラントを設置しておく。
すると、軽油のタンクについてはオーバーフロー制御により水位が2400より高くはならないため、重油タンクの水位がこれを超えると超えた分が軽油に分解され、
分解で増えた軽油が軽油タンクからオーバーフロー管に流れて固形燃料に変換されることで最高の固形燃料生成効率を維持できる。

逆にガスを軽油に分解することはできないので、ガスについてはオーバーフロー管を設置する。
このとき、オーバーフロー判断の水位は軽油の同水位より高めにしておく。
もし判断水位が同じだと、軽油が増えたときに「分解し過ぎ問題」の回路が働いて「軽油をガスに分解」が行われてしまう。すると固形燃料の生成効率が落ちてしまう。
ガスの判断水位を軽油のそれより高めることで、「分解し過ぎ問題」の回路の動作を防ぎつつ、ガスはガスで、軽油は軽油で固形燃料を生成することができる。
(なお、ガスが大量消費された際には軽油からガスへの分解が必要になるので、軽油~ガス間の「分解し過ぎ問題」回路それ自体が不要になるわけではない。)

V0.13で作れそうな回路 - 留置線の列車通過を防ぐ

以下は、V0.13で追加される機能を使って実装できそうだと自分が考えている案である。
正式版を待ちたいので、今はアップデートしないで想像するだけにとどめている。
もしかしたら実際はできないかもしれないが備忘録代わりに書いておく。

2016/09/01追記:
V0.13の正式版で確認したところ、きちんと動きました。
信号の回路設定画面に「経路の探索は行いません」と書いてあるのが気になりますが、ちゃんと経路の探索に影響を与えることができるようです。

以下の画像は、自分がいつも活動している拠点である。


南側に貨物を降ろす駅があり、列車はすべて北側へ走り去る。
活動拠点の近くにはチェストが大量に置いてあり資源が入っており作業に適している。
そのチェストの西には線路が3本平行しており、うちチェストに最も近い側は臨時積み込み作業などを行う作業線として想定している。
一方、活動拠点を通過する列車は、高速で走行しており接触すると危険なので、チェストから最も遠い線路を通過線と想定している。

しかし実際には、線路の南端と北端を結ぶ最短ルートは作業線なため、通過列車はすべて作業線を通過してしまい、いつも危険と隣りあわせだった。
作業線は列車を自動運行で臨時で引き込み発車させることもあるので、線路を分断して通過を防止するわけにも行かない。
似た悩みを抱えている人も少なからずいると思う。

V0.13で、鉄道信号を回路に組み込めるらしいので、以下のように回路を組めば、
作業線(留置線)を通過列車が通過するのを簡単に防ぐことができると予想している。


作業線の駅の前後に鉄道信号を計2つ設置する。
手前(下側)の信号は回路に現在の状態を出力する。
奥側(上側)の信号は回路からの入力で、手前の信号が緑なら赤を出すように指定する。

このように制御すれば、以下のような挙動となるはずである。

これなら、自動運行の列車も作業線に入ることができ、なおかつ通過列車は通過線を通ってくれるはずである。
問題は通過線と作業線がともに赤のとき、列車がどちらを選択するかだが、信号の位置を調整して作業線より通過線のほうがより先へ進めるように見せかけたり、
連動用信号を使って通過線と作業線の分岐の手前で列車を停めさせることで対処できると思われる。

V0.13で作れそうな回路 - 蓄電池の蓄電残量が減ったら非常用ディーゼル発電機を動作させる

こちらもV0.13で作れそうだと思っている内容である。
使用する電力を全て太陽光発電パネルと蓄電池で得る場合のディーゼル発電機の取り扱いの自動化方法である。

2016/09/01追記:
V0.13の正式版で確認したところ、きちんと動きました。

日中は太陽光発電パネルで発電して電力を賄い、夜間は蓄電池からの放電で電力を賄う。
万一、電力が不足する場合にはディーゼル発電機で発電して電力を補充するようにすれば、
環境汚染を減らし、バイターと共存できる環境づくりができるはずである。
共存は無理?まあそのときは殲滅するけど、それはさておき。

V0.13では、蓄電池を回路に組み込み、蓄電容量を回路で利用可能になるらしい。
また、回路からON/OFFできるスイッチが追加されるらしい。
ならば、ディーゼル発電機(以下、単に発電機と記載)を一箇所に集中させてスイッチを挟んで電力網と接続しておき、
蓄電池の蓄電容量が減ったときだけスイッチを入れれば、発電機が動き出して、
蓄電池の蓄電容量が充分になったらスイッチを切って発電を停止するといった制御ができるようになると思う。

ここでひとつ問題がある。単純なON/OFF制御だと、以下のような挙動が起きる。
例えば、蓄電容量が20%より少なくなったときだけ発電機を動かすとする。

  1. 夜間に蓄電池の容量が消費され、蓄電容量が19%になる。
  2. 回路が働き、発電機が発電を開始する。
  3. 発電が行われると蓄電池が充電を開始し、蓄電容量が20%になる。
  4. 回路が働き、発電機が発電を停止する。
  5. しかし蓄電池の容量は1%しか回復していないので、すぐに蓄電容量が19%になる。
  6. 以降、発電機は発電と停止を繰り返す。

だめではないが、あまり効率的とは思えない稼動方法である。
そこで、発電の開始と停止の閾値を分けてみる。
例えば、蓄電容量が20%より下がったら発電を開始し、充電を行い、蓄電容量が30%を超えたら発電を停止する。
そうすれば差分の10%分は発電機が発電を続けるので、効率的である。

これを実現するには以下のようになると思われる。
なおV0.12で想像しているだけなので、蓄電池の代わりに保管チェストに原木を100本入れて蓄電容量0~100%を表現している。
また画像最上部のランプは同じくスイッチの代わりで、光っているランプがスイッチのON状態に相当する。
初期状態で蓄電容量は100%とし、チェスト1は空で、チェスト2に原木が1本だけ入っているとする。


蓄電池を保管チェストで、スイッチをランプで代用して作成した回路。思いのほか小さくなった。

制御内容は以下である。

つまりチェストをフラグとして活用するのである。
少し複雑だが回路は画面内に収まる程度なのでいろいろ調整が利くできるはずである。
ちなみに、発電機群に電力を消費する設備がひとつも繋がっていないと、発電機に電柱が繋がっていないのと同様の停電警告がついてしまう。
対策として発電機群に蓄電器をひとつ繋いでおくと、停電警告を回避でき、なおかつ充電完了後は消費電力ゼロのため発電機を完全停止させられる。

以上、だいぶ長くなったが、回路について調べた分はこれくらい。
今度は鉄道網について何か書くかも知れない。

この記事を評価

52 24

コメント

【この記事にコメント】
お名前:
コメント:

ゼロから始めるFactorioの回路構築(条件回路・論理演算編)

前回に引き続きさらにFactorioの回路の話。
Factorioで「回路網」の研究を完了させると、ケーブルやチェストのほかに「定数回路」「算術回路」「条件回路」が使用可能になる。
定数回路と算術回路の使い方については前回の記事に書いた。今回は条件回路の使い方と、条件回路を用いた論理演算(AND / OR / XOR / NOT演算)について書く。

条件回路

条件回路は信号の内容を条件に基づいて判断し、判断後の信号を出力することができる。

以前の記事にも書いたとおり、例えば条件を判断してランプを光らせるには、ランプに条件を直接指定すればよかった。
しかし、条件が複雑な場合はランプでは対応できない。
例えば、「鉄板が100枚より多く、なおかつ、銅板が100枚より多い場合にランプを光らせる」という条件はランプには設定できない。

条件回路は、条件を判断した判断後の信号を出力し、さらにそれを別の判断に使用することで、多段階・複数の判断が下せるようになることに意味がある。
実際に「鉄板が100枚より多く、なおかつ、銅板が100枚より多い場合にランプを光らせる」をやってみよう。


実際に「鉄板が100枚より多く、なおかつ、銅板が100枚より多い場合にランプを光らせる」をやってみた回路。
2台の条件回路を使用し、片方では「鉄板が100枚より多い場合に鉄板が1の信号を出力」、
もう片方では「銅板が100枚より多い場合に鉄板が1の信号を出力」を行っている。
以前の記事に書いたとおり、1つの回路に複数の出力があると信号が足し算されるので、「鉄板が1の信号」が2つ足し算され「鉄板が2」の信号となる。
ランプには「鉄板=2」の条件を指定してあるので、従って両方の条件が成立した際にランプが光る。

この例では、2台の条件回路が判断した結果をランプが受け取り、ランプがその値を判断することで目的が果たされた。
つまり条件判断が2段階で行われたということである。このような複雑な判断こそ条件回路の存在意義である。

なお、条件回路の入力部には赤と緑のピンがあるが、前回の記事の算術回路の節で触れたように、
赤と緑のピンが演算子の左右の数字に対応しているわけではない。赤い端子だけを使っても2種の数値の比較判断は可能である。

ところで、今回は鉄板と銅板がともに値を満たすことを確認したが、それ以外にも条件回路の組み合わせ方にはいくつかのパターンがある。
以下で4パターンの組み合わせを見てみよう。

AND演算(論理積)

AND演算とは、上記例で見たような「複数の条件がすべてYESのときだけ、YES」の組み合わせのことである。
例えば、「鉄板が100枚より多く、なおかつ、銅板が100枚より多い場合にYES」というのがAND演算である。

AND演算の方法については既に上記で説明したが、記事の構成上、再度同じ説明を載せておく。


2台の条件回路を使用し、片方では「鉄板が100枚より多い場合に鉄板が1の信号を出力」、
もう片方では「銅板が100枚より多い場合に鉄板が1の信号を出力」を行っている。
以前の記事に書いたとおり、1つの回路に複数の出力があると信号が足し算されるので、「鉄板が1の信号」が2つ足し算され「鉄板が2」の信号となる。
ランプには「鉄板=2」の条件を指定してあるので、従って両方の条件が成立した際にランプが光る。

同様に条件回路を3台/4台と増やし、ランプの条件も鉄板=3/鉄板=4のように増やしていけば、より多条件のAND演算、あるいは「3個中2個以上がYES」といった判断も可能となる。

OR演算(論理和)

OR演算とは、「複数の条件のうちどれか1つでもYESのときだけ、YES」という組み合わせのことである。
例えば、「鉄板が100枚より多いか、または、銅板が100枚より多い場合にYES」というのがOR演算である。
鉄板と銅板がともに100枚より多い場合もYESとなるが、鉄板と銅板がともに100枚以下の場合にはNOとなる。

などと仰々しく書いたが、やることはAND演算とほぼ変わらない。
上記したAND条件の説明のうち、ランプの条件を「鉄板>0」に変更するだけである。


2台の条件回路を使用し、片方では「鉄板が100枚より多い場合に鉄板が1の信号を出力」、
もう片方では「銅板が100枚より多い場合に鉄板が1の信号を出力」を行っている。
1つの回路に複数の出力があると信号が足し算されるので、どちらかの条件が満たされれば「鉄板が1の信号」、両方の条件が満たされれば「鉄板が2の信号」となる。
ランプには「鉄板>0」の条件を指定してあるので、従ってどちらか片方、または両方の条件が成立した際にランプが光る。

XOR演算(排他的論理和)

XOR演算とは、「2つの条件のうち、片方だけがYESのときだけ、YES」という組み合わせのことである。
例えば、「鉄板が100枚より多く銅板が100枚より多くないか、または、鉄板が100枚より多くないが銅板が100枚より多い場合にYES」というのがXOR演算である。
鉄板と銅板がともに100枚より多い場合も、ともに100枚より多くない場合も、ともにNOとなる。

ここまで真面目にこの記事を読んでくれた人なら、最早これ以上の説明は不要であろう。
やることはやはりAND演算とほぼ変わらない。ランプの条件を「鉄板=1」にするだけである。
なぜなら、鉄板と銅板がともに100枚より多ければ鉄板=2の信号が出力されるし、ともに100枚以下ならば鉄板=0の信号が出力される。
鉄板と銅板のどちらかだけが100枚より多いときには鉄板=1の信号が出力されるから、それが答えである。


前提条件はAND演算と同じ。どちらかの条件が満たされれば「鉄板が1の信号」、両方の条件が満たされれば「鉄板が2の信号」、
どちらの条件も満たされなければ「鉄板が0の信号」となる。
ランプには「鉄板=1」の条件を指定してあるので、従ってどちらか一方の条件が成立したときだけランプが光る。

その他

ここまでくれば、もう詳細など書くまでもない。

NAND演算(否定論理積:ひとつ以上NOのときYES)
AND演算の回路で、ランプの条件を「鉄板<2」にする。
NOR演算(否定論理和:すべてNOのときYES)
AND演算の回路で、ランプの条件を「鉄板=0」にする。
NOT演算(否定:YESのときNO、NOのときYES)

NOT演算は単一の条件を判断するので、条件回路は1つでいい(というかランプに直接指定してもいい)。
「鉄板が100枚より多い」の否定は「鉄板が100枚以下」だが、「以下」という演算子はFactorioに存在しないので、
値を1足して「鉄板が101枚未満」を指定することで否定となる。
なお、演算子「>」を「<」に変えただけでは正しくない。「鉄板が100枚より多い」の演算子を反転させると「鉄板が100枚より少ない」となるが、
これでは鉄板がちょうど100枚のときYESにならない。

これで一通りの回路の機能を見て回ったと思うので、次回は実践例を紹介する。

この記事を評価

16 18

コメント

【この記事にコメント】
お名前:
コメント:

289,590

記事カテゴリー

最近の記事

  1. FF14を翻訳したら国によって結構特色が違った[12/11]
  2. ゼロから始めるFactorioの回路構築(実践例編)[7/24]
  3. ゼロから始めるFactorioの回路構築(条件回路・論理演算編)[7/24]
  4. ゼロから始めるFactorioの回路構築(定数回路・算術回路編)[7/24]
  5. ゼロから始めるFactorioの回路構築(入力・出力・混合編)[7/24]

RSS1.0 RSS2.0

最近のコメント

  1. おー、お役に立てたようでなによりです。再起…[9/11]
  2. この記事が非常の役立ちました。おかげさまで…[9/9]
  3. 1.14.2のAPIで試しましたが、MapInitializeEv…[9/9]
  4. 天晴れ!押したらポーションのモヤモヤでまし…[5/26]
  5. 習うより慣れろって感じで。この記事は記事冒…[4/7]

記事を検索


管理人

石橋

絵画センスは皆無