🦔

CocosCreatorでWebゲームを作ってみたけど……

に公開

TL;DR

Zenn初カキコ…ども…
Unityでよくね。って初心者ながらに思った話。
CocosCreatorもUnityもそこまで詳しくないので暇つぶしに読んでくれればいいな。

1.ゲーム紹介

できたゲームがこれだ!

https://wahoij.itch.io/dooper

作成期間1ヶ月
・セルサバイバーを入れてみたら思ったより面白かったので作ってみようと思ったけど力尽きた……。

2.筆者スペック

20代後半、某SES企業勤めキッティング王(正社員歴1年未満)
→ようはほぼスキルなし!以上!

プログラミングの経験

UNITY5の時にゲーム制作歴あり

Unity5時代は触ってたちょっと触ってた
↓当時作ったシューティングゲーム

https://www.freem.ne.jp/win/game/14630

あと最近色々あって1ヶ月だけTypescriptを触ってた。
自サイトをなんとなくReactでリニューアルしたりしてた。

https://wahoij.github.io/

ということで初歩の初歩はわかるけどそれ以外は全然……って感じ。

3.なぜCocosを使おうとしたか

UI周りのめんどくささから開放されたかった

久々にUnity6を起動したらTextMeshProとかいうので日本語フォントを構築したりでめんどくさいことが増えた印象だった。
そもそもずーーーーとまえにUnityRoomに作品を投稿したときにUIが崩れまくってひどいことになった。

さくっと遊べるものをリリースしたかったのでwebゲームにしたかった。

今の時代、やっぱりスマホでサクッと遊べるゲームを作ってみよう!PixiJSっていうのがあるのか!→Phaser3がさらにゲーム制作に特化してるのか→お、TypeScriptで書けるCocosCreatorがあるのか。
という流れでたどり着いた。

4.CocosCreatorを使ってみた感想

COCOSの良かった点

・エンジンが軽快
立ち上がりが早い。ビルドが爆速。Githubで管理した時も圧縮に時間がかかるとかはなかった。
※3Dは試してないからまたかわるかも

・UIのフォントをいじりやすい
インスペクター上で指定すれば終わり。文字化けすることも全くなかった。

・ブラウザ上でデバッグができる
エディター上でもブラウザ上でも作成中のゲームが動かせるので実際のデプロイに近い挙動ができる……はず。

・Unityライクだから基本操作はつまずきにくい
公式チュートリアルもあるので簡単な2Dゲームをつくるにはいいんじゃないか。今の時代AI翻訳の精度も高いので言語の壁はだいぶ薄い。

・TypeScriptの記法がそのまま使える
ぼかぁよくわからないけどweb系の人なら新しく言語覚えることなく扱えるからいいんじゃないでしょうか。

・サイトへの埋め込みが楽らしい
出力されるフォルダもHTMLファイルにJSなのでやっぱりWebサイトにゲームを埋め込むとか、ほかのフレームワークと共存させるのは比較的やりやすいんじゃないかなぁ。

思ったのと違った点

・結局RigidbodyとColliderを使う
もっと原始的に動かしたかったがVec3にColliderでRigidbodyで加速させて……あれ?

・ゲームデバッグ中に色々いじれない
Unityではゲーム画面を出しながら値を変えてみてみたいな操作がほとんどできなかった。
一応一時停止すればシーン全体を見たりできるけど、あんま使いどころないかも。
(ググッたがよく分からなかった)

・レイヤーのナンバリング方式が謎
普通にレイヤーの番号そのまま参照できるかなと思ったらなんか知らんけど4とか128とか累乗で計算されてる?普通に扱いにくい。

・ゲーム投稿サイトはUnityのビルドの方が楽。
単体で見たらUnityのWebGLって扱いにくいんだけど色々な投稿サイトが対応してくれるから専門サイトならUnityの方が手間がかからない説が出てきた。

・アニメーションの扱いがややめんどくさい
Unityは情報量が多いからここら辺スムーズだった記憶

・結局エンジンであること
Phaser3とかのライブラリではなく、あくまでTypeScriptベースでUnityと同じようにリファレンスとにらめっこしながらついている機能と挙動とを照らし合わせて特性を理解する必要がある。AIにソース貼らせた虚無を送ってきたりするのでサクサクビルドするぞ^~とか無理だった。

改めて結論

Unityでいいじゃん。はい。
まあ、2年前のロイヤリティ騒動の時ならともかく、今わざわざCocos使う意味はなかったなぁという答え。特にゲームバリバリ作りたいっていう人は、Unityで良い。

久々にゲーム作って思ったこと

・コードの管理がすぐスパゲッティになる。
どの変数をどこに置いたか、行き当たりばったりで増やして反映させてとやるので、スクリプト間の保守性が下がる。これ結局ちゃんと設計しないとだめだなぁと感じた。8年前にゲーム作った時と同じ感想です。

・平日の余暇時間でちまちま作るのは楽しい。
Unity5でゲーム作ってた時を思い出した。バイト終わりにちょくちょく弄って、挙動一つ一つに悩まされながら楽しんで作ったし、やっぱり同じこと繰り返してめんどくせーとか思ってたのもフラッシュバックした。

・AIコーディングの難しさ
GithubCopilotにサブスクしてAgentモードでめんどくさいところをショートカットしたら、後々直すときに昼飯の流儀の????????????????くらい????????????みたいになった。
あとお試しで色々なAIに作業させたらスパゲッティの巣窟が完成した。
エラーハンドリングしてくれるのはうれしい反面、最低限の機能が欲しいときにコードが長すぎて、意味が分からなくなる。結局自分で実装したほうが早い時もある。
変数名がevとか略称使いまくるせいで可読性が消し飛ぶ瞬間もあった。
あとはエディターで補完した部分をうまく読み取ってくれなかったり、結局こっち側のリテラシー不足で扱いきれないことも多かった。
すごいすごいと話題になったgemini3.0も使ってみたけど、なんか大差なかった。
強いて言えばClaudeSonnet4.5は安定してコードを出力してくれたかな。でもプレミアムリクエストの上限あるからホイホイ頼れないんよな。いいものを使うにはお金がかかる。

・3Dゲーム……作りたいなぁ。
自分が少年時代にやってたゲームSimicty4,ゼルダ,あと洋ゲー(CEROの判定がね)なので3Dのほうがやりたい。今も学マスにはまってる。

これからどうするか

Unityで3Dゲーム作りたい!

https://www.youtube.com/watch?v=JV3KOJ_Z4Vs

えっちなお触りゲーム作ってDLsiteで売って奨学金返済して~~。

Discussion

ログインするとコメントできます