https://github.com/dotnet/designs
.NETのデザインドキュメント置き場。誰でも追加可能でプルリクエストとIssueをフォルダを使って議論を行なっている。
- .\proposed フォルダーに未来のデザインについてPRを作成
- 同意が取れたものは accepted フォルダーにマージされる
https://github.com/dotnet/designs
.NETのデザインドキュメント置き場。誰でも追加可能でプルリクエストとIssueをフォルダを使って議論を行なっている。
http://www.sizecoding.org/wiki/Memories
サイズコーディングという分野があってできるだけ短いコードサイズで面白いものを作る世界のようだ。
環境はMSDOSが使われることが多く、NASM (it's free) and DOSBoxでテストするらしい。
https://blog.halide.cam/iphone-se-the-one-eyed-king-96713d65a3b1
iPhoneSEのディープラーニングを利用したポートレートモードについて紹介。
Depthを取得する“Portrait Effects Matte” APIがサードパーティにも使える。誤検知はあるけど人間以外にも使えそう。
Helide(この記事書いた人が作ってるアプリ)も搭載済み。
シングルバイナリで動くゲームエンジンの fude というのを作っている から他のゲームエンジンも触ってみることにした。兼ねてから興味のあったpico-8というファンタジーコンソールにトライ。
チュートリアルのリソースも豊富(PICO–8って何? - PICO–8ゲーム開発入門(1) | AUTOMATONをやった)で、ダウンロードしたゲームのソースコードやリソースも見れる(この辺りはBASICぽい)。pico-8で作られたゲームとしてはCelesteがおすすめ。
使ってみるとまずコードエディタ、リソースエディタ、実行環境が統合されているのが素晴らしい。これさえあれば他のツールを使わずにゲームが作れるというのは幸せなことだ。
ゲームのライセンスもアップロードした人が設定できるようになっており、CC4-BY-NC-SAなら再利用も可能と素晴らしい。しかし最大の魅力はシンプルなAPIとファンタージコンソールという設定によるリソースサイズの制限だろう。
命令表を見てもらうと分かるようにAPIは本当に必要なものだけが用意(徹底しておりluaの標準ライブラリも使えない)されており、名前空間も1つしかない、関数名も短く基本1単語だ(アンダーバーも無い)。標準エディタが昔の開発環境のように画面が小さいため、長い名前の関数だとそれだけで画面を占有してしまうためシンプルにならざるを得ない。
しかしそれが最初に学ぶときの敷居を大きく下げてくれる。最近のプログラム言語のAPIを全て覚えるのはほぼ不可能だと思うがpico-8なら人によっては可能だろう。ファンタジーコンソールによる制約が人間にとっても使いやすさを与えている。
制約は他にも面白い現象を与えており、私が特になるほどと思ったのはカートリッジサイズだ。pico-8 のプログラムやリソースサイズは最大値が決まっており、それなりの規模のゲームをpico-8でリリースしようとすると何らかの最適化が必要になる。しかし現在のコンピュータ環境では実はそんなことをしなくても本当は動く。当初私は命令をシンプルにするのはさておき、カートリッジサイズまで制約を設けるのは作る側にとって足かせになるのでは?と感じた。
しかし実際に触ってみるとこれが特に流通面で重要で、ゲームを遊んだり中身を覗く側にとってはなかなかにありがたいことだということが分かってくる。アップロードされているゲームをいくらダウンロードしても現在のコンピュータにとっては微々たるサイズなので安心してダウンロードすることができる。最近のゲームでありがちな「ダウンロードしてみたら思ったよりも大きくて他のソフト消さなくちゃ」みたいなことは起きない。
リソースの数やコードの行数にも制限があるため、頑張れば理解できるんじゃないか、と思える規模なのはとても重要なことだと思う。大規模なソフトウェアを読む場合はそのファイル構造を解き明かすだけで一苦労だがpico-8の場合はいきなりメインディッシュから取り組むことができる。
リソースエディタに関しても、絵は16色(色も固定)で8x8ドットのスプライトなので私のように絵心の無い人間でもなんとか書けそう、音楽も謎の波形エディタを触ると何となくピコピコ音が作れる。フォトショップを駆使した高解像の絵など書ける気がしない人でもやってみようと思わせてくれる。
あえて制作環境に制限を設けることでかえってクリエイティブが増幅する、参加できる人が増えるという現象は大変面白いと感じた。コンピュータの能力が人間を様々な分野で上回り続ける現代ではむしろ制限の無い制作環境など存在しなくなってしまうのかもしれない。
ongaeshi/fude: A single binary video game programming environment.
インストール不要でRubyスクリプトを書くだけで動くゲームエンジンを作ってみたくて作った。raylibというC言語で書かれたゲームエンジンを内部で使っている。とても軽量で raylib、mruby、raylib APIのmrubyへのバインディング全てでバイナリサイズが1.8MB! これならアプリケーション単位でfude.exeバイナリをgitレポジトリに置いても十分に運用できると思う。
自分がWindowsなのでWindowsバイナリを置いてしまっているけどraylibもmrubyも様々なプラットフォームで動くのでMacやLinux, Androidで動かすのもそこまで難しくないと思う。後raylibはemscriptenによるHTMLビルドもサポートしているようなので機会があれば試してみたい。
git clone して exe 実行すればすぐにサンプルが動く。
ホットリロードモードもあってfude main.rb
のようにファイル名指定、またはドラッグアンドドロップして起動した状態でファイルを編集すれば自動でホットリロードする。
raylibのAPIは大体移植したので https://github.com/raysan5/raylib/tree/master/examples にあるサンプルコードはある程度移植できるようになっているはず。 https://github.com/ongaeshi/fude/tree/master/examples にちょっと移植してある。
GitHub - ongaeshi/fude: A single binary video game programming environment.
mrubyでraylibの関数を一通りバインドして、ちょっとRuby風に書けるフレーバーを足したもの。mrubyだけどmruby-requireは入れてあるので、requireもできる。
大量のスプライトを出すデモ。フルruby、5000スプライトで26FPS位。raylib高速だわー。https://t.co/Ok2wCn7mTo #raylib #ruby #fude pic.twitter.com/VWY43IPr86
— おんがえし (@ongaeshi) 2019年11月5日
やっぱり多重スクロールは格好いい https://t.co/gcUUnlnryq #raylib #ruby #fude pic.twitter.com/OjksUHtKEW
— おんがえし (@ongaeshi) 2019年10月31日
適当に画像ファイル用意すればなんでも3D空間に置けるのは便利 pic.twitter.com/Ue7XOPJv7M
— おんがえし (@ongaeshi) 2019年10月29日
まだまだ道半ばだけど60%位のAPIはカバーできたはず。レポジトリをチェックアウトすれば実行バイナリも一緒に振ってくるので、main.rbをいじればすぐにいろいろ書けます。