かまたまいず

技術的なことと、PCゲーム

Unityに関する記事を集めてくるサイト "Unicle" を作りました

Unityに関する記事を集めてくるサイトを作ったのでそのご報告です。

f:id:tenmihi:20190206225908p:plain:w200

作った動機

毎日フロントエンドを主軸にした幅広い技術系の話題を拾うのに[menthas]をよく使ってたんですが、Unityに関しては特にそういったサイトが見当たらなくて毎日はてぶを見たりTwitterから流れてくる情報を追ってました。

もちろんそれで事足りると言えばそうなんですが、Unityに関する記事が流れてくる1本のストリームがあればこれからUnityについて日々情報を取り入れたい人もそのサイトだけ見てれば情報を追えるようになるので良さそうかなって思いもあって今回のWebサイトを作りました。

Webサイトとリポジトリ

(🌟 もし、よろしければスターください 🌟)

Webサイトの説明

1日2回くらいの頻度で、はてなブックマークとUnityに関して情報を発信している特定のブログから記事を集めてきます。 拾ってくる記事の種類も数もそれほど多くはないので、特にタグ分けなどはしてません。

仕組みについて

利用した技術

以下を利用して動いています

Backend

  • node.js(serverless)
    • typescript

Frontend

  • Vue.js

Firebaseの各サービス

  • Hosting
  • Cloud Functions
  • FireStore

その他

Cloud Functionに記事を取ってくる関数を登録しておいて、それをcron-jobで1日2回決まった時間に回します。 とってきた記事をFirestoreに突っ込んであげておいて、フロント側から突っ込まれた記事を取ってくるfetch apiを叩いて表示するという感じです。

今回の技術の中でもcron-jobが個人的に一番ありがたみを感じました。

記事の選定

実装を見てもらえればわかるんですが、ある種のアルゴリズムによって記事を選定して取ってきてるわけではなく、はてなブックマークを検索したページにスクレイピングをかけているのと特定のブログのRSSを取得して取ってきてるだけです。

本当は特に役に立つとか話題になっている記事だけ取ってこれるような素晴らしいアルゴリズムが思いつけばいいんですが、Unityの記事の時点でかなり対象が絞られていて緩めに集めてきて流すのでもいいのではないかと思ってこの選定方法になっています。

もし良さそうな選定方法・アルゴリズムがあればコメントください!

今後について

フロント・バックエンド共にかなり簡素に作っていて、デザインもかなり適当です。 都度各所を見直してちょっとずつブラッシュアップできればなって思ってます。

あと、ampとかpwaとか気になる技術の実験場にしていこうかなとも考えてます。

Escape From Tarkov を始めたて

はじめたてでルールとかゲーム進行についてつかみにくいところがあったのでメモ

Raidのルール

  • 選んだマップのどこかからスポーンして、決められたexit pointからの脱出を目指す
  • プレイヤーとAIが入り混じってマップ上に存在する
  • 脱出箇所はマップ上に複数存在するが、マップに入るたびに有効な脱出経路が変わる
    • だいたい複数個用意されている
    • いつでもどの脱出経路から脱出できるかは確認することができる
    • "??:??:??"の表記のある脱出ポイントは確率で有効、もしくはお金を使わなければ脱出できないポイント

ScavとPMCについて

Raidの開始時にScavとPMCが選べる

Scav

  • 最初からランダムで選ばれた装備を持った状態でスポーン、ただし脱出しようが死のうが経験値が入らない(獲得経験値の表記は出る)
  • 脱出できれば得られたアイテムを(PMCで脱出したときと同じように)Stashに移すことができる
  • 10分くらいのクールタイムが存在する
  • Scavを同士討ちすると、そのマッチング内ではScavと敵対する

PMC

  • こちらが自分のキャラ
  • 持って入ったアイテムでスポーンできる、経験値ももちろん入る
  • Scavとは違って何も持って入らなければナイフ一本でマップにほっぽりだされることになる

覚えておくといいキー

ここに書いてるのはすべてデフォルトキーバインド

[LeftAlt + T] 現在の残弾数を確認する

  • カチャッとマガジンを外して確認してくれる
  • 全弾装填、半分付近、半分以下とかで表される

[O + O] 残り時間とExit pointの表示

  • Oをすばやく2回入力する
  • マップにスポーンして初っ端表示されるやつを再表示する

特に有益なアイテム

アーマー

  • 当たり前だけどこれがあるだけで受けるダメージがぜんぜん違う
  • 最初は店売りしてるの買いづらかったりするので、scavがもってるのを手に入れるのが早そう

ComTac2

  • ヘッドホンみたいなやつ
  • 足音なんかを聞こえやすくしてくれるので、どこから敵が近づいてきているかわかりやすくなって生存率が上がる

参考になった動画

たけしたかしさんの動画がいくつか参考になった (動画自体が丁寧な作り & 公開が最近なのでわかりやすいので始めたての人にもオススメ)

infinifactoryのススメ

こんにちはtenmihiです。

この記事はプログラマーにオススメしたいゲーム紹介 Advent Calendar 2018 #3です。
前回は dennougorilla さんのゲーム紹介でした。

プログラマーにオススメするゲームということで私はinfinifactoryをオススメします。

Infinifactoryってこんなゲーム

本ゲームは、工場のコンベア加工作業を作ってブロックを加工・運搬するパズルゲームです。
Factorioのコンベアを用いた加工プロセスの組み立て + マインクラフトのようなボクセルサンドボックスを組み合わせたようなゲームとなっています。
ちなみにInfinifactoryの開発元はSpaceChemやSHENZHEN I/Oなども手がけているZachtronicsです。

f:id:tenmihi:20181202010950j:plain
ミサイル加工プロセス

ここがオススメ

  1. 他のユーザーの答えと自分の答えの差が分かるので最適化がアツい
  2. ストーリーがパズルを解く目標になる

他のユーザーの答えと自分の答えの差が分かるので最適化がアツい

ユーザーの数だけ答えがあるようなパズルゲームなので、当然答えによっては効率(速度、必要ブロック数)の良し悪しに違いが出ます。 この効率を表すパラメータが全ユーザーの答えをもとに統計されており、クリア時にその統計結果と比較してくれます。

f:id:tenmihi:20181202101745j:plain
cycles, blocks, footprintsの3つが比較できる

自分の答えがユーザー平均以下か、それとも上位に食い込むような素晴らしい答えかどうかが分かるわけです。 こういうところに競プロっぽさを感じるので、ハマる人はハマるんじゃないでしょうか?

また、Steamのコミュニティ作品にgifで自分の答えや加工プロセスを貼ってるユーザーもいます。 見てみると「なるほど」「よく考えついたな」の連続なのでこれもまた面白いです。

ストーリーがパズルを解くモチベにつながる

割とこの手のゲーム、面白くてもただパズルを解いていく単調さから飽きてしまうものも多いです。 その点本作は(軽いですが)ストーリーが存在するので、それがパズルを解くモチベにも繋がります。 (プログラマーというよりは全ユーザーへのオススメ理由です)

ストーリーを少し説明すると、主人公はエイリアンに使われている人間です。エイリアンから命令されたステージを解いていきます。 ところどころステージには失敗した他の人間(先人)の方々がいて、そのボイスログを聞くことができます。

f:id:tenmihi:20181202010857j:plain
コンテナの下敷きになって絶命した先人

この他にも単調にパズルをこなしていくだけだと思っているとおや?っという展開になっていきます。 自分もまだエンディングは拝めていないのでワクワクしながらパズルを解いてます。

おわりに

以上、短いですがInfinifactoryのオススメでした。

私はまだプレイ時間は8時間ほど。エイリアンから与えられた課題をひととおりクリアしたくらいなので先は長いといったところでしょうか。
Steam Workshopにも対応しているようで、まだまだ時間を溶かすことができそうです。

明日のプログラマーにオススメしたいゲーム紹介 Advent Calendar 2018 #3 記事はfal_rndさんです、よろしくお願いします。

【SCUM】マップとロケーション

SCUMのマップとマップに点在するロケーションについてです。

引用元
Steam Community :: Guide :: Scum Map w/ Towns, Police Stations, Points of Interest & More! https://steamuserimages-a.akamaihd.net/ugc/958592684336006559/0DE7CEC75220F21D4070F580F4C89C0DC7046825/

ゲーム内で閲覧できるマップに各ロケーションを書き入れたものが上の画像になります。

マップの説明

  • 白色文字で書かれているのが街
  • 水色文字で書かれているのが警察署が存在する街
  • オレンジ文字で書かれているのがPOI(特定のロケーション)
    • ダムや刑務所などユニークなロケーション
  • 赤点が地下ミリタリーバンカーが存在するロケーション
  • 薄い黒線で囲まれた正方形が1km四方なので、マップは12km四方

北東の地下ミリタリーバンカーに行ってみた

バンカーの外はMechがうろついてますが入ってしまえば安全です。 バンカー内は食料・武器ともに豊富で安定して揃えることができました。

是非、マップを参考に足を運んでみてはいかかでしょうか?

f:id:tenmihi:20180901234257j:plain

【SCUM】視野(FOV)を広げる

SCUMで視野(FOV)を広げる方法です

引用元
Increasing fov through .ini : SCUMgame

設定ファイルを開く

C:\Users\ユーザー名\AppData\Local\SCUM\Saved\Config\WindowsNoEditor に存在する Engine.iniを適当なテキストエディタで開きます。

AppData(隠しフォルダについて)

ご存知かと思いますがAppDataフォルダはデフォルトで隠しフォルダ扱いされているので、隠しフォルダも表示するように設定しておかないと見えません。

pc-karuma.net

設定ファイルを編集する

Engine.iniの最後に次の2行を付け加えて保存します。

[/script/engine.localplayer]
AspectRatioAxisConstraint=AspectRatio_MaintainYFOV

f:id:tenmihi:20180901231826p:plain

保存後にSCUMを起動するとディスプレイの大きさに沿ってFOVが調整されるようになり(?) 以前とは広い視野でプレイできるようになっていると思います

設定前

f:id:tenmihi:20180901231952j:plain

設定後

f:id:tenmihi:20180901232003j:plain

【SCUM】止血の方法、料理のやり方など基本的な遊び方について

steamで配信中のサバイバルゲーム「SCUM」で止血の方法、料理のやり方など基本的な遊び方についてです。

引用元
Little fAQ guide : SCUMgame https://i.imgur.com/SYHB3Qq.jpg

止血の方法

石のナイフでもなんでもいいので刃物を使うことで衣服をぼろきれ(rag)にすることができます。

手順は、服と刃物を左クリックで選択したあとに服を右クリックしてメニューを表示させ「Cut Into Rags」でぼろきれを作れます。

作ったボロ布を右クリックしてメニューを表示させ「Patch Wounds」で止血ができます。

着火の方法

止血のときと同様、着火したい対象(たき火など)と着火用のアイテムを選択した後に右クリックのメニューから「Light Fire」で火をつけることができます。

料理のやり方

お好みの材料で串(Small Skewer With Meat)を作ります。

着火の方法で火をつけたたき火と串を選択して、たき火を右クリックしてメニューを表示させ「Cook」で料理を始めます。

食べ物の耐久度について

食べ物には耐久度があります。

料理に使った串を見てみるとアイテムの下に緑の線またはオレンジ、赤の線が出ていると思いますがこれが耐久度になります。

耐久度が赤になると傷んでしまって食べれない状態になります。

缶の開け方

ほとんどの近接武器で缶を開けることができます。(なので、缶切りを用意せずとも缶を開けることができます)

開けたい缶詰と近接武器を選択したあと、缶詰を右クリックしてメニューを表示させ「Open」で缶詰を開けることができます。

DiscordにTwitchの配信を通知する「Couch Bot」の導入と設定

ゴール

  • 特定のTwitchチャンネルの配信開始をDiscordで通知する

前提

  • 通知したいDiscordサーバーの管理者権限をもっている
    Couch Bot招待済みで,BotコマンドのAdmin権限が付与されれば管理者でなくても設定はできます

導入手順

Couch BotをDiscordのサーバーに招待する

couchbot.ioから"GET COUCHBOT TODAY"をクリックして,Discordのサーバーを選んで招待する
招待できたら,テキストチャットで!cb pingして帰ってきたらOK f:id:tenmihi:20170903185724p:plain

設定

Admin権限の付与(サーバー管理者以外)

Bot Command List · dawgeth/CouchBot Wiki · GitHub
ここに記載のあるコマンドはCouch BotのAdmin権限がないと実行できないので,サーバーの管理者に!cb admin add @DiscordUsernameでadminリストに追加してもらいましょう.
!cb admin listで追加されていることが確認できればOK

ストリームの登録

!cb twitch add CHANNELで通知したいTwitchのチャンネルを設定できます
CHANNELには通知したいTwitchチャンネルのURLのhttps://www.twitch.tv/hogehogeでいうhogehogeの部分を指定します
!cb streamer listで追加されていればOK

通知の設定

通知を流すチャンネル

!cb channel live #DISCORDCHANNELNAMEで配信開始の通知をどのチャンネルに流すか設定できます
通常のテキストチャットと分けたい人は#livestreamとか新しいテキストチャンネル作って流すといいかもしれません

配信開始の通知を流すかどうか

!cb allow live true / falseで配信開始の通知を流すかどうか切り替えられます

通知でメンションを飛ばすかどうか

!cb allow mention true/falseでメンションを飛ばすかどうか切り替えられます
設定したチャンネルに@everyoneで飛んでくので注意

設定できたら

登録したTwitchチャンネルで配信が始まった際に,こんな風に通知が来れば成功
f:id:tenmihi:20170903185900p:plain

その他

Twitchだけでなく,YoutubeやMixerなどとも連携できます
詳しくはGithubの方にコマンドリストがあるのでこちらも参考に

github.com

よいDiscordライフを