PixelflutゲームTweet突然だがPixelflutというゲームを知っているか?Pixelflutとは百聞は一見にしかずだ。最初の10秒だけでいいから、まずはこれを見てくれ。Stuttgartvimeo.com見終わった?これはひとつのキャンバスにみんなで同時に絵を塗って遊ぶピクセルドローイングゲームだ。工夫すれば動画だって表現できる。用意されたキャンバスで「ピクセルに色を塗る」という原始的な制限のもとプログラムを書いて線や図形を描いて遊ぶものだ。これは平等に与えられたシンプルなプロトコルを利用してみんなで表現するアートでもあるんだ。上で動かすこともできる。プロジェクタなど大画面でやれば盛り上がること間違いなしだ。インストールできるマシンのみ。Pi上にPixelflutをインストールして遊んでみることにしたよ。遊ぶためには、Pixelflutがインストールされたマシンが必要だ。Pixelflutの実装はたくさんあるからお好みで選ぶといい。シンプルなプロトコルだから自分で実装してもいいね。Pi上で動かそうと、以下のGo言語で実装されたものを使うことにした。github.com/xaxes/pixelflut-raspiこれでインストールは完了した。次のコマンドで起動してみよう。./go/bin/pixelflut-raspi遊ぶための知識Pixelflutの遊び方を説明するよ。Pixelflutサーバとクライアントプログラムとのやりとりはソケット通信を使う。実装によってはヘルプの表示や指定したピクセルの色を取得するコマンドもあるみたいだ。それぞれ文字ベースでサーバに情報送る。NetcatのようなTCPを扱えるコマンドが利用できればすぐに試してみることができる。[ポート番号]以上が遊ぶための最低限必要な知識だ。ルールの一部として、クライアントプログラムの作成もゲームを楽しむための1つになっている。ここでは具体的なプログラムを載せるのはやめておくことにする。点、線、図形などを一通り楽しんだあとはきっと画像ファイルを表示させてみたくなるはずだ。最後に少しそのヒントになることを書いて終わろうとおもう。Pixelflutには1回の操作で1ピクセル描画することができる。これを利用して画像ファイルをピクセル単位で画素を取得し、それをサーバに送れば実装できそうだ。同じ要領で動画ファイルも、画像が複数集まったものと考えればPixelflut上で表現できるだろう。最後にこれは複数人で遊ぶゲームだということを忘れてはならない。描いたピクセルを他のプレーヤーが上書きしてしまうことだってある。お気に入りの画像を表示したかったら、何度もしつこく描きなおしたり、描く順番を工夫したりすることが必要だ。ここはプログラミングの腕の見せ所だ。.....え?サンプルとしてクライアントプログラムのソースコードが欲しい?OK。下のソースコードは、長さ100の赤い横線を引く例(bash)だ。[ポート番号]あとがき日本ではあまり紹介のない、Pixelflutの説明をした。この記事を書いている最中、大昔telnetコマンドでHTTPリクエストをサーバに送りHTTPを学んだことを思い出した。同時にそれは私にとっては味気のないものだったと記憶している。Pixelflutは簡単なプロトコルでグラフィカルな線や図形、画像を使い、クライアントプログラムとサーバ間のやり取りを体験できるものだ。それはもしかするとLOGO言語がクライアントプログラムとサーバの夢を見ているのかもしれない。この記事へたくさんのフレンドリーなレビューをしてくれた人たちがいた。それによって2つ良い体験ができた。1つ目はもちろん、レビューによってより分かりやすい記事になったこと。2つ目は「レビューされることは決して怖いことじゃないのだ」と私が強く再認識できたことだ。修正の自由を残してくれたり、良かった部分を含めてフィードバックをくれたり、そういった伝え方の工夫により常に前向きな気持ちで取り組めた。考えてみればレビューというのは、ときに必ず修正してほしい部分、回りくどい表現では相手に伝わらないことが往々にしてある。修正箇所や修正理由を淡々と書き連ねることはベーシックで安牌な方法だ。事実をただ伝えるだけでは、意図せず相手にネガティブな感情を与えてしまうことがあるんだ。昔の私がそうであったように、レビューという行為に極端に恐怖心をもっていたりすると益々レビューされることが苦手になってしまうんだ。いう認知の歪みみたいなものがあると、次第に失敗を恐れるようになり、なにも良いことはない。今回のレビュアーは、文字通り私に対してフレンドリーだった。そのおかげで終始、より良い記事にするということだけを考えて作業に集中にすることができた。youchanに感謝を伝えたい。Pi用のソースコードを紹介したけど、普通のPCで試したい場合は以下のソースコードもある。Cの実装が入っている。冒頭で紹介した動画もこれを使用しているみたいだ。r/placeこれで全部だ。最後まで読んでくれてありがとう。»ABOUT株式会社レトリバの技術ブログです。レトリバのリサーチャー及びエンジニアが分担して技術的な記事を載せていこうと思います。Inc.スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。