タグ

ブックマーク / aba.hatenablog.com (65)

  • いい感じのビジュアルをランダムになんとなく作り出す - ABAの日誌

    なにかを作った。めざせジェネレーティブアートジェネレータ! クリック/タップで別の絵を作ります。 この手のものの難しさは、 >RT ランダムにものを作ると自由度と打率のトレードオフになると思うんですが、この自由度でこの打率はかなりすごい気がします…… しかもパラメータがURLに埋め込まれている!(例 https://t.co/w4Ov3PXkY7 ) しかも p5.js + TypeScript!— FAL @STG制作とプログラミングお絵かき (@falworks_ja) 2019年7月30日 という具合に自由度を高くしていろんなバリエーションを作ろうとすると見てて面白いものができあがる打率が減って、逆に打率を上げようと面白くなさそうなものをフィルタリングしていくと自由度が低くなること。 自由度を高くするにはランダムにするものを増やせばいい。今回は座標と線の太さと色を表す数式を乱数で作っ

  • マップを書くだけでゲームが作れる環境が欲しかった - ABAの日誌

    ので、テキストでタイルマップを書くとゲームになるrj-10ってのを作った。ブラウザで遊べる。 これを作ろうと思ったのはPix64っていうファンタジーコンソールを見つけたから。Pix64は画像1枚を描くだけでゲームが作れる。ピクセルの色がプレイヤーとか敵とかの種別を決めているのと、矢印状のパターンを書くと矢印の方向にパターンが進むというルールを使ってゲームを作る。 画像を描くのすら面倒な私は単にテキストを使うことにした。以下のようなテキストを書くと、 ----------- | v v o| r r g | | | | | | |@ ^ | c r ----------- 以下のゲームになる。 テキストは基レベルのタイルマップを表しているけど、途中のrとかgとかだけからなる列は特殊で、その上の列のテキストに色を付ける働きをする(redとgreen)。 いくつかルールがある。 色が付いたテキ

    マップを書くだけでゲームが作れる環境が欲しかった - ABAの日誌
  • 理想のマイコン機械語開発環境を夢見て - ABAの日誌

    PC-6001やMSXの機械語開発時代にREPL (Read-Eval-Print Loop)環境があったらという妄想のもと、Z80のREPLを作った。 ブラウザ上でZ80ニーモニックを実行できるREPL。実用性は無い。LDIRがメモリを埋める様子がたまらん人向け https://t.co/Q3lLMNn7Cq pic.twitter.com/Y2r2QzYO7H— ABA (@abagames) 2018年9月8日 ブラウザ上で遊べる。 ソースはGitHubのabagames/z80-replに置いた。 コマンドラインからZ80ニーモニックを書いてEnterを押せば、それが機械語に変換されてPC(プログラムカウンタ)が指すメモリに書き込まれ、そのまま実行される。実行結果は画面上のメモリマップやレジスタリストに反映される。すぐJR -2とかいう悪さをする人がいるかもしれんが、64回ループを

    理想のマイコン機械語開発環境を夢見て - ABAの日誌
  • 256文字ゲームくらいならコンピュータが作って欲しい - ABAの日誌

    最近作った256文字ゲームを見ながらこんくらいコンピュータ様が自動的に作ってくれないかと思っている https://t.co/JeRvlRwzqc— ABA (@abagames) 2018年3月6日 あとは2つのゲームのメカニズムを適当に混ぜ合せるっていうアプローチもあるけど、混ぜてゲームとして成り立つ組み合わせってほとんど無いのではという気もする— ABA (@abagames) 2018年3月6日 でも物によっては混ぜられないこともない。 例えば と を混ぜて というゲームにしたり、 これ と を混ぜて というゲームにしたり、だ。 混ぜ方としては、ゲームを2つのパーツに分ける。マウス操作が反映されるプレイヤー側パーツと、それ以外の物を動かすパーツ。で、2つのゲーム間でそれらを入れ替える。そうするとたまに新しいゲームになる。 もちろんうまくいかないパターンの方が多くて、 と を混ぜると

    256文字ゲームくらいならコンピュータが作って欲しい - ABAの日誌
  • JavaScript256文字でのゲーム作り - ABAの日誌

    Tiny Art in Less Than 280 Characters ggplot2で280文字以内で作られた美しい幾何学模様。 sc140 SuperColliderで140文字以内で作られた楽曲群。 Dwitter JavaScript140文字以内でできた作品集。 短いコードで作られた作品は情報がギュッと詰まった感じが美しい。最低限の構成要素で最大限の効果を得る工夫が詰め込まれている。 グラフィックスや音楽だけでなくて、ゲームでも同じように短いコードで書けるといいな、と思っていたらDwitter上の以下の作品を紹介してもらった。 Crossy tortoise クロスハイウェイならぬクロスかめ。ワンキーゲームを140字で実現しているのがすごい。でもスコアは無くて一度渡りきったらそこで終わりという潔い作り。 ゲームを名乗るからには以下の要素は入れたい。 スコアがある ゲームオーバー

    JavaScript256文字でのゲーム作り - ABAの日誌
  • 無限ミニゲーム生成器を今度は遺伝的プログラミングで作ろうかと - ABAの日誌

    思っていたのだけどやはりうまくいかん。 game-combinator 前回の無限ランダムひどいアクションゲーム生成器への道ではボタンを押した時にゲームに与える影響をランダムに変化させてゲームを生成しようとしていたけど、いまいちゲームにバリエーションが出ないのが欠点だった。 もうちょっとドラスティックにゲームの構成を変えないとバリエーションが得られないかなと思って、今度は遺伝的プログラミングっぽくゲームのコードを組み合わせて新しいゲームを作るアプローチを試してみた。 例えば、 のような上から降ってくる物を避けるゲームを (game helmet (actor stage (if initial (spawn player)) (if (random frequently) (spawn enemy)) ) (actor player (if initial (place bottom_le

    無限ミニゲーム生成器を今度は遺伝的プログラミングで作ろうかと - ABAの日誌
  • 難度曲線をいじっていい具合のプレイ感覚を探る - ABAの日誌

    3分間でプレイヤーをゲームから追い出すお気に入りの式 [難度] = sqrt([経過フレーム数] * 0.0001) + 1 これで10800フレーム(3分)後に難度が約2.04倍になりプレイヤーはやられる。生き延びても後は真綿で首をしめるように難度がじりじり上昇— ABA (@abagames) 2014年5月29日 ということを昔tweetして、今でも基こんな感じで問題ないとは思っている。ただ全てのミニゲームでこの難度曲線でうまくいくかというとそうとも限らない。場合によってはもっととっとと難度を上げたほうが緊張感が出て良かったり。 この辺の感覚は実際にゲームとして遊べるものにしないと分かりにくい。なので難度曲線を可視化&調整した上でゲームに反映する物を作ってみた。 diffi-tween 右で曲線を調整して左をクリックしてプレイ。上から落ちてくる岩を避けて下さい。難度の上昇具合が分か

    難度曲線をいじっていい具合のプレイ感覚を探る - ABAの日誌
  • WebAssemblyのゲームをアセンブリ直書きで作る - ABAの日誌

    左右矢印キーでスタートして移動、降ってくる岩を避けて下さい。 wasm-game-by-hand コードは以下。 game.wat ブラウザ上のアセンブリ言語ことWebAssemblyChromeやFirefoxで動くようになってきたので何か作ろうと思った。普通はUnityとかRustとかのWebAssemblyを出力できるエンジンや言語を使って生成するのだが、せっかくだから直に書いてみた。 WebAssemblyはS式で書ける(wast形式)。 Understanding WebAssembly text format WebAssemblyはスタックマシンなので、2つの値を足す場合、それら値をスタックに順に積んでAddを呼び出す、というふうに書く。 get_local $p get_local $p i32.add でも引数が先に来て後に命令がくるのはあまり直感的な感じはしない。なの

    WebAssemblyのゲームをアセンブリ直書きで作る - ABAの日誌
  • テキストエディタで完結したゲーム開発環境は無いかね - ABAの日誌

    「コーディング不要でゲーム開発!」っていうウリのツールはあるが「デザイン不要!全てをコードでねじ伏せる」ツールはなかなか見かけない— ABA (@abagames) 2016年11月5日 グラフィックスもサウンドもコードでなんとかしてもらいたい— ABA (@abagames) 2016年11月5日 テキストエディタだけでグラフィックス作ろうと思ったら何が使えるだろう。SVG, 3D API/シェーダ各種, LOGO, PostScriptとか?サウンドだとMML, ByteBeat。あまり思いつかんな— ABA (@abagames) 2016年11月6日 と書いたが要はテキストエディタだけを入力として完結したゲーム開発環境が欲しいなという話。グラフィカルなドット絵エディタや3Dモデラー、ミュージックシーケンサなどは無し、さらにいうと外部リソースインポートも無し、ゲームに必要なリソースは

    テキストエディタで完結したゲーム開発環境は無いかね - ABAの日誌
  • 世の中にワンボタンゲームってどんなのがあるの - ABAの日誌

    ゲーセンの1ボタンゲームって連打系を除くとスタートリゴンしか知らないんだけど他に何かあったのかな https://t.co/C1kQfYkxrN— ABA (@abagames) 2016年11月10日 って聞いて教えてもらった。ワンボタンゲームってのはプレイ中に使う操作がボタン一つだけのゲーム。 スタートリゴン 星の周りをグルグル回るホシ・ワタル。ボタンを押すと飛び出して他の星へラインを張って移動、三角ネットが出来たらOk。 バッドランズ LDゲーム。ボタンでタイミングよく拳銃を撃ち敵を倒す。LDゲームは基タイミングゲーなので、それを極限まで簡略化するとワンボタンになる。 Canyon Bomber 自機は左右に自動移動。ボタンを押すと爆弾投下。得点岩をたくさん破壊できればOk。 魚ポコ 正確にはワンボタンゲームでは無くレバー下だけゲーム。ピンボールのプランジャーのように引いて玉を撃ち

    世の中にワンボタンゲームってどんなのがあるの - ABAの日誌
  • Pygameの処理速度 - ABAの日誌

    SolarWolfっていうゲームをちょっと遊んでみた。 Planet SolarWolf(http://www.pygame.org/shredwheat/solarwolf/) ドットイート+弾除けっていう感じのゲーム。まあ昨今の弾幕と比べると、敵弾がなんともつつましやかで、上下左右4方向しか飛んでなくてすげー地味。まあもとはAtari 2600のSolarFoxっていうゲームらしいので、地味なのはしょうがないか。 Solar Fox(http://www.ataritimes.com/2600/reviews/solarfox.html) で、SolarWolfってのはSDLのPythonバインディングであるPygameで書かれている。Pygameについては前(id:ABA:20031115#p1)にちょっと触れてそのまま大放置状態だったんだけど、このゲームでたまたままたお目にかかるこ

    Pygameの処理速度 - ABAの日誌
  • セルオートマトンでゲームは作れるか - ABAの日誌

    作れそうだけど大変そう。 consomaton-game-lib 前にセルオートマトンプログラミングパズルゲームconsomaton作った時から、セルオートマトンのルールを書くだけでゲームが作れたらお気軽ではないかと思っていた。ただセルオートマトンのルールは、あるセルとその周辺の状態の変化のみしか書けないという強烈な縛りがあるので、書けるゲームはかなり限られるだろうという予想はあった。でもまあ試すだけ試してみた。 ルールは左3列がbefore、右3列がafterとしてconsomatonと同様に書く。'==='はルール間のセパレータ。 === v v こう書くとvが毎フレーム一つ下に落ちるようになる。 ゲームだからランダムに出現する敵とか必要。なのでルールをランダムに発火させるための'r'コマンドってのを作った。 ===r10 . . v コマンドはセパレータの右に書く。'r10'って書く

    セルオートマトンでゲームは作れるか - ABAの日誌
  • プログラミングパズルゲームが作りたかった - ABAの日誌

    セルオートマトンプログラミングパズルゲームconsomatonというのを作った。 consomaton screenshot ブラウザで遊べます ソースコードはこちら (GitHub) ゲームプログラミングを趣味としている者として、昔から作ってみたかったのがプログラミングパズルゲームだった。プログラミングパズルゲームってのはたとえばGoogleがアランチューリング生誕100周年で公開していたチューリングマシンのロジックパズルとかメイドイン俺のくみたて道場とかTIS-100とか。カルネージハートとかよりはよりプログラミング感が全面に出ているタイプのゲームゲームとしてプログラミングを扱うにはなるべく簡単にコードが書けることが望ましい。スクラッチとかのパネルを置くタイプもいいんだけどこれですらちょっと面倒。なのでライフゲームに代表されるセル・オートマトンのルールを書くものにした。 ルールの書

    プログラミングパズルゲームが作りたかった - ABAの日誌
  • プロシージャル技術ネタに関するページ収集中 - ABAの日誌

    ゲームにおける自動生成技術、いわゆるプロシージャルに関するページをいまさらのように収集している。 次世代ゲームにおける自動生成技術 (http://www.t-pot.com/program/144_GameAISeminar6/index.html) 「ゲームAI連続セミナー第6回」のレポート記事。プロシージャルに関する概観をつかむのに良い記事。 Procedural generation (wikipedia:en:Procedural_generation) WikipediaのProcedural generation項。プロシージャルを使ったゲームの実例についてよくまとまっている。 Procedural Content Generation Wiki (http://pcg.wikidot.com/) Procedural content generation (PCG)に関する

    プロシージャル技術ネタに関するページ収集中 - ABAの日誌
  • 汎用ビデオゲーム記述言語VGDLとその処理系PyVGDL - ABAの日誌

    2Dビデオゲームのメカクニスを記述するための言語VGDL (Video Game Description Language)というものを研究している人達がいる。 Towards a Video Game Description Language (pdf) ゲームAIなどを研究するために必要な言語仕様の提案として始まったようだ。それを実際にパースして実行する処理系PyVGDLも作られている。 A Video Game Description Language for Model-based or Interactive Learning (pdf) py-vgdl (GitHub) VGDLはパックマンとかフロッガーとかバルダーダッシュとかの古典的アクションゲームが簡単にかけるという触れ込みである。例えばフロッガーをVGDLで書いたコードは以下だ。 frogs.py まずレベルの定義があ

    汎用ビデオゲーム記述言語VGDLとその処理系PyVGDL - ABAの日誌
  • 斬新なゲームメカニクスを目指した時の「やらかし」と「もがき」の制作過程が分かる本「組み立て×分解!ゲームデザイン」 - ABAの日誌

    組み立て×分解!ゲームデザイン 筆者のkuniさんから献いただいた。 ひどくおおざっぱに言うと、斬新なルール、ゲームメカニクスを持つゲームを作るに向けて、これは面白いだろうと思って作ったルールがイマイチな時、そこからどうやって工夫することで面白くすることができるか、それを書いた。 題材のゲームはkuniさんが作ったいくつかのゲームを用いている。 駄研, note - 試作・習作 例えば2章はmosserことまるぼうしかく内のしかくことフレイムテイルが題材。炎が燃え広がるというアルゴリズムを元に、単にクリックしたところが燃える凡ゲーから、炎をつける自機の導入、燃やせるテトロミノの導入などの様々な試行錯誤を経て、最終形のお尻に火が着いたスネークゲームというところに到達するまでが丁寧に解説されている。 こういった新しいルールを導入したパズルゲームやアクションゲームを作るためには何回もの試行錯

    斬新なゲームメカニクスを目指した時の「やらかし」と「もがき」の制作過程が分かる本「組み立て×分解!ゲームデザイン」 - ABAの日誌
  • クリックだけでプログラムが作れる夢のプログラミング環境作った - ABAの日誌

    ウソです。いやウソではないか……誇張です。 sarad p5.js demo 上のデモ開いて、左クリックでコード生成、右クリックでコード削除。運が良いと何かのグラフィックスを描くプログラムができる。あまりに何も描かないようだったら一旦右下の[Reset]を押して下さい。グラフィックスAPIはp5.js利用。 左クリックで生成されるコードはRecurrentJSを使ったLSTMで作られている。LSTMやRNNをつかった文書生成はいろんなところでやられていて、有名どころだとThe Unreasonable Effectiveness of Recurrent Neural Networksがある。この記事ではLinuxのソースコードをわせてCのプログラムを作る例もある。ただ、自動生成でできる文やプログラムはいわゆるワードサラダで、文には意味が無いし、プログラムはコンパイルできない。 ならワー

    クリックだけでプログラムが作れる夢のプログラミング環境作った - ABAの日誌
  • 昔のCRTっぽい画面をWebGLで作る - ABAの日誌

    マイコンをつないだテレビみたいな画面を作りたいと思ってLocatePrintっていうコードを書いた。 こんな画面が作れる、し遊べる。locate, print, colorなどの命令でテキストを書けます。というかテキストしか書けない。 こういうブラウン管っぽい画面を作るにはWebGLをポストプロセスとして使うのが便利。 WebGL Fake CRT Effect for HTML5 Games この記事に必要なことはほとんど書いてある。glfx.jsっていうWebGLのイメージエフェクトライブラリを使って、ブラウン管の丸みっぽく画面を歪ませ (bulgePinch)、ふちをちょっと暗くすれば (vignette)、昔懐かしのテレビっぽい絵になる。 ただこの記事だとスキャンラインはPNGイメージを重ねることで実現しているけど、これもできればWebGLのシェーダーでやりたい。あとパピコンやAp

    昔のCRTっぽい画面をWebGLで作る - ABAの日誌
  • New 3DSブラウザのゲーム開発向けJavaScript API対応具合チェック - ABAの日誌

    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/CSS2.1/CSS3 の一部 のウェブ標準に対応していると書いてある。旧3DSの仕様と比べるとだいぶリッチに見える。特にFullscreenとGamepadに対応しているならゲーム開発向けに使えるんじゃないのかね、と思って少し調べた。 Fullscreen これ当に対応しているの? document.documentElement.webkitRequestFullScreen()

    New 3DSブラウザのゲーム開発向けJavaScript API対応具合チェック - ABAの日誌
  • ブラウザゲームのプロトタイピングに役立つJavaScriptライブラリ - ABAの日誌

    ブラウザで動くゲームのプロトタイプを作るとき、もちろんPhaserとかの機能満載のゲームエンジンを使ってもいいのだが、こういったエンジンは多彩な機能に応じてAPIが豊富すぎて、使いこなせるようになるまでが若干面倒なことがある。そういった時、もっと軽量のJavaScriptライブラリを機能ごとに組み合わせた方がお手軽に作れるのではないか。そう思って、ゲームで使う機能ごとのライブラリを探してみた。 グラフィックス p5.jsが役立ちそう。p5.jsはビジュアルデザイン向けとして有名な言語ProcessingをJavaScript向けライブラリとして提供したもの。似たものとしてProcessing.jsもあるが、こちらは元のProcessing言語をブラウザ上で動かすことに主眼を置いており、ライブラリとして使う分にはp5.jsの方が使いやすい。 Get Started見れば分かるように、crea

    ブラウザゲームのプロトタイピングに役立つJavaScriptライブラリ - ABAの日誌