東京工業大学 ロボット技術研究会

東京工業大学の公認サークル「ロボット技術研究会」のブログです。 当サークルの日々の活動の様子を皆さんにお伝えしていきます。たくさんの人に気軽に読んでもらえると嬉しいです。
新歓特設ページ        ロボット技術研究会 HP        ロボット技術研究会 twitter公式アカウント

ゲーム

「ロボット技術研究会」通称「ロ技研」は、その名前の通りロボットの制作や研究はもとより、電子工作や機械工作、プログラミングなどの幅広い分野にわたるものつくり活動を行っています。

カテゴリ一覧: loading

DistanceFieldを用いた2Dサンドボックスゲーム

突然ですが皆さんMinecraftは好きですか?ニックさんです。僕はMinecraftは大好きです。
圧倒的な自由度や無限に生成されるゲームフィールド、何でも破壊・設置可能なシステム、
Minecraftが世界中のゲームプレイヤーやゲームエンジニアに与えた影響はすさまじい物があるでしょう。
ちなみにMinecraftについてのレビュー記事が4gamerに良くまとまっています。

結局のところ「Minecraft」とは何だったのか?(リンク先:4gamer.net)


今日のブログの内容は、Minecraftみたいなサンドボックス型ゲームいいよね!ってことで僕が作っている
サンドボックス型の2Dオープンワールドゲームのご紹介をします。
特に今日はレンダリング回りについて話そうと思います。


いくらMinecraftのようなゲームが良いよね!って言っても同じように作ればただのパクりです。
ただのパクリも面白いんですが、Minecraftライクなゲームは世の中に溢れているので、
どうせならもっと違ったことがやりたいなぁ~と思っていたところに15さはら君に教えてもらった技術が
記事タイトルにもあるDistanceFieldです。(さはら君ありがとう)

DistanceFieldとは剛体までの最短距離を敷き詰めたスカラー値のグリッドのことで、
これとバイリニア補間を併用すれ線形近似をした連続空間を構成可能です。
まずはその利用例を見てみましょう。
DistanceField

左の図は壁までの距離を0~1のグレイスケールで表示した図です。グリッド上なのでカクカクしてますね。
右の図は左の図をフラグメントシェーダーを用いてバイリニア補間したものです。
結構滑らかにつながっている事がお分かりでしょうか?

またDistanceFieldは壁までの距離や法線ベクトルも高速に取得できます。
当たり判定も比較的簡単に少ない計算量で行えるので流体のシミュレーションなどでよく使われるそうです。
DistanceField2

もちろんゲームにも使われていて、例をとしてUnrealEngineでのアンビエントオクルージョンや、
G-Games制作のThe Tomorrow Childrenでも利用されているようです。


さて、今回のゲームは2Dで見下ろし型のサンドボックス型ゲームです。
DistanceFieldは有用な技術ですが、単一種類のオブジェクトの距離しか扱えないため、
Minecraftのように「岩」「土」「レンガ」などの種類を持たせることが出来ません。
そこで私が勝手に考えたのがColoredDistanceFieldという技術です。
ColoredDistanceFieldは単純で、グリッドに浮動小数点である距離値の他に、
オブジェクト情報である「Color」として整数型の値も埋め込みます。
ColoredDistanceField

この図の一番右の画像がColoredDistanceFieldを利用して描画された図です。
三色の色情報を埋め込んで、その境界付近は適当にグリッド間で線形補間することで合成しています。
これによって距離情報を埋め込んだ浮動小数点テクスチャと種類情報を埋め込んだ整数型テクスチャを
フラグメントシェーダに渡すだけでシェーダー側からたくさんの種類のオブジェクトを描き分けることが出来ます。
やったぜ。


以上の技術を使って描画されたゲーム画面がこちらです。
GameField

実際はテクスチャに埋め込んだ離散化された情報だけを持っているのですが、
線形補間でもそれっぽく見えるものですね。


ちなみにこの画面を出力するまでの描画パスは次のとおりです。
RenderGameField

ColoredDistanceFieldの情報を使ってベースカラーマップやら法線マップやらを先に出力して、
そこからシャドウマップやらフォンシェーディングやらで遅延レンダリングしています。
DistanceFieldを使うと嬉しいのが、距離情報が簡単に取れるのでアンビエントオクルージョンもすぐ出来ます。
嬉しい!


そしてDistanceFieldの特徴として、オブジェクトを変形するときは変形範囲のみ
グリッドの値を書き換えれば良いのでゲーム中フィールドの破壊や創造も簡単です。

anime
もりもり岩肌を削れていますね。動的に影やシェーディングがなされているとこにも注目!


現状製作出来ているものはこんな感じです。
来週9/13(日)に開催されるGAME^3というイベントに出展するので興味がある方は是非見に来てください。
Bitbucketにもソースを上げているので中身が気になる方はこちらもどうぞ。

工大祭に間に合うと良いですね。あと研究も進めば良いですね。

ゲーム制作初心者がゲームを作り直してみた

こんにちは、14のまーぼう(@mabo_207)です。今回は進捗報告ですね。
前回の進捗報告(http://titech-ssr.blog.jp/archives/1012607410.html)から半年ですね。どれくらい進んだのかというと・・・
プレイ画像

そもそも作っているものを変えていますね。前と同じくSRPGを作っているのですが、ルールは少し違うのでプログラミングをやり直しています。現在はチュートリアルステージをプレイできるようになった、というところまで進んでいます。GAME^3や新歓展示ではこれを展示してましたね。


では、ここからが本題。前のゲームを作ってる際に、改善すべき点がたくさん見つかったので、今回はそれを改善しつつプログラムを書き直しました。この記事では、特に酷かった部分についてまとめておこうと思います。初心者なので、改善するレベルが低くね?という声もあると思いますが許してくださいな。
(開発環境は前回とは変わらず、DXライブラリ + C++ で制作。)

(1)(before)動きが重い→(after)動きを滑らかに
これは処理落ちとかが減った、ということです。前のゲームでは、見るからに処理が重かったのですが、何をしていたかというと、
「毎フレームでChangeFont(フォント変更の処理)を何回も呼び出す」
をしていましたね。ChangeFontってかなり重い処理なんですね。そりゃ処理落ちするわ。ということで、フォントデータをあらかじめ複数作成しておいて使い分ける、という手法を取りました。
DXライブラリのリファレンスページはよく確認しておきましょう。より良いプログラムの書き方が書いてあるので。

(2)(before)画面の変化に乏しい→(after)画面に変化をつけよう
前はキャラがゲーム中でほとんど動いてなかったんですね。前のを作って展示したことで、動きが少ないと見栄えが悪かったり、何が起こっているのかをプレイヤーが理解できなかったりするのがよく分かったので、キャラを常に歩いているようなモーションを用意したり、ダメージを受けたら点滅したり、など画面に変化を多くつけました。
キャラを動かすとなると、次のの画像のように必要な画像データも増えるので、グラフィック面での負担も増えますね。ドット絵も上達しないと……。(左:前回 右:今回)
キャラグラ比較


(3)(before)このゲーム静かだ→(after)BGM入れました
ゲーム展示する時、周りはちゃんと音楽を流していたんですね。前回のゲームでは音楽を流していなかったんで、ちゃんと流すようにしました。ただ、音楽・効果音を流す処理ってDXライブラリでは簡単にできるので、すぐに直せる部分でした。
BGMは友人にDTM(デスクトップミュージック)を趣味にしている友人がいたのでその人にお願いしましたが、そういう友人がいなかったらフリー素材を使えば大丈夫です。効果音も同様ですね。

(4)(before)グラフィックが雑→(after)ドット絵の作り方を少し勉強し始めた
前のは、「とにかく動けばいい」という考えで作っていたので、グラフィックはとにかく適当でした。ですが、適当にグラフィックを作っていたけどもドット絵を作る事は楽しかったので、サイトを見て参考にするようになりました。まだまだ下手なんですがね。特に参考になったサイトを二つ置いておきます。
グラフィックを作るのが面倒!って人は、人に頼んだり、フリー素材を使ったりするのも手ですね。後はWOLF RPGエディターやツクール等の、グラフィックを作るツールを使うというのも手ですね。


特に改善したのはこの4点でしょうか。他にも色々改善した部分はあるんですが、全部紹介していたらキリがないので。
新入生でゲーム制作した事がないけど作ってみたい、という人達に一言。
とりあえずまずは小さいゲームを作るようにした方が明らかに良いです。そして完成させる事を第一にした方が良いと思います。
完成させれば、ゲーム制作の流れが分かるということもあるんですが、「改善すべき点」がたくさん見えてきます。ただ、大きなゲームを最初から作ろうとすると、「改善すべき点がたくさん見つかったけど、直すべき所が多すぎて直せない(または一から作り直さないといけない)」という事態に陥ります。こうなるとゲーム制作の進み具合が遅くなったり、必要以上に辛い思いをしながらゲームを作らないといけなくなったりします。初めての人は、小さなゲームから作ってみてください。


今回は以上です。ここまで読んでくださりありがとうございました。

ゲーム製作者交流会「GAME^3」レポート

こんにちは、14年度入学のりむこ(@Rimko_san)です。

2/22(日)にゲーム製作者交流会「GAME^3」が開催されました。
今回はその様子をお伝えします。

長くなりそうなので概要をお伝えしますと、
総来場者数はおよそ70名ほど、展示ゲームブース数はおよそ38
活発な議論ができ、初開催にして非常に濃いイベントとなりました!


 BOKASHI
当日の会場の様子(かなりぼかしを入れています)。 
イベントの目的は「ゲームの展示と製作者同士の交流」で、3つのタームに分かれて発表時間を分けてゲームを展示します。
ゲームを見る側は「こんなゲームもあるのか」「これどうやって動かしてるんですか?」など、製作者との対談ができ
展示する側はプレイした人からすぐに感想・フィードバックがもらえ、今後の開発に活かせる!
BOKASHI2
まーぼう君の影の活躍により、実に38ものゲームの展示にこぎつけることができました。
団体からの参加としては私たち東京工業大学 ロボット技術研究会の他に
東京工業大学 アマチュア無線研究会
慶應義塾大学 GAPCOM
千葉大学 電子計算機研究会(CCS)
千葉大学 トドノアツマリ
東京工科大学 クリエイティブスタッフ

敬称略させていただきましたが、上記の団体さんに参加していただけました!
社会人の方によるサークルや個人参加もたくさんしていただけて、とても楽しかったです。
 
さて、当日のアンケートで人気だった ゲームを数点紹介させていただきます。

人気投票3位は、社会人サークル「TeamDRC2nd」KAGEさんによる「重力の国のアリス」
雑誌にも掲載されたという傑作パズルゲームで、素晴らしい完成度でした。

 人気投票は1位タイ、14票
東京工科大学 クリエイティブスタッフマドラムさんによる
「双狗」 
迫力満点の3Dアクションゲーム、難しいチーム製作での参加でした。
東京工業大学 ロボット技術研究会Lineaさんによる「ARMED CORE」 
こちらも3Dアクションゲーム、素晴らしい再現度と作りこまれた3DCGでした。

他にも
東京工科大学 クリエイティブスタッフの南都海輝さんによるアクション「海鼠戦士ゼーグルケ」 
東京工業大学 yuinoreさんによる音ゲー「Heart Beats」 
東京工業大学ロボット技術研究会 塩谷凛さんによるパズルアクション「Gimick」
東京工業大学アマチュア無線研究部 紅蓮さんによるRPG「女神と迷宮」
などが注目を集めました。

アンケートによるイベントの満足度も非常に高く、色々な点を改良しつつまた開催できたら良いなと思っています。
次回もより多くの参加者を集めて、みなさんでイベントを盛り上げていけたらと思いますのでよろしくお願いします。

Twitterアカウント:@GAME3_Staff

ゲーム制作者交流会GAME^3を開催します!!・・ってなんぞや?

こんにちは。14のまーぼう(@mabo_207)です。
今回はしんちょ・・・ではなく、ロボット技術研究会主催のゲーム制作関連のイベントの紹介記事ですね。
 GAME3ポスター加工版縮小
ゲーム制作者交流会GAME^3(げーむきゅーぶ)を開催します。
日時は2月22日!お昼から!もうあと一ヶ月切ってる!
場所は東工大の大岡山キャンパスの西2号館!
ゲームを見に来るなら当日飛び入り参加でオッケー!
この記事を見たキミ、絶対来ような!!


・・・・・ってこれじゃ分かんねえよと。どんな企画なんだよと。見に行って何の得があるんだよと。画面をご覧の皆さんは思っている事でしょう。
今回のブログではそういう事を説明していきます。最後まで読んでくれれば幸いです。

まず、このイベントは何すんのか?って事からです。大雑把に言うと、自作ゲームを作っている人達が会場でゲームを展示し、ゲームを見に来た人にプレイしてもらおう、そして意見交換をしよう、って感じです。
じゃあなんでわざわざこんな企画立てたんだとなりますね。まあ、理由は色々あるんです。例えば・・・
・自分のゲームを他の人に見せる場が欲しい、でもいきなり工大祭で出すとか怖い!
・ゲームを作っている人からの意見を聞ける場が欲しい!
・同じサークルや大学内の人達だけじゃなくて他大のサークルとか社会人のゲーム制作者と関われる機会が欲しい!

といった理由ですね。こんな理由で企画したので展示方法とか募集のかけ方を次のような特徴があります。
A.作品展示は未完成でも展示可
これはゲーム制作に慣れていないゲーム制作初心者などに対する配慮で、参加の敷居を下げたかったからです。
B.作品展示はローテーションで回す
ゲーム展示者でも作品を見て回れないと「ゲームを作っている人から意見を聞く」という事ができません。なのでゲーム展示者でも作品を見ることができるように、「作品を展示しない」という時間が必要なのです。
C.他大のゲームサークルの人がたくさん展示します
ロボット技術研究会で展示するゲームは12作品、全体で展示されるゲームは計30作品以上という感じです。他大では千葉大学や慶應義塾大学などのサークルさんが応募してくれました。参加してくださった方々に本当に感謝です。


・・・ん?ちょい待て。これってゲーム展示者についての話だよな?ゲームを作っている人ならともかくそうじゃない人って見に来る人って何かいいことあんの?
こう思った方々。これ書きながら僕も思いました。ちゃんとこれから書きますよ。
a.ゲームが沢山見れる!遊べる!楽しい!!
ゲームが展示されてて遊べるので。自由に遊んで良いはずなので楽しんでくださいね。
b.同人ゲームってどんな感じのゲームなの?ってのが分かるかも
コミックマーケットなどで販売されてる同人ゲーム。あんまり見る機会はありません。でも会場に来れば同人ゲームの雰囲気とか良さとかが分かると思いますよ。

とこんな感じです。まあ2/22の午後が暇だったら、また当日大岡山の周辺に来たなら、是非遊びに寄ってくださいな。



では最後にGAME^3の日時と場所などをちゃんと書いておきます。ここまで読んでくださった方々、ありがとうございました。
日時:2015年2月22日 13:00から展示開始
場所:東京工業大学大岡山キャンパス西2号館W242
準備:一般参加は自由。当然参加費は無料。当日好きな時に来てください。
Twitterアカウント:@GAME3_Staff
公式wiki:こちら


Unityにおける天地創造のおはなし




はじめましてアカテツ科(赤鉄科、学名:Sapotaceae)です。稚拙ながらブログを書きます。
CG^2とCG^3の統合後の研究室名は"RogyGames"となったそうですよ。最高のゲームをつくろう。

私は4月よりロ技研に入り、プログラミングとそれによるゲーム作りの勉強をしています。使っているのはUnityです。何故かというと楽だからです。勉強している言語はC++です。UnityではC#とJavascriptとBooしか使えないのですが、なんかかっこいいので取り敢えずC++の勉強を続けます。技術的な事はC++で学ぶことになりそうです。C++では今のところこんなものしか作っていません


先月(10月上旬)に開催されていた工大祭においては、ソルダー棒()、太陽系シミュレーターSpace Journeyというゲームを展示していました。 ゲーム名から飛べるので遊んでみてください。




Unityの導入っぽい記事が見当たらなかったので宣伝兼ねて紹介します。 Unityではドラッグアンドドロップでいともたやすくモーツァルトを表示することができます。すごい。

mozart


UnityにはRigidbodyという物が存在します。これをモーツァルトにつけることによって、モーツァルトが物理的な力の影響をうけるようになります。ここでは2Dゲームを作る設定にしているので、Rigidbody2Dを付けてみます。質量を1に、重力加速度を1に設定してみます。

mozart

そうすると、画像のようにモーツァルトが元の位置(上)から落ち始めます(下)。重力のせいです。これまでの操作はマウスだけで行うことが出来ます。Unityすごい。

Unityには他にも多数のゲーム作りに必要な機能があり、それらを無料で使うことができます。Asset Storeなる所謂素材を外部から手に入れられる所もあります。私は使ったことがありません。mozart
↑Spring Joint 2Dで無残にも振り回されるモーツァルト
 

モーツァルトをボタンによって自分で操作したい場合、スクリプトを書きます。工大祭まで私はJavascriptを使って書いていたのですが、これからはC#で書くことに決めました。見た感じあまり変わらないので多分大丈夫だと思います。
例えば
transform.Rotate(/*Vector3.eulerAngles*/);
という文字列を書き込むと、モーツァルトが回り始めます
詳しいことは日本語字幕付きのスクリプト講座が公式であるのでそこで学ぶことができます。


マルチプラットフォームもUnityの強みでしょう。Unityで作ったゲームはWindows、MacOSX、Linux、コンソールゲーム機、iOS、Android等用に簡単にビルドすることが可能です。 

ゲーム作りに興味がある けど何をすればいいのか分からないという皆さん、Unityを始めてみてはいかがでしょうか。おすすめです。




今度の冬コミでRogyGamesが出展します。多分私も出します。私は円が存在理由を求め旅に出るゲームを 作っています。以上です。
ギャラリー
  • ABUロボコン結果報告
  • スマホから部屋の電気をつけてみた
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • たのしいロボット帝国 製作物紹介
記事検索
最新コメント