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

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

おーま

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

カテゴリ一覧: loading

洞窟っぽいマップの自動生成

13の折重です。

工大祭でこんな感じのゲームを展示しました。
ss

真っ暗な洞窟の中を岩を壊しながら洞窟を進んでアイテムや金を集めていくというゲームです。
製作にあたっての目標としては
・とりあえずopenGLとGLSLを使ってみる
・マップの自動生成をしてみたい
でした。
openGLとGLSLについては1週間ほど勉強しただけだったのですが、工大祭も近いですしとりあえず勉強がてら使ってみようかなという感じです。
ただ描画などは三次元空間に行っているのですが、画像を見ればわかる通り完全に2Dゲームです。まあ勉強勉強...

今回はマップの自動生成部分について書いていきたいと思います。

まず、マップを自動で生成するにあたり、ランダムな値をどうするかという問題があります。
ランダムな値がないと単調なマップであったり予測可能なマップになってしまいあまり面白くありません。
今回のゲームではマップをグリッドで区切り、対応するランダムな値が正か負かによって空洞にするか岩を置くか決める、といった方法でマップを生成していきます。
洞窟を作らなければいけないので基本的には岩で、ところどころに道となる空洞があったり、たまに大きな空洞があったりしても面白いかもしれませんね。
C言語には標準で乱数を生成する関数としてrand関数があります。C++11にはrandomライブラリという強力な乱数生成ライブラリもあります。
ですが、これらの乱数生成方法ではあまりに前後の値に関連が無さすぎて変化が急になってしまい、今回のマップの自動生成に使うのはあまり向いていません。

そこで、今回はパーリンノイズというものを使用しました。
パーリンノイズとは、次の画像のような模様を生み出すことの出来る技法です。
Perlin_noise

白色の隣が突然黒色になったりせずに、徐々に変化している様子がわかります。
この、比較的変化が柔らかであるという特性から様々なゲームの地形生成などに利用されています。
今回のゲームの地形生成にも非常に向いていました。

具体的な生成方法について解説しようかと思ったのですが、思ったより長く煩雑になってしまいそうなのと、ネット上に日本語のわかりやすい解説がたくさんあるので割愛させていただきます。
ここらへんがわかりやすいかと思います…

では実際にパーリンノイズを使ってマップを自動生成していこうかと思います。(見えやすいように画面全体を明るくし、描画する範囲も広くしております)
最初に、純粋に黒っぽい部分は岩、それ以外(白っぽい部分)は空洞、という様に設定してみました。
結果はこんな感じ
blog_black

あまり良いマップができていません...
岩も空洞も固まりすぎており、細い道などが無いのであまり洞窟っぽさがありません。
無駄な努力だったかな...と落ち込んでいたのですが、ここで先輩から灰色の部分を空洞にしてみてはどうかとの助言をいただきました。
その結果がこんな感じ。
blog_ash

完璧、完璧です。
ノイズの画像を見ていただければわかる様に、ノイズの性質上白と黒が点在しているということはその中間に必ず灰色の部分はあり、それらは連続しているので道のようになります。
灰色とみなす値を調整することで道の太さをある程度操作することもできます。
また、これに加えて特に黒っぽい部分を空洞にするなどすれば大きな空洞や道を小さな道が繋いでいるような洞窟にすることもできます。アリの巣みたいでいいですね。今回のゲームでは岩の部分が減ってしまうとシステム上困ってしまうのでやりませんでしたが。
blog_mix

こうして無事洞窟っぽいマップを生成することができました。
ひたすらマップを生成していくので情報を保存しておけばプチオープンワールドっぽくなります。
今回のゲームも画面から見切れた部分は別で保存してメモリから破棄していたのでひたすら掘り続けられますし、戻れば掘った道がそのまま残されています。

最初に書いた目標のうち、openGLとGLSLを使うことに関しては本当に使って描画しただけみたいな感じで全く使いこなせていなかったので、現在も引き続き勉強中です。
次に出すゲームはバリバリ3Dでゴリゴリシェーダー使ったものしたいですね。

第61回 研究報告会

部長のおーまです。

7月4日、第61回研究報告会(2015年度 前期研究報告会)を行いました。
10930942_1576847459202591_7985121676533645681_o
都合上明かりを消さなければならず暗闇にノートPCのディスプレイは怪しく光ります。

研究報告会は、ロボット技術研究会内で行われている、制作したものや研究したことの発表会です。
内容も基本的には何を発表しても良く、様々な分野の話が聞けてとても面白いです。
発表者も1年生から、時には社会人までが発表することもあります。
色々な分野の人間が在籍するロ技研の特徴を最も感じられるイベントかもしれません。
今回は90人以上の人が参加し、とても大規模なものになりました。

今回発表された内容は以下の通りです。
○電子工作・回路

・高機能携帯充電器の作成
・絶縁の破壊

○ロボット

・NHKロボコンの報告
・単一モーターで駆動する2自由度四足歩行機械の設計と制作
・講義「機械想像」における「鉄棒競技ロボット」の製作

○プログラミング・ゲーム
・C++におけるEDSLの可能性
・RPG世界の形状・距離の幾何学的考察
・理想的なPCゲームを目指して
・目指せ!汎用的なゲーム開発

・確率拡張したPrologを用いたゲームAIの作り方

聴講者だけでなく発表者も多く、各々の活発な活動が見れる素晴らしい会でした。
これに触発されることによる、更なる活動の盛り上がりを期待しています。

部長就任挨拶

どうも、おーまです。

先日、選挙により今年度のロボット技術研究会の部長になりました。

僕は、普段サークルではゲームしか作っておらず、サークル名に反しロボットのことなどはほとんどわからないです。
しかし、それが悪いことであるとは思っていません。
逆に、そんな僕が部長になれてしまうほどの、このロボット技術研究会というサークルの懐の深さ、行動の自由さ、そして占める領域の広さこそがこのサークルの魅力だと思っています。
そして、それにより自分の知らなかった色々な知識を得ることができ、思いつかなかったよなことを実現できるようになることが、このサークルの最大の利点であると思います。
僕もこれからこのサークルで活動していく中で、ロボットに興味が出てくるかもしれませんし、ゲームともロボットとも全く違う思いもしない様な分野に興味が出てきてやり始めるかもしれません。

そのような、技術を高め合いやりたいことを実現できる場を、より提供できるサークルになるよう努力していきたいと思っています。

これから一年間よろしくお願いします。


ギャラリー
  • ABUロボコン結果報告
  • スマホから部屋の電気をつけてみた
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • たのしいロボット帝国 製作物紹介
記事検索
最新コメント