あどぽっぽは百合ゲーをつくりたい。

〜初心者百合ゲー制作者の勉強・開発進捗ブログ〜

【勉強(基礎)】型変換と型推論の話。

昨日は時間がなくて早々に連続記録が途絶えてしまいましたが、今日は書きました!

一昨日の記事で言及したメモリの話…ではなくデータ型についてもう少し掘り下げる話。

型変換

C#は静的言語のためデータ型の宣言が必要になりますが、例えば文字列を数値に変換したり、整数値を小数値に変換したい時があるかなと思います。

その時に使うのが型変換。

宣言していたデータ型とは異なる型にデータを収納することになります。

こちらには「暗黙の変換」「明示的な変換(キャスト)」という2種類が主にあるみたいです。

暗黙の変換

例えばこちら。

int num = 2147483647;
long bigNum = num;

こちらはint型の変数numを、long型へと変換しています。

格納できる値の範囲がint < longとlongの方が広いので、そのまま突っ込んでも問題ないよってことですね。

大は小を兼ねるのめちゃくちゃわかりやすい例です。

明示的な変換(キャスト)

では例えば整数値を小数値に変換する場合はどうなるか?

となると以下のようになります。

int num = 5;
float numDecimal = (float)num;

変換したい値の前に括弧でデータ型を指定します。(キャスト演算子というらしいです)

また文字列を数値、あるいは数値を文字列に変換する場合は以下のようになります。

○文字列を数値➡︎Parseメソッドを使用

string text = "1";
int num = int.Parse(text);

○数値を文字列➡︎ToStringメソッドを使用

int num = 1;
string text = num.ToString();

このようにできるようです。

ちなみに先ほど挙げた整数から小数への変換も、これらのメソッドを用いて

int num = 1;
float numDecimal = float.Parse(num.ToString());

と、一度文字列に変換したnumをParseの引数に設定して行うというやり方もあるらしいです。

型推論

やっぱり静的言語の型宣言めんどくさいなあと思う今日この頃ですが、自動でデータ型が何か判断してくれるという機能があります。

それが型推論です。

例えば以下のようなコードになります。

//値が1だからintだ!

var num = 1;

//値が0.5fだからfloatだ!

var numDecimal = 0.5f;

こんな感じ。

みてわかるように、intやfloatを明示せず共通してvarという型を使用しています。

varは"variable"のことで、つまりまんま「変数」ってことです。

JavaScriptの変数定義などでもこのvarが使われていました。(今はconstとletを使い分けるのが主流ですが)

そんなvarによる型推論ですが万能というわけではなく、例えば値の範囲によって使い分ける必要があるデータ型を厳密に判断できないのでメモリが無駄遣いになったり、時には推論できない場合もあるみたいです。

楽ではありますが、ちゃんと使い分けできるならそれぞれ適切なデータ型を指定する方がよさそうですね。

それでは今日はこの辺で。

本日の参考ページ

docs.microsoft.com

docs.microsoft.com

【勉強(基礎)】C#の値型の話

本日は値型の話。

昨日は動的言語と静的言語の違いは変数定義でデータ型宣言が必要かどうかってことをまとめました。

で、私がメインに勉強してきたのが動的言語Rubyだったので、静的言語のC#でintやらfloatやらstringとかへ〜って思いながら見ています。

以下のリファレンスを見ると本当に色々な型がありますね〜

docs.microsoft.com

一応Railsを学習している際にも「カラムの型」といってデータベースに保存するデータの型を指定することを勉強したのですが(integerとかstring、textなどなど)、それともまた意味合いが違うと思うので勉強になりますね。

なぜ型指定するのか?

端的にいうと、メモリを無駄に使わないため、だそう。

データ型には型によって値の範囲があります。

byteなら0〜255、shortだと-32768〜32767、とか。

それで扱える範囲が広いほど、メモリの食う容量も大きくなるって仕組み。

だから入る値がどれくらいかわかってるなら、型を指定してメモリの無駄遣いは、

やめようね!

そういうお話らしいです。

そしてこういう必要なメモリ数が解っているデータ型のことを値型と言います。

一覧とかにここでまとめてもすぐ覚えられる気がしないし他にソースはいくらでもあるのでわざわざ書きませんが、値型は上で挙げた整数を入れられる整数型だけでなく、floatやdouble等の少数も扱う浮動小数点型や、真偽値を扱うbool型とかもあります。

というわけで値型のお話でした。

でも入れる値が事前に分からない時もあるじゃん?って話になります。

その場合に使うのが値型と対をなす参照型というものになりますので、明日そちらについて書けたらと思います。

時間がないので本当に端折ったまとめになりましたが、それでもTwitterでダラダラ書くよりもブログにまとめる方がやっぱりよっぽどマシだね!

では今日はこの辺で。

【勉強(基礎)】動的言語と静的言語

一応私は現在未経験からのIT系への転職活動中で、プログラミングやら基本情報技術者などの勉強を進めています。

それで主にRubyメインで学習しているのですが、C#を今回学習し始めたのにあたり、ちゃんと動的言語と静的言語の違いとか分かってなかったな?と思うのでここでまとめておきます。

動的言語と静的言語はそれぞれどんなものがある?

動的言語

など。

静的言語

など。

じゃあそれぞれどういった特徴があるの?

そもそも動的とか静的とかというのはどういう意味があるのかというと、Webサイトなどの場合だと

動的:ユーザーによって表示する内容を変える

静的:どのユーザーにも、どんな状況でも同じ内容を表示する

こんなイメージになるかなと思います。

つまりアバウトに状況によって変わるか変わらないかってことかな!

で、これをプログラミング言語に置き換えると

動的型付け言語:変数などのデータ型の宣言がいらない言語

静的型付け言語:変数などのデータ型の宣言が必要な言語

だからRubyは変数定義する際に

name = "adpoppo"

num = 1

とサクッと使えますが、C#の場合

string name = "adpoppo";

int num = 1;

こんな感じで頭に対応するデータ型をつけなきゃなんないみたい。

はえ〜めんどくさ。

そしてこのデータ型の種類が対応する値の範囲によって色々と使い分けることになるということです。

それぞれのメリット・デメリット

動的言語

メリット
  • 記述量が少なくて済む!(データ型の宣言不要だから)
  • つまりコードを書くのが楽!
デメリット
  • プログラムを実行してみないとバグがわからん(静的言語はコンパイル時に出てくれる)
  • 無駄なメモリが発生(データ型の宣言があれば事前にどのぐらいメモリを確保するか指示を出せる)

静的言語

メリット
  • コンパイル時にエラー情報を教えてくれる!
  • メモリ領域をデータ型宣言によりあらかじめ確保できる!
  • パフォーマンス向上!(あらかじめ計算する値が整数か小数かとかがわかるので、演算処理のパフォーマンスが優れている)
デメリット
  • 記述量が多くなる
  • つまりコードを書くのが動的言語に比べるとちょっと大変

ちょうどそれぞれのメリットとデメリットが裏表になっている感じですね。

今私が学習している動的言語であるRubyと静的言語であるC#の違いが改めて分かった気がします。

んじゃそれぞれのメリット・デメリットに関わる「メモリ」とは?っていうところを明日は多分まとめます。

では今日はこの辺りで。

本日の参考ページ

webpia.jp

【ゲーム制作】UnityでVSCodeを使えるようにしました。

今日は(というかやったのは3日前だけど)Unityを自分のMacBook Proへ導入+VSCodeをUnityで使えるようにした記事です!

UnityはデフォルトでインストールできるスクリプトエディタとしてVisual Studioがあるみたいなのですが、自分は普段VSCodeの方を使っているのでこちらを適用しました。

なんかMacだとVSCodeの方が動作サクサクらしいですし。(理由は知らない)

とりあえず自分用の備忘録として以下に手順を残しておきます。

 

環境

macOS Monterey 12.5

MacBook Pro (13-inch, M1, 2020)

Unity 2021.3.7f1 Personal

 

準備

以下のページを参考にして行いました。(Google翻訳

code.visualstudio.com

 

とりあえずVisual Studio CodeとUnity HubからUnityをインストールします。

その後以下の準備を進めていきました。

1.まずはこちらから.NET SDKをインストール。

dotnet.microsoft.com

どうやら以下によるとM1チップ搭載のMacでは.NET SDK Arm64はサポートされていないみたいなので、x64の方をインストールしました。

docs.microsoft.com

 

2.次にこちらからMono(Stable Channelって書いてある方)をインストール。

www.mono-project.com

 

3.VSCode拡張機能C#をインストール。

 

4.VSCodeの設定で Omnisharp: Use Modern Net のチェックを外す。

 

以上で準備完了!

 

Unity側からVSCodeと連携できるように設定

Unityを開き、Macの上のツールバーからUnity→Preferences→External Toolsを開きます。

 

External Script EditorでVisual Studio Codeを選択します。

 

はい、終わり。

絶対知っている人からしたら「ハァ?」(某🐰風)って思われるだろうなー・・・。

一応コード補完やエラー表示させるために他にも色々やる必要があるみたいなのですが、私はC#もUnityも今回初めて触るのでどうしたもんかーと思い一旦保留にしました。

一応以下のページを参考にそれらはできそうなので、後々やっていきます。

qiita.com

 

とりあえずしばらくはC#の基礎を学んでいこうと思うので、実際にVSCode上でUnityいじるのはもう少し先かな?

では今回はここまでです。

このブログについて。

はじめまして!

あどぽっぽと申します。(@adpoppo_blog)

このブログは私のUnityを使ったゲーム制作やそれに伴うC#の勉強進捗を書くアウトプット用の日記のようなものになります。

以前はゲームレビュー系のブログをWordPressで1年くらい書いていました。(今は閉鎖しています)

以下簡単に私の自己紹介とブログのことです。

ブログ主のこと

物心ついたくらいからゲームをしてきましたが、自分で作ろうというのはほとんど考えていませんでした。

興味がないわけではなかったですが、アイディアも技術もないし、本当にゲームを「プレイするのが」好きという感じだったので。

ただ最近転職活動に伴ってプログラミングの勉強をしていて、

「プログラミング面白いかも!」

と感じたため、それなら仕事だけじゃなく趣味にも活かしていきたいなーとなり今回ゲーム制作してみようと思い立ちました。

ちなみにゲームは現在ハードとしてはPS5とSwitchを持っており、RPGやADVなど物語に没入できる感じのジャンルが好きです!

どういうゲームを作りたいの?

さて、実際に作るとして、どんなゲームが私は作りたいのか。

私はゲームの他にもメチャクチャに大好きなものがあります。

百合です。

いわゆるガールズラブとかそんなジャンルになります。

ものすごく詳しいというわけではないですが、漫画、アニメ、ゲーム等二次元ジャンルにおける百合は大体手を出しています。

で、なぜに百合が好きかっていうと、見ていてものすごく感情が揺さぶられ、胸が苦しくなったり感動で涙が流れたりと情緒に訴えかけてくるからです。

これは異性恋愛と違って同性同士だからとかで苦悩したりそれらを乗り越えた時のカタルシスがすごく魅力的で尊いからだとセルフ分析しています。

だから割とワイワイ平和な百合よりもシリアスな方が好みですね。

で、さまざまなメディアの百合を見てきて個人的に順位をつけると

漫画>ゲーム>アニメ

こんな順番で感動するものが多かったです。

多分原因は音声や動きの脳内補完によるところが大きいかなと思います。

漫画は声もBGMも効果音も細かい動きもありませんが、だからこそ白黒のキャラクターたちと吹き出しの言葉から自分の理想のシーンへと変換することができる。

このセリフはこういう声のトーンかも、ここではこんな感じで瞳が揺れ動いているかも、そうした想像を意識せず行なって自分が最も感動できるようになっているかなと思います。

一方アニメの場合だとそうした部分は全部「答え」が出されてしまいますし、あとは次々とシーンが移り変わっていくので重要な場面を噛み締めながら味わうことができません。

そしてゲームの場合で言うと、例えば百合ノベルゲーム。

アニメとは逆に、漫画と比べて動きが少なすぎるんですよね。

数えられる程度の立ち絵とほとんど動かない1枚絵で、漫画とは逆に想像の余地が少なすぎると感じてしまいます。

もちろん声優さんの演技は非常に見事で聞き惚れてしまうようなゲームもたくさんあるのですが、どうしてもキャラクターの感情に重ね合わせてしまえるような動きが少なく、どうしてもその辺りは不満を感じてしまいます。

そしてノベルゲーム以外の百合ゲーを考えてもマイナージャンルすぎてどうしても数が少なくなってしまいますね。

で、以上から出した結論。

感動する百合ゲーを作る!!

です。

私が百合漫画で受ける感動のようにプレイヤーの心を動かし情緒に訴えかけていく百合ゲーを作る、というのが最終最大の目標になります。

いつ出来上がるのか、ジャンルは何になるのか、全てが未定となっていますが、この目標に向かって突き進んでいこうと思います。

 

ブログに書くこと

基本的にはじめはUnityとC#の勉強進捗になると思います。

追い追いゲームの制作(多分最初はデモ的なもの)を始めたらその進捗やこんなの実装してみたよーとかを書きます。

またたまに進捗以外にもゲーム制作や百合に関する雑記的なことも書くかもしれません。

全くのスキル0、将来的なことが未知数なままの挑戦となるので挫折すると言う可能性も無きにしも非ずです。

そんなブログですが、読んでいただける方は暖かく見守っていただけると幸いです🥰