mixiユーザー(id:2100397)

2017年07月17日18:53

2336 view

パンドラプロジェクト:プログラミングがまんまなのでコードで書きたくなるレベル

パンドラプロジェクトは、PlayStationで発売された、ロボット戦闘のシミュレーションゲームである。
シミュレーションゲームといっても、ゲームとして一般的なシミュレーションゲームではない。
このゲームでは、ロボットの挙動を“パネル”を使ってプログラミングし、そのプログラムに従って動くロボット同士を対戦させる、“L.M.S.(Logic Making Simulation)”というシステムを採用している。
 Wikipedia:https://ja.wikipedia.org/wiki/%E3%83%91%E3%83%B3%E3%83%89%E3%83%A9%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88
どうやら、「カルネージハート」とよく似たゲームであるとのことだが、自分はカルネージハートをプレイしたことが無いので何とも言えない。そのうち、偶然見かけるなどしたら購入を検討しようと思う。

ロジックメイキングといっても、言葉ではよくわからないと思うが、プログラマであれば画面を見れば一見してどういうものが理解できるであろう。
他の人のBLOGへのリンクであるが、こちらでパネルのイメージはつかめると思う。
 いなかしろくまくろしかない:http://s.webry.info/sp/inakashirokuma.at.webry.info/201302/article_10.html

プログラミングは、方眼状のパネルを使って行う。
パネル状にはユニットを置けて、ユニットは矢印でつなぐことができる。ユニットはひとつの処理を表し、矢印を繋ぐと、ユニットの処理が終わったあとに、矢印の左記のユニットの処理を順次行う動きになる。
ユニットの中には、どこのユニットに飛ぶだとかのフロー制御を行ったり、条件によって移る先のユニットを切り替える条件分岐もある。また「値」を扱うものもある。
とりあえず、上記くらいのパネルがあれば、構造化定理の3つの構文要素を満たせるので、あらゆるアルゴリズムが表現できると言える。
 構造化プログラミング:https://ja.wikipedia.org/wiki/%E6%A7%8B%E9%80%A0%E5%8C%96%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0
 構造化定理:http://www.geocities.jp/oraclesqlpuzzle/1-4.html

あとは、ロボットが戦闘を行うのに必要なマクロを実行するユニットが、機能として存在していれば、ゲーム内でのプログラミングとしては「やれそうな気がする」という気持ちにはなってくるだろう。
たとえば、索敵するだとか、主兵装で攻撃するなど、ロボットが行う行動をある程度大きくまとめたユニットが沢山用意されているので、これらと、上記構造化定理および変数を使った制御系を組み合わせることで、ロボットをうまく自動制御し戦闘に勝たせると、そういうシミュレーションゲームである。
へんにシミュレーションゲームと言わず、新しいジャンル名で“プログラミングゲーム”とかにしてしまったほうが、話題的にも宣伝的にも良かったのではなかろうか、と多少思ったりもした。

普段プログラムを書かない人だととっつきにくいかもしれないが、基本的な考え方や操作は、今流行りのスクラッチに通ずるところもあり、今後“プログラミング教育”とやらが開始された後、再評価されるといいなあと思うところもあった。

プログラミングの基本的な部分はシンプルであるものの、一方で、このゲームは自由度が高く、選択、考慮、制御すべき事柄が多く、入門者のハードルを上げているようにも思えた。
プログラムを実行し、実際に戦闘シーンに放り込んでみると、デバッガのようなもので状態や数値を追うことができるのだが、画面写真で見る通り、並んでいるパラメータや参照項目の数がすごい。
シンプルだけれども、意外とガチなプログラミングが求められそうな気はする。

いずれにせよ、このゲームに慣れ親しんだあとにプログラミングを勉強すると、コードの書き方云々は些末な話で、プログラムの流れや考え方を文字で表現しているだけ、ということに気付けるだろうと思う。
逆に、普段からプログラムを書いている立場から見ると、パネル上にユニットを置いて、矢印でつなぐなどの操作はまどろっこしく感じ、これなら、これと同じことをコードで書けたほうが早いのに、と思ったりもする。

そういえば、自分でプログラム言語(らしきもの)を用意したときの内部の仕組みも、ほぼこんな感じであった。コマンドをひとつのオブジェクトとして取り扱って、遷移先をオブジェクトのリンクにして、次はこれ、次はこれ、とつなげて処理していく感じ。
当時は言語開発の基本を知らなかったので(構文解析のパーサがどうとかyaccがどうとかBNFがどうとか)、すべて我流で無理やり作ったが、今作ればもう少しスマートに作れるだろうか。
しかしいずれにせよ、言語というのは構造化定理さえ満たしていれば、仕組みがいかに稚拙だったとしても、あらゆるアルゴリズムを表現できること自体には変わりないのだ。それだけは知っていたので、同時はクレバーではないということは解りつつも、安心し自信を持って言語プログラミングができた。エンジニアリングとしての知識って大事。
 SHIORI:http://www.mugenunagi.com/products/tools/shiori/index.html

いずれにせよ、それなりに求められる知的レベル(?)が高いゲームで、誰もが楽しめるゲームとは言えないであろう。
 Amazon:https://www.amazon.co.jp/dp/B00006LJG6

0 0

コメント

mixiユーザー

ログインしてコメントを確認・投稿する

<2017年07月>
日 月 火 水 木 金 土
      1
2345678
9101112131415
16171819202122
23242526272829
3031