Unityでインディゲーム道!

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

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初心者向けのデモですが、それなりにゲームと作りこむができるだろうということです。

 

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

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

  

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

  

 

創作のための求心力

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

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

 

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

 

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

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

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

 

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

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

 

 

ゲームを作り出す原動力

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

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

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

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

 

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

 

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

 

 

"Yooka-Laylee TOYBOX"の感想とUnityの可能性について。[ Made with Unity ]

Unityエンジンによる、期待のゲーム"Yooka-Laylee"(ヨーカとライリー)の体験版である"TOYBOX"をプレイしたので、レビューを書きました。基本的には、このブログのテーマである『Unityでインディゲームを作ろう!』という視点からのものですが、単純にゲーマーとしての感想も織り交ぜています。 

さて、とうとうやりましたよ!そして本編発売までもう一ヶ月になろうとしています!悩んだんですが、もうSteam版でいいなと思い予約購入しました。Steam版は予約すると、TOYBOXがプレイできるようになります。体験版ではありますが、本編のポテンシャルを十二分に感じることが出来ました! 

追記!

本編を遊んだのでファーストインプレッションをまとめました! 

 

本編までのオモチャ箱 

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

スタート地点。グリーンのステージなんで保護色になっちゃってますね。正にカメレオン。

 

本編の構成に沿った、サンドボックスの世界を探索するという趣向です。

Unityで言うところの"Cube"を地面や壁として設置して、マテリアルを貼って、という簡素なデザインになっています。(本編に出てくるであろうオブジェクトもいくつか出てきています。)

グラフィックいいですね。Unrealのシャープな感じとは対照的です。

 

初見であっても、この手のゲームが得意なら一時間ほどでクリアできるのでは?というボリュームでしたが、楽しめましたね。

(嵌ると時間がかかる仕掛けもありますけどね。)

あんまりこれをやりこみすぎて慣れすぎても本編楽しめないと思うんで、ほどほどにしておきたいと思います。

 

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

本編はこれをはるかに凌ぐオープンワールドが待っています!

 

本編でも登場する光る葉っぱを100枚集めて、“ペイジー”という本のページのようなコレクトアイテムをゲットするという目的が一応設定されています。

(これについては、世界のSpeedRunはもう6分以内という領域に達してます。すげー)

 

しかしいくつかのちょっとした隠し部屋があるので、この世界をブラブラと探索することでも、それなりに楽しめます。

 

 

問題の操作性について

なんといってもアクションゲームは、最終的には操作性にかかっていると思います。その点さすがという他ありませんでした。

UnityだとRigidbodyにAddForceすることでモノを動かす、というような手段をとるわけですが、単純にそれだけだと快適な操作感は出せないです。しかしYookaは快適に動かせます!自由に爽快に世界を飛びまわれます!

 

なぜ操作性が大事か?

・うまく操作できないというイライラ
・ステージをクリアできないというイライラ

この二つはまったく別のものだからです。

前者は慣れることはあってもアップデートで改善でもされない限り、イライラはずっと残ります。逆にアクションが上手くいかず失敗したとしても、何回もやってクリアできたらそのイライラは達成感として昇華されて、プレイヤーはカタルシスを得ることが出来ます。

難しいけど面白いゲームで操作性にクセがあったとしても、この二つを履き違えているゲームはないと思います。

 

 

アクションゲーム伝統のギミック

さて実際にやってみて、やはりYooka-Layleeは3Dアクションゲームの伝統を正統に受け継いでいるなと思いました。 

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

浮かびながら移動する足場。落ちないように!

 

バンジョーとカズーイの意志を継いだスタイルですが、マリオ64に通ずるものも感じましたね。まあバンジョーとはもともと兄弟ソフトのようなものかもしれませんが。 

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

ヨッシーのヒップドロップよろしくスイッチを押す!

  

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

 レトロゲーのような見下ろし視点に切り替わったり。

 

おそらく本編にも、ドンキーやバンジョーなどをやった元少年たちにとっては、馴染み深いギミックがたくさん詰まっていると思います。個人的にはトロッコが楽しみです

  

カメラについて

これは3Dアクションゲームにおける宿命なのかもしれませんが、カメラについては少し気になった部分は正直ありました。 

ゲームパッドの右スティックでカメラは動かせるのですが、気持ちその可動域が狭いのかな?と感じました。このゲームの性質上やはりカメラを動かして、探索することが多いのでここらへんは大事です。ここら辺は本編の方は改良されているかもしれません。本編では動かせるスピードも調整可になると思います。 

 

Unityによるゲーム作りの今後について

はっきり言ってしまえばUnity製のゲームはクソゲーである、というような風潮が少なからずここ数年あったと思います。

 

このTOYBOXだけで判断することは出来ませんが、少なくともUnityだからダメ、みたいな判断をされるゲームではないはずです。

単純にゲームとして面白いかどうかの判断をすべきレベルになるだろうからです。つまりはもうどんなゲームエンジンを使っているかは気にならないレベルの出来だろうし、プロ、アマを含めて、自分でゲームを作る以外の人達にとってはそのゲームが何で作られていようと関係ないからです。

 

いよいよUnityでもそういうゲームが出始めてきたのであり、Yooka - Layleeは今後のUnityの試金石的な作品になるだろうと思います。 

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

歴戦のゲームデザイナーと若き才能が集結したPlaytonic games 

 

Unityは汎用ゲームエンジンということで自分のような素人を含め、気軽に使うことが出来る反面、よりシビアなゲーム作りは出来ないのではないか?というな論調があったと思います。

正直、PlayTonis Gamesはインディとはいえメンバーが元レア社だったりと年季の入ったメンバーなので、そりゃ変なものは出来ないよな、って感じではあります。しかしUnityでもきちんとしたゲームが出来るんだ!という証明をしてくれると思います。

 

とにかく本編をやってみてですね。正式な評価を下したい、というか単純に楽しみたいという気持ちが大きいですね! 

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

探検の領域は水中にまで。

 

 まとめ

というわけでUnityの今後に希望を感じることができる出来でした。かといって素人がここまで出来るはずはないんですけどね!本編に関しては、後はボリュームが実際どうなのか?ってところですね。Steamだと9GBなんです。最近の大作洋ゲーは余裕で50GBくらいあるんで、Yooka - Layleeはグラはアニメ調でどうなるかな?という感じです。

 

ともかく、これを目標にしてUnityを触っていきたいなと思います。

 

Yooka - Laylee本編の初感について

 

プログラミングにおける可読化と抽象化。C#は英文に近いけど・・・編

C#はかなり英文に近く、そういう意味では読みやすそうに見えます。しかし、あくまでプログラム文を読むということは、自然言語文を読むということとはまた別の問題なんだ、ということについて、歴史を踏まえて考えてみました!

抽象化とは機械の感覚を人間に近づける、

ということだと思います。

  

『抽象化』を考える。

アセンブリにまで手を出し始めて訳わかんなくなってきたけど、とりあえずUnityもちょこちょこ触っています! 

この記事にも書いた『抽象化 』について軽くまとめておきたいなと。そして、それに関連したC#における落とし穴をまた見つけたんでそれについても。今までに学んだコンピュータ自体に関するまとめにもなってます。 

 

コンピュータはプログラミング言語を読まない。

プログラミングにおける抽象化です。

 

プログラミング言語の歴史とは

可読化と抽象化の歴史なのではないかと最近思っています。

 

コンピュータは機械語しか読めません。

機械語01しかなく最初期のコンピュータサイエンティスト達は、その1と0の羅列と格闘していたようです。しかも、それを機械式のスイッチを動かすことで物理的にプログラミングしていたと。考えただけで頭が痛くなりますね。  

しかし、そんなものやってらんなくなりますよね、当然。というわけで、プログラムつまりソフトとハードを切り離すことに至ったようです。しかし、それはまた別のお話。

 

 

プログラムは依然、0と1の集合体です。せめて桁数を短くしたい!というわけで16進数で表すようにしました。でもやっぱり数字は読みにくい、じゃあせめて何か英語を当てて多少読みやすくしよう! 

これがアセンブリです。ニーモニックという略語を割り当てることでつまり機械語である数字の羅列を人間も読めるようにした、ということになります。つまり機械語可読化した、ということです。(ここまでにどのくらい時間がかかったんだろう・・・。)

 

 

読めるようになったもののアセンブリ自体は原始語といえるもので、現代人の言語とはやはりかけ離れるんで、さらに自然言語に近づけたいわけです。命令自体も単純なことしか出来ませんからね。というわけで高級言語が作られるに至ります。(人間の自然言語に近い、という意味で高級。機械に近いと低級言語。“良い”“悪い”ではない。) 

 

よくリーダブルなコードを書くように!と言われます。(ダレに?)

結局これはダレのためでもない人間自身のためなんですよね。プログラミング言語自体、機械語を間接的に読み書きするための手段であり、読みにくいコード書いたら意味ないじゃんっていう。

 

 

言葉の持つチカラ

現代人は言語を使って、より抽象的な概念を考えたり、作り出すことが出来ます。

より柔軟なコミュニケーションが出来ます。

 

『アレやっておいたから』と家族、友人に言えば、きちんと伝わるのが人間です。これは極端な例ですが、例えば『掃除をする』で考えてみましょうか。

掃除をする、とは状況によりますが、より明確に言うならば、  

掃除をする、とは
・いるものといらないものに分ける。(それらを判断する基準?)
・部屋にある物をあるべき所に戻す(あるべき所とはどこだろう?)
・掃除機でホコリを吸い込む(掃除機はどう使えばいいか?)
・ゴミをまとめて、ごみ収集に出す。(いつ、どこに持って行く?)
これらを抽象化した言葉

掃除する、という言葉を選んだのに特に意味はないんですが、たった一つの言葉にいろいろな概念や作業が含まれていますね。で人間は状況に応じて、実際どうすべきかを判断するわけです。これって良く考えればすごいですよね。機械には出来ませんからね。

今のところは。

なんでこんな風に機械に命令できたらいいよねーって話になったと思うんです。なんで抽象化とは、機械に譲歩しないで済むための手段なのだと思います。

 

 

高級言語の登場!

というわけで生まれたのがFortranという初のプログラミング言語

詳しくはわかりませんが、不完全ながらも英文には少し近づいた表記になっているようです。

 

そして決定的な言語である、C言語の登場です!多くのコンピュータ言語が影響を受けたようで、場合によってはいまだになくてはならない存在のようです。これは、かなりもう英文っぽい一種の暗号のような表記です。

 

大きな注意点としては、コンピュータはこれら高級言語を直接は理解できず、コンパイラが間に入っているということ!つまりプログラミング言語自体をコンピュータは読まない、ということです。

 

思うんですけど、プログラミング言語の意味不明というか解せない所って全部、人間が機械に対して譲歩している部分だと思うんですよね。で今というかここ20年くらいコンピュータってなくてはならない存在だし、いろんなことやってくれて、それで現代社会が成立しているわけで、何でもできるってやっぱ思い込んでると思います。

 

 

しかし、やはり出来ないことの方が多いから、人間が折れるしかないわけです。そのコンピュータが、何ができて何が出来ないかを知らないとプログラミングって行為自体が理解できないよなーと思います。

 

 

さて、抽象化することで人間の感覚に近づけよう、という流れの中で我らがC#が出来ます!!

 

これはもうほぼ英文に近いです。

ただし、オブジェクト志向というものを理解する必要がありますが。

 

オブジェクト志向という概念については、もう役割分担でいいんじゃねーの?とか思ってきました。各機能ごとに担当を決める、っという解釈です。

 

一枚の紙に全ての命令を書くと読むのが大変だ!

じゃあ項目ごとに書く紙を分けよう!(“クラス”を作る)

別々に書いた紙をどう結合させる?各紙ごとの担当者が必要だ!

(オブジェクトを作り、オブジェクトに管理させる。)

オブジェクトはいわば架空の人物であったり、物なんですよね。

じゃあなんでそんな架空の存在を作り出すかと言えば、人間が楽だから。 

 

これも全て全部、人間のためのもの。

最終的な0と1の羅列である命令文を読み込み、処理するだけ。

なんかもう既にかなり機械に振り回されているんだな、とか思いますね。

 

 

C#はとてもいい言語だけど 

C#ですが、英文にかなり近いとはいえ、人間が譲歩すべき部分は本質的にあまり改善されていないので、あくまで面倒な部分が隠されているに過ぎません。

 

コードにある、コンピュータがどう動いているか?という性質、あるいはそのコードを書いた人のロジック、思考プロセスを読まないといけないんですよね。

 

ここら辺をきちんと説明してくれる人が少ないので困ってしまうわけですし、

初心者向けであるはずのC#で挫折してします人を生み出すんではないでしょうか?

自分も挫折しかけたというか一昨年の冬に入門を中断しましたからね・・・。

 

 

なんでC#を初めとした高級言語は人間のために、0と1の集合体を抽象化したものにすぎず、コンピュータ自体が実際どう動いているかイメージすることの重要についての考察でした。 

 

でもやっぱりC#じゃなきゃプログラミングなんてできなかったと思いますけどね。

もう少し教えてくれる人がいれば楽だあったかなー、という話でした!!