プログラミングは思ってたのとちがうぞ
始めに
プログラミングをしてきてなんか思ってたんと違うことを書いていきます。
投稿主はC#とDXlibを使ってプログラミングをしてきました。
(unityの使い方はいまだにわからん)
環境構築が第一の難所
一番の難所とも言っていいのが環境構築で、普通に1日とか飛びます。
ネットで調べてもヒットしないし、難しい言葉ばっかり並べてあって何言ってるかわからず、いらいらしてたりしてました。
ここでまず心がおれそうになりましたね。
(GitのPathを通すとかVSCodeのビルドのために.Net7.0をインストールするとか)
プログラミングだけでゲームが作れると漠然と思っていた
プログラミングをしてすぐに、プログラミングだけでなく絵や効果音などの素材が必要だということに気づき、ちょっと絶望してました。(絵も音楽もつくれないぞ)
ネットを探しても自分が欲しいような素材はなかなか落ちてないし、お金もないので絵師とかに頼むこともできません。投稿主は、何とかしてネットで探し出してきました。(著作権とかがあるからそこにも注意!!)
プログラミングと違うところで時間を取られたり学ばなきゃいけないところが出てくる。
時間を取られることの一覧
環境構築
何を作るか考える
素材集め
アルゴリズム考える
ライブラリやAPIの仕様について知らべる
ゲームの投稿について調べる
unityなどの使い方を調べる
知らない用語を調べる
知らないコマンドを覚える
etc…
知らない用語ばっかり出てくる
調べても分からんことの方が多い
非同期処理
継承
ポリモーフィズム
API
インターフェイス
ポインタ
リファレンス
デシリアライズ
オーバーロード
オーバーライド
メンバ変数
キャスト
デリゲート
イテレーター
クラス
プロパティ
アーキテクチャ
etc…
DXlibなどのライブラリが大切
ライブラリこれ大切。というかライブラリがないと開発できないといっても過言ではない。ライブラリのおかげで比較的簡単にソフトが作れるようになっています。
しかしその変わり関数を覚えなければいけないのが投稿主は嫌いです。(unityとか関数多すぎだしリファレンスに何書いてあるかわからん。)
一つの言語だけじゃ無理
AIの作成にはPython,webページの作成にはJavaScript,ゲームの作成にはC#やC++,DLLの作成にはC++などと目的によって使う言語が変わったり、また、「C#でやろうと思って調べてみてもpythonしかでてこねぇ」とか普通にあります。いっぱい言語を覚えよう!!
大体一つを極めたら他の言語も分かりやすくなってるはずです。(ただしC#からC++に行くときポインターが地獄かも。)
プログラミングを習得したいより何かアプリを作りたいと思った方が上達する。
Youtubeとかプログラミングの理論?(言語の解説など)はいっぱい出てきて学ぶことはできますが、あまり覚えていないことが大半です。なので実践をしよう!!実践や経験をしないと覚えられません。また何か特定のものを作ろうと思うとモチベーションが上がったり、作り方が載っていたりします。
高校生や中学生から始めたほうが良いかも
投稿主は高校生からプログラミングを始めました。全然高校生とかでもできます、というか大人になってからだと少し遅いかも…プログラミングに興味を持ったらすぐ始めよう!!
Webを調べても全然分からんとは言うけれど、それはエラーとかの話でコードの書き方はYoutubeなどにいっぱい載ってます。なので大丈夫です。
本を買った方がいいのか?
人にもよりますが、あまり買わなくてもいいような気がします。投稿主は本を買いましたが、あまり使ってません。というか買わなくても図書館とか行けばプログラミングの本とかあります。図書館行こう!!
思っているより時間がかかる
NINTENDOなどの普段やるゲームは、多人数で4年とかかけてやっとできるもので、一人で作っているのならなおさら時間もかかるし低クオリティになります。これを分からないで初心者は特攻して挫折します。投稿主も挫折しそうになりました。
プログラミングより計画を立てろ
計画というか仕様書?(初心者はまだこんなこと考えなくていいです。)
何を作るか、どこまで細かく作るか、いつまでに作るかなどなどゲーム開発の前に考えておきましょう。後になって何が足りないなどと考えて、まだいっぱい残っていると気づいた時の絶望感やばいので。あとゴールが見えていた方がモチベが続くと思います。
最後まで作れ
どんだけ低クオリティでもいいからまずは完成させることが大事だと思います。保守や使いまわし、拡張性なんか最初の方で気にせず完成させる。そして自信をつけよう!!
「後で作る」と後回ししてると制作者しかできないゲームになる。
GUIとか設定画面とか作るのがすっごくめんどくさいです。なのでプログラムの方でtrueとかfalseとか書いて設定をしていると、いつの間にか制作者しか遊べないゲームが完成します。しかもコツコツやってないから気づいたときには膨大な量になっていて、さらにやる気をなくします。こういうことも考えて作りましょう。
Sin Cos バリバリ出てくる
回転させたいときに高校数学のSin や Cos がよく出てくる数学ができないと少しきついかもしれない。
ゲームの投稿の仕方が分からん
今でも分からん。
しかも、steamとかappstoreとか金がかかるので、金がない投稿主には無理です。無料で投稿できるところもあるらしい。
PCゲームの作り方は分かるが、Androidのゲームの作り方がいまだにわからん
今でも分からん。
学ぶのめんどいが、いつかスマホ用のアプリも作ってみたい。
エラーが出たとき
めっちゃ時間かかります。しかもwebで調べても英語ばっかりのサイトばかり出てきたり、Microsoftのリファレンス見ても何書いてあるかわかんないし。しかも一番イライラするときは、初歩的なミスで一日潰す時ですね。
気を付けよう。
AIやりたいならNVIDIAのグラボ買え
投稿主はAMDのグラボなのでAIの開発やAIを使っているソフトが使えないことが多かったので気を付けてください。AMD許さん。
まとめ
ぶっちゃけキーボード叩いてプログラムを打っているよりほかの作業の方をやっている時間の方が多いです。しかも思った通りに行かないと一日どころか一週間潰すなんてこともあります。しかし諦めなければきっと上達します頑張ってください。