コンソールハッカー向け列車シミュレーターゲーム「LeTrain」
A train simulator game for console hackers (github.com)
要約
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シンクを経由するのではなく、ホストの物理サウンドカードに直接アクセスします。
- 3Dバージョンは、起動時にOpenGLエラー(
解決策: Linuxのリモートデスクトップ接続でプレイしている場合は、ソースからゲームをコンパイルするか、Linux .zipリリースの.shランチャーを使用してください。これはホストのXRDPドライバに完全に適応します。Windowsでプレイしている場合は、ReleasesページからネイティブのLeTrain-Windows.zipをダウンロードして、完璧な3Dアクセラレーションとサウンドを実現してください。