HN 日本語サマリー

← 一覧へ戻る
その他

コンソールハッカー向け列車シミュレーターゲーム「LeTrain」

A train simulator game for console hackers (github.com)

5 pointsby avaraujo1 コメント

要約

LeTrainは、クラシックなASCIIアートの美学と最新の3Dエンジンを融合させた、手続き型列車シミュレーターゲームです。無限の世界に広がる広大な鉄道網を構築し、複雑な経済を管理し、ロジスティクス効率の技術を習得することを目指します。2026年には3D進化版が登場し、高パフォーマンスな3Dエンジン、記録・編集モード、深い経済システム、無限に生成される世界などが特徴です。Java 17+とMavenが必要で、ソースからビルドして3D版、ASCIIターミナル版、シナリオ検証ツールを利用できます。

全文翻訳

LeTrain 🚂✨

🌐 English | Español

[画像: Build Status] [画像: GitHub release] [画像: License] [画像: Java 17+]

      __       ______           _
     / /   ___/_  __/________ _(_)___ 
    / /   / _ \/ / / ___/ __ `/ / __ \
   / /___/  __/ / / /  / /_/ / / / / /
  /_____/\___/_/ /_/   \__,_/_/_/ /_/
       The Letter Train Simulator
   (C) 2006-2026 Antonio Vazquez Araujo

[画像: The LeTrain cover screen]

LeTrain は、クラシックなASCIIアートの美学と最新の3Dエンジンを融合させた、手続き型列車シミュレーターです。無限の世界に広がる広大な鉄道網を構築し、複雑な経済を管理し、ロジスティクス効率の技術を習得します。

📜 LeTrainのマニフェストと哲学を読む (Leer en Español)
"自分で遊ぶおもちゃはなく、正直な列車、そして純粋なキーボードフローのための、エンジニアの子供たちと子供のエンジニアのためのゲーム。"


🌟 2026年の新機能:3D進化

LeTrainは進化しました!ターミナルのルーツを維持しながら、LibGDXを搭載した高性能3Dエンジンを搭載しています。

  • モダンな視点: スムーズなオービットカメラで、鉄道帝国をフル3Dで探索できます。
  • クラシックな魂: 工業地帯と列車は、象徴的なキャラクターベースの魅力を維持しつつ、物理的な3Dオブジェクトとしてレンダリングされます。
  • ビジュアルの洗練: 山の動的な透明度、意味のある色分けされた駅、高解像度のタイポグラフィ。

[画像: クラシックな2Dターミナルと同じ世界] [画像: 日中の3D世界:「letrainisverycool」という文字を綴るレタートレイン] [画像: 夜の3D世界、機関車のヘッドライトで照らされる]

クラシック2Dターミナル · 日中の3D · 夜の3D

🎬 記録、元に戻す、シナリオ

編集ワークフローは、2Dおよび3Dクライアントの両方でファーストクラスになりました。

  • 記録/編集モード (R): 世界をフリーズさせ、即座に構築し、すべての編集を記録します。
  • 元に戻す/やり直し: u と Ctrl+R(または undo; / redo;)で、構築と状態変更(フォーク、セマフォア、信号)の両方に対応します。
  • シナリオ (.ltr): ネットワーク全体を小さなテキストレシピとしてエクスポートし、他の誰かのものをインポートできます。同じシードで同じ世界が再構築されるため、シナリオはプレーンテキストとして移動します。バンドルされたletrain-checkでヘッドレスで検証します。
  • 組み込みエディタ (p): タブ形式のシナリオ/プログラミング/設定エディタで、タブごとにクイックリファレンスとエラーナビゲーションが利用できます。
  • 実験モード (X): ライブワールドのスナップショットを取り、何かを試してから復元します。

[画像: LeTrainエディタ、プログラミングタブ選択時]

💰 深い経済と産業

ゲームには完全に統合された金融システムが搭載されています。

  • 資本管理: $0(ゼロ・トゥ・ヒーローチャレンジ)から始めて富を増やします。
  • ロジスティクスエンジン: 生産者から消費者へ特殊貨物(GOLD, COAL, RUBY)を輸送します。
  • スマートプライシング: 収益は移動距離に応じて増加します。1メートルが重要です!
  • 建設コスト: インフラ拡張と運用燃料コストのバランスを取ります。
  • 設定可能なゲームプレイ: letrain.cfgファイルを通じてゲーム全体を微調整できます(ランチャーの隣に同梱されています)。

🌍 無限の手続き型世界

  • エントロピーブースター: 新しいゲームは常にユニークなランダム座標(±10k~±100kユニット)から開始され、常に新鮮な探索を保証します。
  • 手続き型景観: カスタムパーリンノイズによって生成された湖、森、そびえ立つ山々をナビゲートします。
  • フラスタムカリング: 最適化されたレンダリングエンジンは、表示されているものだけを処理することで、巨大なマップを扱います。

[画像: 設定ダイアログ、地形タブ:シード、水と山のスライダー、マッププレビュー]


🚀 開始方法

前提条件
  • Java JDK 17以上。
  • Maven。
クイックローンチ

ビルドシステムは完全に自動化されています。実行するだけです。

mvn clean package -DskipTests

これにより、output/に3つのスタンドアロンディストリビューションが生成されます。

  • output/LeTrain — 最新の3D体験。
  • output/LeTrain2D — クラシックで高速なASCIIターミナルビュー。
  • output/letrain-check — ヘッドレスシナリオ(.ltr)バリデーター。

デフォルトのletrain.cfgが各ランチャーの隣に同梱されているため、コードに触れることなくゲームを調整できます。

ランチャー
  • LeTrain(または.exe / .sh):3Dモードで直接起動します。
  • LeTrain2D(または.exe / .sh):クラシックなターミナルビューを好む方向け。
  • letrain-check <file.ltr>:シナリオファイルを検証し、file:line:col診断を出力します。

🛠️ テックスタック

  • コア: Java 17
  • 3Dエンジン: LibGDX (OpenGL)
  • ターミナルUI: Lanterna
  • スクリプティング: カスタムANTLR4ベースの鉄道自動化言語。
  • オーディオ: リアルな機関車サウンドのためのグラニュラーシンセシスエンジン。

🧑‍💻 LeTrainの構築方法

LeTrainは、生成AIが存在しなかった2006年からAntonio Vázquez Araújoによって設計されてきました。当初はC++のASCII実験として、後にJavaとして開発されました。すべての設計上の決定、メカニック、方向性は彼のものです。そして2026年3月まで、彼はすべてのコードを自分で書いていました。

それ以来、プロジェクトは彼の指示の下でAIエージェントのチーム(OpenCode)と共に開発されています。彼は設計、決定、レビューを行い、エージェントは彼の指示に従ってコードの作成、テスト、リファクタリングを行います。これは、コンパイラやリンターが高レベルで思考を助けるのと同じ方法です。これはAI生成ではなく、人間が作成しAIが支援したソフトウェアです。目標、アーキテクチャ、判断は人間のものであり、すべての変更は完全なテストスイートとCIを通過し、マージ前にメンテナーによって検証されます。

チームの定義と作業ルールはリポジトリ(AGENTS.md, .opencode/agents/)にあり、開発全体は課題とプルリクエストで公開されています。

🤝 貢献

貢献を歓迎します!バグレポート、機能アイデア、ドキュメント、コードすべてを評価します。

  • 📜 まず、私たちのデザイン哲学とマニフェスト を読んで、LeTrainのコアソウル、2D/3Dの対称性、譲れない点を理解してください。
  • ビルド/テストとPRワークフローについては、CONTRIBUTING.md を読んでください。
  • バグや機能リクエストについては、課題を開いてください。
  • コードについては、developからブランチ(feature/... / fix/...)を作成し、PRを集中させ、mvn clean testがパスすることを確認してください。

Antonio Vazquez Araujoによって作成されました。
Twitter/X - @avaraujo | GitHub

⚠️ 既知の問題

Snapパッケージの制限(WSL2 & Remote Desktop)

Snapパッケージは厳密なサンドボックスを使用し、独自のグラフィックス/オーディオライブラリをバンドルしているため、仮想化またはリモート環境では正しく機能しない場合があります。

  • Windows Subsystem for Linux (WSL2 / WSLg): Snapバージョンはオーディオなしで実行されます。これは、SnapがMicrosoftの非標準PulseAudioソケット(/mnt/wslg/PulseServer)にアクセスできないという既知のAppArmorサンドボックス制限によるものです。
  • リモートデスクトップ(XRDP / VNC):
    • 3Dバージョンは、起動時にOpenGLエラー(Failed to create context: BadValue, swrastフォールバック失敗)でクラッシュします。SnapのバンドルされたMesaグラフィックスドライバは、XRDPによって作成された仮想X11ディスプレイと競合します。
    • 2Dバージョンは、ネットワーク経由でオーディオをストリーミングしません。ALSAは、XRDPの仮想PulseAudioシンクを経由するのではなく、ホストの物理サウンドカードに直接アクセスします。

解決策: Linuxのリモートデスクトップ接続でプレイしている場合は、ソースからゲームをコンパイルするか、Linux .zipリリースの.shランチャーを使用してください。これはホストのXRDPドライバに完全に適応します。Windowsでプレイしている場合は、ReleasesページからネイティブのLeTrain-Windows.zipをダウンロードして、完璧な3Dアクセラレーションとサウンドを実現してください。