読者です 読者をやめる 読者になる 読者になる

絵が描けなくても何とかなるかもしれない、ゲーム制作

qiita.com この記事は、HAL Advent Calendar 22日目の記事です。

HAL大阪、ゲーム制作学科2年生の@yashiheiです。
@HIEMONに誘われたのですが、華やかな技術ネタが特に無かったので自分なりのゲーム制作で意識していることを書かせてもらいます。

プログラマーは絵が描けない?(一部例外を除き)

プログラマーは絵が描けないことが多いです。なので一人でゲーム制作をしている場合ぶち当たるのが、リソースの問題です。
気合でEDGEを立ち上げそれっぽい素材を作るのもいいですが、大変な労力が必要です。またはフリー素材をお借りするというのも手ですが、オリジナリティが損なわれてしまいます。

図形でそれっぽく魅せよう


上のゲームは、そんなプログラマーがリソース作るのがだるいと、テクスチャを一枚も使わずに作ったゲームです。 基本的な図形、丸と四角の組み合わせで、それなりの見た目になっているのが確認出来るかと思います。

ポイントとしては

  • 背景を暗く
  • 透明度を60%ぐらいにして図形を重ねる
  • パーティクルで見た目を華やかに
  • Easingでアニメーション

など、他にも基本的な図形でリッチに魅せる為の方法はあると思われます。(今のままだと少し画面が寂しい…)

Easingで動きを豊かに

Easing Function 早見表
ゲーム学科では、使っている人が少ないのですが、Easingは動きをリッチに魅せるにはとても有効な手段なので、ガンガン使っていきましょう。C++での実装も探してみればあると思います。

欠点

やっぱり表現の幅は限られますね…。
海外のインディーズゲームとか漁ってみると、ミニマリストな表現をされている方が結構居られるので、そちらを参考にしてみるのも良いかもしれません。

今度は3Dで魅せるぞ!

3Dでもプリミティブな図形を使った表現で、色々出来ないかなと模索中です。冬の3校合同コンテストでは金賞を取るので、色々盛り込めることは盛ろうと思います。ということで良いお年を!

Siv3Dを用いた全方位STGの実装について

Siv3D Advent Calendar 2015 - Qiitaの21日目の記事です。
この記事では、現在制作中の全方位STGの実装を大雑把に解説します。
コードはGitHubにて公開してます。yashihei/Alone · GitHub
記事内のコードは一部解説用に、実際のコードから書き換えてる部分もあります。

どんな感じのゲームなのさ

f:id:yashihei:20151221010427g:plain

Geometry Wars弾幕要素が加わった感じでしょうか。AREA 2048に影響を受けたようにも感じられます。

続きを読む

GitHubPages + Honoka + Jadeでサイトを作った

作った

yashihei.net

前から作ったゲームなどを公開して置く場所が欲しいなと思っていて、まぁ特に強く必要性を感じてはいなかったので後でいいやーってなってたのだけど、暇だったので作ってた。

きっかけというか先日、先輩(id:windyakin)が公開されたBootstrapテーマを使って見たかったのもあった。honokak.osaka

Bootstrapを使うのは初めてだったけど、グリッドシステムさえ抑えれば特に難しいことは無くて、簡単に扱うことが出来た。Bootstrapの扱いやすさと適当に組んでもそれなりに見栄えがいい感じになるので、こんなに楽出来ていいのかなと感じたぐらいには楽だった。実際今回cssに関してはmarginをちょっと付けるだけで後は何もしてない。

んで、サーバーとか特に持って無かったのでGitHub Pagesを使った。なのでWordPressみたいなCMSは使えないのだけど、コンテンツ量が特に多くは無いしCMSを導入するまでも無いかなって思った。
ただHTMLを一々手書きするのは苦痛だったので、Jadeを使った。これが思ったより便利だった。

まず、Jadeが素晴らしかったのがページのレイアウトを継承出来ることだ。例えば、WordPressの場合、ヘッダはheader.phpからサイドバーはsidebar.phpからみたいな感じでモジュール化していくのだが、Jadeでもそのようなモジュール化はincludeで可能なのだが、それとは別にページ全体のレイアウトを継承することができる。実際にコードを見てもらうのがわかりやすいが、今回の場合複数ページのレイアウトをlayout.jadeで定義した。

あと、mixinが便利だった。元々JSONでゲームの説明文やurlなどを定義してeachで回して拾っていこうと思っていたのだけど、mixinを使えば手軽に繰り返すhtmlが生成出来た。mixinを使ったのがこれ。ただかなり適当に書いてるのでもっと良い書き方とかあるのかもしれない…。

ただJade使いどころが難しいかなというか、ブログとかつけたりもうちょっと大きなサイトになるとCMSとかが必要になるだろうし、HTMLを短く書きたいなら他にもHamlとかあるし…、けどjsなのでローカルで完結するし、手軽なのは良いのではと思う。モックアップとかを作るときに使うと良いかも。

ドメインどうするかなーって思って何かそれで1ヶ月経ってたのだけど、何も変哲の無いドメインにした。

と、かなり楽して目的に応じたサイトが作れたので楽しかったです。

避けることは楽しいことだ!凶悪難易度な避けゲー「Velocibox」

ゲーム


避けゲーってのは最高です!障害物をただ避ければいいだけ。面倒なルールは一切なし!
避けゲーといえば外せないのがSuperHexagon!あの6方から押し寄せる障害物を避けるだけというシンプルな、しかしながら凶悪な中毒性を持った避けゲーにハマった人も多いはず。そんな避けゲーの魅力に触れてしまったやられてしまった人にはお勧めなのがVelocibox。

まず驚かされるのはレベル1からの凶悪な難易度。流石にこれ脳の処理能力超えてるんじゃないかと思えるぐらいには障害物が押し寄せる。
難易度が凶悪な理由として、SuperHexagonではステージが2Dであり左右に避ければ良かっただけなのが、Velociboxはステージが3Dなのだ!左右に避けるだけでも精一杯だったのに、更に上下にも避けなければならない。情報量が多い。狂ってる。

f:id:yashihei:20150215194415j:plain

「Level 1 Begin」
「Level 1 Begin」
「Level 1 Begin」
……

数十回回して、うん、これもう無理だ。辞めよう諦めよう。SuperHexagonが多少出来るからって調子に乗ってしまったんだ。これは常人に出来る避けゲーではない。と何度か思いかけたのだけど、そういえばSuperHexagonのときも最初はこれ絶対無理ゲーだろ…とか思っていたのにHyper Hexagonestクリアまでなんとか辿り着けたんだ。諦めるなって信じて繰り返してたらコツが掴めてきた。

コツとしてはまず早めの回避行動。特に上下反転は思ったより対空時間が長いのでその感覚を上手く掴まなくてはならない。

次は徹底したパターン化。これはSuperHexagonでも同じことだけど、レベル毎に決まった障害物のパターンがランダムに出てくるので、各パターンを記憶して避け方をパターン化してしまえば安定してクリアすることができる。
またVelociboxは避けるだけではなく、レベルごとにキューブを6つ拾う必要があるのでそれを組み込んだパターン化が必要だ。

f:id:yashihei:20150215191039j:plain

itch.ioにレベル3まで遊べる体験版もあるので是非。steamの実績を見る限り8割ぐらいの人がレベル3までで折れてるので大分体験版で遊べるのでは無いかと…。

引きこもりながらでも出来る!ヨーロッパを駆けるトラック運転手

ゲーム

ここ最近の癒しといいますか、時間があると気づいたら起動しているのが、Euro Truck Simulator2、ヨーロッパを舞台にしたトラックの運ちゃんになるゲームです。

暇という喉の渇きを潤すのにいつも炭酸ジュースを、つまりはWoTのような刺激的なゲームばかりをやっていては、いつか体を壊してしまいます。Euro Truck Simulator2は温かいお茶といいますか、密度は薄いけど、ただただ運転するだけで後は何も考えずにまったりできるゲームです。

ただ運転シムなので、最低限の運転知識は無いとアレなのですが、やしへいさん免許持ってないんですよね。まあゲームなので命はいくらでもあるし習うより慣れよ、そいじゃレッツゴー。

f:id:yashihei:20150107214950j:plain
ガードレールに何故か引っかかっては大渋滞

f:id:yashihei:20150107214956j:plain
慌てて右折しようとするが間に合わなくて乗り上げる

トラックって操るのが大変ですね!いやぁシミュレーターでよかったです。現実世界では間違ったからってロードとかは出来ませんし。

ちなみにこの世界、交通ルールに従わないと罰金が課せられます。信号無視、速度違反、無灯火、車両損壊などなど、GTA感覚で運転してたらいつの間にか罰金だらけで赤字必須です…。

最初のうちは慣れないトラックの運転に必死になるばかり見えないのですが、慣れてくるとヨーロッパの、のんびりとした田園風景などの作りこまれた景色の素晴らしさを楽しめます。時折雨が降ってきたりするのも乙なものです。

f:id:yashihei:20150107223444j:plain
ズザザザ

f:id:yashihei:20150107223346j:plain
国境っぽい

で、このゲームの主目的なのですが、トラックの運ちゃんになるということで、荷物を運ぶお仕事をしてはコツコツお金を貯めるわけです。たまったお金で自分専用のトラックを買ってもいいし、独立して会社の運営資金にしてもいいです。

今のところ雇われの身として借り物のトラックで荷物を運ぶことぐらいしか出来てないのですが、そのうち自分専用のトラックを買っては黒塗りにして好き勝手にヨーロッパを駆け巡りたいですね。

食パンになってみた

ゲーム


I am Bread…。そう、このタイトルに全くの偽りは無い。このゲームではあなたは食パンになれるのだ。


I am Bread - Gameplay Video - YouTube
ゲームのPVを見てみると、自由自在に動きまわる食パンの姿がある。嗚呼、なんて楽しそうな馬鹿ゲーなんだろう、よし私も食パンになるんだ、食パンになって自由に暴れまくるんだ。

f:id:yashihei:20141205132145j:plain
食パン生活が始まる…

そうしてプレイしてみたのは良いが早速挫けそうになる。そうなのだ、食パンになるということは簡単では無い。食パンの操作の難しさは実際にプレイしてみないと分からないが、PVから見ても分かるようにゲームパッドでプレイする場合、4つのボタンで足場を固定してからアナログスティックで動く向きを伝えるという非常に直感的では無い操作性となっている。次第に食パンとのシンクロ率が上がって操作に慣れれば楽しくなってくるのだが、それまでは自分の思い通りに動かない食パンにイライラしてしまうかもしれない。しかしそれも食パンになるための試練なのだ。

f:id:yashihei:20141205131735j:plain
うっかり床に落ちてしまった、もう助かりそうはない

私達は食パンなのだ、そう食パンであるからには、食品であるという自覚を持たなければならない。不用意に汚いもの、例えば床や食べ残しなどに触れると食品としての価値が下がってしまう。そもそも床でなくても壁とか机の上とか、つまりは皿の上以外の場所ならば十分汚いだろう…と思ってしまうのだが、そこはセーフらしい。

f:id:yashihei:20141205133024j:plain
焼ければ手段は何でもいいのさ!

食パンであるということは、美味しく食べてもらうため焼かれなくてはならない。最初のステージにはトースターがあるのだが、次のステージにはそれらしきものが無い。どうしたものかと小一時間程部屋の中を何度も食品としての死を迎えながら彷徨っていたのだが、ふとストーブらしきものに目が行った。食パンだからと言ってトースターに固執してはならない、どんな手段を使ってでも自らを焼いては食パンという食べ物として完成された状態にならなければならないのだ。

というわけで10$で食パンになれるI am Bread、現在アーリーアクセスですがSteamにて販売されてます。今後の食パンの進化に期待ですね。