WindowsでClojureScriptのREPLを整備する

結論から言えばIntelliJにCursiveプラグイン入れてfigwheelプロジェクト作るのが簡単そう。 ClojureなどのLisp系列言語では昔からREPLを使った開発がよく行われていて、REPL駆動開発とか呼ばれている。REPLと言うと対象のプログラミング言語の表記を入力する…

倉庫番系列パズルゲームのレベル自動生成

ゲームの自動生成を目指すならばレベル、つまり面のパターンの自動生成もやっておきたい。ゲーム&ウォッチ的な単一の画面で遊ぶゲームはともかく、大抵のゲームは複数の面があったりスクロールしたりするのでレベル自動生成が必須である。 どれだけ質の良い…

Matter.jsをプラグインで拡張する

ちょっと前にlark-matterっていう物理エンジンMatter.jsのレンダラをドット絵っぽくするプラグインを作ったんだけど、その時に覚えたはずのMatter.jsのプラグインによる拡張方法を忘れないうちにメモっておく。 基本的には以下のドキュメントを読めば良い。 …

ブラウザ上でサーバサイドコードをエディット、実行できるGlitch

Glitch jsbinみたいなクライアントサイドJavaScriptをブラウザ上でエディット、共有するサイトはいろいろあるけど、このGlitchはサーバサイドでのコードをエディットして実行できるのが特徴。 とりあえずアクセスした人が適当にセルを埋められる多人数ライフ…

Twitter上でそのまま遊べるアクションゲーム

はタイムライン上でJavaScriptが動かないので原理的にムリだ。なので、 Twitter上でそのまま遊べるアクションゲームを作るには、マウスカーソルが車とか木とかにぶつかったら「ぶつかりました」と自分で言ってもらうゲームオーバー自己申告方式しかないな pi…

無限ミニゲーム生成器を今度は遺伝的プログラミングで作ろうかと

思っていたのだけどやはりうまくいかん。 game-combinator 前回の無限ランダムひどいアクションゲーム生成器への道ではボタンを押した時にゲームに与える影響をランダムに変化させてゲームを生成しようとしていたけど、いまいちゲームにバリエーションが出な…

難度曲線をいじっていい具合のプレイ感覚を探る

3分間でプレイヤーをゲームから追い出すお気に入りの式 [難度] = sqrt([経過フレーム数] * 0.0001) + 1 これで10800フレーム(3分)後に難度が約2.04倍になりプレイヤーはやられる。生き延びても後は真綿で首をしめるように難度がじりじり上昇— ABA (@abagam…

WebAssemblyのゲームをアセンブリ直書きで作る

左右矢印キーでスタートして移動、降ってくる岩を避けて下さい。 wasm-game-by-hand コードは以下。 game.wat ブラウザ上のアセンブリ言語ことWebAssemblyがChromeやFirefoxで動くようになってきたので何か作ろうと思った。普通はUnityとかRustとかのWebAsse…

ゲームのリプレイデータをURLへ埋め込む

URLには2000文字を詰め込むことができるので、頑張ればここにいろんなデータを埋め込むことができる。例えば、ゲームのリプレイデータ。この前作った例。 ワンボタンSTGのREFREV作った。3つの武装を駆使して1分くらいでやられて下さい https://t.co/OMgRpeEq…

テキストエディタで完結したゲーム開発環境は無いかね

「コーディング不要でゲーム開発!」っていうウリのツールはあるが「デザイン不要!全てをコードでねじ伏せる」ツールはなかなか見かけない— ABA (@abagames) 2016年11月5日 グラフィックスもサウンドもコードでなんとかしてもらいたい— ABA (@abagames) 201…

お手軽にゲームプレイAIを試してみる

最近はゲームもAIがプレイしてくれる時代だ。 ゲーム攻略で人間を超えた人工知能、その名は「DQN」 有名なDQN。フルネームはdeep Q-networkと呼ばれる強化学習の一種だ。こういう機械学習系の仕組みはマシンパワーでもって学習をぶん回して動かさないといけ…

世の中にワンボタンゲームってどんなのがあるの

ゲーセンの1ボタンゲームって連打系を除くとスタートリゴンしか知らないんだけど他に何かあったのかな https://t.co/C1kQfYkxrN— ABA (@abagames) 2016年11月10日 って聞いて教えてもらった。ワンボタンゲームってのはプレイ中に使う操作がボタン一つだけの…

セルオートマトンでゲームは作れるか

作れそうだけど大変そう。 consomaton-game-lib 前にセルオートマトンプログラミングパズルゲームconsomaton作った時から、セルオートマトンのルールを書くだけでゲームが作れたらお気軽ではないかと思っていた。ただセルオートマトンのルールは、あるセルと…

プログラミングパズルゲームが作りたかった

セルオートマトンプログラミングパズルゲームconsomatonというのを作った。 ブラウザで遊べます ソースコードはこちら (GitHub) ゲームプログラミングを趣味としている者として、昔から作ってみたかったのがプログラミングパズルゲームだった。プログラミン…

ES2015のProxyを使ってJavaScriptを改造して遊ぼう

ES2015にはProxyという仕組みがある。Proxyを使えばオブジェクトへの各種操作に割り込んで好き勝手な動作を定義できる。 ただProxyには問題が合って、サポートするプラットフォームが少ない。 ECMAScript 6 compatibility table どうもProxyはpolyfillやトラ…

汎用ビデオゲーム記述言語VGDLとその処理系PyVGDL

2Dビデオゲームのメカクニスを記述するための言語VGDL (Video Game Description Language)というものを研究している人達がいる。 Towards a Video Game Description Language (pdf) ゲーム内AIなどを研究するために必要な言語仕様の提案として始まったようだ…

斬新なゲームメカニクスを目指した時の「やらかし」と「もがき」の制作過程が分かる本「組み立て×分解!ゲームデザイン」

組み立て×分解!ゲームデザイン 筆者のkuniさんから献本いただいた。 ひどくおおざっぱに言うと、斬新なルール、ゲームメカニクスを持つゲームを作るに向けて、これは面白いだろうと思って作ったルールがイマイチな時、そこからどうやって工夫することで面白…

ES2015のProxyを使った関数呼び出しのフック

ES2015にはProxyという仕組みがある。 Proxy Proxyを使うことでオブジェクトへの書き込みや読み込みをフックすることができ、メタプログラミング的なことがJavaScript上で実現できるようになる。 例えば、関数呼び出しをフックして呼び出し前に何か別の処理…

クリックだけでプログラムが作れる夢のプログラミング環境作った

ウソです。いやウソではないか……誇張です。 sarad p5.js demo 上のデモ開いて、左クリックでコード生成、右クリックでコード削除。運が良いと何かのグラフィックスを描くプログラムができる。あまりに何も描かないようだったら一旦右下の[Reset]を押して下さ…

無限ランダムひどいアクションゲーム生成器への道

ゲームそれ自体を自動生成してくれる機械が欲しい。開発者はその機械が生成するゲームを遊んで良ゲーなら採用、クソゲーなら捨てる、その作業だけでゲームが作れる。夢の機械だ。 人が後で見て取捨選択する前提なら、出来上がるものの大半ではクソゲーでもい…

SVGのPathの当たり判定を取る方法

Pathで囲まれたSVGの当たり判定を取ることができれば、ベクター形状の間で正確に当たり判定が取れる。現代版1ドットのエクスタシーを魅せることが可能だ。以下の様なコードを書いた。 stars SVGPathCollider SVG自体にはバウンディングボックスを使ったおお…

Elmのエラーメッセージが分かりやすくなっている

だいぶ前にElm触ってゲーム作った時はElmに色々と不満があったんだけど、あれからElmもだいぶバージョンアップして0.15.1ではエラーが人フレンドリーになったらしい。前回の不満がどれだけ解決されているか調べてみよう。 関数の引数の数間違いが謎の型エラ…

物理エンジンMatter.jsをテキストでレンダリング

CRTっぽいテキスト画面をWebGLで作るLocatePrintを使って物理エンジンをレンダリングするというデモも作った。 物理エンジンはMatter.jsを使っている。Matter.jsはもちろん自前のレンダラを持っているんだけどそれを他のレンダラで差し替えられる。 差し替え…

昔のCRTっぽい画面をWebGLで作る

マイコンをつないだテレビみたいな画面を作りたいと思ってLocatePrintっていうコードを書いた。 こんな画面が作れる、し遊べる。locate, print, colorなどの命令でテキストを書けます。というかテキストしか書けない。 こういうブラウン管っぽい画面を作るに…

BLCK4777の絵の作られ方も知っておきたい

JavaScriptデモBLCK4777の音の作られ方について前に調べたので、ついでにその絵の方もどのように作られているか調べてみた。多分に憶測が入っているけど、多分以下の様な感じ、のはず。 前の記事で追ったAudio生成部分を除いてコードを整理してみると、以下…

JS1KデモBLCK4777のせめて音を作ってる部分だけでも分かりたい

今年のAssembly 2015 1kb intro勝者のJavaScriptデモBLCK4777、わずか1023 bytesでできているとは思えない美しいデモで話題になった。 1023 bytes版のファイルはPNG bootstrapping techniqueで圧縮されているそうで見た目はバイナリである。見ても分からない…

New 3DSブラウザのゲーム開発向けJavaScript API対応具合チェック

Newニンテンドー3DS インターネットブラウザーの主な仕様を見ると HTML4.01/HTML5/XHTML1.1/Fullscreen/Gamepad/SVG/WebSocket/Video Subtitle/ WOFF/Web Messaging/Server-Sent/Web Storageの一部/XMLHttpRequest/ canvas/Video/DOM1-3/ECMAScript/CSS1/CSS…

GitHubで行にリンクを張る

ファイルへのリンクの後ろに#L21とか#L21-L23とかつければOk。 https://github.com/abagames/phaser_p2_threejs/blob/master/src/app.ts#L21-L23 ただこれだとファイルのバージョンが変わった時に行がずれてしまうことがある。なのでGitHubのショートカット…

機能モジュールのパイプラインでキャラを制御する

Phaserをthree.jsで描画ネタのサンプルコードでもう一つ実験したのは、ゲーム内のキャラを機能のモジュールを組み合わせて制御できないかということ。例えば、上から降ってくるバルーンは、以下のコードのようにした。 interface Baloon extends Phaser.Spri…

2DゲームエンジンPhaserの描画をthree.jsで3Dにする

小さなJavaScriptライブラリをガッチャンコしてゲームエンジンっぽいことをさせるのは可能なのかの微妙に続き。2DのHTML5ゲームライブラリPhaserを使うけど、描画は3Dライブラリのthree.jsを使いたい、みたいな組み合わせは、ちょっと工夫すればできることは…