- 90s.dev は Webベースで動作する新しいゲームメーカーAPIで、90年代スタイルのGUIアプリ制作体験を提供する
- このプラットフォームは 直接的なゲームエンジンやゲームメーカーではなく、ゲーム、ゲームエンジン、ゲーム制作ツールを作るためのAPIを提供する
- HTML Canvasベース、320x180画面、WebGL2対応、Web Workerによるセキュリティと性能の確保が特徴
- TypeScript-first SDK とさまざまな言語の wasm モジュールのインポート対応により、高速で拡張性の高いプロトタイピングが可能
- ユーザーは独自のアプリを作って GitHub または NPM で共有または読み込みでき、開発コミュニティとの協業と拡張性の追求を目的としている
90s.dev 公開の意義
- 90s.dev は Web で動作する新しい形のゲームメーカーAPIプラットフォーム
- 90年代スタイルの GUIアプリ制作環境 を提供し、ゲーム、ゲームエンジン、そしてゲームメーカー用ツール生成のためのAPIを特徴とする
- 目的は、誰もが HTML Canvas 上で ピクセルアート、スプライト、マップなどのゲーム用アセットやツール を簡単に作って共有できるエコシステムを形成すること
主な特徴とビジョン
プラットフォーム基本紹介
- 90s.dev は ブラウザで実行され、320x180(16:9)解像度でWebウィンドウを埋める画面を持つ
- すべてのアプリは Web Worker 環境 で実行され、より高いセキュリティと性能を確保
- WebGL2 オフスクリーンキャンバス により最大60fpsでゲームを動作させられる
- GitHub と NPM にホストされたアプリモジュール を自由に読み込み、配布できる
- VSCode に親和的な TypeScript SDK により高速なプロトタイピングを支援
- WebAssembly(wasm) としてビルドされたさまざまな言語モジュールとの互換性を備える
基本提供アプリ
- 標準で ピクセルアート、スプライト制作ツール、マップエディター など、ゲームアセット制作向けの基本アプリを提供
- 音響および音楽編集ツールはまだ未提供だが、誰でも自分で開発して公開・共有可能
- 作成したアプリやツールは iframe やリンク であらゆるユーザーに共有可能
着想と差別化要素
参考にしたゲーム開発ツール
- pico8: ミニマリズム志向、単一言語対応
- tic80: pico8 の複数の制約を解除
- love2d: 外部IDEが必要
- picotron: OSアーキテクチャを導入
- 90s.dev はメタ的な pico8 であり、TypeScript を導入した love2d、または垂直的な拡張に焦点を当てた tic80 に近い
GUIの革新と技術的な詳細
レイアウトシステム
- 手動配置やリサイズの煩雑さ を減らすため、シンプルでありながら強力な自動レイアウトシステムを実装
- ビュー(API)が画面を直接描画し、子ビューのツリー構造 を活用する
Ref システム
- ビューのプロパティ(サイズ、子要素、背景色など)を watchable pointer(ref)を通じて管理
- すべてのプロパティに参照オブジェクト(ref)を付与し、プロパティ変更を自動検知して反映
- 既存の React/Vue の ref とは完全に別設計
Composites(複合ビューの概念)
- JSX で文字列タグ(小文字)と値タグ(大文字)を反転し、実装と使用の分離を強化
- 抽象ビューをグローバルテーブルに登録し、システムの他の部分から自由に活用
- 例: colorpicker ビュー はデフォルト実装を提供するが、開発者が望むスタイルに置き換え可能
- GUIアプリ開発において 高い柔軟性と拡張性 を提供
アプリ配布とコミュニティ協業
アプリ配布方式の変化
- 従来は独自データベースベースの
net/ 共有ドライブを使用
- 最近は NPM/GitHub から CDN 経由で 直接モジュールをホストして取り込むことをサポート
- 例:
/os/fs/ghb/someuser/project@1.0.0/some/file.js
- Service Worker の活用により、多様なソースの読み込みメカニズムを完成
参加と協業
- OS的なデザインにより、必須アプリ(基本アプリ)以外のコミュニティアプリ開発を奨励
- イシュートラッカー、フォーラム、Wiki(いずれも GitHub repo)を通じてコミュニケーションと協業を支援
アプリ共有
- アプリ共有は
/os/#app 形式のリンクで可能
- コミュニティ中心で アプリ、ライブラリ、アセットの自由な制作と拡散 を目指す
結論と方向性
- 90s.dev はゲームメーカーのエコシステムそのものを 設計し定義するAPIプラットフォーム
- 誰でも簡単に自作アプリを制作、配布、活用できる 拡張型Webゲーム制作環境 を目指す
- コミュニティ協力とオープンプラットフォームの哲学に基づく 未来志向のゲーム開発ツール
2件のコメント
ゲームエンジン自体がどうなのか気になりますね
Hacker Newsのコメント
ある2月の日、午前2時に目が覚めてそのままコーディングを始めた体験の共有。もう待つのにうんざりしていて、コードを書き続けるうちにAPIベースのゲームメーカー・ツール、ゲームエンジン、ゲームそのものを作り上げたという話。自分の本当の情熱がAPI設計にあると気づいたこと、そうやって情熱を見つけて打ち込む人たちが本当にかっこよく感じられるという思いの共有。
褒めてくれてありがとうという気持ちと、プロジェクトの本質がうまく説明できていなかったことへの残念さ。実際にはAPIこそが最も面白い部分なのに表からは見えず、もどかしさがある。APIの革新的な使いやすさを示す例がもっと増えるまで待つべきだったかもしれない、公開を急ぎすぎたという後悔。
今回のプロジェクトの作者本人だと明かし、フィードバックへの感謝を表明。早すぎる公開だったことははっきり感じていて、いくつもの指摘を改善し、数か月以内に戻ってきたいという意思表示。
まったく早すぎる公開ではないと思う、ものすごくクールで極端なまでに過剰設計されたプロジェクトだと称賛。有名なbike shedのたとえを持ち出して最高だと評価し、独自のリアクティブシステムまで実装している点に強い感嘆。
Show HNにはちょうどいいタイミングだと判断。Hello Worldツアーを見ればどんなプロジェクトか直感的に理解できた。すでにPICO-8やReactの経験があればなおさら面白く感じられる。16:9の比率を選んだのも賢明で、PICO-8の正方形比率はぎこちないという意見。
早く公開してくれてありがとう、頻繁に公開する戦略を強く勧める。10,000回の反復が成功への道であり、一度の挑戦は始まりにすぎないと強調。
そんなに早すぎる公開ではないという励ましのメッセージ。作者はとてもよくやっているという応援。
深く考えたわけではないが、このレトロな雰囲気にひそかに強く惹かれているという告白。昔のもっとシンプルで穏やかだった時代から感じる慰めのようなものが、こうしたプロジェクトを見るとよみがえるという感想。
paintアプリは動きますか、という質問。FirefoxとChromeで試したが、色を選んでクリックしても何も描かれず、コンソールにもエラーは出ない。別の話として、90年代の雰囲気を見事に再現している点に感心。最初は70〜80年代のターミナル風かと思ったが、よく見ると本当に90年代とはこういう見た目だったと気づいた。今後の発展に期待しているというコメント。
混乱させてしまって申し訳ない、色選択ツールまでしか作っておらず、その先はまだ未実装とのこと。近いうちに1時間もあれば完成できそうだとも述べる。同時に、開発意図そのものがGUIアプリ開発の楽しさとパワーを90年代の雰囲気で再現することだったと説明。不便さは取り除き、驚きだけを残したかったので90s.devという名前にしたとのこと。
まだ実装されていない可能性があるとの指摘。ウィンドウ左上の「hash」ボタンをクリックして「View Source」を選ぶと、UIだけがモックされた状態で、スクロール領域には単なる模様のようなコードしか見えない。
自分の環境でも動かない。
プロジェクト自体を十分理解できているわけではないが、雰囲気には強く惹かれるという感想。ある種のムードや視覚要素だけで人の感情に強く働きかけ、より大きな関心を引き起こすのが不思議に感じられる。
個人的に説明のしかたを考えてみた。もっと書きやすいpico8を作りたくて320x180のデザインとプロトタイプを作った。同時にVS Codeのあらゆる便利機能やTypeScriptサポートも欲しかったので、最終的にはpico8のタブの中にあるものを作って配布できるプラットフォームとして構想した。そして今にして思えば、これもやはり早すぎる公開だったと感じる。
雰囲気そのものは好きだが、16:9の比率と90年代PCの組み合わせは合わないという意見。CRTモニターの、より正方形に近い独特の雰囲気のほうが好み。
ありがとう、説明するという作業は本当に難しいという吐露。今回の文章も結局、自分が何を作ったのかをできるだけ短く説明しようとした試みだったと告白。短くしてもなお内容が曖昧にならざるを得ず、もう諦めたいという率直な気持ち。
プロジェクトはとてもクールだと思うが、始めるまでが少し難しい。ミニゲームの作り方について簡単なウォークスルーがあると良いという提案。
感謝を伝えつつ、現在のゲームの作り方はアプリ作成チュートリアルと同じだが、カスタムビューを作ってdrawメソッドをオーバーライドすれば実現できると説明。パフォーマンスのためにはOffscreenCanvasを生成して使うとさらによく、現時点ではWebGL2をもっと簡単に扱えるようにするAPIはまだ提供していないという。今後は初心者でもゲーム全体を自分で作れるチュートリアルを必ず用意する予定で、現状はアプリ中心なので、まずはゲームメーカー用ツール(スプライト、マップなど)の開発に重点を置いているとの説明。Hello Worldチュートリアルのリンクも共有。
このプロジェクトをものすごく面白いと感じる。子ども時代に一瞬で戻ったような気分になる。pico8も好きだが、自分はもう少しデスクトップとGUIで育った世代なので、pico8は一世代ぶん早すぎる感じがする。このプロジェクトは、まるでCDをまた買い始めるような種類のノスタルジーを刺激する。
Pico8の開発者が作ったPicotronも紹介。Pico8に似ているが、もう少し制約の少ないデスクトップOSだと説明する。自分は使ったことはなくGIFを見ただけだが、プロジェクトのパラダイムは似ているという。pico8をその中に作れる「プラットフォーム」志向という点で自分のプロジェクトと通じるものがあり、異なるやり方で同じ理想を追っているように感じる。
Getting Startedガイドの最初の手順で詰まったという報告。helloworld.zipをローカルにダウンロードし、Web上でfiler.app.jsを開いてmountボタンを押し、drive nameとしてhelloworld/appを入力したが何も起きない。zipファイルを90s.devのインスタンスにアップロードする流れがわかりにくいという話。
フィードバックに感謝。おそらくFirefoxを使っているのではないか、その機能はshowDirectoryPickerに依存しておりFirefoxではサポートされていないためChromeの使用を勧める。また、drive nameにはパスを含めず名前だけを入力すべきで、たとえば「foo」のようにすればよいと説明し、ガイドも近いうちに修正すると約束。その後、foo/helloworld.app.jsが実際のローカルパスに対応することを補足。
90年代の雰囲気が本当に気に入った、特にフォントが印象的だという感想。80年代風のピクセルアートより、90年代のデザインのほうにずっと惹かれる自分の好みに気づいたという話。
ランディングページへの批判。プロジェクトを「game maker」と呼びながら、同時に「game makerではない」とも説明していて混乱するという指摘。用語整理に一貫性がないという意見。
ネーミングがそもそも難しい問題であることを思い出させるコメント。コンピューターサイエンスで最も難しい課題の一つだと考えており、キャッシュ無効化と並べて語られる。