meideru blog

家電メーカーで働いているmeideruのブログです。主に技術系・ガジェット系の話を書いています。

3Dテトリス(仮名)の開発やめましたorz

 

ここ最近、Unityで「3Dテトリス(仮名)」なるゲームを開発していました。

しかし、今日やめました。理由は時間がかかりすぎるからです(;´・ω・)

@スクリーンショット
block3d

 

今日は、そんなことについて記事を書こうと思います。

目次

3Dテトリスについて

ゲームの内容はタイトル通りで、テトリスを3D化させたゲームです。

作ろうと思った理由

色々と調べたんですが、この手のゲームはほとんど無かったので私が作ろうと思いました(笑

開発状態について

現時点でゲームの進行は一通りできます。ブロックの落下、ブロックの移動、ブロックの回転、ブロックの消去、ゲームオーバーの判定等々・・・。

ここまで到達するのにC#で3000行くらい書いたと思います。

思っていたよりも多かったです。

難しかったこと

大まかな流れ

大まかな流れは「ブロック1マス落とす」→「それ以上落とせるかどうか判断する」→「落とせるならば落とす」→「落とせないなら次のブロックを落とす」
みたいな感じです。回転やブロックの移動は割り込みして処理します。

手間がかかったこと

手間がかかったのはブロックの回転です。

2Dではなく3Dなのでとても手間がかかりました。行列を使ってブロックを回転させました。式は以下を使いました。まさか大学で履修した線形代数がこんな所で役に立つとは思ってもいませんでしたwww

@3次元空間での回転行列
rotation-matrix1

rotation-matrix2

rotation-matrix3

 

その他にもブロックを削除した後に一段下げることに関してどう書こうか悩みましたね

解決できなかった問題

ブロックの回転や一段下げるアルゴリズムについては、なんとか解決することができました。

しかし、解決するのには時間がかかる問題がいくつか出てきました。それはグラフィック面です。

ブロックとか矢印はBlenderというフリーの3DCGのソフトで作っているんですが、このBlenderというソフトについては、わからないことがあまりにも多すぎました。

時間をかければ勉強できるのだと思いますが、私はあくまでプログラミングの方に興味があるので、3DCGのソフトの扱い方などには全く興味がありません(;´・ω・)

いったん中断して新しいゲーム開発に取り掛かる

3Dテトリスは一旦中断にして新しいゲーム開発に取り掛かろうと思います。

中止ではなく中断です。3Dテトリスは開発を一旦中断ということでまたいつか再開しますよ!

もっと簡単なゲームを作って公開しようと思います。

 

以上です!

ノシ

 - 技術系