リュウグウノツカイのように

深海で悠々と暮らしたい

ゲーム専門学校卒、ブログはじめました。

まえおき

最近、地方のゲーム専門学校を卒業したのですが、全く別の職業に就職しました。
地方で働きたかったんですが、ゲーム会社がなかったんです。

そこで、専門学校から今まで理解したことを活かそうと思い、YouTubeを始めました。

www.youtube.com

主にゲームプログラミングに関するチャンネルです。特に「DXライブラリ(https://dxlib.xsrv.jp/)」という、元々はゲーム専門学校の授業教材だったそうな仕組みを活用した、ゲーム開発の解説をしています。

初めてのキチンとしたブログ運営ですが、少しでも有益な情報となるよう、がんばります。

ブックマーク

公式ブログの用途

  • Youtubeの公式ブログがなかったので作りたかった。「公式ブログ」という響きの良さ。

  • Youtubeの動画もある程度たまってきたので、各動画のプログラムをポイント解説。

  • 動画にするまでのモノでもない、こぼれ話やコラム、ミニテクなんかも書く予定。

  • 参考書籍やサイト、動画のレビューなんかもしてみたい。

  • 地方のゲーム専門学校がどういう所か見せてやろう。調べても情報がないのです。

※コピペできる形のソースコードは、あまり掲載しません。ごめんなさい。

なぜ「リュウグウノツカイ」なの?

残念ながら、在学中に授業で教えられたプログラムや教材は、あまりにも物足りないモノでした。
プログラミングのメイン講師は1人であり、ゲーム業界出身の講師ではありません。その分、熱意を感じたのが唯一の救いでしょうか。 地方の専門学校に入学を考えていたとしても、専門学校選びは複数を見たほうが良いと実感したのです。

それと同時に、地方の専門学生が学ぶ機会の少なさ・質の低さがあるのならば、少しでも役に立ちたいなぁと考えたのが、YouTubeを始めたきっかけです。 もちろん、専門学校の講師となり、教える仕事に就いてもいいかなぁとも考えました。しかし、昨今の教師の仕事は学校管理が大半だと聞き、諦めました。教えるだけを行う仕事では、喰っていけないのかもしれません。教えたい欲は、様々な形で発散できますから。

プログラムは在学中に考えたものをベースに、独学で思いついたことを再構築し、「インターネット」という深海に放り投げることにしました。

上部の真ん中にいるのが、リュウグウノツカイ

リュウグウノツカイという生き物は銀色の深海魚で、水深200mぐらいのところで暮らしているそうです。そのため、普段は滅多にお目にかかることができません。でも、たま~に水面近くに現れることが多く、ニュースになったりします。もしかしたら、何かを伝えたいのでしょうか。もしかしたら、意外と気まぐれな生き物なのかもしれません。

そう、深海からフラ~と水面に現れては帰ってゆく、リュウグウノツカイのように。

イマドキの就活生の苦悩について

まえがき

 最近、就職活動をして気づきました。数年前までは、基本情報技術者試験など国家試験や、ゲーム作品を持ってスキルをアピールすれば内定が貰えた会社で、内定が貰えないこと。最近の採用担当者のキーワードはずばり「コミュニケーション」だということ。昨今の就活状況、明らかに変化しています。そのあたりを軽くまとめましょう。

現在の就活は「コミュニケーション」命

 採用担当者や学校の就職相談でもがよく言うキーワードが「コミュニケーション能力」。「コミュニケーション」から、どんな人物像を想像するでしょうか。例えば、友人が沢山で、休日はダチとカラオケ行ってオール!!みたいな陽キャを想像しますか?それとも、サークル活動に明け暮れ、バイトリーダーで店舗の危機を救う姿を想像しますか?

残念ですが、それはコミュニケーション能力を指しません。ただの陽キャ

 コミュニケーションと聞くと、陽キャを想像してしまうかもしれませんが、陽キャ=コミュニケーションではありません。でも、なぜか陽キャを想像してしまう...そこには、陽キャの行動を紐解いてみると理解できるのではないでしょうか?

気の合う友人がいる

 注意しておきたいのは、友人の数は関係ないこと。SNSの文字ベースな友人でもありません。リアル社会で友人ができる、ということは、それなりにコミュニケーション能力が高くないとできません。無理して友人を作り、雰囲気でごまかす方法もありますが、なるべくなら1人でも気の合う友人を持ちましょう。日頃から会話ができる環境がなければ、まず言葉が出ません。声が出ないんです。気の合う友人がいるなら、更にコミュニケーション能力は高いでしょう。1人でいいんです。日頃、会話できる友人をもちましょ。なんだったらボイチャ仲間でも良いです。日頃から「声をだす」ことが重要です。

相手という別ベクトル

 自分ひとりでいると、どうしても考えが一人よがりになってしまい、自分勝手になってしまいます。これでは、面接でも会話がスムーズにいかず、「あれ?会話できてる??」と不信感を抱かれても仕方ありません。だって相手の姿が想像できていないんですから。自分ベースの、自分ペースの会話しかできないんです。これでは残念ながら「コミュニケーション能力」が高いとは言えません。相手がいることを理解しましょ。

自分の意見を伝えられますか?

 最近の学生、自分の意見は否定を恐れてか、あまり言わない傾向にある気がします。特に後輩がそうでした。ご飯食べに行こ?って言っても「先輩が好きなとこで!!」みたいに任せちゃう。たまにはキミの行きたいところでいいんだよ??と言っても困り顔。なんで困るの。でも不思議なことにチャットベースなら言えちゃうのが現代っ子。チャットで言えて、声では言えない・・・チャットと声にどんな違いがあるのか微妙ですが、きっと「声を発する」のがめんどくさいんだと思います。現代っ子だな~。

コミュニケーションを奪った新型コロナ

 新型コロナウイルスの流行により、学校内での会話は著しく制限される風潮で、新型コロナは大事な「コミュニケーションの場」を奪ったように思えます。そのため、新入生は会話のきっかけをつかめず、友人を作れずじまい。学校も歓迎会などの行事を自粛し、せっかく集団学習をしているのに、個々が集まっているだけの集団となってしまいました。それって学校に行く意味ありましたか?最近はネットで学習できる時代。わざわざ、学校に集団教育を受けに行ってるんですから、人脈作れよ!!!と思ってしまうのでした。

面接官と「会話」できますか?

 面接のときにありがちなのは「話す内容」を全て覚えておくこと。自己紹介から長所、短所まで・・・あらゆる質問の文章を暗記し、面接で話す暗記大会。果たして、それはコミュニケーションと言えるのでしょうか?面接では上手く話そうとしてはい け ま せ ん。その完璧な姿で仕事をするのでしょうか?大抵の場合、化けの皮が剥がれて試用期間終了です。

 陽キャが面接に強いのは「ありのままの姿」で会話できるから。普段と同じように会話できるからだと思っています。決してコミュニケーション能力が高いワケでもなく、友人が多いからというワケでもなく、単純に素の姿で話すことで、面接官に「この子はコミュニケーションがきちんと取れるな」と思われるわけです。

 一方で、台本を暗記するタイプは「この子、コミュニケーション取る気あるかな?」と思われてお祈りメール。どんなに間違ってもいいんです。面接で話すキーワードは事前に考えておき、たまにはその場の勢いで文章をつむぎ、話しましょう。きっと普段よりも笑顔で話せていると思います。

コミュニケーションを仰々しく捉えるな

 特にIT系やゲーム系の専門学生は陰のものが多いイメージで、コミュニケーションだの陽キャだのを排除したがる傾向です。自分に自信がないのもありますね。私もそうです。でも、面接は自分を売りに行くわけですから、謎の自信を持たなくてどうするんでしょうか。自信を持っていいんです。学生なんですから、たとえレベルが低くても、誰よりも頑張ったのは自分です。自信もちましょ。

 また、面接試験は場数を踏めば上手くなります。最初は面接練習を、先生や友人、家族やバイト先の人などにお願いしましょう。5回。5回もすれば、面接が上手くなります。すぐに上達させたいなら「雑談形式」の面接練習をお願いするのも手です。「あなたが頑張ったことはなんですか?」という質問形式ではなく、「あ~今日も来てくれてありがとね。暑かったでしょ。エアコンかけるからちょっとまってちょ。あ~涼しいね~~。ところで、なんでうち受けようと思ったの?」みたいな感じ。面接?って感じですが、今の流行りは雑談面接。やっぱりコミュニケーションを重視するんでしょう。

 面接が苦手なら、面接練習というより、面接で話す内容をいっしょに考えてもらうのも手です。自分ひとりでは見つけられなかったお宝キーワードが見つかることでしょう。

 コミュニケーションと聞くと、なんだか壮大なテーマのように感じますが、なんてことはありません。普段の友人や家族に話すように、自分の意見を伝え、相手の話を聞き、それに応じる。当たり前の会話ができればコミュニケーション能力は高いんです。まずは日頃から「話す・聞く・応える」を気にかけてみると、良いと思います。これも立派な面接対策です。

最後に一つ。試験と考えず、面接を楽しもうよ。by就職指導の先生

夏休みに入りましたが、就活生の皆様、きっといいところがあります。めげずに頑張って!!

自分にあったゲームエンジンを選ぼう!

まえがき

 2000年代と比べて、現代では様々なゲームの開発手法があります。中でもUnityやUEなどの「ゲームエンジン」の登場によって、本来であれば高度なゲーム開発の敷居がガクッと下がりました。一方で、その人気にあやかってなのか、書店やプログラミング塾、専門学校でも、こぞって「ゲームエンジン」を取り上げています。ただ、ゲーム開発では「ゲームエンジン一択」でいいのか、ちょっと考えてみました。だって、ゲームプログラマですから。

どんどん下がる開発年齢

 ゲーム開発は難易度以外にも、年齢がだんだんと下がってきています。小学校のプログラミング必修化に伴い、小学生向けのゲーム開発手法が登場。Scratch(スクラッチ)やLEGO(レゴ)、Minecraft(マインクラフト)といった、小学生でもダイレクトに感動を与えやすく、物理的に分かりやすいゲーム開発が増えてきて、小学生もゲームを作れるスゴイ時代になりました。注意しなくてはいけないのは「小学生でもできる」は、小学生の努力によって成り立ちます。小学生レベル=低レベルと考えていると、痛い目を見ます。小学生の興味を馬鹿にしてはいけません。

スマホ向けゲーム開発も敷居が下がる

 ゲームエンジン最大の強みは「クロスプラットフォーム」な環境。スマートフォンやPC向けゲームなどを、1つのソフトウェアで完結できる機能です。何がスゴイのかって、今まではスマホならスマホ開発ソフト(EclipseAndroid Studioなど)を使わなくてはならず、スマートフォン開発の知識も必要でした。しかし、今は最低限(画面のタッチや操作方法について)を知っていればOKな時代。本来は知っておいてほしい機器依存の問題などもすっ飛ばし、ゲームのみを考えて開発できるのは素晴らしいですが、何かエラーが起こったときは対応できない、ということも多々あります。開発するなら、動作機器についての知識もそれなりに必要なんです。

ゲーム開発を副業に!?

 SNSなどを拝見していると、ゲーム開発を副業にするべく頑張っている人が多数いらっしゃって、すごいなぁと思っています。ゲーム開発で得られるお金のルートは主に3つで、広告収入、ゲーム購入、ゲーム内課金です。うち、広告収入はブログやYoutubeと似たような雰囲気なので、簡単なゲームを作って広告収入を得たいのかな?と思っています。

 個人的には、広告収入目当てのゲーム開発、クォリティの高いものなら大歓迎です。でも、似たようなゲームアセットを使いまわし、(失礼ながら)低品質(苦労して作ったのは理解できます)なゲームが溢れるのも微妙かと。さらに「ゲーム開発」の仕方を指南する情報商材も増えてきていますから、広告収入目当てなら、素直にブログやYouTubeでやってくれないか?と思っちゃいます。

 ホンキでゲーム開発をしたくて、プロになりたくて、ゲーム開発をする人が大半なんです。 楽な金稼ぎの手段としてゲーム開発をしてほしくないな...というのが、素直な正直な気持ちなのです。

どんなゲームエンジンがいいの?

youtu.be

お試しならScratch一択

 動画でも語っている通り、ゲーム開発は開発者の年齢や知識、目的によってだいぶ変わります。ただ、ざっくりとまとめると、こんな感じ。

ゲームエンジン早見表
 なにはともあれ、まずゲーム開発をしてみたかったら、クラッチが最速です。小学生からおじいちゃんおばあちゃんまで、幅広い年齢層に対応しています。さすがMITが管理しているだけありますね。 書籍や動画もたくさん出ていますので、お孫さんと一緒にプログラミングで遊んだり、逆にお孫ちゃんから教えてもらう、という新たな家族団らんも、いいかもしれません、

初心者にも手が届きやすいJS

 中高生の「趣味レベル」としては、Javascriptを上げてみました。中でも「p5.js」は本来アート系プログラミングらしいのですが、キー入力やマウス入力、画面更新、音楽再生に画像の読み込みまで・・・つまり、手軽なゲームエンジンみたいなもんです。物理判定などは頑張らなくてはなりませんが、意外と中高生の知識でゲームが作れたりします。書籍や参考サイトさんも、たくさんあります~。

book.impress.co.jp

direct.gihyo.jp

こいつ…動くぞ! p5.jsを触ってみたら思った以上に楽しかった話 - ブログ|Web・ホームページ制作の株式会社アウラ(大阪)

ゲーム会社に行きたいならC++

 ゲーム会社でゲーム開発をしたくて専門学校や大学に通っているのであれば、C++を覚えて損はありません。残念ながら最近はゲームエンジンの登場によって「C++なんて古いよ~」とか「C++知らなくても大丈夫ですよ~」とか言ってくるゲーム会社さん多いですが、その言葉をそのまま飲み込んだら甘いです。

 C++プログラミング言語の随一の複雑な技術を用います。そんな複雑な技術に、高度な技術を要求されるゲーム開発を組み合わせられるなら、ゲーム開発者としてのレベルは高い!!とゲーム会社も考えるハズ。たしかに、時代はUnityなどのゲームエンジンでハイパーカジュアルなゲームをどんどんリリースする時代ですが、ゲームプログラマに求められるのはプログラミング能力です。ぜひ、高度な技術を吸収して、ゲーム会社を唸らせるプログラムを作ってみてください。

大人の休日ならツクール系も

 コミケやサークルなどで、意外とツクール系と言われる開発手法も盛んです。プログラミングというよりは、指示を連ねて書く方式なので手が出しやすい。有料の開発ソフトもあるので、そこは大人の財力でなんとかしてください。

異論は認めます。

 世の中「ゲームの開発方法」の裾野は広がり、どれを選んでいいか分からない時代。特にゲーム会社に就職を考えていないのであれば、Scratchでも十分な勉強になります。逆にゲーム会社に入社を考えているのなら、C/C++/C# は抑えましょう。どんなに簡単なゲームでも、実際に遊べると楽しいものです。まずは、ゲーム開発(PC操作も含めて)って楽しいんだな、と思う気持ちが大事なのです。

専門学校に通わせたほうがいいの?

まえがき

 高校生の進学先や、社会人のリカレント教育として人気なのが専門学校。最近は大学ではなく、専門学校をあえて選ぶ高校生も増えてきたように思えます。私は専門学校に通いましたが、通うまでの苦労/通ってからの苦労はたくさんありました。でも、その分得られたモノも多かったです。結果的に、通って満足はしています。でも、親には苦労を掛けました。親はあのとき、どう思っていたんでしょうか?

 今回は娘さん・息子さん、近所の学生さん等が「専門学校に通いたいんだけど、どう思う?」と質問をぶつけられたときの、一つの参考にいただければ幸いです。ママさん/パパさん向け。

本人のキモチに寄り添いたい

 おそらく、専門学校に通わせる親御さんのほぼ大半が「本人のやる気や気持ちに寄り添いたい」だと思います。本人に後悔させたくない、本人に辛い思いをさせたくない、というのが親心ってもんだと思います。特に、本人が主張をすることが少なく、今回の専門学校が初めての「本人からの主張」であった場合、大人になったんだなぁという思いや、やっとやりたい事が見つかったんだと安心したり、感激したり。ともかく、本人のキモチに寄り添いたいのが、親心だと思うんです。

気持ちに寄り添いたい

なんで通いたいの?とも聞けない理由

 専門学校はその名の通り、専門分野を学ぶ学校。専門知識がなければ、本人のテンションについていくこともできず、言葉もわからず・・・なんだか本人が楽しそうだから、それで良いかな?と思ってしまいます。

 でも学費は凄まじく、1年で100万円かかるのが通常。4年通えば400万円。奨学金を借りるといっても、400万円を返すには、1ヶ月1万円ずつ返すとしても、400万÷1万÷12ヶ月=33.3333...さ、33年!!??ほぼ一生涯かけて返さなくてはいけません。

 そんな現実が待っていようとも、「本人の通いたいキモチに水をさしては行けない/専門分野だから良くわかんない」という2つの「聞けない」理由で、なんとなく通わせてしまうことも、あるかもしれません。ココは本人に、きっちり理由を聞いておきたいところです。

質問できない雰囲気、分かります。

専門学校は塾ではない

 専門学校を学習塾や道場のように考えてしまうと、少し違うのかもしれません。何がって「熱意」が違います。専門学校にも寄りますが「ホンキで学生のことを考えてくれている?それとも、学校経営のためにキレイゴトを言葉巧みに操っている?」と、分かりにくいのが専門学校。

 一番良いのは、普段の授業の様子を見れることです。そんな所見せられないよ!!というのであれば、もしかしたら見栄を張っているだけ系専門学校かもしれません。もし、仮に見せてくれたのであれば、授業よりも学生の態度を注視。寝ている学生、スマホをイジイジ学生、どれだけ勉強に熱が入る環境であるのか、雰囲気を知ることで、その学校のヤバさが理解できるかもしれません。良い意味でも、悪い意味でも。

授業より、学生に注目!!

比較検討は大事。

 専門学校は全国津々浦々にたくさんあります。もちろん、地方よりも都会の専門学校の方が就職先が周辺にある分、有利なところがあります。地方にはゲーム会社、ホントに少数しかありません。ゲーム会社も、周辺にある専門学校で授業することが多く、地方のゲーム専門学校には、ゲーム会社へ入れるツテやコネは、あまり無いんです。学生募集のためのゲーム学科/コースかな?と思ってしまいます。

 だからこそ、複数の専門学校を比較し、検討しなくてはいけません。少子高齢化の中で、スピーディーに焦らせて入学生を確保したがるのが、最近の専門学校のイヤなところ。焦っても上手く行くことはありません。

 最低でも3つの同じ分野の専門学校の学校見学へ行き、決めましょう。面倒かもしれませんが、他と比較することで良いところが見えます。教員のセールストークに騙 さ れ な い よ うに。

お見積もりと一緒です。

専門学校はゴールではなく、スタートである。

 専門学校に通えば、何となく知識や技術を身に着けて、いい感じの企業へ内定できるだろうと考えてしまいがちですが、そうでもありません。やっぱり大事なのは本人の努力。しっかり勉強して、資格を取ったり、作品を作ったりして、就職活動もへこたれずに頑張って、初めて専門分野への就職を手にするんです。

 それなのに、ぼーっと授業を聞き、必要な資格も取得せず、作品も面倒だ~~といって作らず、ちゃらんぽらんのまま、最終的に地方の現場職へ内定・・・というのがお決まりのコース。本人の努力がなければ、どんなにいい環境で勉強したとしても、結果は芳しくないことだってあります。

 本人が専門学校をどのように考えているのか、もし考えていないならば入学前にキチンと考えておけば、途中で退学することもなく、本人のやりたいことを更に突き詰めることだって、できるはずです。

ゴールではなく、スタート

ソコしか通えない

 学校までの距離や学力・性格などで、「そこしか通えない=滑り止め」的な学校として専門学校を選ぶ手段もあると思います。専門学校はボランティアではなく、慈善団体でもなければ教育機関。学校に通うということは「とりあえず時を過ごす」のではなく「勉強するため」の場所でもあるんです。ニートになってほしくない/ずっと家にいるよりはマシだ、と考えるのも正常だと思います。

 地方の場合、隣の県の都会に引っ越したり、東京や大阪で一人暮らしする、なんてことは難しく、できれば家から通わせたい気持ちは良く分かります。距離を妥協してまで通うメリットはあるのか、その専門学校で本当にゲーム会社に入れるのか・・・という疑問は、体験入学や学校見学で、教員に相談してみるのもいいかもしれません。但しセールストークで丸め込まれるかも?

様々な道が、きっとあるはずです。

本人をほったらかしにしない

 専門学校に通ったあとも、たまに本人に「今、どんなこと勉強してるの?」みたいな話を聞くとよいでしょう。専門技術のため、本人が何を言ってるのか分からないことも多々あります。でも「今日は授業で〇〇教えてもらった」とか、「友達とマック行ってきた」とか、せっかく家から通っているのであれば、本人にウザがられない程度に聞いてみると良いかもしれません。

 特に本人がサボりのプロである場合、有る事無い事を話して、なんとか期限を伸ばそうとしたり、休もうとしたりします。専門学校でも、夏休み前や冬休み前を中心に、ちろん試験はありますし、ゲーム作品の課題提出もあると思います。

 もし、どんなことを勉強してるの?と聞きにくいのであれば、ゲーム学科ならば「今、どんなプログラム勉強してるの?」とか、「どんなゲーム作ってるの?」とか、聞いてあげると答えやすいです。素直な子ならノートPC片手に語りだすと思います。技術的なことは分からなくても、「本人が楽しいんだ」と思える気持ちは、家族や周辺の人でなければ分からない感情であり、確認方法の一つでもあります。

家族の時間も大事です。

本人のやる気を図るために

 もし、本人から「専門学校に通いたい!」という申し出があったとき、実際には資金があったとしても、「じゃあ学費は自分で払ってもらうけど、それでいいの?」と聞いてみるのも手です。

お金が無いフリをしましょう。

「親なのに学費の準備が無いなんて最低!!!」みたいに喚き散らさなければ良いですが...

 大抵の場合は奨学金を借りる方法を調べたり、学費免除の方法などを本人が調べ始めるはずです。本人からアクションすることができれば、よっぽどやる気があります。

自分の住んでいる市町村にも、奨学金制度があります。

 逆に、ふ~ん、じゃあ就職でいいや、と簡単に諦めるなら、一時の気の迷いかもしれません。通わないほうが賢明です。

 本人から学費についてアクションできるかどうか、が通いたい本気度だと思います。その様子を見て、通わせても良いか判断するのも、良いかもしれません。

結局、本人の好きなことをやらせたいのが親心。

本人が通う責任は、本人にしっかり持ってもらいましょう。

専門学校のグレーゾーン化は徐々に進む

まえがき

 「大人の発達障がい」という言葉が最近はやっているようで、診断を受けて「発達障がい」だったんだと気付きホッとする人が増えているようです。一方で、診断を受けても「発達障がい」とは認められない、いわゆる「グレーゾーン層」として社会を生きている人が居るのも事実。

 専門学校でも、いわゆるグレーゾーン層の入学は余程のことが無い限り受け入れ、通常クラスとして編入し、最後の学生生活を受けさせます。つまり、専門学校はグレーゾーンの対応ができる!と言っているのでしょうか?学生目線から考える「専門学校のグレーゾーン化」について、語ります。

体感比率は?

 私の体感では、専門学校、症状は様々にありますが、クラスの半分がグレーゾーンだなと感じます。特にコミュニケーション系の発達障がいについては、雰囲気が違ったり、話している内容が???だったり・・・自閉的な学生も少しは居ますが、圧倒的にASD気味なグレーゾーンが大半だった覚えがあります。

クラスの体感

発達障がいの支援ができるのか?

 専門学校にもよりますが、発達障がいの支援には知識や技術、実際の経験などが多分に含まれます。ベテラン教員であれば、何百人も学生を見てきた分、学生の特性を熟知し、最適なアドバイスを受けられるかもしれません。一方で新人教員には支援のための教育なんてあるはずもなく、勢いとその場のノリで対応しようとする結果、最悪のケースが・・・ということもあるかもしれません。

熱血すぎるのも程がある
 しかし、学校の先生というのは多忙なようで。様々な業務をこなす中で、きっと発達障がいについての勉強会などは開かれないのでしょう。最近は小学校などを中心に、学校でも発達障がいについての勉強会が盛んだと聞きますが、専門学校では、そういったハナシは無かったように思えます。
勉強会に参加する暇もない?

 逆に東大なんかでは、発達障がい支援の場所が設けられているらしく、大学では比較的、理解が進んでいるのかもしれません。 ds.adm.u-tokyo.ac.jp

来る者拒まず、去る者は追わず

 専門学校の入学試験では、余程のことがない限り、グレーゾーンだろうが手帳を持っていようが、入学拒否することはありません。良い目線でみれば「多様性」であり、悪い目線で見れば「良いカモ🦆」なんです。特に普通高校から来る学生は、それなりに周りとやっていけますが、最近多いのは通信高校系の、クラスでみんなと授業を受けたことが無い学生が多くなってきていること。特に地方でも通信高校が多くなってきており、それら学生の進路先として「専門学校」が充てがわれているように感じます。

地方にも多くなってきました。
 結果として、どんな学生でもウェルカムしておきながら、実際の支援はできない(分からない)というのが、専門学校の現状ではないでしょうか。

馴染めないグレーゾーンたち

 今まで通信高校や特別学級などで学んでいた学生たち。自分の夢を追うとはいえ、同じ学校とはいえ、180度違った、異世界のような場所で学習をしなくてはいけません。本人の意志がツヨツヨなら大丈夫ですが、従来のように困っても先生が気づいてくれるとか、先生からサポートがたくさんあるのように考えていると、たぶん詰みます。

今までは、お世話してくれていた

 グレーゾーンにも種類と症状がありますが、高校では「学力」という名の振り分けがあり、レベル分けがされているため、学生本人も周りも保護者も教員も、違和感が無かったんだと思います。そこから、学力レベルにバラツキがある専門学校へ一緒くたに入学するので、違和感バリバリ。専門学生なんで流石にイジメはしないと思いますし、それが社会であり多様性でもありますが、それなりに苦労します。

症状が段階的だから「グレーゾーン」

適切な指導ができず、就職できない

 発達障がいが一番、色濃く出るときが「就職活動」です。自己理解を進め、相手の企業を研究する・・・そもそも、自分はどんな仕事をしたいのか/できるのか。一番の難問であり、誰も答えを教えてくれません。責任も取ってくれません。グレーゾーンも含め、個人戦の中でうまく戦えず、結果的に賢いのに内定が取れない・・・そんなクラスメイトも中にはいました。

ドキドキの就職活動

 私もどちらかというと「グレーゾーンかな?」と思うことがあり、コミュニケーションが得意なタイプではありません。だからこそ、自分の特性とうまく付き合わなくては行けないと思ったり、自己理解を何度も繰り返しました。そういうことができる特殊な方はごくわずか。大半は生きるのが精いっぱいなので、就職活動まで気が回せません。

 何より、指導する教員の知識がなさ過ぎるのが致命的です。学生の特性を見抜かず「なんでお前だけ面接に行っていないんだ!!」とか、周囲と比べて怒ります。「ワタシが学生のときは、もっとガツガツやっていた!」と、自分の経験のみで起こります。冗談じゃない。自慢大会なら他所でやっていただき、普段から学生と接している分の支援をいただきたいものです。

 そんな中で、この書籍は役に立ちました。良かったら読んでみてください。今の就職指導よりは御役に立つかもしれません。 www.shoeisha.co.jp

担任とは名ばかり。

 でも、教員の仕事は何かと多忙。担任の先生という役割だけ押し付けられ、クラスメイトの名前を全員覚えていない先生も過去には居ました。担任とはいえ、専門学校の担任は単純にクラスの責任者という立場のみ。小中学校の担任の先生や、高校の担任の先生のような「学生への興味」はあんまり無いように感じます。「担任=安心」というイメージを持たせる宣伝なだけで、実際は担任ではなく「現場監督」ぐらいのイメージでした。中には学生とゲームやアニメの話をしてくれる、ホントに学生に興味があるんだな~という担任の先生も居ますが...こればっかりは、体験授業や学校見学では見抜けません。

担任ではなく、学生管理員

多様性を認める=ほったらかす?

 現在は様々な多様性を認める活動が盛んです。多様性は認めることが大事ですが「ほったらかして何とかなる=高校までで人付き合いも授業の受け方も日常生活もある程度担保されている」と考える教員が大半な気もします。

 専門学校でドンドン増えるグレーゾーンな学生たち。勉強会などで知識をつけ、うまく指導できる教員が増えないと、就職活動でお得意様の企業から「あれ?レベル下がったね??」と不安視され、専門学校の質が下がっていきます。

 学生のクレームは保護者へと伝わり、後輩へと伝わり、「あそこはヤバい」と影でウワサされるかもしれません。今後の専門学校の将来を活かすも殺すも、グレーゾーン対応にかかっているような気がします。

どんな学生でも、安心して勉強できる環境整備を、お願いしたいものです。

夏のDX祭/背景の移動&位置を戻す

まえがき

前回、専門学校1年生が作りそうなゲームの紹介をしました。 ryugu44.hatenablog.com

ただ、技術的に不安な学生や、そもそもそこまで習ってないし!!!!という方のために、簡単なサンプルプログラムを用意しました。例にもよって動画でアーカイブしていますが、お役に立てれば嬉しいです。

外部解説サイト様

yttm-work.jp 背景の移動ってどんなイメージなの?とピンと来ない方も安心。まずはイメージを掴みましょう。

解説動画

youtu.be 今回は動画の中でポイントもつけました。

利用素材様

■森の画像 www.ac-illust.com ※ゲーム画面に合わせて画像のサイズを変えています。

■草の画像 illust-ryokka.jp ※ゲームに合うように、画像のサイズを変えています。

それぞれ、お借り致しました。ありがとうございます。

画像は「構造体」がつきもの

 今回使った背景画像の1つでもある「草」の画像。この画像を見て想像できる「パラメータ」って、何を思いつきますか?

 例えば、DXライブラリでは、読み込んだ画像をメモリで管理すための番号である「ハンドル」が用いられます。今回の草の画像も「ハンドル」で管理されていますので、ハンドルを管理する変数が必要です。

 さらに、画像は基本的に左上を基準に、位置を決めて描画する必要があります。2Dゲームなら縦と横の位置、X位置とY位置を管理する変数も必要です。

 加えて、画像の幅と高さを取得しなければ、当たり判定はもちろんのこと、背景を次々と横に並べることも難しくなってきます。幅と高さを管理する変数も必要でしょう。

//画像
typedef struct _Image
{
    int X = 0;                //縦の位置
    int Y = 0;                //横の位置

    int Width = 0;            //幅
    int Height = 0;           //高さ

    int Handle;                //画像のハンドル
    BOOL IsDraw = FALSE;       //描画するか?
}Image;

最低限、画像を取り扱うときは、このように構造体でまとめましょう。

おまけ:「構造体」で管理しないと...

 例えば、こんな画像があるとしましょう。おそらく、シューティングゲームのプレイヤーとして利用するんじゃないでしょうか。

プレイヤーのイメージ

 この画像をプログラムで使うとき、ネットに溢れる初心者向けのサンプルプログラムなんかを参考にすると、こんなプログラムを書くかもしれません

int Handle;
Handle = LoadDivGraph("C:\\Game\\player.png");

 よく考えると、プレイヤーの情報って、他にもいくつかあるんです。例えば・・・

  • XY位置を管理しなければ、移動ができない
  • 幅と高さを管理しなければ、四角の当たり判定が計算できない
  • 移動速度を管理しなければ、スピードアップができない
  • 体力を管理しなければ、HPや残機などを実装できない などなど...

 このあたりをプログラムで無難に書くと、こうなります。

//プレイヤーのデータ
int Handle;
int x;
int y;
int width;
int height;
int speed;
int HP;

//値の初期化
Handle = LoadDivGraph("C:\\Game\\player.png");
GetGraphSize(Handle,&width,&height);
x = 0;
y = 0;
spped = 3;
HP = 5;

 プレイヤー1ついればOKのゲームであれば、コレで完璧でしょう。つまり、サンプルプログラムや学校の授業で「画像の読込を理解する」といったハナシです。しかし現実問題、ゲームには敵がいて、その敵と上手くヤり合うことによって成立する遊びなんです。プレイヤーが1ついるだけのゲームって、ゲームに非ずかもしれません。

 さて、敵の話が出てきました。敵も画像を読み込んで描画します。敵のデータとしては、どのようなものを準備しておけば良いでしょうか?

敵の例

  • XY位置を管理しなければ、移動ができない
  • 幅と高さを管理しなければ、四角の当たり判定が計算できない
  • 移動速度を管理しなければ、スピードアップができない
  • 体力を管理しなければ、HPや残機などを実装できない などなど...

おやおや、プレイヤーと同じデータではありませんか??

 例えば、先程のプログラムに敵のデータも入れてみます。

//プレイヤーのデータ
int Handle;
int x;
int y;
int width;
int height;
int speed;
int HP;

//敵のデータ
int teki_Handle;
int teki_x;
int teki_y;
int teki_width;
int teki_height;
int teki_speed;
int teki_HP;

//値の初期化
Handle = LoadDivGraph("C:\\Game\\player.png");
GetGraphSize(Handle,&width,&height);
x = 0;
y = 0;
spped = 3;
HP = 5;

//値の初期化
teki_Handle = LoadDivGraph("C:\\Game\\boss.png");
GetGraphSize(teki_Handle,&teki_width,&teki_height);
teki_x = 0;
teki_y = 0;
teki_spped = 3;
teki_HP = 5;

プログラムが一気に長くなりました。さらに、敵を追加しましょう。こんなのとか。

敵の画像Ⅱ

//プレイヤーのデータ
int Handle;
int x;
int y;
int width;
int height;
int speed;
int HP;

//敵のデータ
int teki_Handle;
int teki_x;
int teki_y;
int teki_width;
int teki_height;
int teki_speed;
int teki_HP;

//敵2のデータ
int teki2_Handle;
int teki2_x;
int teki2_y;
int teki2_width;
int teki2_height;
int teki2_speed;
int teki2_HP;

//値の初期化
Handle = LoadDivGraph("C:\\Game\\player.png");
GetGraphSize(Handle,&width,&height);
x = 0;
y = 0;
spped = 3;
HP = 5;

//値の初期化
teki_Handle = LoadDivGraph("C:\\Game\\boss.png");
GetGraphSize(teki_Handle,&teki_width,&teki_height);
teki_x = 0;
teki_y = 0;
teki_spped = 3;
teki_HP = 5;

//値の初期化
teki2_Handle = LoadDivGraph("C:\\Game\\boss2.png");
GetGraphSize(teki2_Handle,&teki2_width,&teki2_height);
teki2_x = 0;
teki2_y = 0;
teki2_spped = 3;
teki2_HP = 5;

おやおや、プログラムが読みにくくなってきませんか??

 敵が無限に登場するゲームもあるはずです。無限ということは・・・同じようなプログラム、極端な例ですが100個も書くのでしょうか?もちろん、書いたっていいのです。でも自分で管理しないと。分からないからと言って、自分で作った難解なプログラムを友人や先生に見せ泣きつくのも、なんだか自業自得というか...と思ってしまうのでした。

 プログラムを考えるのが上手な人のアタマって、おそらく、この2つが徹底されています。

  • 似たデータ同士をまとめる
  • 繰り返しを使った処理を作る

 参考に見せてもらったプログラムが、配列や構造体、クラスなんかで記述されているのを見て拒否反応を示すのであれば、まずは配列や構造体の「おさらい」からしてみるといいでしょう。使い方が分かれば、拒否反応が無くなります。また「変数しか分からない!配列なんて使いたくない!!」と意地を張るのも良くありません。配列と構造体なくして、高度なゲームプログラミングなど組めません。ゲームを作る前に、ある程度は使いこなしてから組むことを強く推奨します。そのための学校であり、授業です。

 では、先程のプレイヤーや敵を構造体にすると、どのように記述できるでしょうか?

#define TekiMax 100 //一度に出てくる敵の数

//キャラクターのデータ
struct Chara
{
 int Handle;
 int x;
 int y;
 int width;
 int height;
 int speed;
 int HP;
};

//構造体変数・配列の宣言
struct Chara player;
struct Chara teki;
struct Chara teki2;
struct Chara tekiArray[TekiMax];

//値の初期化
player.Handle = LoadDivGraph("C:\\Game\\player.png");
GetGraphSize(player.Handle,&player.width,&player.height);
player.x = 0;
player.y = 0;
player.spped = 3;
player.HP = 5;

//値の初期化
teki.Handle = LoadDivGraph("C:\\Game\\boss.png");
GetGraphSize(teki.Handle,&teki_width,&teki.height);
teki.x = 0;
teki.y = 0;
teki.spped = 3;
teki.HP = 5;

//値の初期化
teki2.Handle = LoadDivGraph("C:\\Game\\boss2.png");
GetGraphSize(teki2.Handle,&teki2.width,&teki2.height);
teki2.x = 0;
teki2.y = 0;
teki2.spped = 3;
teki2.HP = 5;

さっきよりも難しくなったじゃないか!と思うのは、まだ早い。

 プログラミングのコツは「まとめる」「繰り返す」の2つ。よくプログラミングは「データ構造」と「アルゴリズム」で、できていると学びますが、正しくその通りなんです。例えば、この構造体を使って、敵を100体つくってみましょう。

#define TekiMax 100 //一度に出てくる敵の数

//キャラクターのデータ
struct Chara
{
 int Handle;
 int x;
 int y;
 int width;
 int height;
 int speed;
 int HP;
};

//構造体変数・配列の宣言
struct Chara teki;
struct Chara teki2;
struct Chara tekiArray[TekiMax];

//値の初期化
teki.Handle = LoadDivGraph("C:\\Game\\boss.png");
GetGraphSize(teki.Handle,&teki_width,&teki.height);
teki.x = 0;
teki.y = 0;
teki.spped = 3;
teki.HP = 5;

//値の初期化
teki2.Handle = LoadDivGraph("C:\\Game\\boss2.png");
GetGraphSize(teki2.Handle,&teki2.width,&teki2.height);
teki2.x = 0;
teki2.y = 0;
teki2.spped = 3;
teki2.HP = 5;

//敵の情報をコピー
for(int i = 0; i<TekiMax; i++)
{
 tekiArray[i] = teki; 
}

//敵を描画
for(int i = 0; i<TekiMax; i++)
{
 DrawGraph(tekiArray[i].x,tekiArray[i].y,tekiArray[i].handle,TRUE);
}

 注目すべきは、敵の情報をコピーしたり、描画をする部分。上手にfor文を活用して、100体分の敵を処理しましょう。更に構造体は「同じ構造体ならば、そのまま代入(コピー)できる」性質を持っています。最初に個々の敵を作っておいて、登場させたいタイミングで、敵配列の1つへコピーする、みたいな処理をかけると、1000体でも10体でも思いのまま。ゲームのレベル設定もカンタンにできます。

夏のDX祭/自分でサンプルを作る

まえがき

 Youtubeではゲームエンジンっぽいモノを作成中ですが、気づいたことがあります。

これ、初心者歓迎といっておきながら、初心者には難しすぎるのでは?

 Youtubeの更新が止まりつつある今でも、そこそこアクセス下さる方がいて、大変ありがたい限りです。そこで、ホントに初心者向けのゲームってどんな感じなのか?と考えながら、ゲームを作ってみました。題して

「ゲーム専門学校1年生が、夏休みの課題で作ってきそうなゲーム」

です。なかなかいい着眼点でしょ(自分でいうんだ...)

ただ、1年でも2Dゲームを開発する手前しか教えてもらっていなかったり、下手すると最上級生でもこのレベルを1人で作れない学生はゴロゴロいるのが、ゲーム専門学校の怖いところ。自分のチカラを試すためにも、ぜひ作ってみてくださいな。

「専門学生1年の夏課題」な根拠

 ゲーム専門学校に入学すると、ひとまずC言語を教わるはずです。最近はScratchで下位層の満足度を引き上げる授業もあるようですが(謎)。おそらく、6月ぐらいでC言語の基礎(変数・分岐・繰り返し・配列・構造体・列挙型・関数など)を一通り学び終わり、そろそろ2Dのゲーム制作も学ぶんだと思います。並行してグラフィックや3Dモデルの制作、基本情報技術者試験対策など、正直、今まなぶの!?という授業もありますが、頑張りましょう。

具体的には?

 具体的には下に示す事柄が理解できると、このゲームが作れます。まだ学校で学習が済んでいなくても、先取りして予習するのも勿論オッケーです。

  • C言語の基礎:変数、分岐、繰り返し、配列、構造体、列挙型、マクロ、関数
  • ゲームプログラミングの仕組み:シーン切り替え、ゲームループ、FPS制御
  • 入力機器のプログラミング:キー入力、マウス入力
  • 外部バイナリファイル活用:読込、破棄、ハンドル管理
  • 外部テキストファイル活用:読込、更新、作成
  • 画像処理のプログラミング:画像描画、アニメーション描画、移動、点滅
  • 音楽処理のプログラミング:音楽再生、音楽停止
  • ゲーム数学の基礎:グラフ、三角関数

    最低でも1年生が終わるまでには理解しておきたいコトです。

ゲームの内容

www.youtube.com

  • タイトル画面→プレイ画面→リザルト画面→タイトル画面・・・という流れ
  • プレイヤーはスペースキーでジャンプして、右から来る恐竜を避ける。
  • 背景が移動する。
  • 右から来る恐竜に当たると即ゲームオーバー。
  • 最高得点をテキストファイル等に書き出し保存。次回ゲーム時にも反映。
  • 最高得点時には、リザルト画面で「New Record」描画をすること。

ゲーム開発のヒント

  • ジャンプは三角関数で作りました。角度を変える以外にも使い道があるんです。
  • 地面の値を仮に設定しています。アクションゲームなど地形が複雑なときには使えません...
  • 敵も自分も同じデータです。設定次第で、敵か自分か決まります。
  • 適当な変数名や配列名は絶対NGです。マジックナンバーも極力なくしましょう。
  • C言語ではクラスを作れません。が、構造体と処理を組み合わせ似たようなことはできます。

あとがき

 インターネットの諸先輩方と同様に、まさか自分がサンプルプログラムを作る立場になるなんて思いもしませんでしたが、未来のゲームプログラマのためにも、がんばってみました。私のサンプルもマジックナンバー残っちゃってますが、色々と改良していただいて構いません。

むしろ改良しましょう。そのまま提出するとバレますよ??

あとがき2

もし、この部分について解説がほしい!/この処理の意味が分かんない・・・などがあれば、各種コメント等でお知らせいただくと、取り上げるかもしれません。悩むより相談が大事です。

念のため。教育機関での当プログラム利用はご遠慮を。学校の質を疑います。

友人のブログ開設、お手伝い

まえがき

 友人がブログを始めたいとのことで、メール取得~ブログ開設~操作までを教えて上げたら、たいそうお気に入りのようで。今では1日で40人も見てくれると大騒ぎ。手伝って良かったなぁと思いつつ、「あ、コレはゲーム開発ならではのスキルかも?」と思うコトがあったので、小さくまとめておきます。

適切なネット検索キーワード

 意外と困っちゃうのが「分からないことが分からない」ので、調べようにも調べられない。たまに自分で調べずに人に聞けば良いと思う気持ちにを入れたくなる人がいらっしゃいますが、そもそも調べられないんです。キーワードが分からないんです。みんな、そうやって育ってきたんです。ですから、最初のうちは微笑ましくお手伝い。具体的なキーワードというのは、3ワードぐらい入れないと出てきません。

求めていた背景素材が出てきたときの快感、分かってくれますか?

 ゲーム制作でも、素材を探したり設定を練るために、際どい部分まで検索しなくてはいけません。ゲーム開発者は謙遜しがちな「適切なネット検索キーワードが分かる」スキルというのは、思ったより一般人は手に入れていないようです。誇りに思いましょう。

簡単な画像作成

 ブログにもタイトルロゴ?みたいなモノがあるようで。ゲームを作るモノなら、誰しも何となくタイトルロゴぐらい作れるはずです。

自作のタイトルロゴ。トリケラちゃんがキュート。

 ただ、世の中いろんな仕事がフリーで請け負える時代。タイトルロゴ作成も、1つ1000円~ぐらいでやってくれる人もいるようです。お金も時間も手間もかかるロゴ制作。プロに作ってもらえれば、それはもう素晴らしいものが出来上がるはずですが、個人ブログですから、そこまでは求めていません。そこで、作ってあげました。タイトルロゴと同じノリで。10分でサクッと。これが意外と大好評。無事にブログのロゴになりました。

 タイトルロゴとはいえ、オリジナルでユニークな代物。誰でも直ぐにデキるわけではないのです。

Windowsアプリ&Office系の操作

 世の中IT化が新型コロナの影響で進み、思ったよりもPCに詳しい人が増えたのかと思いきや・・・当然、普段からPCを触らない人だっているはず。そういう人が一念発起してブログをやりたい!!と思ったとき立ちはだかるのが「PC操作」です。簡単な画像編集やグラフの作成、色々と見栄えを良くするために覚えなくてはいけないことはたくさんあるはず。普段からPCに向かっているエンジニアとは全く違う感覚なんです。ゲーム開発でも、このあたりの操作は常識といって過言では無いぐらいのレベル。簡単なコトしか助けられませんが、それでも喜んでいる姿を見るのはいいモンです。

意外と困っちゃいますよね・・・PC操作。

あとがき

 他にも思いついたら、追記してみようと思います。ともかく、ゲーム開発が一人で出来るということは、その周辺のスキルもあるはずなんです。困ったときはお互い様。面倒かもしれませんが、説明できる能力を伸ばせるチャンスでもあります。説明できるチカラが伸びれば命名規則やコードの書き方も他人に優しくなれるかもしれません。人間1人では生きていけない社会。お手伝いもたまには大事なんです~。