The Ascent「アセント」の設定言語を日本語にする

表題の通り、The Ascentを日本語にする方法は以下の通り。

  1. Steamのライブラリで「The Ascent」を開く
  2. 歯車アイコンから「プロパティ」を選択
  3. 「一般」タブが出てくるので、「起動オプション」に以下をコピー・アンド・ペーストで入力
  4. -culture="ja"

store.steampowered.com

 

一般的な手法である、ゲーム内のSettingからLanguageを切り替える、ということはできないので意外と引っかかると思って書きました。

Quantedaで日本語のテキスト分析をした結果をR markdownでPDF出力する際の文字化け(tofu含む)

1. 問題

Quantedaを使って日本語のテキストを分析した結果を、rmarkdownでまとめてpdfとして出力しようとしたところ、日本語の表示に問題が発生しました。 具体的には、日本語が、wordfishの結果をknitr::kable()を使って表として出力しようとした際に表示されなかったり、textplot_scale1d()でプロットしようとしたグラフの中で□□□と表示されてしまったりしました。□□□にはtofuという呼び名があるらしいです。 問題は、markdownで日本語を含むpdfを出力する問題と、ggplotで日本語を含むグラフを出力する問題の2点に切り分けられました。

f:id:Contiguous:20201206002041p:plain
日本語が□□□(tofu)になってしまっているwordfishの結果

1-1. ちなみに

私の問題はwordfishの結果をtextplot_scale1d()で出力しようとした際に発生したものでしたが、wordcloudでのフォント問題については、大家の方々によるきちんとした対処法が共有されています。

github.com

また、ここで扱われている問題は、この方が制作されたパッケージで解決することができると思われます。今回はRのバージョン的にパッケージをインストールできなかったのでグチャグチャな方法をとることになりました。

ill-identified.hatenablog.com

1-2. お断り

私はゆるふわRユーザーなので、謙遜ではなく本当に「私は雰囲気でRを使って」います。今回も、問題を解決するために色々ググって試したので、実際にどれが効いたのかを特定することが(面倒なのもあり)できませんでした。「この状態ならできた」という状態を共有いたしますので、ご自身で「これは不要だな」と思うところは削って使ってもらえればと思います。

2. 対処法

2-1. R markdown で日本語を含むpdfを出力する

いつも参考にさせてもらっている多くのwebサイトでは、日本語を含むpdfを出力する際のyamlヘッダとして以下のようなものを推奨しています。

output:
  pdf_document: 
    latex_engine: xelatex 
    number_sections: true
documentclass: bxjsarticle
header-includes: 
  - \usepackage{zxjatype} 
  - \usepackage[ipa]{zxjafont} 
geometry: no

私のPCでこれを走らせたところ

output:
  pdf_document: 
    latex_engine: xelatex 
    number_sections: true
documentclass: bxjsarticle
header-includes: 
  - \usepackage{zxjatype} 
  - \usepackage[ms]{zxjafont} 
geometry: no

というエラーが帰ってきてしまいました。IPA明朝フォントがないということだったので、DLして(\Windows\Fonts)にインストールしたり、Rにフォントを認識させてみたりしたものの症状は改善しませんでした。そこで以下のようにしたら上手くいきました。

output:
  pdf_document: 
    latex_engine: xelatex 
    number_sections: true
documentclass: bxjsarticle
header-includes: 
  - \usepackage{zxjatype} 
  - \usepackage[ipa]{zxjafont} 
geometry: no

具体的には latex - \usepackage[ms]{zxjafont}

この部分のipaをmsに変えています。私が何も理解せずにコードをコピペして使っていた証拠ですね。

2-2. Wordfishの結果をtextplot_scale1dで出力する際の□□□を解消する

quanteda内の r textplot_scale1d() などで、グラフ内の文字が□□□となってしまうときは

knitr::opts_chunk$set(dev = "cairo_pdf", dev.args = list(family = "ipaexg"))

これを最初につけるとggplotの中で日本語が使えるようになり、この問題も解決します。 textplot_scale1dってggplotで動いてたんですね。何も知らずに使っていました。

なお、それでもフォントがないと言われる場合は r extrafont::font_import() でフォントをDLできます。これには5分程度時間がかかります。

実はいろいろ試行錯誤しており、その跡も手元のコード内に残っているため、実際にどれが効いたのかがよくわかりません。少なくとも問題が解決したときに最後に試したのがこれだったというだけで、他に試したことも実は解決に寄与していて必要なのかもしれません。

unstructuredな記事を読んで頂きありがとうございました。いつか更新して整理するかもしれません。

Sandship 攻略豆知識

Sandship 攻略豆知識

ゲーム情報

 

Sandship: Crafting Factory

Sandship: Crafting Factory

  • Rockbite Games
  • ゲーム
  • 無料

 

1.Substance Generatorの挙動について

この項では、「Substance Generatorを設置したのにSubstanceの収支が改善しない」というあるあるな問題点の解決法について説明します。

結論から述べると、「Substance Generatorを設置した建物であるSubstance Harvesterを起動していない」ことが原因です。

f:id:Contiguous:20200809230904j:plain

研究レベル4以降で設置できるSubstance Generator。Substance Harvesterという建物内にしか設置できない。
1-1.建前

研究レベル4以降作れるようになるSubstance Generatorは、あらゆる原材料の供給元です。Substanceが枯渇すると、その不足具合に応じて生産効率にペナルティが発生しますので、常に収支をプラスにしておく必要があります。ここでいう原材料とは、Carbon, Copper Ore, Iron Oreなどの、いわゆる"Synthesizer"から出てくるすべてのものを指しています。

ゲームの最序盤を脱してしばらくすると、多くの生産ラインを作る必要ができてくるため多くのSynthesizerを設置する必要があり、結果としてSubstanceの消費量が多くなり、収支がマイナスになりがちです。

そこで、Substance GeneratorをSubstance Harvester内に設置して、Substanceの供給量を多くする必要があります。しかし、Substance Generatorを設置したのに収支が改善しないケースが散見されるため、その解決法を記しておきたいと思います。

1-2.解決法

Generatorを設置しても収支が改善しないのは、Generatorが起動していないからです。Generatorを設置する際は、いわゆるEditing modeというか、建物内のデバイスのは位置を変えるモードに入っており、デバイスはすべて止まったままの状態になります。これはベルトコンベアやプレス、ロボットアーム(Grabber)の状態を見てもわかることだと思います。そのまま建物(Building)の画面から出てしまうと、その建物内のデバイスはすべてその生産停止の状態のままになってしまいます。

そこで、解決方法は「単に建物内の装置を起動させれば良い」ということになります。言い換えると、Editing modeの右下の電源ボタンのようなスイッチを押せばよいということです。Substance Harvester内にはコンベアなどを設置できないため、建物全体が起動オフ状態なことに気づきづらく、結果としてGeneratorを設置したのみで起動させないまま「収支が改善しない」と思ってしまう減少が起こると思われます。

1-3.画像による解説

【段階1】問題が発生していない状態

【段階2】問題が発生した状態

【段階3】問題を解決した状態

の順に画像を掲示します。

詳しくは各画像のキャプションを参照してください。

f:id:Contiguous:20200809230909j:plain

【段階1】Substance Harvester内の画像。右下のスイッチが赤になっており、現在は内部のデバイスが起動状態にあることを示している。

f:id:Contiguous:20200809230921j:plain

【段階2】Harvester内の起動状態を切って、Editing modeに入った状態。Substanceの収支がマイナスになり、画像中央上部に赤い下向きの矢印が表示されている。左下の緑色のスイッチを押すことでHarvesterを起動できる。

f:id:Contiguous:20200809230917j:plain

【状態3】右下のスイッチを押して起動した状態。スイッチが赤色になっている。Substance収支が黒字になり、画像中央上部に緑の上向きの矢印が表示されている。

 

Star Traders: Frontiers攻略 入門編

概要

App Store や Steamで販売されているスペースSF RPGゲームであるStar Traders: Frontiersは、やりこみ要素の多い面白いゲームです。英語版wikiやsteam communityでの攻略情報や解説は非常時充実しており、開発者も積極的に疑問・質問に答えており、情報は多く提供されています。しかし、日本語での攻略サイトは現時点では存在せず、日本語情報は非常に少ないのが現状です。

ある程度慣れてしまえば自由度の高いプレイができるゲームですが、一番最初のステップを踏み出しにくい面もあると感じたので、簡単な始め方ガイド的な情報をまとめました。

さらなる情報を求める方は、英語版wikiやsteam communityでの議論を参照してください。

1. システム

このゲームでは、あなた(主人公)は宇宙を駆ける艦船を率いる「Star trader」となってお金を稼いだり、クルーを雇ったり、特定の派閥に与したり対立したりしながら、宇宙政治の激動の時代を生き抜くことになります。より単純に述べれば、これはオープンワールドサンドボックス型のSF RPGゲームです。

後述のように、宇宙には様々な派閥(Great HousesとSyndicatesなど)があり、外交、貿易、暗殺、諜報など様々な分野にわたって対立関係(または同盟関係)にあります。スタートレーダーは特定の派閥の傘下にいるわけではなく、派閥の繰り広げる抗争や統一運動などに揉まれながらも、多様なプレイをすることができます。

プレイスタイルの多様性はこのゲームの柱の一つになっていて、ある惑星で安く商品を買いほかの惑星で高く売るという典型的な商取引を行う貿易商(trader)になったり、禁輸商品の密輸業者(smuggler)になったり、海賊行為(pirate)やスパイ行為(spy)に手を染めたり、惑星を探検したり(explore)、宇宙人と戦ったりすることができます。

ただし、これらの手段はすべて「ジョブ」ではなく「行為」であり、排反のものではありません。例えば、ジョブとして貿易商(trader)を選択した人でも、禁輸品を運んで入れば密輸業者(smuggler)として働いていることになりますし、撃沈・無力化した相手船の積み荷を押収すれば、海賊(pirate)として働いていることになります。

2. 職業と能力 (Jobs and Talents)

この世界には32種類の職業(Job)があります。ジョブは「タレント」と「スキル」を提供する主要なソースとなります。

「タレント」は、戦闘中や航行中、作戦中などにおいてバフ/デバフを付与したり、自動発動して危機を回避したりするためのもので、RPGにおけるアクティブスキル・パッシブスキルの役割を果たします。

一方、「スキル」は、(名前がややこしいですが)一般のRPGにおけるスキルよいうよりは「練度」のような意味合いで用いられるスコアです。あなたはクルーたちを率いて艦船を飛ばしますが、艦船の運航には一定以上の練度(スキルスコア)が必要です。そして、クルーたちの各スキルスコアを集めたものが「スキルプール」と呼ばれ、その値が、艦船から必要とされるスコアをどの程度上回っているか(下回っているか)というのが、艦の能力をどれだけ引き出せるかという点にかかってきます。画面左(ios版)のメニューからShipを選択すると、「Officers, Crew, Pilot, Ship Ops, Gunnery ...」という項目と、それぞれに対応した棒グラフが出てきます。棒グラフの表す〇%という値は、船から要求されるスコアに対して、各乗組員の提供するスキル値の合計であるスキルプールがどのくらいあるかという度合いを示しています。

あなたは、部下となる士官(Officer)とクルー(Crew)を雇って艦船を飛ばすことになりますが、彼らは(そしてあなた自身も)それぞれジョブを持っています。艦長であるあなたと士官はそれぞれ3種類まで、クルーは1種類のみのジョブを持つことができます。

必須のタレントについて

タレントの組み合わせや試行錯誤はゲームに発展性をもたらし、面白い部分ですが、5章で説明する船の運航において、必須といってよいタレントがあります。多くはジョブレベル1などの低レベルでも獲得できるタレントなので、優先させたり、クールダウン期間を考えて重複してとったりするとよいと思います。

1. Automatically...で始まるタレントは、運行中の死亡/傷害事故や艦船へのダメージを未然に防いでくれます。これがないとマップでの移動もままならないといえるでしょう。

(これ以降の優先度は同率です。会敵した際に便利なスキルが多いです。)

2.(同率) "Stiff Salute" (Military Officer Lv1), "Forged Permit" (Smuggler Lv5), "Jettospm Cargo" (Merchant Lv5)...このサイトを見てください。ここからの引用です。

Steam Community :: Guide :: Talents - Don't miss these

 

ジョブのテンプレ

試行錯誤が面白いゲームですが、念のためテンプレ(独断と偏見に基づく)を上げるとするならば、最初のOfficerたちに与えるジョブは以下の通りがよいでしょう。最初のOfficerからは主人公は除いています。

 (工事中)

1. Doctor + Combat medic + Pistoler

2. Sniper + ExoScout + Bounty Hunter

その他=> smuggler, diplomat, spyを誰かがとるようにする。上記の2者は白兵戦に備えて、このコンビネーションを崩さないほうが良い(2のBounty Hunterの枠には諸説あり。)また、白兵戦での最前線役としては

3. Pistoler + Sword man + Assassin

が最適といわれる。(Assasinの枠については諸説あり)

 

 

3. 金策

工事中

4. ミッション

工事中

5. 航海(航宙)と艦船

航宙には危険が伴う

多くのこの手のゲーム(星系を結ぶ全体マップ内をジャンプによって移動しつつ、星系内でのローカルマップを通常機動で進むスペースオープンワールドゲーム)と異なり、このゲームでは、宇宙を移動することは本質的に危険なことであり、気を付けなければ命を失う(難易度による)ことにもつながります。

これらの要素を加味すれば、船での一度の移動は常に短距離であるべきです。一定以上の距離離れている目的地へ、一度も寄港することなしに到着するのは、燃料の制限からして不可能ですが、そうでなくても、こまめに惑星に寄港して燃料補給+船の修理+乗組員のケア(身体的+精神的)+給料の支払いを行う必要があります。具体的には、最低でもジャンプをするごとに、または星系マップを端から端まで移動するごとに補給が必要となります。

航宙中に気を付けるべきステータスは、すべて星系マップでの画面上側のバーにアイコンとして表示されます。これらのアイコンは原則として、船の異常を表すものですので、ここにアイコンが表示されないよう飛びましょう。(一番左と、場合によっては右から2番目3番目は表示されていて問題ないです。言い換えると、表示が赤/オレンジ出なければ問題ないです。)

 

航宙において気を付けるべきことは、具体的には以下の通りです。

1.燃料

宇宙で移動するのには燃料を消費します。マップ移動中には連続的に燃料を消費し、星系間のジャンプではまとまった量を一気に消費します。移動画面で下に表示される青/水色のバーが燃料の残量を示しています。燃料はほぼすべての惑星で補給できますが、そこを治める派閥との関係が極端に悪いと給油を断られます。その際は燃料補給ができる惑星の近くにある、関係悪化している派閥の惑星で「パトロール」を繰り返すことで評価を上げてから出直しましょう。

2.乗組員への身体的ダメージ

事故などによって乗組員が怪我をすることがあります。乗組員のタレントによって、このイベントを回避することができます。(イベントと言っていますがしょっちゅう起きることです。危機回避タレントについては2章を見てください。)

負傷した乗組員は、放置されるとモラルが下がり、反乱を起こしたり、スターポート(惑星に到着した際に入港する宇宙港)で脱走(退職)したりしてしまいます。

この値は、医療施設がある宇宙港で回復させましょう。医療施設はすべての惑星にあるわけではなく、仮にあったとしても、統治派閥との関係が少し悪いと、治療を断られます。医療施設は、派閥との関係が悪化した際に、真っ先にアクセスを断られる施設の一つです。

3.乗組員への精神的ダメージ

Morale Damageと呼ばれる精神的なダメージです。身体的ダメージと似た働きをします。回復のためには、宇宙港でのspice hallへのアクセスが必要です。

すべての惑星にはない点、派閥との一定以上の関係が必要な点も、身体的ダメージと同様です。

4.艦船へのダメージ

Ship componentへのダメージです。乗組員へのダメージと似ています。宇宙港で修理しましょう。派閥との関係性が悪いと修理を断られますが、修理工場へのアクセスは比較的寛容で、多少関係が悪くても問題ないです。

関係性が悪化するとともに、以下の順番でアクセスが拒否されていきます。良い => 悪い / 医療 => spice hall (モラル) => 修理 => 給油。

艦船とスキルプール

2章で述べたスキルプールですが、この値が100%あれば一応船を動かすことができるものの、200%が最適とされています。言い換えると、100%よりも150%あったほうが(例えば)艦船戦での回避率が上がるが、200%を超えた値は(カンスト判定となり)無駄になってしまうという意味です。船の要求するスキルプール値は、船の部品(Ship component)をアップグレードしたり変えたりするのに応じて変化するので、200%を超えてしまい無駄になってしまった分の才能は、船のアップグレードによって活用できるようになると覚えておきましょう。

入門編の域を超えますが、艦船戦では、相手との距離が4~5の範囲では"Navigation"スコアが、1~3の範囲では"Electronics"スコアが「回避性能」を決定します。

6. コンタクト(人脈)のユニークさ

このように多様なプレイスタイルを選べる本作ですが、ただ貿易をしたり海賊行為をしたりして金を稼ぐだけでは面白くありません。このゲームでは、Contactを通じてミッションを受注したり、普通では買えないアイテム(白兵戦での装備)を購入したり、人材を紹介してもらえたりします。

(以下工事中)

 

ゲーム情報

store.steampowered.com

Star Traders: Frontiers

Star Traders: Frontiers

  • Trese Brothers
  • ゲーム
  • ¥860

apps.apple.com

注記

1.本記事はまだすべての項目を書き切っていません。

2.画像等も今後追加していきます。

 

R言語を使ってTwitterのタイムライン上の画像をすべて保存する

概要

機械学習の素材にしたり、Twitter上で特定のジャンルの画像を集めたりする目的で、Twitterのタイムラインに流れてくる全ての画像をダウンロードできるコードをRで書きました。例えば、「このアカウントに流れてくる画像をすべて保存したいけれども、いちいちダウンロードするのは面倒」というときにお使いください。なおこのコードは、一日一回実行されることを前提に、当日投稿された画像のみを保存します。
R(studio)を日常的に使っている方は、rtweetの設定のみ行えば、そのままこのコードを使うことができると思います。
notchained.hatenablog.com

注意

rtweetパッケージはTwitterからapiを用いたデータ取得を行います。データの使用目的や手法などはTwitterのdeveloper policyに則っている必要があります。
developer.twitter.com

コード

コードは以下の通りです。
「アカウント名」「保存先のディレクトリ」の部分は自身の目的・環境に合わせて入力してください。

なお初めてRを使用する際にはこのコードも実行しておく必要があります。また、rtweetパッケージを最初に使う際にも設定が必要なようです。(詳細上述)

install.packages("rtweet")
install.packages("dplyr")
install.packages("stringr")
コード
library(rtweet)
library(tidyverse)
library(stringr)

#Set date with system
today <- Sys.Date()
today <- as.character(today)

#get timeline data
tweets <- get_timeline("アカウント名", n=10000, home = TRUE)

#sort tweets with media only, posted today
media <- tweets %>%
  filter(!is.na(media_expanded_url))
relevant <- media %>%
  filter(created_at >= today)

#Get media URLs
URLs <- relevant %>%
  select(ext_media_url)

#####################################################################
#Split URLs into 2 groups
URLs_1 <- URLs %>%
  filter(str_detect(ext_media_url, "^http"))
URLs_2 <- URLs %>%
  filter(str_detect(ext_media_url, "^c"))

##For group 2, convert charactor into list
length_2 <- nrow(URLs_2)
t <- as.character(URLs_2[1, "ext_media_url"])
t <- str_sub(t, start = 6)
t <- str_sub(t, end = -2)
t <- eval(parse(text = t))
df_2 <- as.data.frame(t)
for (i in 2:length_2) {
  t <- as.character(URLs_2[i, "ext_media_url"])
  t <- str_sub(t, start = 6)
  t <- str_sub(t, end = -2)
  t <- eval(parse(text = t))
  temp_frame <- as.data.frame(t)
  df_2 <- merge(df_2, temp_frame, all = T)
}
colnames(df_2) <- "ext_media_url"

#merge group 1 and 2
URLs_1 <- as.data.frame(URLs_1)
URLs <- rbind(URLs_1, df_2)
####################################################

length <- nrow(URLs)

for (i in 1:length) {
  temp <- as.character(URLs[i, "ext_media_url"])
  num <- paste("保存先のディレクトリ/",i,".jpg",sep="")
  filepath <- num
  download.file(temp, filepath, mode = "wb")
  Sys.sleep(1)
}

*R上級者はRでfor文を用いるのを嫌う傾向があります。

Javaが最新なのにGephiが起動できないとき

Javaが最新なのにGephiが起動できないとき

Gephiを起動しても、起動画面のポップアップしか表示されず、そのまま落ちてしまうということがありました。

結論のみ述べると、Gephiのバージョンの問題でした。

gephi.org

こちらから最新版をダウンロードしてください。Googleで"Gephi"と検索した際にトップヒットするページからはver 0.8がダウンロードできますが、こちらのリンクからはver 0.9.2がダウンロードできます。