Cross-domain Survival(クロスドメイン・サバイバル)

Other

概要

Cross-domain Survival は、pygame を使って実装された俯瞰視点の2Dシューティングゲームです。複数のマップをループで移動し、通路やポータルでステージ移行、最終的に撤退ポイントで決算する構成を採っています。ステージ間に出現するショップで武器を購入・装備でき、遠距離武器は散弾や反動、発射時のエフェクトや発射間隔の冷却表現、近接武器は振りアニメーションと半径判定、オプションで敵弾を弾き返す反射機能を持ちます。学期の大作業として作成され、動作に必要なのは Python 3.8+ と pygame のみです。

GitHub

リポジトリの統計情報

  • スター数: 3
  • フォーク数: 0
  • ウォッチャー数: 3
  • コミット数: 2
  • ファイル数: 12
  • メインの言語: Python

主な特徴

  • 複数マップをまたぐステージ進行と最終撤退ポイントでの決算
  • ステージ間ショップでの即時購入・装備(マウス操作)
  • 近接/遠距離の多様な武器システム(散弾、後座力、冷却、振りアニメ、弾反射)
  • ImageManager による画像のオンデマンド読み込みとプレースホルダ管理

技術的なポイント

本プロジェクトは学習用ながら、ゲーム制作で必要となる複数の技術的要素を実装しています。まずレンダリングと入力は pygame によって行われ、WASD による移動、マウス照準と左右クリックでの攻撃操作、数字キーによる武器切替、Esc での終了などが整備されています。武器システムは遠距離と近接を明確に分離しており、遠距離武器は散弾パターン、射撃ごとの後座力(プレイヤーの反動)、銃口火花や画面抖動などのフィードバックを伴う実装がされています。発射間隔はクールダウン処理で管理され、インタフェース上では「冷却でグレーアウト」して視覚的に分かるようになっています。

近接武器は半径判定による当たり判定をもち、振りのアニメーション(前伸び+角度スイープ)により攻撃のタイミングと範囲を表現。さらに「反射」オプションを持つ武器は、敵の弾丸を跳ね返す挙動を付与でき、これにより弾の軌道管理と反射時の物理挙動処理が必要になります。ゲーム内のオブジェクトはエンティティ単位で管理され、敵、弾丸、アイテム、プレイヤーなどが独立した更新ループを持つ設計と推測されます。

アセット管理では ImageManager を導入し、必要なタイミングでの画像読み込みと、素材が不足する場合のデフォルト色ブロックを準備している点が良いです。フォント管理は起動時に候補フォントから自動選択する実装で、環境差によるフォント問題を緩和しています。ショップや UI はマウスイベント中心の設計で、クリックによる購入・装備・スキップの操作フローが整っています。

コード面での注目点としては、比較的シンプルな pygame 構成ながら「状態遷移(シーン管理)」「リソースの遅延読み込み」「弾道と当たり判定処理」「武器ごとのパラメータ化(散弾数、リロード/クールダウン、反動量)」といったゲーム制作の基本を押さえている点です。改善点としては、敵AI の多様化、パフォーマンスのプロファイリング(多数弾発生時の最適化)、ユニットテストや CI、ドキュメントの充実化などが挙げられます。クロスプラットフォームに関しては pygame ベースなので Windows/Mac/Linux で動作させやすく、依存は少なめです。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .cache: dir
  • README.md: file
  • assets: dir
  • config: dir
  • entities: dir

…他 7 ファイル

(補足)

  • main.py: ゲーム起動エントリ(README に記載)
  • assets/: 画像・音声などの静的アセットを格納
  • config/: ゲーム設定や初期パラメータ(フォント候補など)を格納
  • entities/: プレイヤー、敵、弾丸、アイテム等のエンティティ定義が入る想定
  • ImageManager 相当のモジュールがあり、画像のオンデマンド読み込みとデフォルトプレースホルダ色を管理
  • UI 周り(ショップ・クールダウン表示・インベントリ)は独立した部分で構成されている(マウス中心の操作)

まとめ

学習課題として機能性豊富で、pygame 入門〜中級者が学べる実装例になっているリポジトリです。

リポジトリ情報:

READMEの抜粋:

Cross-domain Survival

一个用 pygame 编写的俯视角射击游戏,支持多地图切换、商店购装与近战/远程武器。

快速开始

  • 需求:Python 3.8+,pygame
  • 安装:
    pip install pygame
  • 运行:
    python main.py

操作

  • 移动:W / A / S / D
  • 射击:鼠标指向 + 左键(按冷却自动连发)
  • 近战:右键或 E(带挥舞动画,可反弹的武器会弹回敌弹)
  • 快速切枪:数字键 1-9
  • 退出:Esc 或 关闭窗口
  • 商店:用鼠标点击购买/装备/跳过

主要特性

  • 多地图循环:传送门切关,最终绿色撤离点结算
  • 商店:关间使用金钱购买武器并立即装备
  • 武器系统:
    • 远程:支持散弹、后坐力、枪口火花、抖动、冷却变灰
    • 近战:半径判定、可选反弹子弹,带挥舞动画(前伸+角度扫动)
  • 图像管理:ImageManager 提供按需加载与缺省占位色块
  • UI 字体:启动时自动从候选字体中…