Hacktoberfest への参加は、スキルを磨きながら有意義なオープンソース プロジェクトに貢献する機会があったので、私にとって刺激的でやりがいのある旅でした。今年、3 回目のプル リクエストでは、最初の 2 つの PR よりも複雑なプロジェクト、つまり ZTM-Quest リポジトリに貢献することにしました。
ZTM-Quest は、開発者がスキルを向上させ、現実世界のプロジェクトを構築するのに役立つプラットフォームである Zero to Mastery Academy の一部であるプロジェクトです。プロジェクト自体は、ユーザーがクエストを完了し、コーディング能力をレベルアップできるようにする魅力的なインタラクティブな Web アプリです。このブログでは、ZTM-Quest リポジトリに取り組んだ私の経験、直面した課題、学んだこと、そして Hacktoberfest
の 3 回目の PR をどのように完了したかについて説明します。今週、私は、map_start に NPC (Non-Playable Character) を追加することで ZTM-Quest プロジェクトを強化することに重点を置いた問題に取り組みました。現在、プロジェクトにはマップあたりの NPC の数が限られているため、メンテナは、map_start エリアをさらに追加したいと考えていました。幸いなことに、このプロジェクトには NPC をランダムに生成するためのコードがすでに含まれており、これが確かな出発点となりました。さらに、メンテナは、独自のスプライトシートを使用してカスタム NPC を作成できると提案しましたが、コードベースの複雑さとサイズを考慮して、プロジェクトの要件をより効率的に満たすために既存のアセットを使用することにしました。
ZTM-Quest プロジェクトは、map_arcade、map_city、map_start の 3 つのマップで構成されています。この問題では、メンテナの要求に合わせて、map_start のみに焦点を当てました。これまで 2D ゲーム開発ライブラリを使ったことがなかった私は、最初はその作業が気が遠くなるように感じました。しかし、メンテナの指導と詳細な指示のおかげで、コードベース内を移動し、タスクに関連する主要なファイルと構造を特定することができました。
まず、NPC 作成ロジックが定義されている src/factories/npc.factory.js ファイルを調べました。そこから、src/gameObjects/map_start ディレクトリに randNpcsOnRestroomSinkCouch.gameObject.js という名前のファイルを作成して、新しい NPC の追加を開始しました。私の最初の実装では NPC を 1 つの場所 (椅子) にのみ配置しましたが、さらに検討したところ、メンテナはマップ全体に NPC をより動的に分散することを意図していたことがわかりました。これに対処するために、コード エディターの検索機能を利用して、流し台、ソファ、洗面所など、他の関連する場所を特定しました。
これらの識別されたオブジェクトのマップ上の位置に基づいて、流し台の近くに立っている 2 人の NPC、ソファに座っている 2 人、洗面所エリアに 3 人を配置する NPC を追加しました。これにより、map_start でより活気のある、よりインタラクティブな環境が作成されました。
私の自己PR
この問題に取り組むことで、オープンソース コミュニティとゲーム開発についての貴重な洞察が得られました。 ZTM-Quest のメンテナーは非常に協力的かつプロフェッショナルで、私の成功に役立つタイムリーなフィードバックとリソースを提供してくれました。初めてプロジェクトに参加したとき、私は彼らの Discord グループに招待され、質問があるときはいつでもそこに連絡することができました。これにより、体験がさらに楽しく、協力的なものになりました。
全体として、今週は私をこれまでの経験のない領域、つまり 2D ゲーム開発に挑戦することになり、快適ゾーンから押し出しました。最初の学習曲線にもかかわらず、私はなじみのないコードベースを操作し、複雑なプロジェクト内で問題を解決することに自信を持てるようになりました。ハクトーバーフェストの最後の PR を完了することを楽しみにしながら、スキルセットを広げるために新しい開発分野を探求し続けることを目指しています。
以上がオープンソースの成果: ハクトーバーフェストで 3 回目の PR を完了の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。