同一グローバルIPのマシンが、CS:GOのマルチプレイ鯖に繋がらないとき

リリースされて以来、日課のように、妻と一緒にCS:GOで遊んでいる私ですが、 最近同じサーバーに接続しようとすると失敗するようになってしまい、すごく困ってました。 色々調べてたんですが、解決策が見つかったので展開。

同じグローバルIPから繋がらないっていう特殊なケースなので、 あんまり他所の家庭では参考にならないかも知れませんね。。。

現象

  1. 片方がロビーに招待して、何かゲームモード選んでマッチを探す
  2. しばらくしてどっちか一人だけがサーバーに繋がって片方はロビーに取り残される
  3. 追いかけて後から入ろうとしても接続がタイムアウトする

原因・解決策

teamzone-gaming.com

要約するとポートが競合するから、LAN内でユニークになるように指定しろってことらしいです。

  1. SteamからCS:GOの起動オプションを開く
  2. 一台の起動オプションに+clientport 27001と入力して確定
  3. もう一台でも同じように起動オプションを開き+clientport 27002と入力して確定
  4. さらに複数台マシンがある場合はポート番号をインクリメントしていく(単に違ってれば良いっぽい)

何となくポートの競合か、あるいは不正対策の為にサーバーのロジックで同一グローバルIPを弾いてるのかなとか考えてたんですが、後者じゃなくて良かったです。そうじゃないと大会とか難しいですもんね。見た感じLANで繋いでるっぽいし。

不思議なのは記事を見る限り2015年3月時点で少なくともそういう仕様だったっぽいのに、今まで遊べてたことですね。。。誰か理由がわかれば教えてください。

日本語の記事が無かったんで書いてみました。 私のように困ってる誰かの助けになれば幸いです。

diffコマンドでディレクトリ同士の差分を取りたいけど、特定のパスを除外したい

eclipsesvnプラグイン使ってたりするとdiff使ったときに.svnフォルダが凄く邪魔。 とかそんなときありますよね。

そんなときは--exclude(-xでもいいらしい)に続いて、除外したいパスのパターンを入力する。 複数ある場合は1つずつ除外が必要?っぽい

$ diff -r --exclude ".svn" --exclude "*.png" {古いディレクトリ} {新しいディレクトリ}

結構限定的だけど忘れて毎回調べる羽目になってるのでメモっとく。

findコマンドでの検索時に、否定の条件を指定する

検索条件の前にエクスクラメーションマークをつける。

$ find . ! -name "*.log"

例えば一括でログファイルを消したいけど、今日のは残しておきたい場合は、以下のように指定すればよい。

$ find . ! -name "catalina.out.2014-10-26" -name "catalina.out.*" | xargs rm -rf

find + xargsは便利。