Processing入門

今日はProcessingのソースコードを読み始めた。

プログラミング初心者が質問できるサイト「teratail」を最近よく利用しているのだが、そのサイトで紹介してもらったソースコードだ。

プログラムそのものはすごく簡単だが、動作結果はすごく面白い。

https://gist.github.com/p5info/5351768

(上のコードは、processingのIDEを使って実行してください)

簡単に言うと、たくさんの結び目をクラス「Node」として定義し、この「Node」同士の相互作用を計算するプログラムを組んでやるわけだ。

int numberOfNodes = 200;
Node[] nodes = new Node[numberOfNodes];

において、200個の要素を持つ配列を定義している。ここにクラス「Node」のインスタンスを200個分代入し、それぞれの「Node」 について自分以外の全ての「Node」たちから受ける作用を計算する。

  void update()
  {
    this.updateBoid();
    this.updateVelocity();
    this.updatePosition();
  }

注目すべきはこのアップデート関数の部分だ。 このアップデート関数も「Node」クラスの中に組み込まれており、updateBoid()において、Nodeにかかる力を計算し(fx,fy)、updateVelocity()において速度を計算(vx,vy) 、updatePosition()において、位置情報を更新する(x,y)。 物体同士の相互作用はこんな風に三段階に分けて更新してやると、より精密に記述できるということが今日は理解できた。

ゲーム作成日記(2021/12/16)

とある事情からゲーム作成を始めた。

このブログではその進捗について、そしてこれからの課題について整理する目的で日記をつけていくことにする。

第一回目の記録。

現在の状況:ゲーム制作の感覚を掴むために、「迷路ゲーム」へと歩みを進めた。

ステージの作成については、JavaScriptのグラフィック表現ツールである「Canvas」を用いて設計し、それを3D表現ライブラリ「three.js」による表現へと置き換える。

迷路制作の過程で、「深さ優先探索」「幅優先探索」という迷路探索のアルゴリズムに出会い、それと全く同じかはわからないが、おそらくそのどちらもを折衷した様な手法により、人間の手を使いつつ、地図を量産するシステムを確立した。

これからの課題として、

①このステージ制作の手法をどのように洗練化していくか

②より面白い地図を制作する手法の開発

などがあるだろう。

以上で1回目の記録を終わる。

maze-1-977f7.web.app

上記がお試しでデプロイした迷路地図である。