「OSS」タグアーカイブ

Never-Blink ウェブカメラ対戦型の「まばたき我慢」ゲーム

Never-Blink は、まばたきを我慢し合うゲームです。

サーバにつながった中からランダムな相手が決まり、その相手とwebカメラがついたブラウザ経由でにらめっこのように向き合います。

最初に持っているヒットポイントは、まばたきをするたびに減っていき、ゼロになると負け。

類似の先行例として、2017年にBBCが人気ドラマ「ドクター・フー」のプロモーションで短期公開した、“Don’t Blink”(まばたきするな)があるそうです。こちらは他人との対戦ではなく、ウェブカメラをみながらどれだけまばたきを我慢できるかというゲームだったよう。

ランダムにつながるというあたりは、一時期世界中で話題となった Chatroulette を思い出しますね。単にランダムにつなげるより、そこにゲームが有った方が楽しいという人はいるかもしれません。

ソースコードがGitHub に公開されていますが、今のバージョンは処理が重いそうで、どこかのサーバに載せて一般公開はできていないということ。自分でインストールした上で相手を探して遊ぶのはちょと大変かもしれませんね。

モバイルゲームとして手軽に遊べれば、そこそこ流行るかもしれません。

via Hacker News

metro-clojure – gitリポジトリで地下鉄路線図を作るClojure製ツール

gjhenrique/metro-clojure は、鉄道路線図をgitのコミット/ブランチログで再現するためのオープンソースツールです。

路線と路線に所属する駅名を並べた json ファイルが入力となります。サンプルとしてサンパウロとニューヨークのデータがついてきてるので、それを参考にします。


[
{
"name": "銀座線",
"stations": [
"渋谷",
"表参道",
"外苑前",
"青山一丁目",
"赤坂見附",
"溜池山王",
"虎ノ門",
"新橋",
"銀座",
"京橋",

データをツールに食わせると、git コマンド群を発行するシェルスクリプトを作ってくれます。


$ boot generate-git-commands -c tokyo -f tokyo.sh

大江戸線のような循環があると、git グラフが作れないためツールはエラーで止まります。そりゃそうですね。

都庁前の循環を外して再度挑戦するも、東京のいたるところの乗換駅でエラーが… あちらとこちらで乗り換えができれば、循環だらけにもなりますね。


# 渋谷 銀座線 半蔵門線 副都心線
git checkout --orphan "銀座線"
git commit --allow-empty -m "渋谷"
git branch -f "副都心線" HEAD
git branch -f "半蔵門線" HEAD
# 代々木上原 千代田線
git checkout --orphan "千代田線"
git commit --allow-empty -m "代々木上原"
# 代々木公園 千代田線
git commit --allow-empty -m "代々木公園"
# 明治神宮前 千代田線 副都心線
git merge --strategy=ours --allow-unrelated-histories --no-ff --commit -m "明治神宮前" 副都心線
git branch -f "副都心線" HEAD
# 北参道 副都心線
git checkout "副都心線"
git commit --allow-empty -m "北参道"
# 方南町 丸ノ内線分岐線
git checkout --orphan "丸ノ内線分岐線"
git commit --allow-empty -m "方南町"
# 中野富士見町 丸ノ内線分岐線
git commit --allow-empty -m "中野富士見町"
# 中野新橋 丸ノ内線分岐線

「赤坂見附-永田町」のような別名の乗換駅の同一化を諦め、さらにエラーを起こす乗換駅を同一にしないよう入力データを修正していって、やっとなんとかエラーを出さなくした結果のスクリプトを、新しい git レポジトリに突っ込むことで、部分的には正しいところもあるぐらいの、東京の地下鉄gitグラフ(東京メトロ+都営地下鉄)を作ってみました。

git log で見るとこんな感じ

東京の路線図は循環しすぎなので、使用例としてはあまり良くないかもしれませんね。

もともとパリの路線図をGitHub 上で再現した2015年の作品があり、metro-clojure はこのような作品を簡単に作れることを目指して制作されたようです。

このツールを使えば、地下鉄の路線図以外の何か身近な有向グラフを git グラフで表現することができますね。

via From metro connections to a git graph

GrandType – キータイプの間隔データを機械学習させ、ユーザーを特定するプロジェクト

GradTypeは、英文を入力する際のキータイピングの癖を使って、今誰がタイプしているのかを特定しようという実験プロジェクトです。

まず、GitHub で認証した状態で、出てくる英文を入力することを繰り返します。すべて小文字で良く、正しい文字とスペースキーを打った時しか先へは進みません。打ち間違えたとしても間違えた文字は入らないのでそのまま続けます。

この時、サービスの裏側ではキーと次のキーが打たれる間の時間を記録し、RNNで学習させているそうです。

文章のバリエーションはそれほど多くありません。数十回入力した後で、ログアウトし、ユーザーとして認識していない状態で同じように英文をタイプすると、

RNNでより「似ている」と判定されたユーザー5名が表示されます。

多数のユーザーが試しているためか、なかなか当ててくれませんでした。(一回は自分のユーザー名が当てられたのを見ましたが、スクリーンショットを撮っていませんでした)

実用的にはスペルを打ち間違えたり直したりするデータを使った方が、より個人の特定はしやすいだろうと思いますが、研究としてはキーとキーの間隔時間だけでどこまでやれるかというのを見ているようです。

匿名で入力できる、と思われているようなサイトにおいても、個人の癖を収集して人物の同定を行うなんてことも、より簡単にできるようになっていくかもしれませんね。

Hacker News では、それへの対策として、キータイプの癖を攪乱するというツールも紹介されていました。匿名個人の特定ではなく、認証にタイピングの癖を使うといった研究もあるようです。

ソースコードが公開されています。

via Hacker News

css-only-chat CSSだけで動くブラウザチャット

ケビン・クッチャさん(Kevin Kuchta)のkkuchta/css-only-chat は、JavaScript を使わない非同期ウェブチャットサーバーです。

二つ(以上)のブラウザからこのサーバに接続し、アルファベットをクリックしてメッセージを作り送信すると、同じサーバに接続した他のブラウザでも即時表示される、いわゆるブラウザチャットです。しかし面白いのは、このページで JavaScript は使われていないというところ。

送信側

CSS の :active 疑似クラスを使うことで、ある領域をクリックした際に、はじめて画像ファイルを読み込ませることができます。つまり、ボタンが押されたタイミングを画像ファイルの読み込みでサーバ側から検知できるということ。

「同じボタンが2度目押された時は(画像はもうブラウザ側にロード済なので)サーバはわからないのでは?」となりますが、たとえば “a””a” と押した時は、接続しっぱなしの状態で、元のボタンを隠し、新たに「”a”を押した」という情報を持った別の画像ファイル名を持つボタンを表示しているようです。これをすべてのボタンに対して行うことで、ボタンが持つ画像ファイルのパスが、過去のすべてのタイプ内容を保持することになります。

受信側

表示はどうやって更新してるのか、も解説されています。接続しっぱなしの状態で、これまで送った html が不要になったら、style タグを送って過去の要素を display:none で隠し、新たにページ内容を追記します。

これを、自身か他のブラウザから新たなデータが届くまで待機しながら繰り返しているということ。じゃあソースコードはとても長くなるのでは、と思って Chrome でソースを表示しようとしましたが、何も表示されません。Firefox では何千桁もある一行のソースコードを確認できました。

今のところデモサイトは用意されていないので、試すには自分で動かす必要があります。

via Hacker News

Gamedetect.io – ゲーム画面の画像からゲーム名を当てるサービス

GameDetect.io のフォームにビデオゲームの画面写真を与えると、JSON でそれがどのゲームに似ているかを返してくれます。

適当な画像をアップロードすると、以下のような形でゲームタイトルとそのゲームである確からしさを戻してきます。


{
"filename":"dragonquest5.jpg",
"predictions":[
{
"label":"stardew valley",
"probability":0.568226
},
{
"label":"the legend of zelda a link to the past",
"probability":0.15813187
},
{
"label":"super mario maker",
"probability":0.031073814
},
{
"label":"factorio",
"probability":0.027034273
},
{
"label":"don t starve together",
"probability":0.020903632
}
],
"speed_ms":1113
}

Tensorflow と Golang によって実装されており、学習データとしてはTwitch のゲーム配信画面をスクレイプしたものを使っています。ゲーム実況にはゲームのタイトル情報とゲーム画面があるので、これを正答として学習させ、モデルを作っているのですね。

そのような作りなので、回答で出てくる候補のゲームはTwitch で今最も多く中継されているゲームトップ100 からだけとなっています。(冒頭で試したドラクエ5 の画面では、Stardew Valley やゼルダなど画面の似ているものが出てしまっていますね。)

ブラウザで動くWindows 95風マインスイーパー

ブラウザで動くマインスイーパーですが、単にマインスイーパーをブラウザ上に実装するのではなく、なぜか Windows 95 を再現しそこでマインスイーパーを動かすというもの。

並んだアイコンから Minesweeper をダブルクリックしないとゲームが始まりません。

ソースコードもGitHubで公開されていて、今後はスタートメニューやウィンドウの移動、他のアプリケーションの追加など、Windows 95の再現度を上げる方向で頑張るそうです。

Windows 10 にはもうマインスイーパーは入ってないんですね。アプリとして”Microsoft Minesweeper”を無料で追加することは可能ですが、こちらはいろいろと今風に改良されたもののようです。

ブラウザを開けばあの懐かしいマインスイーパーが、Windows 95風のランチャーつきで楽しめる、ということで、ノスタルジックな需要があるのかもしれません。

via Hacker News