link もっと前
   2020年 5月 5日 -
      2020年 4月 26日  
link もっと後

link 未来から過去へ表示(*)
link 過去から未来へ表示

日々

link permalink

link 編集する

プレーヤー人口が増えるのは良いことだ

Splatoon 2 のガチマッチ(C ランク)の難易度が下がった気がします。

1〜2 か月前は、20kill 対 0kill で負けたり、1分でノックアウトされたり、超フルボッコで負けまくるのが当たり前で、すっかりやる気がなくなっていましたが、今日久しぶりにやったら一度も負けず、あっさり C+ ランクになりました。

アクションゲームの腕は 1か月やそこらで急に上達しないので、私が上達したというよりも、絶対勝てないおかしいレベルのプレーヤーとマッチする割合が減った、そんな感じです。

Stay Home とかゴールデンウイークとかで、Splatoon 2 のプレーヤー人口が盛り返して、初心者クラス(C-〜C+ ランクあたり)に合う人が増えたんじゃないかと推測しています。

最初からこのくらいの難易度だったら、ガチマッチ嫌いにならずに済んだんですけど、すっかりガチマッチ嫌いになってしまった(レギュラーマッチは好き)ので、もう遅いんだよな〜……。

[編集者: すずき]
[更新: 2020年 5月 6日 23:21]

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

link 編集する

C 言語のマクロ

C 言語のマクロによる置換を、循環参照させたらどうなるでしょう?

循環するマクロ定義

A B C D
#define A B
A B C D
#define B C
A B C D
#define C A
A B C D

結論から言うと問題ありません。下記のような結果になります。

循環するマクロ定義、置換結果

A B C D

B B C D

C C C D

A B C D

4つ目の結果は、置換前の A B C D と何も変わっていないように見えますが、実はそうではありません。下記のように定義するとわかります。

循環するマクロ定義、マクロによる置換結果を見やすくする

A B C D
#define A 1 B
A B C D 
#define B 2 C
A B C D 
#define C 3 A
A B C D
循環するマクロ定義、置換結果が見やすいはず

A B C D

1 B B C D

1 2 C 2 C C D

1 2 3 A 2 3 1 B 3 1 2 C D

4つ目の結果の「A」を例にとると、A -> B -> C -> A と 3回のマクロの置換が行われた結果、A に戻っているわけです。#define A B のマクロは 1度しか適用されないようです。

C 言語の仕様

C 言語の仕様(C11 final draft (N1570) - 6.10.3.4 Rescanning and further replacement の第 2項)を見ると、

2
If the name of the macro being replaced is found during this scan of the replacement list (not including the rest of the source file's preprocessing tokens), it is not replaced. Furthermore, if any nested replacements encounter the name of the macro being replaced, it is not replaced. These nonreplaced macro name preprocessing tokens are no longer available for further replacement even if they are later (re)examined in contexts in which that macro name preprocessing token would otherwise have been replaced.

(直訳)
2
置換されるマクロの名前が replacement list のスキャン中に見つかった場合(ソースファイルの残りの前処理トークンは含まれません)、そのマクロは置換されません。 さらに、入れ子になった置換が、置換されているマクロの名前に遭遇した場合、それは置換されません。 後にそのマクロ名の前処理トークンが置換されていたであろうコンテキストで(再)検査されても、これらの置換されていないマクロ名の前処理トークンはそれ以上の置換はできなくなります。

正直言って何言ってんだお前……?って感じがしますけども、平たく言うと同じマクロを 2回適用しない、ように読めます。

複雑版

下記のように同じマクロで何度も置換できそうなマクロを定義してみます。

循環するマクロ定義、より複雑版

#define A B C
#define B C A
#define C A B
A B C D
循環するマクロ定義、より複雑版、結果

A B A A C A B C B B A B C A C C B C D

1つ 1つのトークンがどのマクロで展開されているか図示します。


循環するマクロ定義、展開の様子

複雑に見えますが、どのトークンを見ても同じマクロを 2回適用されたものはないことがわかります。

関数型マクロの謎

しかし関数型マクロの場合は、不思議な挙動を示します。

循環する関数型マクロ定義

#define F(a) a G
#define G(a) a F(a)

F(7)(8)(9)
循環する関数型マクロ定義、結果


7 8 8 G(9)

展開の様子は下記のようになると思われますが、


循環する関数マクロ定義、展開の様子

どうして 7 8 8 G(9) で展開が終わるのかが良くわかりません……。マクロ F(a) を 2回適用しない、というルールならば、7 8 F(8)(9) で止まらなければおかしいように思いますが、結果を見るとなぜか F(8) も展開されています。

[編集者: すずき]
[更新: 2020年 5月 6日 23:04]

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

link 編集する

ThinkPad と追加の GPU

今、使ってるノート PC(ThinkPad E480 カスタムオーダー)には、Intel のグラフィクスと、Radeon RX 550 が搭載されています。

Radeon RX 550 はモバイル用としては結構強力で、主にゲームの時に助かっているのですが、Radeon を使ってゲームをしばらくやっていると、本体が触れないくらい熱くなり、しまいに熱暴走でクラッシュしてしまいます。

せっかくカスタムオーダーで追加したのに微妙な奴だな〜。

ドライバが挙動不審

この GPU はもうひとつ変なところがあって、デバイスマネージャで Radeon RX 550 を「無効」にして PC を再起動すると、冷却ファンが唸り続けます。

CPU 利用率は極めて低いままにも関わらず、冷却ファンが全力稼働しているので、ファンの制御がおかしくなっているように思います。GPU の負荷を勘違いしているのだろうか?

プロセスを片っ端から終了させても収まらなかったところをみると、恐らくドライバが変なところにハマっている?のでしょうか。

デバイスを有効にするか、有効にしたあとに再度無効にすれば、CPU ファンは静かになりますが、なんだか挙動不審ですよね……。

[編集者: すずき]
[更新: 2020年 5月 6日 23:40]

コメント一覧

  • hdk 
    デスクトップ用のNVIDIA Quadro FX 1400は電源投入時から冷却ファンが全開稼働で、グラフィックスドライバーが読み込まれる(Windowsの起動中画面が切り替わるとか、FreeBSDでプロプライエタリドライバーを入れたXサーバーが起動するとか)までそのままだったと思います。ノートPCでGPU用冷却ファンが別に搭載されているのかどうかは知りませんが、別に搭載されているなら似たような話がありそうですね。 
    (2020年05月07日 20:30:10)
  • すずき 
    結構、怖い制御に見えますね……。
    その世代の GeForce と Quadro って、ドライバがバグるとファンが回らなくなって、コアが焼けるやつでしたっけ? 
    (2020年05月08日 15:23:45)
  • すずき 
    ちょっと調べたところ、コアが焼けると騒ぎになった GPU Killing Driver が、
    GeForce/ION Driver 196.75
    というバージョンで、その世代の GPU は GeForce GTX 280 辺りでした。

    2004, NV40/41/45(130nm): GeForce 6800 GT: Quadro FX 1400
    2006, G71(90nm): GeForce 7900 GTX
    2007, G84(80nm): GeForce 8600 GT
    2008, G92(65nm): GeForce 9800 GTX
    2008, GT200(65nm): GeForce GTX 280

    Quadro FX 1400 は GeForce でいうと GeForce 6800 くらいなので、結構前ですね。前からこういう制御なのか……。怖い作りだなあ。 
    (2020年05月08日 15:43:30)
open/close この記事にコメントする



link permalink

link 編集する

Amazon でよくあること

Amazon でハンダごて一式を購入しました。

まず、ハンダが来ました。

次に、ハンダこて台、ハンダ吸い取り線が来ました。

肝心の、ハンダごてが来ません……(後日、ハンダごても届きました)。

Amazon は一括で注文できますが、発送元の違いで一括で発送されないことは良くあります。たまに不思議な順番で送られてきてちょっと面白いですよね。

メモ: 技術系の話は Facebook から転記しておくことにした。

[編集者: すずき]
[更新: 2020年 5月 6日 22:29]

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

link 編集する

Transport Fever 2 初めの一歩 - その 3

昨日(2020年 4月 29日の日記参照)に引き続き Transport Fever 2 の基本である、生産量について紹介します。画像をできるだけ使うようにしました。ゲームの雰囲気を感じてもらえたら嬉しいです。

生産量の概念は、私が最初に躓いたというか、一番訳の分からなかったところです。うまく説明できると良いんですけど。

生産施設と消費施設

Transport Fever 2 のフリープレイで出現する生産者、消費者は 5段階に分類できます。カテゴリの正式名がないため、私が適当に名付けています。間違っていたらごめんなさい。


生産施設と消費施設の相関図

図の見方を一応説明しておくと、食料加工プラントの場合、農場から「穀物」を 2つ運ぶと、1つの「食料」が生産される、という風に見ます。生産がダントツで面倒くさいのは「商品」ですね。

経路がシンプルな「穀物」→「食料」にも罠があります。施設の生産キャパシティは基本的に最大 400 ですが、なぜか農場だけ 200 しかありません。レベル最大の食料加工プラントで食料を 400 生産するには、穀物が 800 必要になりますから、農場 4つから穀物を運ばなければなりません。

ちなみに…、「製油所」が 2つ出てくるのは誤植ではありません。「製品」工場が「商品」を作るのも、「工場」と「プラント」が混ざっているのも誤植ではありません。Transport Fever 2 の日本語はポンコツなので、突っ込み出すとキリがないです。

中間、最終生産のレベル

中間と最終生産を担う工場にはレベルがあり、生産上限がレベルで決まります。レベルは各施設をクリックすると出てくる概要に表示されています。


製材所はレベル 1、森(一次生産)はレベルがない

ただまあ、工場のレベルを上げるぞ!!と思って上げることはあまりなくて「たくさん原料を運び込んで」「生産したものを全部消費」しているうちに、勝手に上がっていることが多いです。

生産と消費の条件

生産と消費が Transport Fever 2 で一番わかりにくい概念だと思います。生産施設は常に「必要とされた分」しか作りません。私は最初、この概念が全く分かりませんでした。

先日作った経路で説明しましょう。森から製材所への運送経路を 1つだけ作りました。生産(森)と消費(製材所)の関係はこうなります。


製材所と森の消費・生産の関係

基本的に消費側(製材所)の要求数 = 生産側(森)の生産数(2番目の「輸送」の数字)になります。正確に言えば、下記のロジックで決まります。

  • 板を作るのに、木材は 2つ必要 -- (A)
  • 消費側(製材所レベル 1)の生産上限は、板 200 個/年 -- (B)
  • 製材所は経路が繋がっている生産側(森)「全て」に「合計」(A) x (B) = 2 x 200 = 400 個/年の木材を要求
  • 森は要求された数(400 個/年)を満たす木材を生産

消費側は繋がっている生産側「全て」に要求するというのが、わかりにくいんですけど、結構大事です。

もし製材所レベル 1 に、森 A、森 Bを 2つ繋いだとすると、森 2つに対し「合計 400 の木材が要求」され、森の生産力が余ります。すると、森 A は 100、森 B は 300 のように分散して生産し始めます。

このダイアログの情報は難しい部類ですが、日本語が完全に本当にポンコツです、全く説明になっていません。特に「輸送」を違う意味で 2つ並べた人は何を考えているんでしょう?どう見てもおかしいでしょう??

路線の輸送力

これはわかりにくいというより、紛らわしい数字が表示されることが多いので、説明しておきます。トラック駅をクリックして、路線をクリックすると、路線の情報が表示されます。

ほとんど見ればわかる系の情報なのですが「割合」は注意が必要です。数字は路線の年間輸送力を意味しています。これもポンコツ翻訳のひとつですね……。

この路線は 400 の木材を森から製材所に運ぶために作ったことを思い出せば、400 前後の輸送力にしておくと無駄がないことが分かると思います。


路線の情報

路線のコースを変えたり、トラックの種類や数を変更すると、すぐに年間輸送力の数字が変化します。例えばこの路線だと、トラックを 1台から 12台にすると、400 くらいの値が表示されました。

しかしながら、この数字は実際の輸送力とかけ離れている場合があります。ある程度待つと、実情に近い値に補正されます。この補正がかなり劇的で、路線の変更直後は 400 だったのに、しばらく経つと 480 など大幅に増えたり、逆に激減したりすることが多々あり、気づかないうちに輸送力が不足したり、無駄になったりします。

ですから路線の輸送力を変更したときは、ちょっと時間をおいてから再チェックすることをお勧めします。

私の個人的な感覚では、トラックは最初の数字が低めに出る傾向(=後で増える)、鉄道と船舶は最初の数字が高めに出る(=後で減る)傾向があるように感じます。

[編集者: すずき]
[更新: 2020年 4月 30日 02:51]

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

link 編集する

Transport Fever 2 初めの一歩 - その 2

昨日(2020年 4月 28日の日記参照)に引き続き Transport Fever 2 の基本となる片道の輸送について紹介します。画像をできるだけ使うようにしました。ゲームの雰囲気を感じてもらえたら嬉しいです。

輸送する路線を作る

道路で繋いだだけでは貨物は輸送されません。路線を作成して、どこからどこへ輸送するか決めます。


路線の作成

「森(右下)」から「製材所(左上)」に木材を運びたいので、2つのトラック駅を路線に追加します。トラックでも何でもそうですが、輸送車両は「終点」までたどり着いたら、次は「始点」に戻ります。例えば A, B, C, D という経路を作ったら、A B C D A B C D ... という順に巡回します。


路線にトラック駅 2つを追加

今回は 2駅しかないピストン輸送ですので、始点と終点はどちらが先でも気にしなくて良いです。

トラックを配備する

最後にトラックを購入、路線に配備します。発着所をクリックするか、車両マネージャから発着所を選択します。大抵の場合は前者の方が楽です。


道路発着所

トラックを購入します。車両マネージャーから購入画面を出して、Opel Blitz 防水布トラックを購入します。目的の貨物(木材)が搭載できれば何でも良いです(Benz 製防水布トラック、Saurer C Type 防水布トラックなどでも大丈夫)。


トラックを購入

運送車両の種類によって、積めるものに制限がありますので、車両購入の際は「貨物の種類」をチェックしましょう。例えば Opel Blitz タンクトラックは石油や燃料のような液体しか積めず、木材を運ぶことはできません。

輸送手段即時性輸送力貨物の種類制限備考
トラック×〜〇×〜〇自由 時代が進むと性能が桁違いに上がる、街のマイカーに邪魔される
船舶 × △〜〇割と自由時代が進むと性能が上がる、石油系とその他に分かれていることが多い
鉄道 △〜〇△〜〇厳しい 時代が進むと性能が上がる
航空機 × 自由 使用可能になる年代が遅い

各輸送手段の違いは上記の通りです。トラックは 1850年代は遅いし輸送力も低いですが、時代が進むと割と万能になります(スピードが速く「すべての貨物」が積める)。ただし道路の他の車(マイカー、バス)により、邪魔される点には注意しないといけません。

個人的なオススメは、鉄道とか船舶とか癖の強いものに挑む前に、1950年(良いトラックが使える)開始で、トラックを使った輸送の仕方を色々試すことです。ストレスも少ないし、慣れるのも早いと思います。キャンペーンの最初の方をやってみるのも一興ですね。

輸送開始

購入したトラックを、先ほど作成した路線に配備すると、木材の輸送が開始されます。森の近くのトラック駅を眺めると、木材がどんどん積まれていく様子が見えるはずです。


トラック配備の手順

無事、車両の配備まで成功したら、こんな風になるはずです。


トラック配備の手順

上記はトラック 1台だと寂しいので、トラックを 10台ほど同じ路線に配備した状態です。せっせと働くトラックを眺めるのは楽しいですよね。

うまくいかない?

森のトラック駅に何もなく、トラックの積み荷がずっと空っぽの場合は、下記をチェックしてみてください。製材所側のトラック駅には何もないのが正しいです。

  • 施設と道路の接続ができていない
  • トラック駅が施設から遠すぎる

このゲームの特徴として「生産施設は、消費施設へ貨物の運送経路が確立するまで稼働しない」という点があります。さすが輸送ゲームらしい仕様ですね。

  • 施設間の道路を引く、もしこれがダメだと「路線が作成できない」「車がやたら遠回りする」
  • 施設と道路を繋げる、もしこれがダメだと「貨物がトラック駅に来ない」
  • トラック駅を道路に繋げる、もしこれがダメだと「路線が作成できない」
  • 適切な路線を作成する、もしこれがダメだと「トラックが配備できない(配備先が出てこない)」
  • 適切な路線にトラックを配備する、もしこれがダメだと「道路にトラックが出てこない」「何も運送されない」

今回やったことは、上記の 5つです。どれが欠けても生産施設は稼働しません。

[編集者: すずき]
[更新: 2020年 4月 30日 01:07]

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

link 編集する

Transport Fever 2 初めの一歩 - その 1

Transport Fever 2 の基本となる片道の輸送について紹介します。画像をできるだけ使うようにしました。ゲームの雰囲気を感じてもらえたら嬉しいです。

参考までにフリープレイの条件は、ヨーロッパ、温暖、1950年、難易度イージー、街の密度は中、産業の密度も中です。

輸送するターゲットを見つける

最初に時間を止めます。なぜかというとこのゲームの初期資金は借金だからで、ぼうっとしているだけで、利子をどんどん取られて資金がなくなります。世知辛いね……。

輸送する対象を探します。今回は「森(右下)」から「製材所(左上)」に木材を運びたいと思います。画面に両施設の位置関係を示します。


森(右下)と製材所(左上)

どの施設が何のアイテムを消費 or 生産するのか?については、矢印のアイコンを見るとわかります。薄いグレーの背景が消費、濃いグレーの背景が生産です。消費側はない場合もあります。例えば森であれば「木材」を生産し、製材所であれば「木材」から「板」を生産することが分かります。


森のアイコン、何も消費せず、木材を生産


製材所のアイコン、木材を消費(左側)して、板を生産(右側)

他の消費と生産の組み合わせについては、今回の本題ではないので割愛します。

道路を作ろう

木材はトラックで運びたいので、両施設を道路で結んで、トラックが行き来できるようにしなければなりません。既存の道路も使えますが、今回は道路を新設してみます。道路アイコンを選び、両施設の間にズドンと真っ直ぐ引きましょう。


道路建設の手順


道路を真っ直ぐ引いた

トラックが貨物をピックアップする場所「トラック駅」を建設します。駅へ引き込む道路がそっぽを向いていたら Shift + ドラッグで、回転させることができます。画像のように先ほど引いた道路とくっつくように近づけて建設してください。


トラック駅建設の手順

実はこれではダメで、施設から木材をトラック駅に持ってきてもらうためには、道路を施設に「接続」する必要があります。もう一度、道路建設アイコンを選び、道路を施設の近くまで引っぱると、施設にヒゲのような細い道路が表示されます。


道路を施設に接続

接続できたかどうか確認する簡単な方法は、付近のトラック駅をクリックすることです。もし道路の接続に成功していたら、トラック駅付近の施設が白く光り、失敗していたら光りません。道路が接続できていなければ、道路を引き直しましょう。


道路を施設に接続(成功)


道路を施設に接続(失敗)

道路が接続出来ていても、トラック駅が遠すぎても施設が光りません(=木材を持ってきてくれません)。その場合はトラック駅を配置しなおしましょう。

製材所の方も同様にトラック駅を建設して、道路を接続しましょう。うまくいっていれば、両施設のトラック駅をクリックすると、両施設とも白く光るはずです。


トラック駅建設&道路接続

トラックを購入するには「道路発着所」を建設し、トラックを走らせたい道路と繋げてある必要があります。つなげ方はトラック駅と同じです。


道路発着所建設の手順

続きは次回。

[編集者: すずき]
[更新: 2020年 4月 30日 01:07]

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
   2020年 5月 5日 -
      2020年 4月 26日  
link もっと後

管理用メニュー

link 記事を新規作成

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDF ファイル RSS 1.0
QR コード QR コード

最終更新: 5/31 01:18

カレンダー

<2020>
<<<05>>>
-----12
3456789
10111213141516
17181920212223
24252627282930
31------

最近のコメント 5件

  • link 20年05月02日
    すずき 「ちょっと調べたところ、コアが焼けると騒ぎ...」
    (更新:05/08 15:43)
  • link 20年05月02日
    すずき 「結構、怖い制御に見えますね&hellip...」
    (更新:05/08 15:23)
  • link 20年05月02日
    hdk 「デスクトップ用のNVIDIA Quadr...」
    (更新:05/07 20:30)
  • link 20年01月27日
    すずき 「詳細は調べていないので、コード中のコメン...」
    (更新:04/18 23:05)
  • link 20年01月27日
    superzeros 「少し気になったのでglibcの履歴を調べ...」
    (更新:04/16 21:07)

最近の記事 3件

link もっとみる
  • link 20年06月01日
    すずき 「[GCC を調べる - その 13-4 - ベクトル命令のオフ] ...」
    (更新:05/31 01:18)
  • link 20年05月31日
    すずき 「[GCC を調べる - その 13-3 - オフセット付きアド] ...」
    (更新:05/30 22:00)
  • link 20年05月30日
    すずき 「[GCC を調べる - その 13-2 - オフセット付きアド] ...」
    (更新:05/30 21:53)

こんてんつ

open/close wiki
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報