新規記事の投稿を行うことで、非表示にすることが可能です。
2019年11月30日
【23日目】英語版Udemyで学ぶ!C#
進捗87%
一気にゲームを完成させる勢いで進める!
■Game Pongの作成(続き)
ゲーム画面のメインメニューの作成から開始
順調に作成を行っていたが、いきなり画面が真っ黒になり、さっきまで見えてた文字が見えなくなってしまう状況に陥った。詳細はわからないが、試行錯誤して結局、フォントを設定しなおすことにより回避。
ゲームの画面構築
次にゲーム画面に移る。Unityでは、パーツをひな形(prefabs)として登録して使い回すことができる。これは同じような画面を複数作らなけらばならないとき大変便利だ。
ゲーム画面の設定は細かく、以上に時間がかかってしまった。ちょっとした設定や、UI操作を抜かすと意図通りにならないため、その復旧に時間がかかってしまった。
ゲームの動作の実装
いよいよ、ゲームのパーツを動かし本格的にゲームのロジックの作成にかかる。始めにラケットの動作のコーディングを行った。
このゲームは2人でピンポンをするようなゲームなので、それぞれのプレイヤーがキーボードで操作ができる方法を学んだ。
そして、ボールの動作の実装を行う。ボールのバウンドの仕方を衝突場所に応じて変更したり、衝突の回数により、スピードを替えたりして、ゲームらしさを出していく。
この後、スコアのカウントやゲームオーバー画面への遷移、サウンドを追加を行い、2人でプレーするゲームとしていったん完成した。
最後にプレーヤー2をPC自体が操作するアルゴリズムを実装して、一人でも遊べるゲームとして完成となった。
作成後コメント
今回のUnityでのプログラミングはUnityでの操作がメインで、ちょっとしたアルゴリズムの補助的にC#で書くという感じであった。
Unityの操作の仕方や設定の仕方が細かくてその周りでバグが出て思い通りの動作にならないことがあり、時間がかかってしまった。
例えば、点数が入った際に、関連付けるオブジェクトを間違っていて、スコアの文字列が更新されなかったり、QAコーナーでは、ボールオブジェクトと衝突の際の処理のスクリプトが関連付けれてないことに起因すると思われる質問などがあった。動画を見ていても、見落としたりすることがあるので気を付ける必要がある。
しかしながら、このようにUI操作主体でゲームが簡単に作れるので、ちょっと実装するとどんどんゲームが動作し始めるので学習が加速度的に進んで楽しい!
■次は
ZigZagゲーム?の作成を行う。このゲームは3Dのゲームのようだ。ZigZagゲーム(https://www.youtube.com/watch?v=eEmBgJlHDk0)
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:Unity
2019年11月29日
【22日目】英語版Udemyで学ぶ!C#
進捗82%
順調。
途中で動画が追加されているので、受講完了はおそらく頑張っても25日目くらいになりそうな感じ。
■Game Pongの作成(続き)
ゲームの作成が始まったと思いきや、ゲームのパーツの説明が続く。今回の講座の動画のパターンとして、始めにゴールが示されないことが多いので、いったん最後まで動画を1.5倍速で見て、2回目にコーディングしながら緩急をつけて視るという勉強方法で進めている。テキスト
UI要素として画面にテキストを配置可能。キー操作でテキスト更新をするところまで学んだ。
ボタン
テキスト同様、画面にボタンを配置可能。ボタンのクリックでテキスト変更したり、シーンを替えたりすることができる。UIの画面で行うハンドラの設定が特徴的でわかりやすい。
サウンド
著作権フリーのサウンドをダウンロードして使用する方法の説明。今までプログラムでサウンドを扱ったことがないので、新鮮な感じ。
Game Pongの概要説明
再度、ゲームの概要の説明。詳細にゲームの外部仕様の説明があった。
■次は
まずは、ゲーム画面の作成から開始する。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:Unity
2019年11月28日
【21日目】英語版Udemyで学ぶ!C#
進捗80%
新しいことが次々に出てくるが、結構面白い。
■UNITY-基礎(続き)
剛体
ボールに対して重力を追加してみたり、スピード変えてみたりして遊ぶ。面白いのがボールに簡単に図形を追加して、いびつな図形を作成できて、そのまま転がせるところだ。さらにそのいびつな形のおかしな転がり方をさせることができる!
ほとんどコード書いてないのにこんなことができるのはなかなかすごい。
衝突
衝突判定もいろいろできる。通常は物体と同じサイズで衝突判定を行うが変更することもできる。例えば半径1の級の衝突判定のサイズを半径2のサイズにできたりする。
また、衝突した際に跳ねたりさせることも簡単にできる。その場合は物理的素材のバウンス属性を設定する。
ひな形(Prefabs)
作成したオブジェクトをあらかじめひな形として登録しておくことができる。こうすることにより、簡単に複雑な設定のオブジェクトを追加できるし、コードでオブジェクトを自動生成したりすることもできる。
また、ひな形の登録先のAssetsの中はフォルダを作成してひな形などを整理することができる。
C#のスクリプト
MonoBehaviourの派生クラスのStart関数は始めに1回、Update関数は頻繁に呼ばれる。
よく使う関数
乱数はゲームでよく使用するものだが、C#のRandom関数を使うことができる。
また、数学系の関数はMathfにまとめられているとのこと。
以上で、基礎編を終了し、いよいよ、本格的にゲーム作成に入る。
■Game Pongの作成
Pongゲームとはエアホッケーのようなゲームでだんだん打つ玉の速度が早くなっていくゲームだ。このゲームは2Dだが、オブジェクト衝突や、画面遷移、テキスト描画など様々なことを学ぶ。
Game Pong
■次は
まずは、テキストの配置から勉強をスタートする。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:Unity
2019年11月27日
【20日目】英語版Udemyで学ぶ!C#
進捗76%
UnityのIDEに苦戦しながら進めている。
■UNITY-基礎
いよいよ、C#のゲームの世界、Unityに入っていく。ちなみにゲームの作成経験はほぼない。Unityとは統合開発環境を内蔵し、複数の機材(platform)に対応するゲームエンジンである(Wikipediaより)。
UnityのIDEをインストールして、起動する。始めはUnityのIDEの説明からスタートする。画面の中にボールと地面をおいて、ボールを転がしたりするところからだ。
操作方法は動画をこまめに止めないとすぐ、何をしているかがわからなくなる。結構時間がかかる。それに、オブジェクトや、カメラの調整も慣れてないため、時間がかかる。
地面やボールの表面の色や材質を定義できるマテリアルを複製するのにCtrl+Dを使うのがなかなかわからず苦戦。最終的にはQAを見てようやく分かった。
しかしながら、実行するとオブジェクトがちょっと動いただけでも達成感がある。
次に、基本物理に関して学ぶ。Unityでは、剛体(Rigidbody)の概念や衝突(Collider)や重力(gravity)などの概念がある。これらの簡単な説明を聴いた。
■次は
剛体、衝突などの構成要素に関して詳しく学んでいく。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:Unity
2019年11月26日
【19日目】英語版Udemyで学ぶ!C#
進捗73%
順調ではあるが、1つ1つの動画の時間が長くて、学習時間の割には進んでいない。
■イベントとデリゲーション(追加分)
デリゲートの理論は一通り勉強したので、実際にコーディングをやっていく。
この動画からソースコードの文字が大きくなって見やすくなっている。また、余計なペイン(プロジェクトビューとか、ソースコード一覧のビューなど)がなくなってわかりくなっている!
デリゲートの際に複数の関数を指定して、それぞれに引数を渡して、戻り値を合算可能であることを学んだ。
■次は
いよいよ、C#のゲームの世界、Unityに入っていく。このコースへのリンク
Complete C# Masterclass
全般ランキング
2019年11月25日
【18日目】英語版Udemyで学ぶ!C#
進捗72%
サンプルソースのない動画が続き、若干眠い。
■セクション:デバッグ(続き)
デバッグの説明が続くが残念ながら、デバッグ対象のプログラムのソースコードがダウンロードできないため、ただ視聴するだけである。説明は基本的なところで、ブレークポイントを設定したり、データの中身を見たり、コールスタックを使うなどである。これに加えて、Microsoft社の下記のページを見るのが絶対おすすめだ!
Visual Studio でのデバッガーの生産性に関するヒントとテクニックについて説明します。
このページにはデバッガのより先進的な機能(もうかなり昔からあるが)などが説明されている。
初めて、デバッグ中に現在実行している場所を示す矢印がドラッグで戻せて再実行できるとか、コードを修正しながら、実行しなおせるとか、できた時の感動と驚きは今でも忘れられない。全てのレベルの人たちに知ってほしい、おすすめの機能だ。
■応用C#(ガベージコレクション、Abstract他、追加分)
抽象クラスで図形の例を出すのは定番である。abstract宣言で宣言して、派生クラス(実装時)にoverrideキーワードを入れて実装を行う。これもサンプルソースコードなし。
なお、すべてのクラスはobjectクラスからの派生である。
■イベントとデリゲート(追加分)
デリゲートはコールバックとして定義でき、C++の関数ポインタと似ており、パラメタを渡せたり、複数一度に呼べたり、無名関数を使えたりする。
■次は
デリゲートの理論は一通り勉強したので、実際にコーディングをやっていく。
このコースへのリンク
Complete C# Masterclass
全般ランキング
2019年11月24日
【17日目】英語版Udemyで学ぶ!C#
進捗70%
集中して勉強を進められた。
今更だが、この講座はVisualStudioの画面全体をキャプチャした動画になっており、自分にとっては字が小さく、動画を見ながらコーディングする場合は、ダブルモニターが必須だ。
なお、ちなみにVisualStudioのエディターのフォントサイズは、下記の手順で変更できる。
1、[ALT+T] → [o]と押して、オプションダイアログを表示
2、環境 → フォントおよび色、を選択
3、右側のサイズを調整する。
■セクション:マルチスレッド(残り)
スレッドのjoin, aliveに関しての勉強。これらを使用するとスレッドの終了を待たせたり、スレッドの状態を把握することができる。
次にWPFのUIのフリーズを避ける方法に学ぶ。async,awaitを使い、UIボタン選択後の実行される重い処理によるUIのフリーズを避ける方法を勉強した。
このコーディングを行う際に、10MBなど所定のサイズのデータをダウンロードできるテストサイト?が動作していないようで、少々、時間を食った。
この発展版としてボタンを押した際に、ウインドウに埋め込んだWebブラウザで該当のページを表示するサンプルを作成した。
なお、このセクションはサンプルプログラムのソースコードzipがないので、コードを逐次打ち込みながら進めた。
■セクション:デバッグ
このセクションでは基本的なデバッグの方法に関して勉強していく。VisualStudioに慣れている人にとっては既知の情報だ。
個人的には下記のショートカットをよく使っている。
[F5] デバッグ実行
[F9] デバッグポイントの設定/解除
[F10] ステップ実行
[F11] ステップイン
■次は
新しく追加された動画(デバッグから)を続ける。
勉強する講座は選び中、Webプログラミングやアルゴリズムの辺りから選ぼうかと思案中。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:Thread
2019年11月23日
【16日目】英語版Udemyで学ぶ!C#
進捗67%
日中用事で立て込んだため、投稿が遅れてしまった。
■セクション:Linq(続き)
なんかC#の勉強だか、SQLの勉強だか、わからなくなってきているが、DBから所定のデータを取り出す処理を学ぶ。
最後に、データの更新と削除を学んだ。
LINQでの操作は基本的にはinner joinの処理を行うようだ。outer joinのようにnullが入るようなケースは扱わないようだ。(もちろん工夫すれで同様のことはできるらしい)
■セクション:マルチスレッド
マルチスレッドの基礎から学んでいく。単一スレッドから開始し、マルチスレッド、スレッドプールへ進む。
スレッドプールはマルチスレッドのスレッド起動のオーバーヘッドを軽減し、リクエストをキュー管理し、スレッドを再利用しながら、効率的にスレッドを使用できる。
■次は
スレッドのセクションが終了し次第、新しく追加された動画をさかのぼってやっていく。
勉強する講座は選び中。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:LinQ
2019年11月22日
【15日目】英語版Udemyで学ぶ!C#
進捗65%
若干体調がまだすぐれない。
そんな中、今年のUdemyもブラックフライデーのセールが始まっている!
これから一週間、新たに勉強したい講座をいくつか探す予定だ。
■セクション:Linq(続き)
Linq で関連テーブルを使う方法を見ていく。複数のテーブルを持っている場合、それらの関係を把握しながら、データを取得すること必要になる。1つのテーブルからデータを取得すればいいのか、取得したデータをもとにさらに別のテーブルを検索することになるのか。ざっくり言って、大きな2つのユースケースがあると思われる。
1、データテーブルから1つの情報を取りたい場合
2、データテーブルから該当するすべての情報を取りたい場合
この2つのポイントをおさえながら、コードを見ると理解が深まる。
■次は
セクション:Linqの残りを終わらせる。
また、この一週間で新たに勉強する講座を3つくらい選ぶ。
このコースへのリンク
Complete C# Masterclass
全般ランキング
2019年11月21日
【14日目】英語版Udemyで学ぶ!C#
進捗64%
進捗は変わってないが少し進めた。若干体調不良のため、学習時間をあまりとれていない。
■セクション:Linq(続き)
LinqをSQLへ適用した場合に関して学んでいく。前回追加した"Linq to SQL tool"により、LINQ to SQLクラスが作成可能になっているので、これを使用する。追加したいテーブルをクラスにドラッグすることにより、ドラッグしたデータのクラスが簡単に作成できる。
このクラスを使用して、データの追加を行う。データ追加の際は、1要素ずつの追加やIEnumerableでリストを追加することもできる。
■次は
セクション:Linq で関連テーブルを使う方法を見ていく。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:LinQ