日本のRobloxゲーム制作スクール

ゲーム好きで開発者が集まる場所として、 Robloxの公式サイトのコミュニティーがあります。ここでは、初級者から上級者レベルまで、開発に対しての疑問や意見を気軽に交換することができ、誰もが利用することができることから、それによって、学習を途中で諦めることもなく、続けられるシステムになっています。実は、私もよく利用させてもらっていて、以前、ほぼ同じことで悩んでいる人を見つけ、それだけで(私は馬鹿ではなかったと)安心したものでした。疑問点とその解決法を読みながら、この知的好奇心をオープンに共有できる世界観こそ、映画や本の小説になってもいいほど、「美しい心」と言え、だから、これからの時代にあったコミュニティーの在り方であり続けると考えています。そんなことをぼんやり思っていたら、日本の若い世代の方が、ボランティア活動にてコミュニティーサイトを開いてくれているので、いよいよですと期待せずにはいられないと思いました。 *サイトを利用するには、【Devlox】Robloxゲーム制作スクールのコミュニティーへの登録が必要です。 コミュニティーは、幾つかのカテゴリに整理されています。その内の学習サイトでは、難しいと思われる「Tween」、「Vector3」や、「CFrame」等を簡単に学べることが可能で、これには、本当に高い価値があると思いました。それは、日本語だからだけではなく、シンプルで分かりやすい例を幾つも見ることができる構成になっているからだと思います。内容の順を追ってパーツを作成すると、コードを応用として取り入れることが簡単にできるのに気がつきました。(下の動画は、ゲームの終わりに華やかなゴールの演出ができる様にと応用として作成したものです。) さて、このサイトのさらに画期的な事は、ゲームの「know-how」を100%惜しみなく提供していることです。優れた開発者のゲームのコードに触れることで、コードの学習スキルを上げる良い経験になるのは想像つくと思いますが、このコミュニティーの新しいところは、分からないことがあれば、誰でもコミュニティーの中で、ベテランの開発者の人から、アドバイスや意見の交換ができる様になっているところだと思います。それこそ先に述べた、「ゲーム好きで開発者が集まる場所」で気軽に質問できる空間になっていると思いました。 子供の頃に感じる、摩訶不思議な世界を解き明かしてみたくなる気持ちを覚えていますか。その感覚は、友達とゲームをしている時や、はたまた、外で自然と触れ合っている時かもしれません。そして、それはもしかしたら、学校では学べないことかもしれません。でも、今、一つ言えることは、それがもしゲーム開発への知的好奇心だったならば、疑問や不思議を膨らませ、自分で理解する喜びや、楽しさを味わえる場所が、この場所であると思っています。これからの子供たちに必要なプログラムの知識を、オープンな場所で学習できることは、きっとこれからも良い道標になると思います。 Discordの登録は13歳からですが、コミュニティーの学習サイトの利用は、そこからのリンクから閲覧できます。先ずは、登録して様子を見るのが良いと思います。 【Devlox】Robloxゲーム制作スクール サイトURL:https://devlox.net/

ゲームで遊ぶから開発へ

今の時代、ゲームプレイが上手だとお友達から一目置かれるほど、ゲームの世界は、私たちの生活の一部に溶け込み、娯楽、家族の団欒、友達との交流の場としてゲームと上手に向き合うことを意識した方が良いように思えてきました。それに共ない、ゲームをしたお子様なら一度は、こんなゲームが作れたらいいなと、「自分のゲームの世界」の夢を描いて、興味を持っていることが「2020年1月 小中学生のプログラミング教育に関する意識調査」から解ります。しかし、この調査の中で気になるのが、プログラムの世界に興味を持たれてはいるものの、プログラミングは学習難易度が高いためか、不安を抱かれている方が見受けられたことです。ゲームと上手く付き合うように、私たちはプログラミングとも楽しく向き合えるようになるよう、意識の向け方を少し変えたら良いと思います。 「開発の中でヒーローになる」 プログラミングも、ゲームで遊ぶように練習を重ねれば上手になることができます。ただし、プログラミングをやる事で、ゲームプレイが上手なお友達の中でヒーローから「ゲーム開発の中でヒーロー」:国際的なヒーローを手に入れることができます。それは、オンラインで繋がったゲームを開発する「自分のゲームの世界」が作成できることで可能にしてくれます。例えば、アジア圏でも、最近、人気急上昇中のRobloxは、開発したゲームを簡単に公開することができますが、それらはすべて無料でできます。Roblox Studioは、国際教育工学会の基準を取得したソフトですので、安心して学習できますし、しかも、ビジネス面でも若いうちに契約の仕方や著作権法を勉強できる良い機会になる可能性があります。Robloxのゲーム開発は、それこそ国際配信ができる優れたツールでもあるので、機会があれば試して頂きたいと思います。 「チャレンジへの耐性がつく」 とはいえ、プログラムやゲーム開発はゲームプレイよりもチャレンジです。その為、学習する過程でチャレンジ精神と忍耐がつくという利点があります。ゲームプレイはゴールに達成するために、試行錯誤を何度もくり返しレベルアップしていきます。プログラムも同様に、繰り返しは、一つ一つの問題が上手く動くか試してみて、その度に動くまで繰り返しコードを変えていきます。プログラマーさんはプログラムを書いて最初から成功するということはありません。一つ一つを上手く動くかテストしていきますし、そうでないと先に進めないので、このチャレンジ精神は、開発を通じて身につく力だと思います。 「プログラムの世界は全てに通じる」 これからの時代は、テクノロジーができることが主流になります。現在、子供の世界でゲームをまったくやらないで生きていくのは非常に難しいと思います。それは冒頭にも述べた通りです。それではプログラミングの世界はどうでしょうか。今後、プログラミングができれば、「ものごとを考える方法」すなわち、論理的な思考ができるようになります。これは一つの例ではありますが、スピードが増す複雑な情報社会の中で、必要なものを正確に捉えることができるマインド、ストレスを和らげ生きやすくしてくれることに繋がります。プログラムをまったくやらずに子どもの世界を生きていくというのは、ゲームをやらずに生きていく以上に、きっと非常に難しいことになると思います。お子様の為にも、焦らず、今、出来る事から始め、大学生になるまでに、コンピューターサイエンスの基礎が身につく準備をしていけば良いと思います。 「ゲームで遊ぶからゲーム開発へ」は、テクノロジーの世界の冒険の始まりと言うよりも、もっと現実味のある未来への確実な一歩にしていきましょう。プログラミングのお教室で、お子様が生き生きとテクノロジーを学ぶ喜びを感じられることを願っています。

レーザービームのレンダリング

#68 CFrame()を使ったポジションと方向の割出し こんにちは。前回の動画 (#67) で銃を作成しました。今日はその銃からビームを出す方法を話していきたいと思います。今現在の状態の説明をしますと、マウスでターゲットとする敵を一回クリックするとアウトプットに「相手をヒットしました」と表示される状態になっています。なので今日は、この銃からレーザービームを発射ができるCFrameについて触れていきましょう。もちろん銃の連射というのもコードを追加することで可能です。でもここでは、一回のクリックで一回のビームがでる方法を学びます。 先ず ModuleScript を使用します。モジュールスクリプトの中で書いたコードは、どこでも使用できますが、この関数のコピーを複数持つことは、その動作を変更する必要があるときに大変なことがあるので、したがって、ModuleScriptsで関数は、ScriptsとLocalScriptsでModuleScriptsを呼び出すrequireが必要とあります。 フォルダーのStarterPlayerの下のStarterPlayerScriptsの中にこれを作成し、名前をLaserRendererと変更して、で、その中にSHOT_DURATIONという名前の変数を宣言していきます。Durationというのは期間という意味ですから、これはレーザーが見える時間(秒単位)を指定したということだと想像できますね。関数を作成しますが、モジュールスクリプトで書く関数の書き方はモジュールスクリプトの名前、その後にドットで単語を続けてそして関数の名前となります。この関数の中で、銃の引き金を引いてビームを発射するビームを作るという訳です。 プレイヤーの持つレーザーブラスターの位置はtoolHandleで取得して、toolHandle をドットでPositionの単語と繋げてstartPositionという名前の変数を宣言します。 LaserDistanceという名前の変数を宣言して、ここでパラーメータの引数のendPositionからstartPositionの2つの値のベクトルの差を求めます。これにMagnitudeプロパティを使用して、レーザービームの長さ(大きさ)を取得します。 さて、今回の注目点は、laserCFrameという変数を宣言した後に、CFrame.lookAtのコンストラクターを使用しています。コンストラクターはビームを発射させるためにコンピューターに手続きをすると考えてください。ここでの手続きの内容は、レーザービームの位置、そしてレーザービームの方向を決めています。 Robloxゲームの世界では、位置(0、0、0)はゲームの中心にあります。「正面」方向は常に負のZ方向であり、「右」方向は常に正のX方向です。パーツのPositionプロパティは、常にワールドスペースでの位置を参照し、絶対位置とも呼ばれます。 コード内の位置データを操作する場合、最初に位置と方向を最初にワールド空間に変換すると非常に便利です。今後遭遇する幾何学の問題を解決するための基礎としてそれを使用してください! lookAtのZ軸をlaserDistanceの半分の長さを取得するのに、負の値を掛け、半分に割ることで中点を取得し格納するという役目をしています。 レーザービームのプロパティーをセットします。LaserPartをInstanceで作成した後に、サイズ、色、マテリアル等が設定されています。そして最後に、パーツをDebrisサービスに追加することで、(デブリは瓦礫ということですから)それをSHOT_DURATION変数の秒数の後にレーザービームが削除されるようにします。 これで、レーザービームをレンダリングする関数が完成しましたので、ここから、ToolControllerにいって、この関数をToolControllerから呼び出すことをしていきます。 ToolControllerスクリプトの上部で、LaserRendererという名前の変数を宣言します。 fireWeapon関数の下部でLaserRenderer関数を呼び出します。 再生ボタンをクリックして武器をテストします。ツールがアクティブになると、武器とマウスの間にレーザービームが見えるはずです。 ここまでできたらほぼ出来上がっています。今日の内容のコードはこちらを参考にしました。コードをコピペされる場合はこちらをクリックして下さいね。 武器のコントールのコードについては動画には載せていませんが、プレイヤーが短時間で多くのダメージを敵に対して与えるのを防ぐために、各ショットの間に遅延を用いて、クリックの速度に関係なく、各ショットの間に短い遅れをとるゲームのコントロールをすると促しています。これはRobloxで自分のゲームを作成される時にこういった細かいところで制御する方法が大切だということでしょう。 Robloxのサイトは、素晴らしい知識と探求の楽しみがいっぱいですね。皆さんはいかがでしか。本日は有難うございました。 良いコードの書き方というのは新しい機能を追加しても、エラーが出ない優れたロジックから成り立っているものだと思います。もちろんそれをする為には常にコードの書き方が一致した内容でコードが書かれてないと読み難い、結果、理解もできないとなりますよね。RobloxのDeveloperサイトでは、その様な書き方を正しくちゃんとしています。それによって、慣れてきたときには既に素晴らしロジックを身についているでしょう。 シリーズの動画 #64:Roblox ゲーム内で使用する銃の作り方 #65:Roblox ゲーム内で使用する銃の効果音のスクリプト #66:衝突を見つけるためのレイキャスティング #67:レイキャストが武器を発射:プレイヤーと誤って衝突しないようにする その他参考にしたサイト Weapons Kit NPC Kit CFrameを理解する Object and World Space

RemoteEvents:Client to Server

Level : Robloxのレッスン1〜4を終了したレベル 今回は、Robloxのリモートイベントを使用し、クライアントからサーバーに通信する方法を学習していきましょう。これはRobloxでのマルチプレイヤーゲームの一般的な機能を理解できるコードの書き方になります。 リモートイベントというのは、クライアントー>サーバーに通信するとき使用します。サーバーはインターネットで繋がっている大きな強力なRobloxコンピューターで、クライアントは、パーソナルコンピューター、携帯、タブレット、またはゲームコンソールです。 クライアントが、サーバーと通信するには、リモートイベントとリモートファンクションの2つのリモートのどちらかを使用します。 リモートイベントは、one-way communicationというデザインがなされていて、リモートファンクションはtwo-way communicationというデザインで構成されています。 リモートイベントには4つの使用方法があって、それぞれ情報の送信の仕方が目的によって異なります。 今回は、リモートイベントのクライアント→サーバーの通信方法を使用していきます。 この方法は、例えば、ユーザーがロブロックスのゲームを実行し、キーボードの ” e ” を押した時、新しく作成されたパーツがサーバー上のすべてのユーザーの画面に表示されるようになります。 その他のリモートイベントとリモートファンクションの使用方法は、…今のところは、リンク先からご参考にされて下さい。 下記リンク先のステップは、Robloxスタジオのインターフェイスを学習します。なんでも最初は真似してみましょう。このステップをやってプログラムが上手く走ると、サーバーと通信してパーツを表示することができます。 Robloxのサイト:Remote Functions and Events Using Remote Events(2ステップ) Client toSeverを行って下さい。(3ステップ) 上記の内容のステップができたら、実際にパーツが作成されるかどうかテストをしましょう。

Python「正多角形」プロジェクト

Level:初心者(PythonのBasicsのレッスン1と2が終了したレベルです) 前書き このプロジェクトでは、「辺の長さが全て等しく,角の大きさも全て等しい」という正多角形の性質を使って図形を描きます。このプログラムは、一連の動きを特定の回数だけ実行し図形を描く方法を考えます。さらに再利用可能な一連の操作は、色々な図形に活用できる様にプログラムを構成していきます。 ルール:コンピューターは、何角形の図形を描きたいかを聞きます。次に、その図形の一辺の長さを聞きます。一辺の長さはピクセルで表します。 ここをクリックすると正多角形(正方形、正三角形、正六角形等)が描けます。 1. 1つ目の質問 このTrinketを開きます。:https://bit.ly/3pW12yJ コード1行目にこのプロジェクトで使用する亀のモジュールがすでにインポートされています。 import turtle 3行目は、printステートメントでプログラムの目的を表示します。 print(‘亀が図形を描きます。’) 4行目は、プレーヤーに図形の辺の数値を入力してもらいます。変数名のsideは、英語で一辺のことを表します。プレーヤーが入力した数字を変数に保持しています。 では、ここからTrinketの Remixボタン を押して、登録アカウントを作成、書いたコードをセーブしていきましょう。Remixしないと保存できませんが、コードを書くことはできます。 次にプレーヤーが整数以外の数字を入力した場合のために、intを使い全ての入力が整数になるようにします。 side = int(side) クイズ!プレーヤーが入力した数字を出力するにはどうしますか。 print(‘side’) print(side) print() 答えはこちらです。 2番のprint(side)でした!プログラムにコードを書いて、数字が出力されるか試して下さいね。

今だからできるゲーム公開の薦め

 2014年、当時11歳だった青年がRobloxのLua言語のコード学習を始めてから、ゲームクリエイターとして大成功をする現在に至るまでの話を聞くと、そんなチャンスが巡って来るのはまるで夢話のように聞こえますが、そんな立派なクリエイターでも、始めて公開した7年前のゲームはどんなものだったか想像できますか。 子供が「ゲームを作りたいから」という理由でコード学習を始める気持ちは些細な事、と思うかもしれませんが、ゲームが完成し、いざ共有するとなると誰もが躊躇います。ゲーム公開という行為は、実は、今の親の世代にはなかったことですから、想像するのが難しいと思いますが、その行為は、かなりの情熱と勇気がなければできない事と知って下さい。それは、ゲームの公開に至るまでに費やした時間と労力です。作業をする工程で、楽しくするにはどうしたら良いかをひたすら考え、工夫したり、わからない問題の壁に当たれば、自分で答えを探す方法を学ばなくてはいけません。 先日、一人の生徒が、自分のゲームを公開したよ!と教えてくました。学校の勉強とお稽古事の忙しい合間に作業をしていた事は知っていましたが、本当に公開できた事への喜びと、そして、その結果は想定できたので、ちょっとドッキとしながら、様子を伺いました。案の定、ゲームに誰もアクセスしてくれないと嘆いていました。でも嘆きながらも、「次のゲームの案」を考えている様子に、そのめげない姿は、冒頭に触れた大成功をおさめたゲームクリエイターの話を思い出させ、なんて頼もしいと胸を撫で下ろしました。 ところで、その有名なゲームクリエイター、とあるSNS上にて、最初に公開したゲームについて語っていたのを観た事があるのですが、今でもRobloxのゲームの山の中に埋もれていて「恥ずかしい」と言いながら、笑っていたのが印象的でした。 ゲーム作成は、自分のアイディアで、どうしたら人が喜んでくれるか、楽しいと思ってくれるかと考えて、そして共有するに至るのですから、そんな若いクリエイター達は思いやりがあると思います。そして、ゲームを公開する事は、今だからできる、今の世代にあった挑戦の仕方だと思っています。そんな勇敢な未来のクリエイターが集まる場を利用しない手はないと思いませんか。 コーディングを習う機会があれば、是非、今だからできるゲームの公開をお薦めしたいと思いますし、もし公開されたならば、その勇気を讃えて誉めてあげれると、もっとコーディングが好きになると思います。