toLua++

toLua++toLuac++でも使えるように拡張したもの、と言われても、まずtoLuaを知らんのですけど。
Lua自体はそもそもC言語との親和性が高いというのがウリで、ゲームのmodに使われていることが多く、私もLuaで書かれたゲームのmodに手を入れた事はあるのですが。
Luaのver.5.1までは普通にbuildできるのですが、HomebrewのLuaが現在ver. 5.2.4なので、今回はLua 5.2.4を使ってbuildしてますけれども、実際にver. 5.2.4でtoLua++が正常に動くのかは分からないです(ぉぃ。

class Toluaxx < Formula
  desc "ToLua++ is an extension of toLua, a tool to integrate C/Cpp code with Lua"
  homepage "http://www.codenix.com/~tolua/"
  url "https://github.com/LuaDist/toluapp/archive/1.0.93.tar.gz"
  sha256 "0a1ff87cb74e7531aec57e2a7cfdf282116647dea3b46223e3cc7c362b55b5bb"

  depends_on "cmake" => :build
  depends_on "lua"

  def install
    # Some functions were deflected in Lua 5.2.
    inreplace ["src/lib/tolua_map.c", "src/lib/tolua_event.c", "src/lib/tolua_push.c"], "lua_setfenv(", " lua_setuservalue("
    inreplace ["src/lib/tolua_map.c", "src/lib/tolua_event.c"], "lua_getfenv(", "lua_getuservalue("
    inreplace "src/lib/tolua_map.c", "lua_pushvalue(L,LUA_GLOBALSINDEX)", "lua_pushglobaltable(L)"
    inreplace "src/bin/tolua.c", "luaL_getn(", "lua_rawlen("
    system "cmake", ".", "-DCMAKE_INSTALL_NAME_DIR:STRING=#{opt_lib}", *std_cmake_args
    system "make", "install"
    MachO::Tools.change_install_name("#{bin}/toluapp",
                                     "@executable_path/../lib/libtoluapp.dylib", "#{opt_lib}/libtoluapp.dylib")
  end
  test do
    system "#{bin}/toluapp", "-h" 
  end
end




Endless space 2 X3: Terran Conflict

Steamで『Endless space 2』という4Xなストラテジーゲームが先週の金曜日から今朝まで無料で遊べたんですが、とりあえずチュートリアルから始めたものの、初回プレイはザコのはずの海賊に蹂躙された。
何回かやり直すと敵のAIも数回、別の海賊に滅ぼされている始末。敵より強い海賊って、ゲームバランス的に絶対おかしいよ。
で、なんとか深夜にチュートリアルをクリアして、疲れ果ててアンインストールしようとSteamのクライアントを見たところ、取得した実績の中に「Normal 以上の難易度で勝利」ってあるじゃん!
つまり、私は、チュートリアルなんだから初心者向けの難易度なんだろうと思ってplayしていたけれども、実際はnormal(中級者レベル?)でplayしていたのであった。設定から難易度をeasyにする必要があったらしい。
道理で骨のある難易度だったんだと思った。

2017.11/26 追記

結局、『Endless space(初代)』は過去最安値ではなかったため、秋セールは『X3: Terran Conflict』だけを購入(ぉぃ
ストラテジーだと思って『X3: Terran Conflict』を始めたら3Dシューティングだった。

商人を選んでゲームスタートしたところ、「パイロット学校」なるチュートリアルがあり、途中で「標的をミサイルで打て」という課題があり、四苦八苦するもどうすれば良いのか分からない。
4時間経って、「商人の船にはミサイルが積まれていない」ため、クリアは無理だという事に気づいた。
で、商人を諦めて戦闘機パイロット篇で始めると、ものの15分でクリア。まぁ、4時間のうちに上達した分もあるのだろうけど。
で、一旦セーブして再度、商人でスタートするも、やはり「パイロット学校」のチュートリアルから始まり、もうええわと思って、商人プレイを完全に諦める。
そして、再び戦闘機パイロット篇のセーブデーターを読み込んで始めると、コントローラーが効かない。マウスを使ってコントローラーの設定を見ると、ほとんどのボタンが "none" となっているので、デフォルト設定に戻したところコントローラーが使えるようになった。その後、何度かセーブデータを読み込むハメになったのですが、毎回コントローラーの設定が書き換わってしまっているので、毎回再設定しなければならない。

大半の目的地に対して自動航行機能を使用できるのですが、この自動航行機能がイマイチで、警備隊の隊長が「付いてこい」というので隊長の宇宙船を「自動追跡」に設定したところ、隊長の船の自動航行機能も同様にイマイチであるため、かなりグネグネと動くことになったので、隊長を無視して直接、目的地のジャンプゲートに先にたどり着いて、先にジャンプゲートを越えたところ。ジャンプゲートの先の宙域に既に隊長がいた。ストーリー上、そうでなければならないんだけれども、何か釈然としない。
なお、各宇宙ステーションにドッキングするには自動航行を使うしか無いのですが、自動航行のドッキング中に2回ほど、他の宇宙ステーションにぶつかってゲームオーバーになった。

2017.11/27 追記

で、Terranのパイロット篇のストーリーを進めたところ、10機ぐらいの敵を一隻も沈められずに、同僚が全部仕留めたにも関わらず、「少佐に活躍が認められた」ので、少佐に面会に行くと、「火星に新しい船を用意したから受け取ってこい」と言われた。
貰えるものはもらう主義なので、火星の造船所に行くと、今乗っている戦闘機より遅くて小型で装備も何も付いていない船を渡された。これに乗り換えるのは罰ゲームだろ。活躍しなさすぎて左遷ということか。
とりあえず、その船はその場で売り払い、そのお金で今の船の装備を良くしようとしたところ、新型ミサイルはその船よりも高価で買えず、装甲も「知名度が低すぎて買えません」と言われる。最初の戦闘で活躍しなさ過ぎた事が響いている。

仕方がないのでミッションを受けようとするも、ミッションがあるという💡マークやマーク付いた宇宙ステーションに向かうも、到着したときにはミッションの受付時間が終わっていることがかなり頻繁にある。各ミッションには制限時間があり、「17分で新しい戦闘機を購入して持って来てくれ」という無理目な物もある。2つの宇宙ステーションに自動航行で出入りするだけで17分かかる気がする。ていうか、知名度が低いので戦闘機を売ってもらえないんですけど。

いろんなミッションを見て回ったが、ミッションは大別して4種類あり、「〜まで連れて行ってくれ(旅客機が必要)」、「資源の輸送(輸送機が必要)」、「戦闘機を買ってきてくれ(知名度が必要)」、「宇宙船を曳航して来てくれ」というモノがあった。最後の宇宙船の曳航は、時間が許せば元手がなくとも請け負えるので、今のところやれるのはこれだけである。

ミッションは探して回ること自体が手間だし、受けれるミッションの種類も少ないため、商品の売買で儲けることに方針転換。といっても、戦闘機で運べるのは以外の食料品と、装備だけである。しかも前述通り、装備は知名度が低くて購入できない。
で、天王星浄水場と食品工場があって、浄水場で水を買って食品工場で売ると微々たる儲けになることを発見。ちまちまと運んで、10往復ほどすると功績(?)が認められ、肩書が「Terran元老院顧問」になると、やっと自分が乗っている船や、輸送船が買えるようになったものの、貯金がないため買えない。
なお、初期は宇宙ステーションに入ると「大統領と元老院に代わって歓迎の言葉を」という歓迎メッセージを受けていたのですが、肩書が「Terran元老院顧問」になると、「我が友人を歓迎する」というメッセージに変わり、親密度は増しているんだろうけれども、なんか味気ない気がする。

2017.11/28 追記

コントローラーの件はSteamのコントローラーの設定と、ゲーム起動時の設定が合っていなかったため起こっていたようで、ゲーム起動時の設定をデフォルトにして、Steamを介さずに直接起動することで不具合解消しました。ていうか、Steam無しで起動するのね。

火星に船を取りに行けと言われて、そのまま戻らないプレー続行中なのですが、「未知のセクター」の4つめに巨大なTerranの軍事基地を発見し、ドッキングすると「貨物室に生物を入れられる設備」が売られていたので購入。これで「連れて行ってくれ」系のミッションが受けられるようになった。

2017.11/29 追記

白タク業務を繰り返して、肩書は「火星軍司令」から「イオの戦士」に。いや、まだ1隻も沈めてないんですけど。
小惑星」セクターにこれまでと色の違うゲートを発見。ワープゲートだ。ワープゲートを越えると「異教徒の終端」というセクターに着いた。ここはTerranではなくArgon勢力下となっているようだ。
そういえば書くのを忘れてましたけれども、火星のセクターにジャンプゲートがあって越えた先は「金星」だったのだけれども、ゲートを抜けた瞬間にATFという組織から「引き返さなければ攻撃する」と警告されたので直ぐに戻りました。
お金を稼ぐ必要があるので当然ミッションを受けるのですが、Argonでは「仲間が裏切っているようなので尾行してくれ」というような尾行系の依頼が結構多いのですが、私の船が速すぎて尾行のつもりがすぐに追いついてしまい、ことごとく失敗。
また、「海賊を退治してくれ」というものもあります。ただ、私はTerranの軍人であってArgonの軍人ではないので、Argon勢力圏の海賊は私と敵対しているわけでもないので戦わないに越したことがないと思うのと、なにせまだ1隻も沈めたことがないので腰が引けます。ていうか、この辺には海賊が居るのね。
Argon勢力下では私の肩書は最初は「Argonの市民」という一般市民扱いからで、ミサイルも買えない。海賊退治を請け負わなくって正解だった。
結局、船のサルベージと白タクをやってますが、ミッションのレベルが上ってきていて、白タク業務も「14人を運んでくれ」とか「旅客機じゃないと乗らんぞ」という無理な案件が増えて来てます。

2017.11/30 追記

白タク業務でArgonの地位が「公認の友人」まで上がったのでミサイル買おうとすると、「この艦船との互換性がありません」と言われた。Terranの戦艦なんだから、そういうこともあるよね。
お金が貯まったので輸送船のLサイズを買おうとしたら、造船所に在庫がない。仕方がないので半額以下のSサイズを購入し、速度増加などのオプションを付けたらLサイズの価格を超えた。んなアホな。ちなみに、Argonの設備ドッグはTerranより3割ほど安くセットアップできるのだが。
Argonは海賊が出て、宇宙ステーションすら破壊されているので、輸送艦を引き連れて母国Terranへ戻る。関税とかは無いらしい。

Terranに戻ってミサイルを補充しようとしたら、どこの基地も品切れである。こんなんじゃ、戦争できないじゃん!
とうことで、一兵卒の私(しかし肩書は「テランソルの戦士」)が独力でTerranの産業を立て直す必要があるらしい。太閤立志伝か!

どこで何が安く売られていて、どこが高く買いたがっているのか調べ、そこへ輸送艦を向かわせて売買するのですが、1隻目にしてもはや面倒くさい。ので、Teladiという会社で売られている「TRADE COMMAND SOFTWARE MK3」なるソフトウエアを買って、自動売買させることに。別途、最安値を調べるソフトウエアと、最高値を調べるソフトウエアの2つも必要。もちろん、輸送艦をTeladiの設備ドッグに持ち込む必要がある。Teladiの設備ドックはArgonの造船所がある琴座Oセクターから3つ行った「PTNI HQ」というセクターで発見した。途中のセクターは敵が出現しやすいのだが、今回は無事にたどり着くことが出来た。ちなみに「TRADE COMMAND SOFTWARE MK3」は500,000Crもする。Sサイズの輸送艦は188,323Crなのでどれだけ高価なのかと。
で、最初の1隻目を天王星で自動売買させ始めました。

2017.12/1 追記

「富める者はますます富む」とは言うけれど、2隻目輸送艦があっという間に買えるようになった。で、輸送艦の S, M, Lはサイズ(ていうか積載量)ではなく、実装されているバリアの数だった。
そうこうしているうちに、どんどん輸送艦が増えて5隻目を買ったところでようやくTerranの産業が回り始めて、ミサイルが安定生産され始めた。物流は産業の血液ってホンマやね。

Argonの琴座Oセクターで、1隻のゼノン(Xシリーズ共通の敵)が侵入して多勢に無勢でタコ殴られ状態になっていたのでわたしも攻撃に参加したら、わたしの攻撃がたまたま致命傷となり、プレイ13時間目にしてやっと1隻沈めたことになった。この功績でArgonでの地位は「連邦の英雄」となった。本国より高い地位で良いのか。
更にその先を支配しているテラディという会社では「主要株主」*1で、これも本国より高い地位である。そしてその先の領域の「スピリット」という勢力でも白タク業務によって「同志」という戦闘機が買えるレベルまで昇進している。

2017.12/2 追記

ミサイルの製造が再び止まってしまった。原料の水が無いからなのだが、実際には浄水所に水はある。浄水所が単位あたり 45Crで販売していて、各工場は32〜35Crでしか購入する気がないからである。これはちょっと、今の時点ではどうしようもない。

スプリットの「サルースズ ビアード」というセクターの次の「ハクティヴァス フェイス」というセクターに辿り着いたのですが、海賊のセクターのはずなのに誰かが既に海賊を退治しており、既に民間のステーションが出来ていた。その先の「クラリティーズ エンド」というセクターが私にとっては初めての「パラニド」という勢力下のセクターとなった。その次の「第三の贖罪」セクターにパラニドの造船所があり、パラニドの地位はスプリット領土内でパラニドの客も載せていたため「侍祭」というレベルまで上がっていたので戦闘機が購入出来るため、今載っている戦闘機より1ランク上の戦闘機を買うことにしました。機体だけで、1,540,000Cr也。
ただし、今乗っている戦闘機より速度が格段に遅いため、自動運転で琴座Oへ移動させ、武器以外のセットアップを琴座Oですることにして、その後「小惑星帯」に自動運転で送って、やっとストーリーを進めることにします。

さて、小惑星帯に戻るとイシヤマ少佐に「今日からUSF(宇宙連合軍)へ出向な」と告げられ、「異教徒の終端」へ行けと言われ、「異教徒の終端」に戻るとUSFの偉い人に、「『ンヤナの隠れ家』にゼノンが出たので駆けつけて、交戦せずに、一緒に出現したゼノンではない船を追跡し、逃げた先をスキャンせよ」と言われる。パラニド ペルセスに乗り換えていたので移動が遅いため、これまで載っていたTerranのサーベルを自動運転で先に『ンヤナの隠れ家』へ偵察に行かせたが、ゼノンなんていない。が、自機が『ンヤナの隠れ家』に着くと突然Map中央にゼノンと海賊が出現。海賊を追いかければいいのだが、海賊の情報を見ると「行き先:未知のセクター」って書いてある。ただし、「未知のセクター」は10以上あるらしいので、それだけではどこへ戻るのかは絞れないけれども。
で、自機は160m/sなのに対して海賊は120m/sで追いつきそうなものなのだけれども、こっちはゼノンを迂回するために遠回りをするため全然追いつかない。仕方がないのでサーベルで自動運転で追跡させると、10Km以上離れて尾行するようにATFの人から言われていたのに、ほぼ真後ろで追跡しやがる。しかし、ペナルティは無かった。
結局、「PTNI本部」の横の「未知のセクター」の海賊基地へ入っていったので、ペルセスからサーベルに乗り換えて海賊基地に近づくと、海賊基地からワラワラと、ゼノンM × 3機、ゼノンL、海賊 ノヴァ、海賊 ノヴァ ヴァンガードの計6機が出現。仕方がないのでジャンプゲートから逃げると、自機が逃げた瞬間にピタッと止まってPTNI本部へは出てこない。かといって海賊基地にも戻らない。どうするかはATFの人に「報・連・相」するべきかと、遅いペルセスで重たい足取りで「異教徒の終端」へ戻っている途中で、何故かストロングアームの戦艦3隻が海賊基地に近づき、その場にいたゼノン全部と海賊を全滅させた。で、海賊基地に戻っても、警告は受けるものの、もう敵は出てこず、無事にスキャン完了。

「異教徒の終端」へと戻って報告すると、パトロール巡回を命じられる。で、またレイピアを3機もらう。すぐにでも売りたいが、これと編隊を組まないとミッションが進まないので渋々、このレイピア3機といつも白タクで使っているサーベルと自機のペルセスで編隊を組んだ。
で、パトロールに出発と言われて僚機のサーベル2機と出発したものの、自機のペルセスが遅いので距離が離されてゆく。次のセクター(労働者の輪)でゼノンがいきなり出現したものの、自機が遅くて、現場に着く前に僚機と自分の他の戦闘機が始末してしまう。同様に次のセクター(こと座O)でもゼノンが出現。で、次はさっきのイベントでゼノンと海賊が出現した『ンヤナの隠れ家』へ行くのかと思いきや、逆方向の「宝箱」へ向かった。「宝箱」に入るやいなや「#deca」という未知の敵5機から襲撃を受けた。これは自機の火力を活かして3機撃墜。やっと戦果を上げた。
で、その未知の敵の機体の解析をするということになって、その輸送船を「異教徒の終端」から金星まで護衛するように申し付けられる。
ところが輸送艦は 160m/s なのに対して、護衛の隊長の機体は 69m/s しかなく、どんどん輸送艦から離れていくので、隊長を見捨てて護衛艦について行くことにした。
金星への立ち入りの許可は得ているとのことだったので、火星で商っている輸送艦を試しに金星に送ったら撃墜された。仕方がないので事前のセーブからロードしてやり直したものの、何かのワナじゃないかと勘ぐってしまう。
火星に着くとゼノンQという空母級の敵が出現して、戦闘機も出現して大混乱になった。自機では空母級など倒せないが、2機のゼノンMが単独行動を取っていたので、自機と、編隊を組んできた自分のサーベルの2対2で、これを撃破。その後もはぐれた敵の戦闘機を狙って、全部で、ゼノンM × 3機とゼノンL × 2機を撃墜。戦闘の評価は「ベテラン」まで上がった。見ていて分かったのは、自分が操作するとサーベルで、ゼノンM と1対1ならなんとか墜とせるけれども、自動だと確実に殺られてしまうらしい。ゼノンは最小構成でゼノンM × 2機 + ゼノンL × 1機 で出現しているため、この編隊に自動で防衛するには、最低でもサーベルが5機ほどなのではないかと。もちろん、サーベルは兵装が貧弱なので、同じM4クラスの別の勢力の戦闘機を買いますけど。
で、Terran最強の戦艦「オーサカ」が出てきてゼノンの母艦を撃墜。巻き添えを食らった輸送艦が落とした荷物の収集を、さっき死んだはずの輸送艦に収集させる。結局、シールドとミサイル数個を拾った。
で、金星に向かうと「ハプニングにも動じずに、よく使命を全うした」と言われる。つまり、火星で応戦せずに輸送艦に付いて行かなければならなかったようだ。そのことに対するペナルティはなかった。で、改良型の、ゲーム内で1機しか無い「アルゴン ディスカバリー」をもらった。これは正直ありがたい、が、パラニド製の戦闘機に乗っている自分が言うのもなんだけれども、ATFからアルゴン製の戦闘機を貰うことに違和感がある。編隊を組んでいる私のサーベルが金星のセクターに入っても何も言われなかったため、さっき死んだはずの火星の輸送艦を金星に入れてみると、何も問題がなかったので、金星でも輸送を始める。しかし、金星もすっからかんで弾頭工場があるだけだが、火星のミサイル工場と直で輸送できるようになるのでミサイル生産が滞る確率が少しだけ減ったと思いたい。
で、ふたたび「異教徒の終端」へと戻って上官に指示を仰ぐと、今度は「ネイサンの船旅」である人物に会うように言われる。「ネイサンの船旅」は「異教徒の終端」から5個目のセクターで、自分はもう少し先まで探索を終えているものの、結構遠い。さっき「アルゴン ディスカバリー」をもらったことから、もっと探索しろってことなのかなぁと思い、またシナリオを一旦止めて探索(&白タク業務)に勤しむこととした。

2017.12/3 追記

昨晩、かなり探索しまして、分かったことは、氷を含有している小惑星はほとんど無いということ。Terranのコロニーには水が必要で、その原料の氷がTerran外部にはほとんどないということは、Terranが外部に進出するのは困難だということです。

もう一つ気になったのは、海賊を撃墜した時に海賊のパイロットが散り際に「女王陛下のために!」と言った件。女王陛下といえばボロンという勢力のエリンシュア女王陛下のことだと思われるが何か意味があるのだろうか。

で、ストーリーイベントに戻ろうと思ったのですが、そういえば、これまでに4機のレイピアを受領してきたのだから、次のイベントに単機で向かうのは戦力的に足りてないんじゃないかと思い直し、「レジェンド ホーム」にあるOTAS社製のサーベルより少し上のクラスの「ソラーノ」という戦闘機を2機と、テラディ社製のレイピアと同クラスの「ケストレル」という戦闘機を3機購入。
で、「ネイサンの船旅」に向かったところ、ゼノンQという戦艦が居座っていたので撤退する。金星で貰った「アルゴン ディスカバリー」で偵察すると1機の「アルゴン エリート」が応戦している。「アルゴン エリート」は「ソラーノ」と同クラスだが、格段に速度が遅い。どっちにせよ戦闘機1機で戦艦を殺れるわけがない。それでも「アルゴン エリート」はバリアが強いためダメージはさほど受けないものの、ゼノンQのバリアはそれ以上なので全くダメージを与えられない。
しばらくするとアルゴン軍の重ケンタウルスという戦艦2隻がやって来た。これでなんとかなるかと思ったら、重ケンタウルスはスルーして「不毛の地」へ行ってしまった。ここで、そういえば「アルゴン エリート」となっているけれどもアルゴン軍じゃないのかも? と思って確認するとパイロットはパトリシア中尉となっているのでやっぱりアルゴン軍だよなと思った。
結局2時間以上膠着し、その間に私は白タク業務で30,000,000Cr以上稼いだのですが、どうやら最終的にはゼノンQはパトリシア中尉に気を取られているスキに背後からの宇宙ステーションの攻撃で沈んだらしい。
で、気を取り直して「ネイサンの船旅」へ向かうとパトリシア中尉から「遅かったな、ついて来い」と言われる。え〜ってことは、パトリシア中尉が死んでいたらイベントはどうなっていたのやら…。
パトリシア中尉曰く、「私はアルゴン軍に潜入したUSFのスパイで、もう一人とペアで潜入したが、彼はデータハッキング中にアルゴン軍に見つかって、アルゴンM148にある秘密基地に連れて行かれた」とのこと。アルゴンM148はこの「ネイサンの船旅」から「未知のセクター」を挟んだ2個先のセクターで、私も一度探索に入ったものの、アルゴン軍から「あなたを攻撃する口実を探しているところだ」という遠回しな警告を受けて退散した。いやいや「アルゴン連邦の英雄」を攻撃しちゃいかんだろ。
さらにパトリシア中尉曰く「いつも使っている情報屋にアルゴンM148と交易している奴がいるので、そいつに頼む」とのこと。情報屋は「ネイサンの船旅」からずいぶんと東にある「大取引所」にいるという。ちなみに「大取引所」はテラディ社が大取引所を作るつもりだったのだが隣がゼノンのセクターのためにたびたび攻撃を受けたことから実現に至っていないそうな。で、付いてい来いと言っているパトリシア中尉の戦闘機は 84m/s しかない。 自機の パラニド ペルセスは 162m/s、お供のソラーノは 210m/s である。お荷物なパトリシア中尉を見捨てて先に「大取引所」に着くとイベントが起こり、見捨てて来たはずのパトリシア中尉が突然現れる。そういうゲームなのだろう。
情報屋は「まさかタダって訳じゃないだろうな」という。そりゃそうだ。で「かつてのダチが海賊を始めて羽振りが良さそうなので邪魔してくれ」とのこと。まぁ海賊だし良いかということで、隣のセクターで海賊の輸送艦を積荷スキャンした後、撃破することに。もちろん、積荷スキャンソフトが必要。そして、積荷スキャンは一般人が行うと違法なのだが、ある程度の地位であれば警察権を購入でき、その場合はスキャンし放題である。ちなみにサブクエストで「違法ウェアを取り締まってくれ」という依頼があって、依頼を受けるとそのセクターの船をスキャンしまくらないといけないハメになる。で、既にテラディの警備セキュリティーライセンスは持っているので怪しい輸送船をスキャンし、海賊船と判明したものを撃破した。
情報屋のところに戻ると、貨物を用意したので運送屋のふりをして潜入しろとのこと。どうやら自前で、武装した輸送船を買う必要があるらしい。先々のことを考えて、スプリットのカイマン探鉱船を購入。
ところで、「ネイサンの船旅」と「アルゴンM148」の間の「未知のセクター」に敵がいて、かなり手こずった(というか死んだ)ので、自機以外の戦闘機を「未知のセクター」に送り込んだところ、カハークの偵察機がうようよいて、どうやら無限湧きするらしい。ここでテラディ製ケストレルを1機失った。自分も1回死んでいるので、やむなしか。
M148潜入用のカイマン探鉱船には「客室生命維持装置」がないと、奪い返したロバート大尉を運べないのでセットアップに時間がかかっている。その間に別のクエスト。こと座Oの隣の「宝箱」の北に「光のエリュシウム」という宗教団体「ゴナー」のセクターがあり、ゴナーの指導者いわく「ゴナーの寺院を建てているのだが、なぜか発注した建材が届かない」ので「鉱物 × 2,000 と シリコンウエハー × 200を届けてくれ」とのこと。私は受けたことがないけれども、実は、「鬱陶しいからゴナーの船を攻撃してくれ」という依頼をして来るモブキャラがたまにいるのだ。期限は切られていないのでチンタラと運ぶと、次は「鉱物 × 2,000 と テラディニウム × 1,250を届けてくれ」とのこと。テラディニウムは「大取引所」に工場があるけれども、ちょっと躊躇した。
そうこうしているうちにカイマン探鉱船の準備が整ったのだが、M148に入る口実が「テラディニウム × 200の搬入」のため、テラディニウムが必要である。なのでカイマン探鉱船で大取引所へ向かう。しかし、カイマン探鉱船をもってしても「1,250 + 200 = 1,450」のテラディニウムを一度には運べないため、1,250だけ先にゴナーに引き渡した。
するとゴナーの指導者は「貰ったテラディニウムは、『明るい富』にあるテラディニウム工場でテラディニウム板にしてもらったので受け取って来てくれ」と言う。「明るい富」は大取引所から2つ先のセクターである。カイマン探鉱船で、このテラディニウム板と、ストーリーイベント用のテラディニウム 200を運んで帰って来て、先にゴナーの指導者にテラディニウム板を渡すと、今度は「『光のエリュシウム』にテラディニウム工場を建ててくれ」という。いやいや、工場建てるだけなら別に構わないが、建てた工場は私のものになるため、維持や海賊などからの防衛を考えると、今はまだちょっと私の収入では受けれるミッションではないので後回しにする。

で、ようやくストーリーイベントに戻って、カイマン探鉱船でM148の前哨基地へ向かう。普通に前哨基地にドッキングするとどこからか現れたパトリシア中尉が前哨基地に潜入、ロバート大尉を奪回するもドックにたどり着けず、宇宙服だけ着て非常口から外に飛び出す。これを回収するのだが、二人は前哨基地の近くに浮いていて、カイマン探鉱船は図体がでかいので前哨基地に当たらないように操作するのがちょっと面倒だった。とりあえず二人を回収して、「異教徒の終端」の基地へ戻る。カイマン探鉱船は小惑星帯で探鉱の業務に当たらせる。元手がカイマン探鉱船だけのウハウハな事業である。
その後、ロバート大尉が「スプリットのジアース族かリュク族が怪しい」ので衛星を設置して監視するという。ジアース族のセクターは大取引所の北の「ゼノンセクター598」の北にあるが、ゼノンセクターを抜ける勇気はないため、いつものサーベルにロバート大尉を載せて、安全なセクターを通ってかなり遠回りでジアース族のセクターへ向かう。で、監視衛星は現地で調達するつもりだったのだが、僻地ゆえにその近辺では人工衛星の在庫が無かった。結局、13セクター戻った「シーズウエル」というセクターの衛星工場で2個買って、再びジアース族のセクターに戻って人工衛星を射出。が、必要な人工衛星は3個だったため、また13セクター戻って人工衛星を買う羽目に。で、人工衛星を設置したら、ロバート大尉が「輸送船をスキャンしろ」という。もちろん警察権が必要。なのだが、最初からスキャンしてたら人工衛星いらんやんと思う。スキャンするとジャンプドライブ部品というイベント専用の貨物を積んだ輸送船がいて、攻撃して輸送船を奪う。この時にスプリットの警察権が剥奪されるので、載っていた船に戻って警察権を買い直した。奪ったタンカーに載るとロバート大尉が「敵機は大型貨物船で組み立てられているのではないか」と言い、大型貨物船を探すと「エレファント」という貨物船が見つかる。出入り業者のふりをして近づくと、ロバート大尉が「追跡装置を付けるから逃げる準備をしておけ」という。エレファントにごくごく接近すると追跡装置設置のカウントダウンが始まり、100%になったところでエレファントとその護衛の#deca × 3機に攻撃されてゲームオーバー。
仕方がないので、警察権を買った時のセーブデータからやり直し。奪ったタンカーは隣のセクターの造船所で修理したものの、僻地ゆえにバリアの在庫がないので、6セクター戻った「ティカル族」の設備ドックでバリアを設置。その間にパラニド ペルセウス ×6機の編隊を作ってジアース族のセクターに送り込み、#deca × 3機を墜とすも、エレファントの反撃にあいパラニド ペルセウスを1機失う。
改修を終えた奪った貨物船でエレファントに近づき追跡装置を付けて一目散位逃げるがエレファントは追って来ない。そういえばエレファントはペルセウスも追いかけてこなかった。
2セクター逃げると「テラン オーディン」なる大型機がいる。「これ貰えるのか!」と先走ったがそれにはイシヤマ少佐が載っていて、自分は「サスーン」という機体を渡される。サスーンは、いつも通り速い敵に当てにくい残念な兵装である。これで、ジアース族のセクターの先にある「未知のセクター」に行けと言われる。この時点で奪った輸送船は造船所で売って、貰ったサスーンの速度を増強しておいた。未知のセクターに着くと、敵味方それぞれ30機づつの大戦闘が繰り広げられる。自分はいつも通りハグレた敵を各個撃破。2機目を墜とした時点でそれが最後の敵だったらしく、エレファントは絶望して自爆。
で、イシヤマ少佐が「科学者がいるかもしれないから探せ」と言う。探したけれども見つからない。が、まだ敵の戦闘機がいたので撃墜すると、中から科学者が出てきた。拾おうとすると「客室生命維持装置がありません」というエラーが出たので、いつものサーベルに乗り換えて、サスーンは造船所に売ってしまった。再び「未知のセクター」へ戻り、科学者を拾う。すると、その科学者を「月」へ移送しろとのこと。
月へ向かう間に、このゲームで最大の積載量を誇る「マンモス」を購入。もちろんエレファントより大きい。「PTNI本部」のテラディ造船所で「シリコン鉱山L」を購入し、遠隔で「小惑星帯」に工場を建てようとするも、コマンドがグレイアウトして実行できない。どうやら遠隔では無理で、直接建てないといけないらしい。
月に行く前に小惑星帯でシリコン鉱山Lを建設。私のマーキュリー輸送艦数隻が小惑星帯をカバーするセクター自動売買を行っているため、シリコン鉱山Lの燃料のエネルギーセルは放って置いても運ばれるんじゃないだろうかと思っていたけれどもそんなに甘くはなく、全く運ばれてこないので専属のマーキュリー輸送艦で買い付けさせる必要があった。

2017.12/9 追記

月に着くと、「しばらく月セクターの観光でもしてくれ」と言われる。月もすっからかんである。ふと下方を見ると、想定外の方向から輸送艦数隻がやって来るのが見えたため、何かあるのかと下方に行ってみると造船所があった。しかし、工場プラントは売っていない。
造船所を見つけた時点でイベントが進行。イシヤマ少佐いわく、拉致した科学者の話では#decaの技術はかつてテラフォーマーの技術開発をしていた人物に教わったとのこと。その人物はコールドスリープしていて最近目覚めたのではないかという。
で、火星へ行けと言われて火星に着くと、スキャバードという人員輸送艦をくれた。のだが、スピードが遅いのが気に食わなかったので即座に軍事基地に自動航行させると、イシヤマ少佐は「分かった、もう良い。私は先に月で待っている」とキレられた。が、「ビダル」というコルベット艦をくれた。ツンデレか!
ビダルと前回もらったサスーンでヴィダル・サスーンヴィダル・サスーンさんのお父さんはインド系イギリス人。インド系っていっても、おじいさん(ユダヤ系イギリス人)がインドに移住した時にインド系の名前に改名しただけのバリバリのユダヤ人だけどな!
そのビダルには14門の砲門が設置できるのだが1つも付いていなかったため、装備を揃えるのに時間が掛かった。また、貰ったスキャバードもジャンプドライブがなかったため、「レジェンドズ ホーム」のOTAS本部まで買い付けに行く必要があった。
装備を整えて月へ行くと、「アルドリン」というセクターに目的の人物がいる可能性が高いためジャンプドライブでジャンプするように言われる。ジャンプドライブの燃料に片道120セルのエネルギーセルが必要と言われて、用意していなかったので計240のエネルギーを買い足す。その間に他の宇宙船はアルドリンへワープしていった。
わたしは「ビダル」に載って、スキャバードには「付いて来い」を設定してジャンプしたのだが、スキャバードは自動でジャンプして来なかった。アルドリンに着くと、平和そうである。「総合食料工場」なる見慣れないステーションを調査しろと言われたので通信してみると、住民がご丁寧にも造船所の場所を教えてくれた。造船所にドッキングしていたら、「こっちに戦艦が向かってきたぞ!」と勝手にイベントが進行。おいおいと思いながらドッキングを解除すると、ゼノンが襲来。で、ゼノンを攻撃しようとすると弾切れである。どうやら私がビダルに設置した兵装は弾を持っていないと駄目なタイプだったらしい。仕方がないので逃げ回る。味方が敵を倒してくれた後、司令官から「スキャバードを与えるのでそれで敵の大型艦にマリーンを移乗させよ」と言われる。そういえば前に貰ったスキャバードを連れてくるのを忘れていた。なんかグダグダだが、おかげでもう1つおまけでスキャバードをもらえてラッキー!
何回かスキャバードで移乗にトライすると#decaの大型艦を奪うことが出来たが、それは私のものにはならなかった。
で、「アルドリンの大統領を地球に連れて行ってくれ」と言われる。ビダルには客室生命維持装置を積んでいなかったので、スキャバードに乗り換えて大統領御一行を迎え、ビダルは先にジャンプさせ、スキャバードには「未知のステーション」で速度アップの改造後、アルドリンの「エネルギー生産工場」でジャンプ用のエネルギーセルを買い足して、いざジャンプ!と思ったらジャンプドライブが積まれていない! そう言えば前にもらったスキャバードにもジャンプドライブがなかったし。
しばらく考えた後、ゼビロスというOTAS製の軍用輸送艦を既に購入していて、そのゼビロスにはOTAS本部でジャンプドライブを搭載してあったため、

  • いつものサーベル(ジャンプドライブ装着済み)をゼビロスに搭載
  • ゼビロスをアルドリンへワープさせる
  • ゼビロスからサーベルを出艦させ、サーベルとスキャバードを同じステーションにドッキングする
  • サーベルのジャンプドライブをスキャバードに移す
  • サーベルを再びゼビロスにドッキングさせて、ゼビロスをジャンプさせる
  • スキャバードでジャンプする

という手順でアルドリンから脱出した。
で、地球に向かうも、地球のセクターは自動航行がまったくあてにならない。手動でソロソロと進んで地球のトーラスというドッグにドッキングするとストーリー終了。いやいや、コールドスリープしていた人物は見つかってないし、なんにも解決してないんですけど!
で、地球に着いたものの、やっぱりTerranの宇宙ステーションのプラントは売っていない。散々(装備が微妙な)戦艦を貰ったのは感謝しているけど、どうしょうもないのでTerran領域内でArgonの宇宙ステーションを建てていく方針に切り替えた。

2017.12/10 追記

そんな訳で、自分のシリコン鉱山L(これはテラディ製)にArgon製のクリスタル工場Lを接続。ただし、最初の建設時は何も考えてなかったのでクリスタル工場の一部がジャンプゲートを突き抜ける配置にしてしまったものの、工場はさすがにジャンプしなかった。それではジャンプゲートを安全に使えないので、事前のセーブデータをロードして設置直しました。
ところが、このクリスタル工場の「カフーナステーキ」の消費量がヤバい。1サイクル(7分)当たり400のカフーナステーキを消費。1隻のマーキュリー輸送船で700強のカフーナステーキしか運べないので常にカフーナステーキ切れで、ほとんど稼働させられていない。ていうか1サイクル当たり400もカフーナステーキ(現在の相場は1つ56Cr)を消費するって、もしかして赤字?
Terran領内でArgonのステーションを建てていくという方針に無理があったかも、と思うも、安全のコストも馬鹿にならないと思い直し、方針は続行。ただし、赤字では意味がない。カフーナステーキを作るカフーナベーカリーLと牛牧場Lを接続してみる。が、クリスタル工場L 1つに対してカフーナベーカリー 1つでは供給が十分ではなかった。カフーナベーカリーLと牛牧場Lの比率は 1:1 でいい感じ。ただ、これで一応クリスタル工場が安定して動き出し、利益を上げ始めた。

2017.12/11 追記

「スケール プレート グリーン」というセクターに海賊が海賊基地を造っていたのですが、ゼノンPに破壊された。ストーリーの最初でゼノンと海賊が協力しているっていう話があったけど、あれは何だったんだろう。

2017.12/16 追記

宇宙マップを各種族で侵略し合うゲームだと勘違いしていたが、各種族の力を合わせて共通の敵ゼノンと闘うゲームだったと今更ながら気付いたのでリセットして最初からやり直すことにしました。
火星でレイピアを貰うところからストーリーを追わずに放浪の白タク業務プレイしています。。。

2017.12/25 追記

思った以上にゲームの進みが遅いのですが、昨日やっとこさでマンモスを購入し、再プレイ後初の宇宙ステーションとなる鉱山L(アルゴン製)を「南東クラウドベース(アルゴン)」に建設して運営を始めたのですが、収支はプラマイ0を推移して何時間経っても全然儲からない。「南東クラウドベース」近辺では「鉱石」の需要が満たされているためらしい。
このゲームの宇宙ステーションの経営はシビアで、ジャンジャン建てればジャンジャン儲かるというものではないらしい。鉱山Lを建てる前の、数日前のセーブデータからやり直すハメに。

2017.12/29 追記

再プレイ後初となる宇宙ステーションを、今度は「ロンカールの雲々(スプリット)」に「テラディアニウム製造工場L(テラディ製)」を建てて稼働させたところ、微妙に儲かっています。
自分の宇宙ステーションにドッキングすると「おかえりなさい」と言われるが、宇宙モノで「おかえりなさい」はトップをねらえ!を思い出して涙が出ちゃうから止めて欲しい。

2017.12/30 追記

年末年始はTVの特番が多くて、思っていたよりもゲームに時間を割けないもんなんですね。オールザッツ漫才(5時間)を編集するのに7時間かかって、その後チェックを兼ねて見直したら2時間以上かかって、10時間近く潰れました。
X3TCは一旦、小惑星帯に戻ったのちに、USFに出向して、「ンヤナの隠れ家」で暴れているゼノンLを無視して同時に出た海賊を追跡してたどり着いた海賊基地をスキャンした後、再び「異教徒の終端」へ戻ろうとしたら、まだ「ンヤナの隠れ家」でゼノンLが暴れていたが華麗にスルー。
「異教徒の終端」に戻るとレイピア3機を拝領して、一度編隊を組んだ後にすぐに売却。前回同様に、「異教徒の終端」→「労働者の輪」→「琴座O」と巡回するが、今回の自機は「創造の門口」というセクターで拾った「パラニド ペルセウス改良型」で、前回の「パラニド ペルセウス」の非売品カスタム版なので、200m/sの速度が出るため、敵が出現した時に矢面に立たされるが逃げ回る(ぉぃ
「琴座O」にいるときにゼノンP率いるゼノンの大群が押し寄せてきたため、手近な宇宙ステーションにドッキングして全滅するまで退避していると、「エクスターミネーター」というストーリー絡みの特別な戦闘機がいともたやすくゼノンに殺られていた。が、エクスターミネーターは 10分後にリスポーンしたので安心した。前回同様「宝箱」に着くと#decaの敵が出現した。これは出現位置が自機に近すぎるため3機撃墜した。戦闘の経験レベルが「初心者」に上昇した。
「異教徒の終端」にもどると、「異教徒の終端」から金星に輸送艦の護衛をするミッションが発生。前回同様、火星でゼノンJが出現したが、今回は華麗にスルー。金星に着いて「アルゴン 改良型ディスカバラー」を受領して火星に戻ると、まだゼノンがいるが、ゼノンに撃墜された味方が落とした積荷を拾うことを優先し、戦闘はしない。回収したアイテムを売って 1万Crほど儲かった。

2018.1/2 追記

年末年始はやっぱりTVの特番が多くて、ゲームに割ける時間が思っていたより少ないです。

ストーリーは本来なら「ネイサンの船旅」へパトリシア中尉に会いに行くところなのですが、中断してます。
代わりに「光のエリュシオン」へ行って、ゴナーの寺院建設のお手伝い。今回は自分のテラディアニウム工場があるので、テラディアニウムは購入せずに工場の在庫をゴナー寺院へ寄進した。

ネット上の情報を見ると、自分の戦闘レベルを上げると強い敵が出てくるという情報があったので、前回は「射手」まで上げてしまったものの、今回はなるべく上げないようにしていて、現状で「初心者」に抑えているのですが、前回見なかった「ゼノンK」が出てきてびっくりしてます。
また、今回は海賊と友好を保とうとしていまして、海賊は向こうから仕掛けてきた1隻だけしか倒さずに、かつ、海賊基地での依頼をそこそこ完遂してきたため、海賊基地にドッキングすると「相棒よ、ここは海賊基地だ。心から歓迎する」というメッセージが出るまでになったのですが、それでも、私の宇宙ステーションに海賊の ハザード × 1機 + ハリアー × 3機で攻撃を仕掛けてきやがった。これを遠隔で、ソラーノ × 3機で撃退。直後に海賊基地にドッキングすると、歓迎メッセージが出なくなりました。海賊の友好度を上げる意味は無いのか、それともまだ友好度が低いのか。

2018.1/6 追記

まだ年末年始に撮り溜めたTVの録画が消化しきれていないのですが、このゲームの中毒性が強すぎるのでプレイしてしまう。

ゴナーのミッションは「明るい富」までテラディニウム板を取りに行くことになったのですが、その途上でTerranのストーリーの方のパトリシア中尉と合流して「大取引所」の情報屋に会うというイベントをこなしました。で、「大取引所」の情報屋に隣のセクター「強欲の涙」にいる海賊の殲滅をお願いされるのですが、そのもう一つ先の「明るい富」で先にテラディニウム板を受け取って輸送船を「光のエリュシオン」へ自動航行させた後、「強欲の涙」に戻って怪しい輸送船をスキャンしました。本来であればスキャンして見つけた海賊の輸送船を沈めなければいけないのですが、今回は海賊と対立しないと決めているのでそのまま放置して自機も「光のエリュシオン」へ向かいました。
しばらくするとパトリシア中尉から「これでいいだろう」という通信が入ったので、どうやらテラディの軍隊が海賊の輸送船を沈めてくれたらしい。
その通信を無視して先に「光のエリュシオン」でテラディニウム板を引き渡した後、「大取引所」に戻ると、ゼノンPが暴れていてパトリシア中尉は消えていた。前回プレイでは見事にゼノンQの攻撃を耐えたパトリシア中尉だったが、ゼノンPにはかなわなかったらしい。
情報屋と通信するとパトリシア中尉の声はするものの、姿は表さなかった。
で、自分の宇宙ステーションの在庫からテラディニウム x 200を運んできて、「アルゴンM148」セクターの前哨基地に納入。たまに 💡マークを出しているNPCが「前哨基地を中立にしてやろうか」もしくは「前哨基地をハッキングしてやる」と持ちかけてくるのですが、前哨基地だけをハッキングしても「アルゴンM148」セクター内には他の宇宙ステーションがありますし、意味無いんじゃないかと思うのですが。
前哨基地にドッキング後に死んだはずのパトリシア中尉が前哨基地に潜入、バート大尉を奪還して宇宙空間へ脱出します。これを自動操縦「特殊:宇宙飛行士を回収」で回収(要:特殊コマンド)。
この後、パトリシア中尉とロバート大尉を「異教徒の終端」へ輸送するのですが、途中で「光のエリュシオン」にてゴナーのためにテラディ製テラディニウム工場を建設。前回プレイ時に、建てたテラディニウム工場は自分のもののままだと勘違いしていたのですが、ゴナーに接収されました。
「異教徒の終端」へ戻った後に、隣の「小惑星帯」で再びロバート大尉を載せて「ジアース一族」セクターに連れて行こうとしたところ、ゴナーのオサム師から「不毛の地でゴナーの長老の船が襲われているので助けて欲しい」という連絡が入ったので、ソラーノ × 3機 の編隊を差し向けたところ、ソラーノが「不毛の地」へ着く前にオサム師から「どこにいるんだ? 間一髪で助かった」という連絡が入った。で、ソラーノ × 3機はそのまま「不毛の地」に到着させてゴナーの船に自動操縦で追尾させておいたところ、再びオサム師からゴナーの船が襲われているという連絡が入ったため確認すると、確かに海賊の戦闘機がいるものの、ゴナーの船に全く攻撃していない。しばらく観ていると、結局アルゴン軍の戦闘機が海賊を排除し、オサム師からまたもや「間一髪で助かった」という連絡が入った。どうやらプレイヤーが自力で海賊を倒すまで繰り返すようだが、自機は「不毛の地」からどんどん遠ざかっている最中なのでちょっとウザい。

2018.1/7 追記

「ジアース一族」セクターに着いて、近隣のセクターに人工衛星を設置しました。ていうか、「ジアースの領地」には以前から人工衛星を設置してあったのですが、自力で設置しないとミッションクリアにならなかったので、既に設置してあった人工衛星を一旦拾い上げて、再度射出する必要がありました。
で、「ジアース一族」にもどってロバート大尉が怪しいと言う輸送艦をスキャンし、「ジャンプドライブ部品」を積んでいる輸送艦を攻撃して奪い、近くの造船所に自動操縦で送ろうとしたところ、最寄りの「幻想の海」ではゼノンQ様御一行が暴れていたため、少し遠い別の造船所に向かわせることに。
奪った輸送艦はかなり破損していたため速度がかなり低下しているので、時間潰しにゴナーから助けを求められている「不毛の地」へ行くことにしました。「不毛の地」からの救援要請に応えないと、その度にゴナーでの評判が落ちており、最終的に「信者」というレベルまで落ちていました。
「不毛の地」に着いてから先に到着させていた ソラーノ × 3機で海賊を退けると、これまで蓄積していたらしいゴナーのクエストが連続で発生するも、次々と勝手に解決していく。で、「不毛の地」で攻撃されていた船が海賊に乗っ取られた! というイベントが起こり、奪い返してほしいとのこと。自機はまだ「不毛の地」にいたため、奪われた「トゥルーライトシーカー」という船を追いかけて東方向へ。2セクター東に行った「ベルト・オブ・アギラール」というセクターで、そのセクターに本社がある「ジョンフェルコ」という会社の私兵が奪われた船の周りにいる海賊の船を全滅させたものの、奪われた船は無人のまま隣の「大取引所」へ移動して行く。結局、奪われた船は「大取引所」の中央で停止したため、「主張」して自分のものにした途端に、ゴナーからお礼の通信とともに「トゥルーライトシーカー」はゴナーに接収された。
ところが、その船に乗っていた偉い人は既にさらわれていたとのことで、怪しい海賊の船を尾行してほしいというミッションが発生。その海賊の船の情報を見ると「目的地: ガイアの星 海賊基地」となっている。大回りしながら先回りして「ガイアの星」へ向かう。途中、「ブリンガチン(駆逐艦)」を含む大量の海賊の戦艦とすれ違うも、日頃の行いが良いため水色表記がほとんどである。「ガイアの星」には2つの海賊基地があったが、1つは水色表記だったため一旦ドッキングすると、「相棒よ、ここは海賊基地だ。心から歓迎する」というメッセージが表示された。さっき「不毛の地」で2隻撃墜したのに友好度は落ちていないらしい。
ドッキングできる海賊基地の近くで停止したまま時間を潰して、追跡すべき海賊の船が来るのを待ち、やっと来たところで、もう一方の海賊基地へ向かう。もう一方の海賊基地に近づくと、「宇宙服を着て飛び出したので拾ってくれ!」というイベントが発生。海賊基地から宇宙服の人が飛び出したのと同時に海賊の戦闘機も数機出現。なんとか宇宙服の人を拾って、ジャンプドライブでジャンプして逃げました。この人を「光のエリュシオン」のゴナーの船に送り届けて、一旦ミッション終了。なお、先に海賊から奪い返した「トゥルーライトシーカー」はゴナーが「光のエリュシオン」まで運んだ後に、お礼として譲渡された。トゥルーライトシーカーはバリアが 200MJ × 2枚搭載可能で、輸送艦としては装備が厚め。しかも装備できるレーザー装備の種類が豊富で、速さもそこそこなので、ちょっと嬉しい。
で、ゴナーの偉い人は「海賊基地を破壊してくれ!」と猛り狂っている。自分以外の宇宙ステーションを手っ取り早く壊す方法は、同じ位置に自分の宇宙ステーションを建てることであるが、果たしてそれでミッション完了となるかは実際にやってみないと分からない。なお、一番安い宇宙ステーションはボロンのバイオガス工場Mで、224,636Crである。偵察機1機よりも安い。



*1:配当はない

CEGUI

正式名は"Crazy Eddie's GUI System"。"Crazy Eddie"はかつてアメリカにあった家電の安売りチェーン店で、NASDAQに上場していたこともあるそうな。
PythonおよびLua用のグラフィックのライブラリーらしい。
昨日、ここの開発チームにpull requestを出したらミスしまくって荒らしみたいなことになってしまった。反省している。

The following script installs CEGUI on OSX with Homebrew. You might need some other script which you find in my archive list page.

class Cegui < Formula
  desc "Crazy Eddie's GUI System Mk-2"
  homepage "http://cegui.org.uk/"
  url "https://downloads.sourceforge.net/project/crayzedsgui/CEGUI%20Mk-2/0.8/cegui-0.8.7.tar.bz2"
  sha256 "b351e8957716d9c170612c13559e49530ef911ae4bac2feeb2dacd70b430e518"

  option "with-python3", "Build with python3 instead of python2"

  depends_on "ccache" => :build
  depends_on "cmake" => :build
  depends_on "pkg-config" => :build
  depends_on "boost"
  depends_on "boost-python"
  depends_on "corona" => :optional
  depends_on "devil" => :optional
  depends_on "freeimage"
  depends_on "freetype"
  depends_on "fribidi"
  depends_on "gettext"
  depends_on "glew"
  depends_on "glm"
  depends_on "irrlicht"
  depends_on "lua"
  depends_on "minizip"
  depends_on "ois" => :optional
  depends_on "ogre" => :optional
  depends_on "pcre"
  depends_on :python if build.without? "python3"
  depends_on "python3" => :optional
  depends_on "sdl2_image"
  depends_on "silly" => :optional
  depends_on "tinyxml" => :optional
  depends_on "tolua++" => :optional
  depends_on "xerces-c" => :optional

  def install
    if build.with?("python3") && Formula["boost-python"].build.without?("python3")
      odie "Building with python3 required boost-python with \"--with-python3\""
    end
    python = (build.with?("python3") ? "python3": "python")
    python_ver = Language::Python.major_minor_version(python)
    python_executable = `which #{python}`.chomp
    ENV["PYTHONPATH"] = "#{lib}/python#{python_ver}/site-packages:#{Language::Python.homebrew_site_packages(version = python_ver)}"

    (buildpath/"OpenGLViewportTarget.add").write  <<~EOS

        template class CEGUI::OpenGLRenderTarget<CEGUI::RenderTarget>;
        template class CEGUI::OpenGLRenderTarget<CEGUI::TextureTarget>;

      EOS
    `cat OpenGLViewportTarget.add >> cegui/src/RendererModules/OpenGL/ViewportTarget.cpp`
    (buildpath/"IrrlichtTextureTarget.add").write  <<~EOS

        template class CEGUI::IrrlichtRenderTarget<CEGUI::RenderTarget>;
        template class CEGUI::IrrlichtRenderTarget<CEGUI::TextureTarget>;

      EOS
    `cat IrrlichtTextureTarget.add >> cegui/src/RendererModules/Irrlicht/TextureTarget.cpp`

    if build.with? "ogre"
      (buildpath/"OgreTextureTarget.add").write  <<~EOS

          template class CEGUI::OgreRenderTarget<CEGUI::RenderTarget>;
          template class CEGUI::OgreRenderTarget<CEGUI::TextureTarget>;

        EOS
      `cat OgreTextureTarget.add >> cegui/src/RendererModules/Ogre/TextureTarget.cpp`
    end

    args = std_cmake_args
    args << "-DPYTHON_EXECUTABLE=#{python_executable}" << "-DCEGUI_SAMPLES_ENABLED=FALSE" << "-DCEGUI_INSTALL_WITH_RPATH:BOOL=ON"
    args << "-DOGRE_LIB:FILEPATH=#{Formula["ogre"].opt_lib}/libOgreMain.dylib" if build.with? "ogre"
    system "cmake", ".", "-DCEGUI_APPLE_DYLIB_INSTALL_PATH:STRING=#{opt_lib}", *args
    if build.with? "python3"
      inreplace "cegui/src/ScriptModules/Python/bindings/CMakeFiles/PyCEGUI.dir/link.txt",
                "libboost_python-mt.dylib", "libboost_python3-mt.dylib"
      inreplace "cegui/src/ScriptModules/Python/bindings/CMakeFiles/PyCEGUIOpenGLRenderer.dir/link.txt",
                "libboost_python-mt.dylib", "libboost_python3-mt.dylib"
      inreplace "cegui/src/ScriptModules/Python/bindings/CMakeFiles/PyCEGUIOgreRenderer.dir/link.txt",
                "libboost_python-mt.dylib", "libboost_python3-mt.dylib" if build.with? "ogre"
      inreplace "cegui/src/ScriptModules/Python/bindings/cmake_install.cmake", "file(INSTALL DESTINATION \"/cegui-0.8\"",
                "file(INSTALL DESTINATION \"#{lib}/python#{python_ver}/site-packages/cegui-0.8\""
    end
    system "make", "install"
  end
end




GLESv1については結論から言うと、なんやかんやでEGLが必要らしい。
ソースファイルではGLES/glext.hにて定義されている glBindFramebufferOES というファンクションを利用しようとしているのですが、これがlibGLESv1_CM.dylib に実装されていないのです。

Undefined symbols for architecture x86_64:
  "_glBindFramebufferOES", referenced from:
      CEGUI::OpenGLESFBOTextureTarget::initializedFBOExtension() in FBOTextureTarget.cpp.o
  "_glBindRenderbufferOES", referenced from:
      CEGUI::OpenGLESFBOTextureTarget::initializedFBOExtension() in FBOTextureTarget.cpp.o
  "_glCheckFramebufferStatusOES", referenced from:
      CEGUI::OpenGLESFBOTextureTarget::initializedFBOExtension() in FBOTextureTarget.cpp.o
  "_glDeleteFramebuffersOES", referenced from:
      CEGUI::OpenGLESFBOTextureTarget::initializedFBOExtension() in FBOTextureTarget.cpp.o
  "_glDeleteRenderbuffersOES", referenced from:
      CEGUI::OpenGLESFBOTextureTarget::initializedFBOExtension() in FBOTextureTarget.cpp.o
  "_glFramebufferRenderbufferOES", referenced from:
      CEGUI::OpenGLESFBOTextureTarget::initializedFBOExtension() in FBOTextureTarget.cpp.o
  "_glFramebufferTexture2DOES", referenced from:
      CEGUI::OpenGLESFBOTextureTarget::initializedFBOExtension() in FBOTextureTarget.cpp.o
  "_glGenFramebuffersOES", referenced from:
      CEGUI::OpenGLESFBOTextureTarget::initializedFBOExtension() in FBOTextureTarget.cpp.o
  "_glGenRenderbuffersOES", referenced from:
      CEGUI::OpenGLESFBOTextureTarget::initializedFBOExtension() in FBOTextureTarget.cpp.o
  "_glGenerateMipmapOES", referenced from:
      CEGUI::OpenGLESFBOTextureTarget::initializedFBOExtension() in FBOTextureTarget.cpp.o
  "_glGetFramebufferAttachmentParameterivOES", referenced from:
      CEGUI::OpenGLESFBOTextureTarget::initializedFBOExtension() in FBOTextureTarget.cpp.o
  "_glGetRenderbufferParameterivOES", referenced from:
      CEGUI::OpenGLESFBOTextureTarget::initializedFBOExtension() in FBOTextureTarget.cpp.o
  "_glIsFramebufferOES", referenced from:
      CEGUI::OpenGLESFBOTextureTarget::initializedFBOExtension() in FBOTextureTarget.cpp.o
  "_glIsRenderbufferOES", referenced from:
      CEGUI::OpenGLESFBOTextureTarget::initializedFBOExtension() in FBOTextureTarget.cpp.o
  "_glRenderbufferStorageOES", referenced from:
      CEGUI::OpenGLESFBOTextureTarget::initializedFBOExtension() in FBOTextureTarget.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

どうやらiOSでは実装されているらしいのですが。PowerVR-SDKのlibEGLおよびlibGLESv1_CMにもこれらのシンボルは含まれてませんでした。
実装されていない機能が、どうしてヘッダーファイルに定義されているのやら。

2017.11/22 追記

toLua++をbuild出来たため、toLua++オプションを追加しました。

$ brew list cegui
/usr/local/Cellar/cegui/0.8.7/bin/toluappcegui-0.8
/usr/local/Cellar/cegui/0.8.7/include/cegui-0/ (289 files)
/usr/local/Cellar/cegui/0.8.7/lib/libCEGUIBase-0.dylib
/usr/local/Cellar/cegui/0.8.7/lib/libCEGUICommonDialogs-0.dylib
/usr/local/Cellar/cegui/0.8.7/lib/libCEGUIIrrlichtRenderer-0.dylib
/usr/local/Cellar/cegui/0.8.7/lib/libCEGUILuaScriptModule-0.dylib
/usr/local/Cellar/cegui/0.8.7/lib/libCEGUIOgreRenderer-0.dylib
/usr/local/Cellar/cegui/0.8.7/lib/cegui-0.8/ (10 files)
/usr/local/Cellar/cegui/0.8.7/lib/python3.6/ (2 files)
/usr/local/Cellar/cegui/0.8.7/share/cegui-0/ (116 files)

で、この toluappcegui-0.8 なのですが、

$ toluappcegui-0.8 -h

usage: tolua++ [options] input_file

Command line options are:
  -v       : print version information.
  -o  file : set output file; default is stdout.
  -H  file : create include file.
  -n  name : set package name; default is input file root name.
  -p       : parse only.
  -P       : parse and print structure information (for debug).
  -S       : disable support for c++ strings.
  -1       : substract 1 to operator[] index (for compatibility with tolua5).
  -L  file : run lua file (with dofile()) before doing anything.
  -D       : disable automatic exporting of destructors for classes that have
             constructors (for compatibility with tolua5)
  -W       : disable warnings for unsupported features (for compatibility
             with tolua5)
  -k       : produce LuaDoc API export to output instead
  -C       : disable cleanup of included lua code (for easier debugging)
  -E  value[=value] : add extra values to the luastate
  -t       : export a list of types asociates with the C++ typeid name
  -h       : print this message.
Should the input file be omitted, stdin is assumed;
in that case, the package name must be explicitly set.

Usageの項目が…。えっと…。これは…。

$ toluapp -h

usage: tolua++ [options] input_file

Command line options are:
  -v       : print version information.
  -o  file : set output file; default is stdout.
  -H  file : create include file.
  -n  name : set package name; default is input file root name.
  -p       : parse only.
  -P       : parse and print structure information (for debug).
  -S       : disable support for c++ strings.
  -1       : substract 1 to operator[] index (for compatibility with tolua5).
  -L  file : run lua file (with dofile()) before doing anything.
  -D       : disable automatic exporting of destructors for classes that have
             constructors (for compatibility with tolua5)
  -W       : disable warnings for unsupported features (for compatibility
             with tolua5)
  -C       : disable cleanup of included lua code (for easier debugging)
  -E  value[=value] : add extra values to the luastate
  -t       : export a list of types asociates with the C++ typeid name
  -q       : don't print warnings to the console
  -h       : print this message.
Should the input file be omitted, stdin is assumed;
in that case, the package name must be explicitly set.

丸パクリやないかい!

2017.11/23追記

OpenGLの件、Fixしました!

$ brew list cegui
/usr/local/Cellar/cegui/0.8.7/bin/toluappcegui-0.8
/usr/local/Cellar/cegui/0.8.7/include/cegui-0/ (312 files)
/usr/local/Cellar/cegui/0.8.7/lib/libCEGUIBase-0.dylib
/usr/local/Cellar/cegui/0.8.7/lib/libCEGUICommonDialogs-0.dylib
/usr/local/Cellar/cegui/0.8.7/lib/libCEGUIIrrlichtRenderer-0.dylib
/usr/local/Cellar/cegui/0.8.7/lib/libCEGUILuaScriptModule-0.dylib
/usr/local/Cellar/cegui/0.8.7/lib/libCEGUIOgreRenderer-0.dylib
/usr/local/Cellar/cegui/0.8.7/lib/libCEGUIOpenGLRenderer-0.dylib
/usr/local/Cellar/cegui/0.8.7/lib/cegui-0.8/ (10 files)
/usr/local/Cellar/cegui/0.8.7/lib/python3.6/ (3 files)
/usr/local/Cellar/cegui/0.8.7/share/cegui-0/ (116 files)





OIS

正式名は"Object Oriented Input System"。オブジェクト指向のinputデバイスのライブラリーということのようです。
このOISの公式ページが一昨日まで乗っ取られていかがわしい内容に書き換えられていたのと、いまでも怪しいファイルをダウンロードさせられる状態になっていることからググるな危険状態です。
また、Githubでも公式を装うforkデータが有ったりして、何がどうなっているのかよくわからない状態です。
このScriptが使っているのも多分中国人が勝手に改造したversionのようです。このFormulaに限らないことですが、ダウンロードしたファイルのHash値が違うというエラーが出た場合は速やかにダウンロードしたファイルを削除して下さい。

このOISのScriptで得られるライブラリーはCocoaしかサポートしておらず、API周り以外はほとんどMacのためのコードで構成されているということになっています。

The following script installs OIS(private custom ver.) on OSX with Homebrew.

class Ois < Formula
  desc "Object Oriented Input System"
  homepage "https://github.com/Kanma/OIS"
  url "https://github.com/Kanma/OIS/archive/1.4.tar.gz"
  sha256 "601d1afbfad2df18f33347a18055e577ee8eae46025a5aa99ef58d4dceeb6bc3"

  depends_on "cmake" => :build
  depends_on "xmake" => :build
  depends_on :x11

  resource "xmakecmake" do
    url "https://raw.githubusercontent.com/Kanma/XMake/master/XMake.cmake"
    sha256 "ced325d3d553ab829ebaf65b2167468e9c983f8ee6e2c2ee1173e58e87da7d51"
  end

  def install
    resource("xmakecmake").stage { (buildpath/"dependencies/XMake/").install "XMake.cmake"}
    args = std_cmake_args
    args << "-DXMAKE_BINARY_DIR=#{Formula["xmake"].opt_prefix}"
    mkdir "build" do
      system "cmake", "..", *std_cmake_args
      system "make"
    end
    lib.install Dir["build/lib/*"]
    (include/"OIS").install Dir["include/OIS/*.h"]
    (include/"OIS").install "include/OIS/mac"
  end
end




silly

昨日のcoronaと似たようなライブラリーである。
Homepageのアドレスから何となく察せられると思うけれども、CEGUIというpythonもしくはLuaスクリプト向けのグラフィックライブラリーのチームが開発している。どうやら従来はcoronaを利用していたが、coronaの開発が止まったらしいので独自に開発し始めたらしい。ただし、roadmap ではversion 0.2.0の構想も掲げられているが、なぜか途中で熱が冷めたようで、リリースされているのは version 0.1.0までである。coronaが開発は止まったもののメンテはされているからだろうか。
Sillyの最新のcommitのものはversion 0.1.0とAPIが異なる部分があり、肝心のCEGUIに使えない。このビルドはCEGUIに使えるものです。CEGUIのscriptはもう少しチェックしてから公開します。


The following script installs silly on OSX with Homebrew.

class Silly < Formula
  desc "Simple Image Loading LibrarY"
  homepage "http://cegui.org.uk/wiki/SILLY"
  url "https://bitbucket.org/cegui/silly/get/v0-1-0-RC2.tar.bz2"
  sha256 "fba53cb89d0e157fe7df791152e0f5a613aa8c49dd8a422b6004e88ceb012f87"
  version "0.1.0-RC2"

  depends_on "autoconf" => :build
  depends_on "automake" => :build
  depends_on "libtool" => :build
  depends_on "pkg-config" => :build
  depends_on "jpeg"
  depends_on "libpng"

  resource "PNGImageLoader" do
    url "https://bitbucket.org/cegui/silly/raw/a62bbae48e2288fa4493a38e338ca23706ee8a96/src/loaders/SILLYPNGImageLoader.cpp"
    sha256 "479b283d55f027331f441cb9b541c83c18f3167efc044cfce9d178ebca0774dc"
  end

  def install
    inreplace "bootstrap", "libtool", "glibtool"
    resource("PNGImageLoader").stage {(buildpath/"src/loaders").install "SILLYPNGImageLoader.cpp"}
    system "./bootstrap"
    system "./configure", "--disable-debug",
                          "--disable-dependency-tracking",
                          "--disable-silent-rules",
                          "--prefix=#{prefix}"
    system "make", "install"
  end
end




corona

主にTGAフォーマット形式の画像ファイルを扱うライブラリーらしい。最後のバージョンがリリースされてから10年以上経っているけれども、たまにメンテされているようで、今でも動くようだ。
付属のshell scriptの改行コードがことごとくWindowsのものになっているのでnkfで変換していますが、こういう時にまずnkfに頼ってしまうのは日本人だからだろう。
例によってTESTがありません。あってもsedを使ってしまっているからHomebrewのPRは通らないでしょう。

The following script installs corona on OSX with Homebrew.

class Corona < Formula
  desc "image reading/writing library for C++"
  homepage "http://corona.sourceforge.net/"
  url "https://downloads.sourceforge.net/project/corona/corona/1.0.2/corona-1.0.2-src.tar.bz2"
  sha256 "1b5da4a78ce54b3c342cc48b7a635c6f57f2a8e93920700f478978c81b6df0f5"

  depends_on "autoconf" => :build
  depends_on "automake" => :build
  depends_on "libtool" => :build
  depends_on "nkf" => :build
  depends_on "pkg-config" => :build
  depends_on "jpeg"
  depends_on "libpng"

  resource "OpenTGA" do
    url "https://sourceforge.net/p/corona/code/259/tree//trunk/corona/src/OpenTGA.cpp?format=raw"
    sha256 "67d5bf08b824407400dc8deab1fed2df38086451ed750d1c020366d5034b5f66"
  end
  resource "Convert" do
    url "https://sourceforge.net/p/corona/code/259/tree/trunk/corona/src/Convert.cpp?format=raw"
    sha256 "21e9624b6935180014e06f250736d673a8782dfb00ab63c8cab7a59fd167a136"
  end
  resource "SavePNG" do
    url "https://sourceforge.net/p/corona/code/258/tree//trunk/corona/src/SavePNG.cpp?format=raw"
    sha256 "6b28ebb27844177e955ca706c3996072040c9e030ddc9c9f95dc9e810a057dce"
  end
  resource "OpenPNG" do
    url "https://sourceforge.net/p/corona/code/256/tree//trunk/corona/src/OpenPNG.cpp?format=raw"
    sha256 "4d5c83821fa3c84d1e423412aa8ef5b65d876d6e2a3a003c26e7b0d21cb8f66f"
  end

  def install
    system "nkf", "--overwrite", "-Lu", "bootstrap"
    inreplace "bootstrap", "libtool", "glibtool"
    system "nkf", "--overwrite", "-Lu", "configure.in"
    system "nkf", "--overwrite", "-Lu", "corona-config.in"
    rm_f ["src/OpenTGA.cpp", "src/Convert.cpp", "src/SavePNG.cpp", "src/OpenPNG.cpp", "SConstruct"]
    resource("OpenTGA").stage{ (buildpath/"src").install "OpenTGA.cpp"}
    resource("Convert").stage{ (buildpath/"src").install "Convert.cpp"}
    resource("SavePNG").stage{ (buildpath/"src").install "SavePNG.cpp"}
    resource("OpenPNG").stage{ (buildpath/"src").install "OpenPNG.cpp"}
    system "./bootstrap"
    system "sed", "-i", "-e",'68,77s/$/\\\\/', "configure.in"
    system "./configure", "--disable-debug",
                          "--disable-dependency-tracking",
                          "--disable-silent-rules",
                          "--prefix=#{prefix}"
    system "make", "install"
  end
end




libmng

MNG(Multiple-image Network Graphics)ファイルを扱うライブラリーとのこと。MNGはPNGファイルフォーマットの画像を使ってアニメーション表示するフォーマットとのこと。
似たようなフォーマットにGIFがあるけれども、GIFは権利関係がややこしく、日本国内での個人のGIFファイルの作成及び公開(アップロード)は実はグレーゾーンである。商用のGIFは許可を得ないといけないハズ。
なお、URLに"devel"ってあるので、多分、HomebrewにPRを出しても採用されない。それ以前にいつも通りTestが無いですけど。

The following script installs libmng on OSX with Homebrew.

class Libmng < Formula
  desc "Library for Multiple-Image Network Graphics"
  homepage "https://sourceforge.net/projects/libmng/"
  url "https://downloads.sourceforge.net/project/libmng/libmng-devel/2.0.3/libmng-2.0.3.tar.xz"
  sha256 "4a462fdd48d4bc82c1d7a21106c8a18b62f8cc0042454323058e6da0dbb57dd3"

  depends_on "cmake" => :build
  depends_on "jpeg"
  depends_on "little-cms2"

  def install
    args = %w[--disable-dependency-tracking --disable-silent-rules --with-zlib=/usr]
    args << "--with-jpeg=#{Formula["little-cms2"].opt_prefix}"
    system "./configure", "--with-jpeg=#{Formula["jpeg"].opt_prefix}", "--prefix=#{prefix}", *args
    system "make", "install"
  end
end