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

Unityでインディゲーム道!

プログラム、Unity初心者がインディゲーム制作を目指して日々思うことなどを書き綴ります。

プログラミングにおける名付け、ネーミングの重要性について。

プログラミングにおいて、重要なのが変数メソッドネーミング。適切な英単語を選ぶことの大切さについて考えてみました。英語力問題に切り込みます。

  

名に魂は宿る。

プログラミングにおいて、メソッドや変数の名前付け、"ネーミング"は大事です。

どんな名前を付けるかは自由であるからこそ、どうするかはプログラマの責任。

これをきっちりやることでコードを読めば、何をどうしたいのか?というのがわかるようになり、つまり深層的な可読性を高めることができます。

 

ここで問題なのが、基本的には英語による名付けが中心だということです。

 

 

英語力は必要?それとも不必要?

プログラミング言語は、基本的には英語を利用した人工言語であり、様々な用語は英語に基づいています。

 

日本語というかローマ字で、ネーミングすることも可能といえば可能なのですが、問題があります。日本語漢字を主とした表意文字に根ざした言語だということです。なので、ひらがな、あるいはローマ字表記にすると、言葉のイメージが湧きにくいという問題があります。

 

英語は、逆に表音文字でありアルファベットの羅列ではありますが、スペリング自体に意味やイメージがあるので、それがアイキャッチになるわけです。

 

というわけで英語によるネーミングが、必然的に推奨されます。

 

そういう意味では、英語力というのは、やはりプログラミングにおいてはそれなりに必要なものであるし、下記の最も大きな問題への解決力になります。

 

 

適切な言葉を選ぶ、英語の語彙力。

変数名あるいはメソッド名を名付ける際に、大事なのは適切な言葉を選ぶこと。そのコードを説明しうる適切な言葉を選び組み合わせる、ということになります。

 

よって大事な事は、その意味を持つ英単語をただ当てはめれば良いと言うわけではなくて、その英単語のニュアンスも把握した上で使いこなすということが必要になってきます。

例えば「変える」という意味であれば、まず思いつくのは"Change"です。

しかし、変えるという意味を持つ単語はそれだけではありません。

vary, alt, tweak, convert, transformなど。

「変える」と一言に言っても、このように様々な英単語があるわけです。つまりそのメソッドにしろ変数にしろ、その状況、コンテクストに即した英単語を選ぶことが大事になります。

 

というわけで、適切なネーミング力を身につけるためには、リアルな英語力が必要になってくるのだろうと思います。

自分も英語はあまり出来ませんが、Dictionary.comなど英語関連の調べ物はなるべくネイティヴのところで調べるようにしています。

 

 

コードを書くまでの"5"つの手順。自分で1からコードを書くのに必要なこと。

コードを書くに至るまでの道筋を下の5個の手順に分けてみました。コードを書くためには相応の下準備があり、いきなりエディタやIDEに向かっても書けない、ということを理解しておく必要がありますが、多くの本には載っていません。

  • 要件定義 
  • ファクタリング "factoring"
  • "道具"選び
  • ロジックの組み立て
  • コードを書く

 

プログラミングの流れ 

1. まずは要件定義!

何がしたいのか。どんな問題があり、解決したいのか?どんな制約があるのか?ということをまとめる。ここが出発点!  

2. ファクタリング "factoring"

リファクタリングというものがありますが、これはファクタリングをやり直す、ということであります。つまりはプログラミングをやる際に、ファクタリングという作業があるということです。ではそのファクタリングとは何か?

 

抽象化の逆?factoringは数学的に言えば、因数分解。じゃあコンピュータにおける因数分解とは何だろう? つまりは、物事の仕組み、あるいは"状態"の遷移を解析して、各要素に分解するということだと思います。これはコンピュータに指示する動作の分析になります。 

 3. プログラミングにおける道具を選ぶ。

プログラミングにおいて、どの"道具"を使うべきかは誰も教えてくれない。そういう意味では自由度高い。高すぎる故に迷う! 何を使うべきか、自分で考えないといけません。これが最初の関門のような気がします。  

変数はどれくらい必要なのか?それとも配列を使った方がいいのか?同じような処理を繰り返すけど、for文while文どっちがいいのか?というようなことです。適切な道具を選ぶ、ということです。もしかしたら、APIの中に求める動作をしてくれる部品があるかもしれないし、ネットに転がってくるかもしれない・・・。それを見つける能力も大事かと。 

4. ロジックを組み立てる。筋道を立てる。

その道具をどう使うか、ということを論理的に組み立てる。擬似コードで書き出してみたり、図表を描いてみたりして、とにかく目に見える形にしてみる。コードはあくまでこれらを各々の言語に落とし込んだものに過ぎないと思うので、あらかじめこういったものを準備した方が整理できると思います。 

5. 実際にコードを書く!

以上の準備を持って、積み上げてきたものをコードへと落とし込む。準備したとはいえ、そのまま一回で成功するわけはないので、その後の試行錯誤も大事!

  

まとめ

実際のコードというものは、結果でしかなくプログラミングという作業における一部分に過ぎないということ、それを表層的に読むだけではコードを読んだとは言えない、ということがだんだんわかってきました。残念なことに、この記事で書いたようなことを説明してくれた本はほとんどありませんでした・・・。プロのプログラマの方々は、実際の業務などを通じて、先輩から教わるんでしょうね。必ずしも自分で1からコードを書くのが良い訳ではないですが、しかし本質的な部分は掴めてきたと思います。

 

MadeWithUnity探検隊!番外編 "Made with Unity"日本版がスタート!

 世間はNINTENDO SWITCHの発売に盛り上がっているようですが、Unity界隈もいろいろ盛り上がっている今日この頃。Unityより、一通のお知らせメールが。

 

やっとか!という気もしますが、とうとうMade with Unityの日本語版サイトがオープンとなったようです。

 

madewithunity.jp

 

MadeWithUnity探検隊として、いくつかのUnity製ゲームをこのブログでも紹介させていただきました。今後日本製のものも、どんどん出てくると思うのでこれはありがたいですよね。やっぱ開発者の皆さんの話は参考になります!

 

 

期待のゲームの数々

それで以前から気になっていた"Cuphead"ももちろん取り扱われています。

ゲームとしてはメタスラっぽいんですけど、戦前のカトゥーンアニメ風のグラがすごい画期的だし、手描きで大変だったろうなーと思います。これはすごい!

 

f:id:miur-us:20170303205344p:plain

Made with Unity Cupheadのページより引用

 

これもそろそろ出るはずなんですけどね。かなり楽しみです。ぜひ遊んでレヴューを書きたいですね。なんかやらなきゃいけないゲームがいっぱいだぁ。

 

 

日本も負けてない! 

f:id:miur-us:20170303210250p:plain

あとOink Games『伝説の旅団』は日本人によるもの。全然知らなかったんですが、これも絵本調のグラがいい味出してますよね。どんどん日本人による作品が来て欲しいですよね。

 

 

Unityというコミュニティ

というわけで、日本におけるUnityの拡がりは、これからどんどん大きなものになっていくと思うので、乗り遅れないようにしたいです。

 

そして冒頭でも触れたSwitchですが、どうやら5万円程度で開発機がインディ向けに開放されるようですね。いろいろな拡がりをみせるインディシーンで自分も楽しいことができたらな!と思います。

 

 

Unityを使い始めて半年を迎えそうなので、現状をまとめました!

 

Unityを使いこなしたい!

Unityを実際にインストールし使い始めたのが、9月だったので気づけば、もうそろそろ半年が経とうとしています。といってもプログラミングに集中してた時期がほとんどで、最近ようやくUnityに専念できるようになったわけなんですが。

キリのいい時期ですし情報を整理する上でも、これまでやってきたこと、そして自分のUnityにおける現状を簡単にまとめておきたいと思います。

 

そして、はてなブログはいかに自分が努力したか、そしてその結果どんなに上手くいったか、成長できたかを見せつけ合う場所だと思うので、惜しげもなく胸を張って書いてみたいと思います。

 

 

現状の概要

主要な一連の要素を最低限できるようになった、というところでしょうか。

それなりにスクリプトを書けて動かせて、パーティクルシステムで雪降らせたり、簡単な視覚効果作れたり、簡単なアニメーションを作ってアニメーターで動かして・・・。

やっぱ非常に多くの要素があるので改めて、まだまだだなぁと思うし、大変だったなと思います。でもようやく具体的なヴィジョンが見え始めた、という状況です。

上手くいかない、あるいは上手くいっても次の問題が噴出したり、というレベルではありますが、それでも思いついたことをすぐ試せるようにはなったので、かなり楽しくなってきました。

 

最低限の自力とは 

ところで最低限、ってなかなか難しいところですよね。

 

Unityは、それほど高くもない値段で有効なアセットがたくさんあるので、確かにそれらを上手く買い集めて、組み合わせればそれなりのものが作れると思います。ただし、アセットを利用するにしても最低限の自力がないと調整が出来ないと思うし、ちゃんとしたものは身につかないだろうな、ということは最初思っていたので、とにかくまずきちんとした土台を作ろう、と考えました。

 

それがこのブログで書いたように、まず基本的にプログラミング能力を身に着けよう!というものでした。それもようやくひと段落です。

 

自分の考えた"最低限"とは、いろいろ参考にしたり、アセットを使うにしても、自分でちゃんと考えて、調整、一工夫付け加えられる程度の能力、でした。なんとか半年以内に、辿りつけたかなとは思います。

  

とりあえずやってみる!の時期は終わり

自分の学習法としては、なんでもそうなんですが、とりあえず説明書などを見ないで、自分の独断と偏見でやってみる!で、その中で学んだことをまとめておいて、そしてある程度できるようになったら、専門書などほかの人の考えを聞いたり見たりして、自分なりにやってきたことと照らし合わせる、というな手順を取ります。

 

ただしUnityはかなり膨大だし、時間もあまりなかったので公式関連のものはもちろん見ましたけどね。APIドキュメントやブログとかはあまり見なかったかなぁ。どちらかというと純プログラミング向けの本を中心に読み込みました。

 

なんで今現在の具体的な目標と言うのは、改めてUnityの説明書をちゃんと読む、という作業ですね。ゲームの説明書とかも見ませんからねー。そこがボクの悪い癖。ブログなどもいろいろめぐってみたいです。

 

つまり出発地点としては最終局面であり、いよいよ本格的な冒険が始まるか否か、という部分に差し掛かっています。ここからが勝負です。

 

 

再利用と再発明

Unityでというより、プログラミングを学んでいく上で習ったことですが、“最低限の自力”にも関わる話です。プログラミングをする上で、大切なふたつの訓示があります。

・出来る限り『再利用』するべし。
・『車輪の再発明』はしてはならない。

 まず一つ目は、自分であろうが他人であろうが、既に書かれたコードが使えるなら積極的に再利用するべきだ、ということです。アセットを使う、ということも他人の作ったものの再利用に他なりません。ネットに転がっているサンプルコードなどもそうです。

必ずしも、自分で全て用意する必要はないわけです。

そしてふたつ目、既に発明されているものを再発明するのは、時間と労力の無駄である、ということです。これはライブラリ、あるいはAPIで既に用意されているものを自分で作るのは無駄であり、またアセットで販売されているものを自分で作り直すよりも買った方が速くね?ということになります。

 

UnityAPIに関しては、今まさにドキュメントを本格的に読み始めた所です。すぐに全ての把握は無理ですが、やはり少しずつ読んでいくべきですね。ドキュメントのサンプルコードもかなり参考になりますし。あとアセットに関しては、予算にも限りがあるので、膨大な中から良さげなものをピックアップして、少しずつ買っていこうと思います。

 

と言うわけなんですが、しかしこれらの言葉を額面通りに受け取ってはいけない、ということも学びました。

再利用はするべきだけど、状況によっては悪い再利用もある、ということ。そしてあえて再発明することは、コードを書く練習になりうるということです。

細かくは省きますが、やはり自分で考えて実行する力を身に着けるということが大切だということになります。

 

 

今後の展望

既にいくつかの別ジャンル毎のゲームのアイディアはあります。なんでとにかくそれらをきちんと形にして、ゲームとしてまともに遊べるようなものを作りたいですね。と同時に、このブログも定期的に更新していけたらな、と思います。内容はもう完全にUnity主体になると思いますね。いよいよ。

 

自分でもゲームをやりますが、ここ数年海外のインディゲーム状況はすごくて、その反面日本のゲーム界は、メジャーも含めどこか閉塞感もあったような気がします。ちゃんとやってる人ももちろんいますが。

同人という形ではあっても、インディゲームシーンって日本ではあまり活発ではないと思うんですが、どうなんでしょうか?少し調べてみると、やっぱりアメリカなど海外はインディに対する下地、歴史があるわけで、昨今のインディの盛り上がりはそういうものがあってこそなんですよね。

 

なんで日本も負けてないぞ!というと話がでかくなりすぎますが、自分でも何か作れないかな、という思いからUnityで始めよう!ということに至りました。で、今ようやくスタート地点に立てた!という気持ちでいます。

 

というわけでUnityでインディゲーム道!がいよいよ本格始動です!!

 

 

 

MadeWithUnity先遣隊!Vol.2 "Light And Dark"  光と闇が交わるとき。

MadeWithUnity先遣隊ということで、現在開発中のUnityによる面白そうなゲームを紹介したいと思います。その名も・・・

 

"Light & Dark"

 


 

 

白黒の世界へ、ようこそ

ゴシックホラーな世界観、白黒サイレント映画のようなPVが印象的。闇に包まれた、祖父の洋館をひとり探索する少女をプレイヤーは操ることになります。黒か白か、というグラフィックはかなり新鮮。

 

ローグライクということですが、メトロイド系探索型アクションにも見えます。見た感じ鍵を集めたりしているようですが、どんどん地下に潜っていくような構成になっているんでしょうか? 

 

サイトでの説明によると、最初はConstruct 2というHTML5によるゲームエンジンで制作していたそうですが、UnityとC#に切り替えたとのこと。

三人によるインディ制作ということで、2017年の初頭に発売予定。もうそろそろですかね。ホントにUnity製のゲームがドンドン来ますね!

 

 

光と闇の戦い

禍々しいクモのような化け物への対抗手段は『』。

フラッシュライトやランタン、あるいは部屋に設置されたローソクなどから発せられる光こそが少女の武器で、PVを見た限り一定時間光を当てることで敵を倒せるようです。

 

当然ライトは電池の残量があるわけで、厳しい戦いなりそう。

実際、制作側も高難易度のゲームである旨を説明してますしね。 

f:id:miur-us:20170213012250j:plain

カトゥーン風のデザインがいい!

 

Unity2Dの実力を示す作品となるか!?

見た限り、すごい面白そうですよね。

モノクロによるスタイリッシュな世界観が光ってます。

白黒によるビジュアルというと" LIMBO "を思いだしますが、コレはアートワークとしてより明確なコンセプトが込められていて、興味深いです。

ゲームプレイ、アート、音楽と全ての要素が統一された出来になりそうで、個人的にかなり楽しみですね!

 

インディだからこそのゲームになるんじゃないでしょうか!

 

先遣隊は引き続き、MadeWithUnityの期待のゲームについて探ります!

 

 

 

“けものフレンズ”と“動物化するポストモダン” <序章> 『セカイ系との完全なる決別』を描く物語なのか?

本ブログの趣向(Unityでのゲーム制作)からは逸れますが、元はソシャゲ、ということでご容赦ください!溶けかけた脳で書いた、評論風感想です!  ゲーム的論点などは一切ないです!!5話時点での内容についての言及になっています。

f:id:miur-us:20170214201811p:plain

公式サイトより引用 

 

リツイートされたことで、Twitterから多数アクセスいただいてます!ありがとー!

とうとう<本章>を脱稿しました。なんと原稿用紙15枚分にもおよぶ作文になってしまいました・・・!!

けものフレンズと動物化するポストモダン < 本章 >

 

思い浮かんだ一冊の本

出遅れましたが、ちゃんと5話まで見ました。

ネットでも一部で言及されていますが、自分が“けものフレンズ”を取り巻く騒動を知って思い浮かんだのは、動物化するポストモダンという本です。なので、これから再読して、実際けものフレンズと照らし合わせる、という考察をしてみたいと考えてます。 

 

この本を最初に読んだのはもう10年近く前になるので、もうほとんど忘れてますね。

今の自分がどう思うのか、と楽しみではあります。

すごーい!たーのしー!と連呼するフレンズ達はまさに動物化そのものかもしれませんが、思うにこの状況、あるいはけものフレンズで語られる物語というのは、実は動物化するポストモダンで言及されたことの先にあるものなのではないか?と私は考えています。 

ということで、序章と題して現時点での“けものフレンズ”への自分の考えを簡単にまとめたいと思います。 

  

けものフレンズの懐の深さ

このアニメは本当に凄いんじゃないだろうか?と思い始めてます。

最初CGを見てズッコケそうになりましたけどね。 

 

けものフレンズは深夜萌えアニメの皮を被った大きな物語、かもしれません。

 

大きな物語とは、神話、道徳、哲学やら宗教等で語られる、民族であるとか国家とか文明社会、人間のコミュニティを支えるベースとなる共同幻想です。しかし、ポストモダンにおいてはそれらは忌避され、馬鹿にされ、人々の感性は即物的なものになっていく。みたいなことらしいです。まぁ今の現代人を見ればわかることですよね。ただただ生きている、死んでないだけ、という状態。

 

とまぁ、自分でもよくわからない難しい言葉を並べてもしょうがないのですけど。

けものフレンズは一言で言うなら『懐の深いアニメ』だと思います。

子供もオッサンも見れるということも含めて。

  

けものフレンズはポストセカイ系? 衒学的、の対極。

ここから後半どう展開するか?ということがありますが、萌えアニメでも大きな物語が出来ることを証明するかもしれません。 

元は動物を美少女擬人化したソシャゲらしいですね。それをアニメ化するとなれば、普通に考えて、それはおそらく萌えアニメなはずです。

 

現時点ではうろ覚えですが、動物化するポストモダンでは萌えアニメは、まさしくオタクによるキャラ、記号消費に特化したものだという言及があったと思います。だとするなら、萌えアニメで『大きい物語』を語ることは基本的には不可能なはずです。  

萌えキャラにおけるデザイン、キャラの行動すらも記号であり、それは単に消費されるためのものであるから、うんぬん。

 

セカイ系といえば、とりあえずエヴァであり、エヴァ衒学的です。

小難しい言葉を並び立てることで現実から逃避しようとするのが、エヴァです。

自己の閉じた精神世界を『セカイ』そのものに見立てます。

なのでいくら複雑な 設定がなされていても、考察という行為ははもう自慰でしかないんですよね。それはそれで楽しいんですけども。

 

しかし、けものフレンズはそれをすごーい!たーのしー!というパワーワードで一蹴します。考察は出来ますけど、してもしょうがないというか、けものフレンズは明確なテーマがあるので、それについて各々勝手に考えればいいんじゃないかって感じです。

 

人間は、一体どんな動物なんだろう?と。

  

考察してもいいし、身を委ねてもいい

変にひねってなければ、主人公のカバンは人間であると考えるのが自然でしょう。

しかし記憶喪失で自分が何者であるか、わからない。これはまさに規範なきポストモダンの世の中を生きる、私達現代人そのものかもしれない。

けものフレンズとは主人公が自分が何の動物なのか?を知るための冒険であり、それは人間とはどこから来てどこへ行くのか?という哲学における根源たる問いに他ならないわけです。 

 

それを言葉ではなく、フレンズ達とのやり取りで表現するのがすごいですよね。

 

これを萌えアニメの文脈でやってしまったのは驚異的だと思います。

萌えアニメはキャラ消費のためのものにすぎないはずなのに、です。 

 

とりあえずこんな感じですかねー。たーのしー!!

  

まとめ

というわけでいろいろ書いてみましたが、アニメ自体はこれから後半に入るところなので、ここからどうなるか?という感じですね。

 

尻すぼみになってしまうかもしれないし、三流SFになるかもしれない。はたまたハードSFな流れになるのかも・・・。

そういう意味で楽しみではありますね。10年代の名作になるかもしれません。

  

※最終回に向けて、また少し書きました。 

 

本章はこちら。 

 

 

なぜレトロゲーは無駄に設定が壮大なのか? ゲームを作るうえでの意識。

なぜ無駄に設定が壮大なのか?ゲームにおいて世界観は大事です。でも、それは単にプレイヤーのためのだけのものか?作る側にとっても重要なのではないか?という一つの解釈についてまとめてみました。

  

ゲームの中の世界の設定

設定が異様に重厚なもの、重いゲームがあります。 

製作者の自己満足のため、と切り捨ててしまうのは乱暴に思えます。

 

レトロゲームのグラは、今からすればチープで単純なものになってます。

それはもちろん当時の機械の性能の限界によるものです。

しかし人の想像力は今と変わりません。もしかしたら今以上かもしれません。

 

単純なグラと反比例して、設定が無駄に重厚であったり重かったり、壮大であったりということがよくあるわけです。 

ゲームの裏設定とかいうのも一時期流行りましたよね。でもゲームを単純に遊ぶ上では、プレイヤーは気にしないし、知る由もありません。

じゃあなぜにそんな無駄に凝った設定を設けるのか?

 

そうした部分は、実際に自分でゲームを作ってみよう!という立場に立って、初めてその必要性がわかったような気がします。

 

 

ゲームの中身は数字の集まり

ゲームというものは、結局はデータの集合体であり、演算、計算式の組み合わせ、集合体であり、その本質はどちらかと言えばかなり無機質なものです。

ゲームデザイナー、プログラマはそれらを組み合わせて、豊かな感情、躍動感あふれるものにしないといけないわけです。

 

またプレイヤーの操作においても、レトロゲームは特にかなり単純なものになるわけです。そのゲームの操作は下手すれば“作業”になってしまいがちです。 

 

よってゲームの中への感情移入はかなり重要になってくると思います。

 

例えばUnityのチュートリアル“ボール転がし”があります。 

 チュートリアル中では、ちょっとしたエリアでただ黄色いブロックを集める程度で終わっていますが、いろいろなステージ構成にすることでゲームとして幅が広げることが出来ると思います。

あくまでUnity初心者向けのデモですが、それなりにゲームと作りこむができるだろうということです。

 

しかしプレイヤーの立場からすれば、ただボールを転がすだけでは、そのゲーム内の世界に入れ込むことは事は困難だと思います。

なんで玉が転がっていて、あるいは何のために自分は黄色いブロックを集めているのか?という動機付けがこのままではかなり弱いわけです。

  

それを解決しているのが、パックマンだと思います。あのゲームも結局はボールが小さなボールを集めるだけのものです。しかしパックマンというキャラクターにより、単なる玉集めは『食べる』というより有機的な行為に置き換えられるし、敵キャラがいることで緊張感も出るわけです。狭い通路でパズル性も出ていますよね。シンプルながら奥の深いゲームになっています。

  

 

創作のための求心力

プレイヤーの求心力を得るためにグラフィック、サウンド、音楽といった要素が重要になってくるわけです。 

そして、それらのデザインの根源になるのが、世界観、ストーリー含めた設定というものだと思います。

 

というわけで、壮大の設定がプレイヤーのために用意されているという面ももちろんあるでしょう、がそれだけではないだろうと思うわけです。

 

例えば『ゼビウス』はシューティングゲームですんで、ストーリーはいらないと言えばいらないのですが、しかしわざわざ言葉までも作って、その世界観設定を作り込んでいます。シューティングゲームのためにそこまでするのは例のないことだと思います。

ロードランナーもシンプルなゲームですが、名作レトロゲームのひとつです。

これもやはり『バンゲリング帝国の地下での探検』の話っていう重厚なストーリーがあります。で、この世界観は他のゲームにも受け継がれていたりします。

 

これらは単純にプレイヤーにとって表立って現れるものではないですし、プレイヤーも特に気にすることはないと思います。単純にゲームとして面白いですからね。

なのでそれらの存在価値は、どちらかというと作り手側の意識に強く作用するものなのではないかと個人的には思います。

 

 

ゲームを作り出す原動力

繰り返しますが、ゲームというものは、レトロゲームにしろ最新のゲームにしろ、その中身は全て数字であり、連続した計算の結果によるものです。

本質はコードにあります。コードに基づいた演算により、世界が作られます。

で実際の作業というものは、グラフィックスを除けば、数字であるとか計算などの無機質なものと向き合う必要が出てくるし、それは精神的にツライものだと思います。

かなり非直感的な作業になるわけです。

 

しかし実際に面白いゲームを作るためには、無機質な作業であっても、結果としてできる世界というものを各人が意識して、強いイメージを持つことが重要なのではないだろうか?ということを感じます。世界観を共有することが大切なのだと思います。

 

というわけでそういう強烈な設定を作ることで、開発メンバーの意識を強く統一するという働き、狙いがあるのではないか?という解釈もできなくはないな、という話でした!