タウンクラッシュ:開発ログと最近のお知らせ (2023年1月~12月)

Discordに投稿されたタウンクラッシュのお知らせのまとめ。※投稿時間は日本時間で記載

Gala Games Japan
43 min readJan 11, 2023

※Discordコミュニティ内に投稿される、タウンクラッシュのお知らせを新しい順に投稿しています。(2023年1~12月)

12月31日

これは、オンラインとローカルのファイルシステム上でファームを削除するコードを比較したものです。 ウェブコードはもう少し冗長です!

リクエストを処理するサーバー上のPHPコードすら含まれていません。

※Discord 原文へのリンク

12月31日

皆さん、こんにちは! 皆さんのクリスマスはどうでしたか?私は素晴らしい一日を過ごしました。

今週はローレベルのチャレンジが複数ありました。ネットワークケーブルを抜いてしまったら、ゲームはどうなるのか?何とかしてインターネットを見つけるまで再試行し続けるはずです。まだ他にもいくつか機能を追加する必要がありますが、基本的な骨組みはできたし、いい感じです。

その間に、ローカルのファイルシステムをデータソースとして保持する必要があるのかどうか、決断を迫られる危機にも見舞われました。感情的には必要だと思うのですが、私の頭脳はオンラインのみでいいと言っています。もし誰かが飛行機に乗ってる時にレベルに取り組みたいとしたら?そのレベルを着陸したときにアップロードできるようにするべきでは?

その状況は少し作為的に聞こえるかもしれませんが、もし自分がその環境に面し、うまくいかなかったら怒るでしょう。

私の脳みそを満足させるために、ファイルシステムのバックエンドがオンラインシステムと同等の機能を持つようにしました。そうすれば、少なくとも機能するはずです。必要であれば、同期やその他いろいろなことを、もっと派手にやるつもりです。

いずれにせよ、これでゲームプレイのプログラミングに戻れると思います。何度も言うようですが、クリスマスの奇跡は実在します!

※Discord 原文へのリンク

12月27日

最後にもうひとつ…コードがイテレータースタイルに簡単に変換されないことがあります。 それはたいてい、どこかに早いreturn文が引っかかっているときです。

こういうことが起きたら、アルゴリズムを考え直す必要があるという手がかりになるということを、私は学んでいます。 コードが劇的に変わることもあります…。

※Discord 原文へのリンク

12月27日

もう一つの簡単な例をご紹介します。 下が新しいコードです。

この場合、結局コードは増えていますが、読みやすくなったと思います。 これは一連の連続したステップです。 配列から始め、フィルターをかけ、最初の配列を取り出し、それに何かをする。 論理的です。

※Discord 原文へのリンク

12月27日

クリスマスということもあり、今週はちゃんとした開発ブログを書けませんでした。 申し訳ない!

その埋め合わせとして、私の中のソフトウェア開発者とオタクの衝動にふけることについて話そうと思います。

最近Rustを学ぶ冒険をしていて、イテレータアダプタに夢中になり始めています。「for」ループや「if」条件のいつもの巣よりも、読みやすく制御しやすい気がします。

Godotはこの機能をネイティブにサポートしていないので、私は「Iter」という名前のイテレータクラスを独自に開発しています。このクラスは、配列に対して反復処理を行い、要素を操作したり、フィルタリングしたり、クエリーを実行したり、そして新しい配列を返す関数を持っています。

これによって、GDScriptで通常可能なコードよりも短く、明快なコードを書くことができます。皆さんがそう思うかどうかはわかりませんが、私は今のところ気に入っています!

週が進むにつれて、これをプッシュし続け、それが私をどこに連れて行くか見てみようと思っています。

画像は一例です:左が古いコード、右が新しいIterのコード

※Discord 原文へのリンク

12月27日

見てください。レベルに名前が付けられるようになりました! 以前はできなかったことです。拍手してください。

※Discord 原文へのリンク

12月27日

コード行数が5,000行を超えました。 これがベストな指標ではないことは百も承知ですが、とにかく楽しいマイルストーンだと思っています!

GDScript
ファイル:131
コード行数:5,075

※Discord 原文へのリンク

12月27日

GitHub CoPilotには本当にお世話になっています。CoPilotの提案はいつも的確というわけではありませんが、長い目で見れば時間の節約になるのは確かです。僕のためだけのコードではありませんが、タイピングをより効率的にしてくれます。ただ、変数名を探し回ったり、IF文の設定に頭を悩ませたりするのに時間をかけたくないだけです。タイプし始めると、CoPilotが提案してくれる。これは膨大な時間の節約になります。

時間を節約するために少しお金を使う。理にかなっていると思います!

※Discord 原文へのリンク

12月22日

クリスマスということで、大きなものを共有したいと思います。

これは、編集ツールの現状です。私がゲームのコンテンツを作る方法であり、あなたがコンテンツを作る方法でもある (興味がある場合…楽しいのでやってみてください!)

ビデオでは触れませんでしたが、ワンボタンのインターフェースデザインを目指した理由は、デスクトップだけでなくモバイルでも使えるようにしたいからです。誰かが電車の中で、スマホやタブレットでタウンクラッシュのレベルを作れるようにする。それがデザインの目標です。

なので、これがエキサイティングなもの、もしくは少なくとも興味深いものだと感じてもらえたら嬉しいです!次はゲームプレイのコードに戻ることをとても楽しみにしています!

それとリーダーボード! やることがいっぱい待っています。

皆さん、良いクリスマスをお過ごしください!

🎁

モバイルゲーマーの皆さんにも興味を持ってもらえるかもしれません。

タウンクラッシュに興味を持ってくれた方は、 ⁠🔹role-selection チャンネルでTown Crushのロールを取得してください!毎週開発ログを投稿しています。

※Discord 原文へのリンク

12月17日

ヘッドライナー

・私はゲームがデータベースとチャットする方法で、とんでもない問題に出くわしました。大きなファームがうまくロードされず、httpクライアント接続を安定させる必要があることに気づき、ブロックモードに切り替えました。すると、まるで魔法のようにスムーズに動き始めました。この先、非同期メソッドを確認するかもしれませんが、今のところ堅実な解決策です。

色々

・Github CoPilotを使えば、GDScriptが少し楽になるかもしれません。まだ検討中です。
・農場とレベルエディタのビューポートをいじりました。今は壁の絵のようにきちんと中央に配置されています。
・サブビューポートを試してみましたが、適していないことがわかりました。

その他

・私のウェブサーバーは今、ローデータの代わりにbase64文字列でチャットしています。鍵のかかったドアより安全です。
・農場とレベルエディターは、マウスが指している場所にズームインできるようになりました。
・これらのエディターでズームやパンができる範囲に制限を設けました。これで迷子になることはありません。
・農場でのレベル機能のためのいい感じの「長押し」プログレスバーを追加しました。モバイルユーザーにとって同じくらい簡単にできるよう、先のことを考えています。
・クリック&ホールドスタイルのメニューで農場を編集するための新しいワークフローを導入しました。モバイルで指一本で編集できるようにしています。
・ファームの削除が機能していなかったバグを修正しました。いくつかのサーバーコードを書き直し、今では確実に信頼できるようになりました。
・ゲームがインターネットデータを待っている間、プレイヤーに情報を与え続けるために、より良いメッセージを追加しました。
・サーバーに送られるすべての文字列は、現在、新品同様に奇妙な文字が不具合が起きないことを保証しています。
・検証モードの間、不必要な視覚的作業を避けるためにゲームを調整しました。これを自動化することで、よく整備されたトラクターのようにスムーズに動くようになりました。
・私が呪文のように前に導入したファイル・バージョン・システムをようやく使うことができました。つまり、古いデータを失うことなく新しいデータをファームに追加できるということです。後方互換性は、手入れされた庭のように常に成長し続けるゲームにとって重要な鍵です。

今のところは以上です!

※Discord 原文へのリンク

12月15日

これはリークではありません!ただランダムにレベル名を選んだだけです。
すべてを綺麗するために、時折開発者が経験しなければならない苦痛を見せたかっただけです。URLに入れる前に悪い文字をエンコードするようにしたので、文字列には好きな種類の文字を含めることができるようになりました。変な問題を抱えていたのですが、最終的にレベル名に括弧を使っていたことが原因で、サーバーがおかしくなっていることに気づきました!

やることがたくさんあるのに、担当者が一人しかいないため、ソロ開発者によるゲーム開発には時間がかります。 🙂

※Discord 原文へのリンク

12月11日

タウンクラッシュ関連業務に関しては、あまり進度の無い週でした。様々な出来事があり、気が散ってしまったことと、アドベントコードにも時間を取られてしまいました。アドベントコードは楽しい気晴らしですが、時間を使い過ぎてしまいました。Rustでレベルアップする素晴らしい機会を与えてくれていますが、Godotの時間を削ってしまっているのは明らかです。

多次元ポータルシフトが分かれば、1日の時間をもっと増やせるのですが!

おそらく、それは何もない普通の水曜日とかに起こるだろう。

ともかく、今週のリストです:

▶️ ウェブAPIを再設計し、何をやっているのかをより明確にすることで、より多くのコマンドを追加できるようにしました (例えば “duplicate”)。
▶️ ダイアログボックスをリファクタリングし、ローカライゼーションを容易にし、より一貫したUX体験を提供するため、ボタンに言葉ではなくアイコンを使用するようにしました。
▶️ 農場を削除する際に確認を追加しました。
▶️ カスタムマウスカーソルのサポートを削除しました。これはデスクトップコンピュータでのみ有効で、物事を複雑にしていました。
▶️ チェックボックスだけでなく、音楽とSFXのボリュームスライダーのサポートを追加しました。

※Discord 原文へのリンク

12月6日

ワールドマップエディターで自動的にカーブした道路などを挿入できるようにしようとしています。

こんな感じです…

※Discord 原文へのリンク

12月3日

皆さん、こんにちは! この1週間はコーディング三昧で、 ゲームプレイからインターネットコード、データベースまで、あらゆることに取り組みました。

空いた時間での個人開発は、すごく時間がかかるように感じますが、楽しいのは間違いありません!

今週できたことのリスト:

・プロジェクトをGodot 4.2にアップグレード
・使わないコードとクラスを削除 (コードは少ない方が良いです)
・投げたセルにドロップシャドウを追加
・セルを投げるロジックをリファクタリングし、よりどっしりした感じで反応するようにしました (プレイヤーが開始したマッチは順次投げられ、連鎖したコンボはグループとして投げられる)
・様々なVFXのエピセンターを正しく更新し、新しいコンボチェーンを扱えるようにしました
・すべての内部キューを更新し、データ圧縮を使用
・プレイと検証のゲームステートを駆動するコマンドキュー・システムをもう一度リファクタリングしました。コマンドが送信され、ゲームが60分の1秒ごとにそれをピックアップして次のコマンドを実行するハートビートシステムで動作するようになりました。
・検証コードは新しいハートビートシステムで動作するので、すべてが元通りになります。
・コンボ数が増えるにつれて明るくなるハイライトされたボーダーを再実装
・ファームブラウザがUIからファームの削除をサポートするようになりました。

※Discord 原文へのリンク

11月28日

時間があっという間に経ってしまいました。今週は主にパーティクルシステムに取り組みました。大したことないように聞こえるかもしれませんが、これはタウンクラッシュが私の望むようなエフェクトやフィードバックを可能にするための大きな一歩です。

これはとても重要な感触の一部です。

退屈な技術的な話はもう十分ですね!

次の課題は、ゲームプレイのコードを整理すること。やっとゲームプレイに関連することにたどり着きました。

長い時間がかかりました。

※Discord 原文へのリンク

11月28日

完成したようです。 あと1つ小さな機能を追加したら、実際に使う段階です。

※Discord 原文へのリンク

11月28日

理想に近づいています。もう少し機能を増やしたら、コアゲームコードに戻ります。

※Discord 原文へのリンク

11月28日

パーティクル順調に進んでいます! そして、回転しています…。このバックボーンはかなりいい感じです!

あとは、優れたパーティクルシステムに必要な10,000のオプションとフラグを追加するだけです。

※Discord 原文へのリンク

11月21日

今週は他の作業に取り組んでいたので、タウンクラッシュについて特に報告することはありません。そんなときもあります。

ひとつ決断したのは、このゲーム用にパーティクルシステムを自作することでした。Godotにパーティクルシステムは内蔵されていますが、私のスケーリングコードとの相互作用に問題がありました。

どんな画面解像度でもうまくスケーリングできるように作ろうとしています。そうすることで、画面の長い携帯電話やその他の奇妙なコンフィギュレーションで発生した問題を回避できると期待しています。しかし、これは内蔵パーティクルシステムとの衝突を引き起こります。大きな見落としのような気がし、なぜなのか100%は分かりませんが、今のところ把握しているのはこれだけです。

その結果、エフェクトにビルトインシステムを使っても、プレイヤーがフルスクリーンでプレイしていると、パーティクルが小さくなってしまいます。

この機会に、必要な機能をサポートし、できれば大きな問題にならないような独自のパーティクルシステムを構築するつもりです。

将来的には、プログラマー向けの退屈なアップデートを作るつもりです。

個人的なことですが、今週はプログラミング言語「Rust」の勉強にも時間を費やしています。何よりも個人的な教育と楽しみのためです。本当に気に入っています!経験豊富なCプログラマーとして、その利点がよくわかりますし、少しレベルの高い言語を使いながら、C言語のパフォーマンスをすべて (ほとんど) 引き出せて、とても楽しく仕事ができています。

タウンクラッシュをRustに変換するつもりはありません。技術的には可能ですが、そのワークフローは悪夢以外の何物でもありません。GDScriptは素晴らしいし、クラッシュの生きる場所です!

それではまた次回!

※Discord 原文へのリンク

11月14日

今週は自分の仕事のスケジュールを組み立てていました。良い方法を見つけることができたと思います。詳細は割愛しますが、前進しているとだけ言っておきます!

今週は内部的なことに多く取り組み、ちょっとしたリファクタリングもありました。コードがどう動くか、ゲームがどう感じられるかという点で、もう少しで本調子になりそうな感じです。とても興奮しています!

今週はもう少しディテールを洗練させるつもりです。うまくいけばまたゲームの感触が良くなったと言えると思います!

また、アート生成タスクのためにAIにも手を出しています。今のところ、その結果は印象的です! もちろん、いつも思い通りになるとは限りませんが、ときどきすごくいいデザインになります。家の屋根に木を植えてしまうこともありますが、これは現在進行形の技術です!

※Discord 原文へのリンク

11月5日

皆さん、こんにちは!ちょっとしたお知らせです。
お察しの通り、タウンクラッシュの作業は私の収入にはなりません。しばらくの間はそれでも良かったのですが、ちょっと変化が必要です。私には、どうにも止められないしつこい摂食中毒があるようです。

そのため、お金を稼ぐためにコントラクトの仕事に戻ることにしました。

タウンクラッシュにとって悪いことは何もありません。ただ、作業に取り込める時間が少なくなります。もちろん進展は続きますが、主に週末か、夕方に取り組むことになる感じです。

今のところ、毎週のゴール/進度をお知らせしてきたフォーマットは一旦終了するつもりですが、毎週、何が完了したか、どんな計画を予定しているのか、アップデートはお届けしていくつもりです。

ありがとう!お知らせは以上です。 🙂

※Discord 原文へのリンク

10月30日

Patreonで、このプロジェクトを支援してください!
https://www.patreon.com/TownCrush

— -

📆 10月30日、週間目標

🔆 ゲームプレイ・ループに再挑戦

今週はシンプルに、一つのことに取り組みます。

このコードはすべての核となるものなので、私が完全に理解し、コントロールできるものである必要があります。

今週は他に言うことはありません!

早速取り掛かろう!

※Discord 原文へのリンク

10月30日

10月23日、週間目標のまとめ

1週間が終わり、できるだけのことは行いました。

🔆 瞬間毎のコードリファクタリング

これはやっかいなやつです。完成しましたが、納得していません。
ゲームの中でフレームからフレームへ何が起きているかを追跡するのはまだ複雑で、もう一回挑戦する必要があります。

これは、ゲームのループの核となる部分なので、何度もやり直す価値があるくらい重要なことです。

🔆 パワーアップ:アクティベーション・エフェクトの導入開始

これもまた変わった項目です。パワーアップの起動の基本はできたのですが、今はもう好きじゃないシステムの中に存在します。

というわけで、今週は部分的な勝利ということにしたいと思います。完了したけれど、結局やり直すということです。 ははは…。

※Discord 原文へのリンク

10月27日

パワーアップ相互作用のリストか、私の精神力の衰えの明らかな表れです。

※Discord 原文へのリンク

10月24日

📆 10月23日、週間目標

今週は妻が留守にしているので、かなり早く動けるはずです!気が散らないということは、タイピングが捗るということです…。

🔆 あらゆる状況に正しく反応するボムパワーアップ

これには驚くほど複雑な要素がありますが、すぐに解決したいと思っています。

ボムは以下の場合に発動します:

・ボムパワーアップを含むマッチを作成したとき。
・ボムパワーアップを他のパワーアップと交換したとき。
・発動するパワーアップがボムパワーアップに当たったとき。

他にも忘れていることがいくつかあるはずです。

他のパワーアップにも影響を与えるので、この点をはっきりさせることが重要になります。

🔆 ハチェットヘンを正しく機能させる

2x2マッチをしたときに生まれるチキンです。ランダムなタイルに飛んでボムに変えます。

🔆 できれば…他のパワーアップを機能させる

パワーアップは意外と大変ですが、上記がうまくいけば、他もうまくいくと思います。

よし、今週も頑張ろう!

— -

また、興味のある方はPatreonでプロジェクトをサポートしてください!
https://www.patreon.com/TownCrush

※Discord 原文へのリンク

10月24日

📆 10月16日、週間目標のまとめs

良い一週間でした。

🔆 瞬間毎のコードリファクタリング

完了。これは大規模な作業で、結局ゲーム内部のループの多くを書き直しました。その結果、ゲームはより予測しやすく、コントロールしやすくなりました。

適切なマッチをするたびに、セットされたゲームフローが存在します。

例:

・セルのスワップ
・パワーアップアクティベーション
・パワーアップアイテム作成
・ボードからセルを投げる
・セルをドロップ
・新しいセルを生み出す

それぞれの状態は、他がやっていることに依存しない明確なコードの一部です。

なかなかクールです!

🔆 パワーアップ:アクティベーション・エフェクトの導入開始

完了に近い状態です。つまり、爆弾は正しく作動しています。それはいいことです。すべての状況に対応できているわけではありません。

もうすぐ完了するはずです。

※Discord 原文へのリンク

10月21日

このチャンネルをフォローしている人は純粋なタウンクラッシュのファンだと思うので、ここでお知らせするのがいい方法だと思いました。

Patreonを始めました!

タウンクラッシュ:アーリーアクセス
https://www.patreon.com/TownCrush

ここでは、ゲームの初期ビルドや、コミュニティが成長に合わせて私たちが考えている様々な楽しいことにアクセスすることができます!

もちろん、開発ログや週ごとの目標はこれまで通りここに掲載するつもりですが、Patreonではさらに詳細な情報を共有するつもりです。

タウンクラッシュは文字通り僕一人で開発しているので、資金面での支援について質問されました。私はそれについて考え、NFTは将来的なオプションとして考えていますが、コミュニティからの支援方法としてPatreonを始めました!

強制参加ではありません。ですが、皆さんの支援がゲームの開発を加速させてくれます。

もし参加してくれたら嬉しいです。

ありがとう!今週の目標作業に戻ります!

※Discord 原文へのリンク

10月17日

比較画像を見ると、大したことないように見えますが、一日がかりで根底から作り直しました。 本当に素晴らしいんです!

※Discord 原文へのリンク

10月16日

デバッグビューを追加して、新しいリファクタリングcmdシステムが動くようにしました。 ゲームをプレイしながら、コマンドがキューに溜まっていく様子や実行される順番を見ることができます。これは新しいシステムです。 今日、これをベースに作ってみて、どうなるか試してみるつもりです。

※Discord 原文へのリンク

10月16日

📆 10月16日、週間目標

先週は衝動制御のレッスンでした。このゲームプレイのコードリファクタリングには、時間をかけて取り組みたいと思っています。

🔆 瞬間毎のコードリファクタリング

ゲームプレイコードの絡まりをほどき、それを拡張して、物事が起こる順番をきれいに修正できるようにする。これは今週の大半を費やすことになると思いますが、タウンクラッシュを将来の成功に導くものです。

なぜなら、これがゲームの感覚を決めるからです。そして、その感触こそが人々をプレイさせ、楽しい時間を過ごさせる理由です。反応の悪いコントロールや満足のいかないリアクションのゲームほど楽しくないものはありません。

🔆 パワーアップ:アクティベーション・エフェクトの導入開始

最初の項目が終われば、マッチでパワーアップが絡むとどうなるか、といったことを追加していくことができます。

この2つを片付けることで、先週の結果に対する気持ちもすっきりするはずです!(笑)

※Discord 原文へのリンク

10月16日

📆 10月9日、週間目標のまとめ

忙しい一週間でした。

正直なところ、望んでいた目標を達成することはできませんでした。 だからといって、何もできなかったわけではありません!

💡 生活/マーケティング/言い訳

今週は現実的生活問題がいくつか重なり、正直なところ、数日時間をロスしてしまいました。最近、家を引っ越したのですが、それに伴って、いろいろと対処しなければならないこと、トラブルシューティングしなければならないことが出てきました。妻は今、僕と一緒に家で仕事をしているので、彼女の技術的な問題は、今や僕たちの技術的な問題になっています。わかっていただけると思います。

FazRadioショーに出演しました!楽しかったです!

しかし、プロジェクトにおいて、私が「やる」と言った項目の進度を確認してみましょう…。

🔆 データシステムからのレベル保存/読み込み
🔆 保存/読み込み用のファイルシステムバックエンド

完了。うまく機能しています。現在毎日のプレイテストにオンラインデータベースストレージをほとんど独占的に使っていますが、とてもしっかりしています。プレイヤーの設定やレベル定義などを保存しています。

完全で堅牢なソリューションには明らかに程遠いですが、機能しており、これをベースに構築するのは素晴らしいことです。

🔆 パワーアップ:フルアンビエント効果
🔆 パワーアップ:フルアクティベーション効果

未完了。しかし、大幅な時間を費やしました。

コードが前回と同じ混乱状態に陥っているのがわかったので、それを修正するために数歩後退した状態です。一瞬一瞬のゲームプレイコードが少し絡み合っていて、フォローしにくくなっていました。

リリース後も長く続けていけるゲームにできるよう、土台をできる限り良くすることが重要です。それは、時には後退し、異なる視点で物事を確認する必要があることを意味します。.

詳細は省きますが、昨晩、どのようにセットアップしたいかを考え、今日それを進めています。新機能の拡張も、容易で素晴らしいものになると思います。

🔆 消耗品在庫の基礎固め

未完了。もし取り組めたら良いなと思っていた項目でした!

※Discord 原文へのリンク

10月16日

昨晩、Faz Radioに出演しました! FazとTitanとタウンクラッシュのゲーム開発、そしてなぜかChatGPTについて話しをしました!

※Discord 原文へのリンク

10月11日

良い進展がありました。

タウンクラッシュはデータベースにレベルを書き込むようになりました!レベル (と、player_settings) をローカルファイルシステムに保存するか、インターネット上のデータベースに保存するかをシームレスに切り替えます。 GalaChainのサポートを追加するには、コードに3つ目のデータパスを追加するだけでいいはずです。

つまり…

var fetched_data = await DataBackEndFileSystem.new(…
…もしくは…
var fetched_data = await DataBackEndDatabase.new(…

単語をひとつ変えただけで、まったく違うところからデータを引っ張り始めるんです。

これはすごい!

私の言葉を鵜呑みにするのではなく、何らかの証拠を示す必要があると思ったので、画像を添付します。 これが、二元的なかわいらしさです。

決定事項について…

データベースに入る前にデータを圧縮したいと言いましたが、率直に言って、すでに十分に複雑なものに多くの複雑さを加えることになり、それだけの価値があるとは思えません。なので、今週はリストから除外します。将来的に戻ってくるかもしれませんが、今は最適で完璧であることよりも、機能させることの方が重要です。もちろん、そうしたいのは山々ですが、時には責任ある選択をする必要があります。

コロナワクチンのブースターで地獄のような気分を味わいながら、これだけのことをやっていると、まるで山に登ったような気分です (笑)

早くパワーアップに移らなきゃ! 一週間は早いです…。

※Discord 原文へのリンク

10月9日

📆 10月9日、週間目標

今週の目標は…

🔆 データシステムからのレベル保存/読み込み
🔆 保存/読み込み用のファイルシステムバックエンド
🔆 圧縮データサポート

コンボアイテム。これらは関連していると同時に別のものでもあります。基本的には、データバックエンドをレベルと連動させ、圧縮されたデータを保存したり取り出したりできるようにすることです。ストレージであれ、ネットワーク帯域幅であれ、何であれ、データを扱う場所でゲームが持つ足跡を減らしたいと思っています。少しやりすぎかもしれませんが、このような技術的な目標があるからこそ、責任あるソフトウェアエンジニアであると感じることができます。

これは大がかりなもので、たくさん時間がかかることになるでしょう。Godotのコードやphpサーバーの処理だけでなく、レベルのロードや保存のためのUIも考案する必要があるからです。
レベルの読み込み/保存のためのUIも考案する必要があります。

単独ゲーム開発の醍醐味です!

🔆 パワーアップ:フルアンビエント効果
🔆 パワーアップ:フルアクティベーション効果

またしてもコンボ!つまり、パワーアップを稼働させるということです。現在、パワーアップは作られ、ボード上にうまく配置されています。そして、それらは何かを行う必要があります。

これは、必ずしも最終的なきれいな形であることを意味するものではありませんが、起動したときに想定される動作をする必要があることを意味します。

🔆 消耗品在庫の基礎固め

その結果、画面上には何も表示されないかもしれませんが、エッグセキューショナー、ライフ、追加技などの消耗品の在庫を維持できるようになるための第一歩となります。

ゲームの初期バージョンでは、数個かもしれませんが、時間の経過とともに拡大していくでしょう。

今週も生産的な1週間にしよう!

※Discord 原文へのリンク

10月8日

📆 10月1日、週間目標の総括

第1週が終了しました!予定事項と、実際に取り組むことができたことについてお話しします。

🔆 ボムのパワーアップ完了

これは100%完了とはいきませんでしたが、ボムのパワーアップはゲームに入る最初のものだったので、それをサポートするために作り上げなければならない構造的なものがたくさんありました。

どうせその作業をするのだから、他のパワーアップも全部埋め込むことにしました。

それは、つまりこういうことです:

➡️ ゲームプレイ中に様々なパワーアップを生み出すことができる!特定のマッチパターンを作ることで、以前のゲームのようにパワーアップが生まれる。
➡️ レベルエディターでパワーアップをセルに置くと、レベルがロードされたとき、すでにボード上にパワーアップが存在するようになります。これにより、例えば、ゲーム開始時にボード上に二コラがいるけれども、彼女は壁の後ろにロックされており、最初に爆破する必要がある、などのようなセットアップを行うことができます。

これが私にとってまだ「完了」でない理由は、パワーアップがまだ何もしないからです。今はただ現れるだけ。でもこれは素晴らしい第一歩です!

🔆 残り移動回数のUI

完了。画面に表示されました。私が見たかったのはそれだけです。

🔆 ローカライズのクリーンアップ

完了。不足していたテキストをローカライズし、100%必要でない部分のテキストを削除しました。これは他の言語にも言えることですが、テキストはローカルですが、画像はグローバルです。なので、出来る限り画像で表現しようとしています。

🔆 リモートデータベース接続と使用法

完了。これは冒険でした!

ウィークリーアップデートでも取り上げましたが、これは私にとって大きな成長でした。ウェブサーバーにデータベースをセットアップし、APIを作成するためにPHPを書き、Godotのコードを接続し、Godotと会話できるようにしました。そのすべてが先週完了したというのは奇妙な気分です!

もちろん、セキュリティー機能や、不足している部分もありますが、小さくても一歩前進は一歩前進です!

来週の目標についてはまた後日お知らせします。

読んでくれてありがとう!

※Discord 原文へのリンク

10月7日

誰が戻ってきたと思いますか?⚡

ちょっと脱線しましたが、爆弾のパワーアップを追加し直したので、他のパワーアップもやってみました。スムーズに進んでいるので、この新しいコードベースは実を結んでいます!

(今はまだきれいに並んでいませんが、すぐに修正する予定です!)

※Discord 原文へのリンク

10月5日

ネットワーキングに時間をかけすぎましたが、それは必要なことでした。 うまくいっていると思っていたんです。
でも、影には問題が隠れていて、うまくいかないこともありました。 ようやくパターンがわかり、データの送受信方法を変えることができました!また問題が出てこない限りは...

とにかく、他のタスクに移り、一時的な移動可能回数の表示を実装しました。これを行っているうちに、本当に必要なのはレベルのすべてのゴールをきれいに表示できる、より高レベルのコントロールだということに気づきました。これはおそらく来週取り組む事項になるでしょう。
とりあえず、この項目は完了しました。完了の印を覆したくはありません。

※Discord 原文へのリンク

10月4日

この2日間、ウェブサーバーやSQLデータベース、REST APIなど、本当にたくさんのことを学びました。

主な収穫は、壁を突破したことです。 バイナリデータをウェブサーバーに送り、きちんとデータベースに保存することができます。 その後、バイナリデータを再度要求すると、保存されたとおりに配信されます。 すべてGodotの中からです!

これはとても便利な機能です。実際に有用なデータを保存する、次の段階に進むのが待ち遠しいです!
開発は続きます!

※Discord 原文へのリンク

10月2日

📆 10月1日、週間目標

目標追跡の初週は、以下の内容でスタートします:

🔆フィニッシュボムのパワーアップ

特定のマッチパターンを行うと爆弾になるアイコンです。マッチ中に巻き込むと爆発し、3×3のエリアを破壊します。基本的なものはできましたが、その他の周りのものを立ち上げる必要があります。作成エフェクト、エディターによる配置サポート、アイドルエフェクト、コンボエフェクトなどなどです。

🔆「残り移動回数」UIのスタブ

現在のマッチの残り移動回数がわかるようなシンプルなものです。エディターからプレイしているとき、可能な移動回数がなくなるとゼロになりますが、テストは続けることができます。

🔆 ローカライズのクリーンアップ

ゲーム中のテキストが少し緩くなっているので、将来手に負えない状態にならないように、プレイヤーが直面するテキストをローカライズシステムに移動する道筋を作る必要があります。

🔆 リモートデータベース接続と使用法

これは大きな目標です!ウェブサーバーでホストされているリモートデータベースへの様々なデータの読み書きをゲームで完全にサポートしたいと思っています。ゲームのために多くの扉を開くでしょうし、将来GalaChainや、その他の種類のデータストレージのサポートを追加することができるコードのバックボーンを与えてくれるでしょう。

このようなことに取り組むのは好きなのですが、少し怖いのも確かです。初めて行うことで、やる気満々です!

※Discord 原文へのリンク

10月1日

新しい月が始まりました!何か新しいことを試してみよう!

🔗 WarrEngine Games (ウォーエンジンゲームズ)
クイックアップデート:正式にLLCを設立しました。これで、パジャマでコーディングしているだけでなく、ちゃんとしたビジネスになりました。
まだウェブサイトは素っ気ないですが、とりあえずピカピカの新しいロゴを楽しんでください:
https://www.warrenginegames.com/

コンテンツはゲームが進むにつれて追加していく予定です!

📆 週間ゴール&アップデート
このゲームに深く入り込んでみると、やることがたくさん残っていることに気づきました。エフェクトをいじったり、コードをいじったりしていると、ついつい脱線してしまいます。なんて言ったらいいのか...目標が必要です。
つまり、自分がどこに向かっているのかを知ることで、いつそこにたどり着けるのかを知ることができる。ということです。

新しい戦略: 週間目標と定期的なチェックイン。

毎週日曜日か月曜日に、週間目標リストを開発ログチャンネルに投稿します。
週を追うごとに進捗報告があることを期待してください。
ここでは一人ですべて行っていますが、インディーゲーム開発に興味があるなら、こうしたアップデートは楽しいかもしれません。正直なところ、説明責任を果たすことで集中力を保つことができます。

開発ログ ( ⁠アクセスなし ) チャンネルをまだフォローしていないかたは、チャンネルをお気に入りに追加してみてください。

※Discord 原文へのリンク

9月30日

皆さん、こんにちは!

今週は引っ越しの真っ最中なので、あまりアップデートはありません。機能的なオフィスがないため、何度か読んだだけで試す時間がなかったプログラマーの自己啓発に没頭しています。今は、引っ越し業者からオフィス (とその他の所有物) が届くのを待っているところなので、ノートパソコンと時間だけはある。といったところです。

簡単に言うと、毎朝プログラミングの課題を選び、ゼロの状態で何も調べずにできる限り記憶から書いています。回数をこなせばこなすほど上手になるし、次にやるときのために必要な要件をよりよく身につけることができるというものです。

(私の人生の小さい目標のひとつは、最高のソフトウェアエンジニアになることです。 趣味のようなものですが、すべての時間を費やす必要があります)

私はメモリアロケータと、そのアロケータを使うダイナミックアレイをC言語で書いています (C++も少し混ぜています)

それが何なのかわからない人に説明すると、C言語に習熟するために必要な基礎的なことです。今朝は最初から最後まで1時間弱で、ほんの一握りのケアレスミスだけで、ほとんどすべてのコードを正しく書けました!

今回の開発ログはここまでです。土曜日には新居にオフィスを構え、日曜日にはタウンクラッシュに本格的に復帰する予定です。

来週はもっといいアップデートを画像付きでお届けするので、お楽しみに!

※Discord 原文へのリンク

9月24日

これは、ソフトウェアを開発するときに、ひとつのことが別のことにつながる可能性があるという例です。データをパックして圧縮し、メモリーをあまり消費しないようにする方法がわかったところで、これこそがUndo/Redo (取り消し/やり直し) システムに必要なことだと思いつきました。

非プログラマーのために、アプリケーションにUndo/Redoを実装する方法はいくつかあります:

➡️ アクションベース

アプリは、あなたがとった行動をそれぞれ記録します。「ここをクリックした」「削除を押した」「何かを挿入した」など。 そして、Undo/Redoボタンを押すと、それぞれのアクションに対応したコードが表示され、そのアクションを逆に行う方法を教えてくれます。 これは、実行された特定のことだけを保存するので効率的ですが、サポートしたいすべての可能なアクションのリストを管理しなければならないので、コードが非常に複雑になります。

新しい編集機能を追加するには、追加のアクションのサポートを追加する必要があり、これはメンテナンスが必要な大量のコードに蓄積される可能性があります。

➡️ ステートベース

これは私独自の用語ですが、データの状態を全体的に保存することです。 何かがデータを変更するたびに、そのコピーを配列に保存します。もしユーザーが 「undo 」を押したら、配列の1つ前のエントリーに移動し、そのデータを復元します。もしユーザーが 「redo」を押したら、1つ前のエントリーに移動し、そのデータをリストアします。

これはアクションベースよりも何倍もシンプルですが、データを選択的に保存するのではなく、すべて保存するため、より多くのメモリを使用します。

しかし、そのメモリ使用量と引き換えに、Undo/Redoのコードを変更して新機能をサポートする必要はありません。データを保存/復元するだけなので。

タウンクラッシュは現在、ステートベースのうんど/Redoを使っています。データを素早く効率的にパックして圧縮することができるので、それらのコードパスを活用してメモリ内にデータの小さなコピーを作成することができます。つまり、作業しているものが何であれ、面倒なことにならずにたくさんのコピーを保存できるということです。

これはプログラマーとしてはるかに楽で、ユーザーにとっても、必要であれば長い道のりを戻ることができる強力なUndo/Redoシステムが得られるので、はるかに良いことです。

というわけで、日曜の朝からコードを覗いてみました。

※Discord 原文へのリンク

9月22日

これは完全にオタク向けの話ですが、私はタウンクラッシュのデータをできるだけ小さくすることに取り組んでいます。最小限のメモリ、最小限の帯域幅、最小限のブロックチェーンスペースを目指しています。

なので今日、保存/読み込みコードを書き直して、すべてのデータをディスクに送信する前にできるだけみっちり圧縮するようにしました。

その結果は?

7レベルのパックを保存するのに587バイト。 キロバイトじゃなくて、バイトです! 私は幸せなオタクです!

こんなことで笑ってしまう人のために、16進数をお見せしましょう。

よし、仕事に戻ります。

※Discord 原文へのリンク

9月21日

「どんな仕事してるんだっけ?」
「かなりシリアスなビデオゲームを作っているよ。」

※Discord 原文へのリンク

9月20日

チキンのダジャレを考えていたわけではありません!

※Discord 原文へのリンク

9月17日

・やり直し

技術に関するお話

「Ahead of the Game」インタビューで、コードベースからやり直していることをお話ししました。これにはいくつかの理由がありますが、それほど複雑ではありません。

前回タウンクラッシュに取り組んでから、Godotゲームエンジンの新しいメジャーリビジョンがリリースされました。新しいVulkanレンダリングや、コルーチンとコールテーブルに追加された素晴らしい機能などです。プログラマーでない人にとっては、意味不明化もしれませんが、これはエキサイティングなことなんです!

それだけですべてを書き直す必要はありませんでしたが、いい口実になりました。プログラマーは新しいコードを書くのが大好きです!

しかし、一番の理由は、過去の過ちや技術的負債、誤った決断を払拭する機会を得ることができるからです。プログラミング、Godot、そしてゲームをどう動かしたいかについて、今は熟知しています。

新しいコードは、すでにしっかりしたものになっています。デザインや機能にも満足しています。

・決定論的RNG

これは、このようなシステムの基礎の一つです。「決定論的」とは、乱数を要求するたびに同じ乱数列が生成されることを信頼できることを意味します。重要なのは、各レベルを同じRNGシード値でスタートさせることです。そうすることで、ゲームエンジンは再現可能な乱数ストリームを予測可能に提供することができます。

直感に反するように聞こえます。

「再現可能な乱数のどこが乱数なのか?」

その答えは、それらはランダムであると同時に、同じシード値から生成されているということです。それは信頼できる、いいことです。

・リプレイ/検証

決定論的乱数の効果を示すために、2つの動画を添付します。1つは私がプレイして、スワップを複数回行っているところ。もう1つは、私が今やったことをゲームがリプレイしている動画です。

違いがわかりますか?ライブでゲーム検証しているときは、ここでご覧いただいているようなグラフィックな効果はありません。超スピーディーで、かかる時間は一瞬です。

だからこそ、予測可能なランダム性が重要です。ゲームが空白を埋めるために新しいセルを作るたびに、そのセルは私が最初に試合をしたときと同じものでなければなりません。

これは、ハイスコア検証のような将来の素敵な機能のためのセットアップです。リーダーボードのトップスコアは不正行為だと思いますか?リプレイデータをダウンロードして、自分の目で確かめてみよう!

正直なところ、それがどのように機能するか100%はわかりませんが、まずはゲーム自体がそれをサポートしていることを確認する必要があります。

ありがとう!

開発ログを読んでくれてありがとう!

これから楽しくなりそうです!

※Discord 原文へのリンク

9月17日

Ahead of the Gameでタウンクラッシュのインタビューが配信されました!

昨夜のAOTGのエピソードをまだ見ていない方は、是非チェックしてください!タウンクラッシュについてインタビューをしました。私 (Warren) の個人的な歴史についても少し。興味のある方はクリックしてください:

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

インタビューは12分くらいのところから始まります。
BitBenderとJarhoonに感謝!

📝 Gala Games:9月16日開催Ahead of the Game (第17回) まとめ
https://gogalagames-jp.medium.com/gala-games-ama-20230916-93c4f907a54d

※Discord 原文へのリンク

9月14日

探し物をしてる時にこれを見つけました!

見覚えがありませんか?

このポーズは良いお知らせの前兆です!

※Discord 原文へのリンク

9月14日

タウンクラッシュ復活のお礼に、ラスト・エクスペディションのアーリーアクセスパスをプレゼントしたいと思います。

こちらのスレッド → ⁠💬town-crush-discussion⁠ にあなたのGYRIアドレス返信してください。

幸いなことに、僕は友達が少ないので、たくさんの人にプレゼントできるはずです。

----

皆さん素早い反応有難うございました!
LEのプレイテストを楽しんでください!

※Discord 原文へのリンク

9月6日

何だと思いますか?

皆さん、こんにちは!

タウンクラッシュが復活します!

詳細は後ほどお知らせしますが、重要なのは、タウンクラッシュが戻ってきたということです!ゲームをさらに開発するために、Gala GamesはIPの使用を寛大にも許可してくれました。私の目標は
このゲームを完成させることですが、今回はGala社内からではなく、独立した開発者としてです。

ゲームはGalaChainを使用し、完成したらGalaのウェブサイトでローンチする予定です。

多くの作業が待っており、私はそのためにここにいます。

皆さんにも楽しみして頂きたいと思っています。

お伝えしたいことはまだたくさんありますが、今は簡潔にお知らせします。これからがとても楽しみです。
もうすぐ私たちはまた一緒にクラッシュで遊べるようになるでしょう!

※Discord 原文へのリンク

2023年1月11日

様々な思いが交錯する中、タウンクラッシュの開発中止を発表します。

すでに多くの方が推測されているように、Galaは先日、マッチ3ゲームを含む幅広いカジュアルゲームを手がけるスタジオを買収したため、私の努力は他の場所で生かすのが最善であるという判断に至りました。

この決断は悲しいものですが、タウンクラッシュに携わることで得られた機会と経験には、大いに感謝しています。
この1年はエキサイティングで楽しい旅のようでしたし、自分のキャリアの中でこのような機会に恵まれたことを幸運に思っています。誰にでも起こることではありません!

このゲームがコミュニティから受けた愛とサポートに、私は感動しています。
最初のプレイテストから、GYRIストレステスト、そして6月のメイヘムまで、この1年の思い出は永遠に私の心に残ることでしょう。
何千ものエッグスキューショナーを起動し、連鎖を断ち切ろうとする人々。その狂気と興奮は、常に私の心の中に特別な場所を持つことでしょう。

サポート、提案、バグ報告、さらに「チキンゲームはいつ?」と聞いてくれた、すべての人たちに心から感謝します。皆さんの貢献のおかげで、タウンクラッシュの小さなチームは、この経験をより楽しいものにすることができました。

タウンクラッシュの開発は終了するかもしれませんが (※今のところ)、これからの新しい機会や経験を、楽しみにしています。素晴らしい思い出をありがとうございました。

※Discord 原文へのリンク

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Gala Games Japan
Gala Games Japan

Written by Gala Games Japan

Gala 公式ブログ - 日本語版

No responses yet

Write a response