独学でゲーム作るのは本当に大変!でも頑張れば出来る!挫折しても好きならまたやりたくなる!
swift言語で、はじめてゲームを作るまでの話しです。
こんな人もいるんだな~みたいな感じで読んでもらえたらと思います。
そしてすみません。かなり長文です。気になる項目があれば見ていただければと思います。
目次
- はじめは
- 挫折の繰り返し
- 再チャレンジ
- 気分を一新
- 参考書を探す毎日
- 奇跡的な出会い
- 翻訳する日々
- サンプルゲームの作る
- ~~~~~~~~~~~
- オリジナルゲーム制作開始
- マップとキャラクターの配置
- キャラを動かす
- 他の言語からヒントを探す
- ランダムマップ生成
- 敵と移動範囲
- 敵の移動AI作成
- コントロールボタンを作成
- プレイヤーの攻撃
- プレイヤーのステータスバー配置
- 敵の攻撃AI
- アイテムの配置と使用
- 出口の配置
- 各キャラのステータス
- アプリ起動時の画面とスタート画面を作成
- 広告の表示
- とりあえずリリース
- アップルストアで公開
- ~~~~~~~~~~~~~~
- その後
はじめは
もともとゲームではなく日常的に使えそうなiosアプリを創ろうと思い、MacBookProを購入し、swift言語を勉強を初めました。
当時はパソコンのこともまったくわからない状態でしたのでPCのスペックなんて考えず安いやつを買ってしまったので後から後悔する羽目に。。。
正直なところ仕事はプログラムとは全く関係のない仕事をしていたので、かなり覚えるのに苦労しました。
挫折の繰り返し
PCを買ってすぐは毎日コードを真似て打っていました。
コードを書く順番やコードの意味なんてほとんどわからず、ひたすら真似る毎日。
なぜそうなるのか、どのような処理をしているのかわかってませんでしたし、プロジェクトの作成方法もよくわかわず真似ただけ。。。
そんな感じで空き時間を使って作業していましたが、ある日仕事が忙しくなり、プログラミングから何カ月も離れてしまい、たまに「やろうかな~」と思ってもどこまでやったのか、やり方も分からん、忙しくて毎日はできない、ということもあり、復活してはすぐ倒れての繰り返しでした。
1~2年間はこんな感じが続きました。
おそらく私みたいな方は大勢いるのではないかと思います。
新しいことを始めるには「よいしょ」が必要で、継続するには忍耐力もしくは好きという気持ちが必要です。
隙間時間の10分でもPCを起動してコーディング出来ていれば良かったのにと今になって思います。
再チャレンジ
仕事がひと段落して時間に余裕が出来たので再チャレンジすることを決めました。
PCを買って2年は経過していると思います。
気分を一新
もともと日常で使えそうな予定表アプリを創ろうとしていましたが、さすがに気持ちが変わっていました。
自分が楽しい、好きになれるアプリを創ろうと考えました。
昔からゲームが好きで、大人になってもそれは変わらないかったので、私はゲームを作ることにしました。
(このときにswift言語ではなくUnityやUnrealEngineを使えば良かったのに。。。)
参考書を探す毎日
正直、なにもなしでゲームは作れません。
なにか土台がないと私には無理でした。
swift言語でのコーディングは少し慣れてきていましたので、後は良い参考書を見つけて勉強すれば良いのですが、swift言語はゲーム制作するための情報は少なく、見つけても出版日が古い為、コードを真似て書いてもエラーが出てサンプルゲームを完成させてませんでした。
この時期はかなりきつかったですね。
初心者プログラマーにはエラーを修正方法を調べるのがとても難しいのです。
奇跡的な出会い
もともと紙の参考書ばかり集めていましたが、ある日Kindleの便利さに気が付きました。
もともと部屋のスペース確保のために本を電子データで購入しようと思っていましたが、なんと海外の本も
購入できることが分かり、私は海外のswift参考書を探し始めました。(日本では見つからないと思ったので)
そうして海外の参考書を探していると1つの参考書と出会いました。
それはswiftのフレームワークであるGamePlayKitとSpriteKitを使ったゲーム作成の参考書でした。
出版日も新しかったと思います。ただ問題はすべて英語という点です。
しかしそんなのすべて訳せば問題ねー!と思った私はすぐに電子書籍を購入しました。
当時7000円ぐらいしたと思います。高かった。。。
翻訳する日々
まず書籍の中身を確認しましたが何を書いているか全くわかりませんでした。
高卒でなおかつ英語が嫌いだった私なので何もわかりません。
しかし、Kindleで購入しましたので1つ1つの文章を翻訳して書籍データの貼り付ければ、いつでも日本語訳を確認できると思い翻訳する毎日が始まります。
もしかしたら500ページ?以上はあったかもしれません。よく出来たなと思います。今同じことは出来ませんね。。。
翻訳にかなり時間が掛かりました。1か月以上かかったかも。
サンプルゲームの作る
ようやく翻訳が完了し、コーディングを開始しました。
今回は書いたコードの意味や役割をしっかり確認しながらゲームを製作。
これもすごく時間が掛かりましたが出来てiPhone端末で動かすことも出来ました。
ちなみにコードの理解を深めるために同じサンプルゲームを2回作成しました。
オリジナルゲーム制作開始
一通りサンプルゲームを作成できた私は自分のゲームを目指しました。
まずどんなゲームを作りたいかですが、これは決まっていました。
そうローグライクゲームです!
そして私はあまり計画を練らずにゲーム制作を開始するのであった。(無計画過ぎた。。。)
マップとキャラクターの配置
まずはキャラクターを配置するところから始めました。
絵はドット絵でフリーで提供していただけるサイトを探して使わせていただきました。
これは本当に助かりました。
自分でキャラ作るとなれば、それだけで何カ月もかかりますからね。
ありがたや。
キャラクターを暗闇の画面の中心に配置して完了です。
これだけでも楽しくなります。
次にマップ生成です。
ローグライクゲームと言えばランダムのマップ生成ですが、はじめはランダム無しの簡単なマップを配置します。
マップはタイル方式にして四角い画像を画面いっぱいに張り付ける感じにしました。
ゲームっぽくなってきた!
キャラを動かす
プレイヤーを動かすために座標を設定とアニメーションを設定しました。
プレイヤーの位置を保持して今後追加するアイテムの取得などに役立てるためです。
敵がどの部屋に居るかもこれで確認できる。
アニメーションは3枚の絵を使って移動している感じを出しました。
ここではEntityやCommponentなどの技術を使っていますが、初めはあまりわからず使っていました。
他の言語からヒントを探す
ここでかなりの時間を浪費しまいた。
なぜならswift言語でのランダムマップ生成というコードの参考がみつからなかったからです。
これが出来ないとローグライクゲームが作れないと思った私は、swift以外の言語からヒントを探すことにしました。
一番わかりやすそうなPython言語に目を付け勉強を始めました。
幸運なことにPythonの参考書にはゲーム開発のものがありランダムマップ生成のコードがありました!
このときにChatGTPがあればもっと早くゲーム制作出来てたのにな~と思います。
勉強のおかげでPythonも少しなら使えるようになりましたが。。。
ランダムマップ生成
Pythonのコードをswiftに直してランダムマップ生成コードを書きました。
いろいろと問題も起こりましたが、なんとかなりました。
どのような問題があったか忘れちゃいましたが、すごく苦労したことだけ覚えてます。
ちなみにタイルの画像もフリーで提供していただいているサイトのものです。
敵と移動範囲
マップが出来たので敵を配置しました。
まだこの段階では移動しませんが、敵を配置するだけでゲームっぽさが増しますし、テンションが上がりました。
プレイヤーが壁を通り抜けないようにしました。
敵の移動がやっかいでAIを作成する必要がありました。
とりあえずランダム移動にしておきました。
敵の移動AI作成
この項目に関しては正直まだ良くわかっていません。
敵がプレイヤーを追いかけてくるように敵とプレイヤー間のルートを計算して、各ターンごとに1歩ずつ近づいてくるようにしました。
海外のサイトに参考に出来るものがありまして、それを使えるように改良しながらエラーを1つずつ潰していきました。
何日も何日も改良に時間を費やしました。よくできたな~と思います。
コントロールボタンを作成
プレイヤーが動いて、攻撃して、アイテムを使えるなどのボタンを実装しました。
ボタンの配置のバランスは意外と難しいです。
モバイルゲームにコントローラーを付けるのは画面の大きさ的に考えることが多くありますね。
プレイヤーの攻撃
攻撃ボタンを押すことで敵に攻撃するようにしました。
敵にHPをつけてHPが0になれば消えます。
攻撃モーションをつけるだけの絵の技術が無い私は、攻撃エフェクトを入れて誤魔化しました。
プレイヤーは常に足踏みしています。
プレイヤーのステータスバー配置
プレイヤーのHPなどのステータスバーを配置しました。
これで敵からの攻撃を受けたことを確認できる。
敵の攻撃AI
敵が攻撃するのか移動するのかのAIを作成して実装しました。
ここまでくるとコードはぐちゃぐちゃです。
このときの私にはコードを整理する技術は無いので、無駄が多くて読みにくいコードになっています。今も直していません。。。
アイテムの配置と使用
アイテムをランダムに配置して使ったり投げたりできるようにしました。
ここぐらいからバグが大量発生してきたと思います。
アイテムが壁に当たったら、その場に落としたいのにどこかに飛んでいったり、アイテムが増殖したり、いろいろ起こりました。良い思い出です。。。
出口の配置
出口を設定して出たら次のフロアーに移動するようにしました。
ここまでくれば敵から逃げて出口を目指すゲームにはなっています。テンションはかなり上がっています。
各キャラのステータス
敵とプレイヤーに細かなステータスを設定しました。
このとき敵キャラも増やしてフロアーごとに出てくる敵の種類を変更させています。
プレイヤーにはレベルアップでもステータス上昇を実装しました。
この段階では武器アイテムは作ってないのでステータスを上げることで敵を倒しやすくなります。
アプリ起動時の画面とスタート画面を作成
そろそろアプリリリースすることを考えて、スタート画面を作り、どのダンジョンに潜るかを選択できる画面を作りました。
最終階層を変更した3つのダンジョンを作成して各ダンジョンに最終フロアーにボスを配置しました。
ボスを倒さなくても出口を付見つければクリアできるようにしました。
広告の表示
せっかくなので広告を張り付けてみようと思い広告を貼り付けました。実装は結構めんどくさいです。。。
とりあえずリリース
やりたいことがまだまだ沢山ありましたが、やればやるほど出てくるので、とりあえずリリースしようと思い、
リリース手続きをしました。
このときにwordpressを始めました。
自分のアプリのプライバシーポリシーを書いて提示する必要があったので。。。
ゲーム制作も大変ですが、リリース手続きもかなり大変です。
アップルストアで公開
いろいろありましたがアップルストアに公開しました。
未完成の部分はリリース後にアップデートすればいい!
誰かにプレイしてもらって感想聞けたら、やる気も出てきます。完璧を目指し過ぎてリリース前に力尽きないように気を付けてください。
その後
半年ぐらいはアップデートを行い、Xとかでアプリを紹介したりしていました。
正直収入はありません。
広告収入もある一定額たまらないと振り込まれないので。。。
今はUnrealEngineを使ってゲーム制作に取り組んでいます。
進捗状況をXで投稿しています。
ご興味があれば、Xのアカウントをご覧ください。
アップルストアで公開されているアプリが気になる方は「モグラダンジョン」と検索ください。