アナウンス


数週間前、私は長いブログ記事を書いた.今日、私はLunariaを発表してうれしいです.
Lunariaはプログラマ向けのビデオゲームです.これは、ゲームにコマンドを送信するコードを記述し、ゲームの世界でこれらのコマンドの効果を見て再生されます.ゲームを通じてプレイヤーの進行として、彼らは新しい機能のロックを解除し、拡大し、新たな挑戦の課題を解決するために自分のプログラムを適応させる必要があります.
このポストは次のセクションに分かれます.
  • Vision

  • Gameplay
  • Setting and Scenario
  • Programming Mechanic
  • Roadmap

  • ビジョン

    To create the most engaging platform to practice programming


    Lunariaを作成する動機を見て始めましょう.このセクションは多くの議論を繰り返します、そして、私はあなたに以下の点のより詳細な議論のためにそれをチェックするよう招待します.
    簡単に要約して、私は自由にプログラミングを実践できるツールに不満です.はい、たくさんのコースとチュートリアルが利用可能です.はい、それは簡単に開始し、サイドプロジェクトを起動したことがない.しかし、どちらも私が探しているものです.私が欲しいものは、コードで遊ぶことができるサンドボックスです.実験と学ぶ、厳密なカリキュラムやプレッシャーなしでポートフォリオによく見える何かを生成する.
    そして、私はそれを魅力的で楽しいものにするために、ビデオゲームの力学でこの砂場を結合したいです.彼らがいくつかの構造と方向が欲しいならば、彼らが追求することができるユーザーゴールを与えてください.実験の効率と効果を測定するために使用できるフィードバックループを作成します.そして、プログラミングの周りの物語のビットを提供するように戻ってくると練習を続けるのは興味深いです.ビデオゲームが最後の数十年にわたって完成した力学.
    Lunariaのための非常に野心的な夢は、プログラミングを実践するための最も魅力的なプラットフォームになることです.私の理論は、プレイヤーが自分の冒険を選んで選択できる広大なサンドボックスのビデオゲームは、一般的にほとんどのコースやサイドプロジェクトよりも興味深いです.

    ゲームプレイ
    このセクションは2つのトピックに分けられます.まず,lunariaの設定とシナリオを紹介した.第二に、我々はゲーム内のプログラミングメカニックの最初のデザインを見てみましょう.

    設定とシナリオ
    Lunariaは、既存のテレビゲームに大いに影響されます.これは、戦略、ベースビル、サバイバルゲームからの力学やアイデアを組み合わせて、そのコアメカニックとうまく動作するようにそれらをリミックスします.
    ゲームを起動すると、プレイヤーは外国惑星に遠征を担当して自分自身を見つける.ロケットは惑星表面でそれらを降ろして、いくつかの供給といくつかの無人機を降ろしました.プレイヤーの最初のタスクは、環境に対して保護する基本的なベースを設定し、ベースとその無人機が機能し続けるようにいくつかのエネルギーを生成することです.
    次に起こることはまだ設計される必要がありますが、話の弧は以下のような傾向に最も集中するでしょう.
  • リソースを生成する自動化されたベースを設定する
  • 新しい能力のロックを解除するために人間をもたらす
  • ロケットを宇宙に打ち上げ、太陽系を探る
  • 長期的な旅行のロックを解除し、銀河を探る
  • 長期的なビジョンは、ゲームは永続的な大規模な多人数参加型オンライン世界で行われます.ゲームを通じてプレーヤーの進行として、彼らは他のプレイヤーと会うことができますし、最も困難な課題に取り組むために協力する.このためのインフラストラクチャの構築は重大な事業であるので、最初の開発では、プレーヤーの一握りのためにSinglePlayer経験とスタンドアロンのマルチプレイヤーサーバーに集中します.大規模なマルチプレイヤーは、後に従います.
    次の数週間にわたって、私はテレビゲーム(そして、本と映画)について一連のブログ記事を発表します.これらの影響の合計はうまくいけば、ルナリアがなるかもしれないゲームの魅力的な絵を描く.

    プログラミングメカニック
    Lunariaの最も重要なゲーム整備士は、疑いのプログラミングなしです.つの技術的なコンポーネントは、この整備士のルック&フィールを支配します:
  • プレイヤーのコードを実行するランタイム
  • プレーヤーがゲームと対話するために使用するAPI
  • 特定の技術的な制限は避けられないです、しかし、私はゲームがあまりプレーヤーを制限しないことが非常に重要であるとわかります.このために、私はLunariaに次の機能を提供します.
  • 多くのプログラミング言語は合理的に可能です.プレイヤーが単一の言語や技術スタックを使用する必要はありません.
  • 彼らのソフトウェア設計でプレーヤーの自由を与えてください.それらのコードをブラックボックスとして扱い、よく定義されたAPIを通して対話します.

  • ランタイム
    最初に、特にマルチプレイヤーがない限り、ゲームはローカルのプレーヤーのマシン上で実行されます.ローカルで動作する場合、特別なランタイムは必要ありません.
    # A Rust player
    cargo run
    
    # A Ruby player
    ruby lunaria.rb
    
    ゲームのための長期的なビジョンは、プレイヤーのコードを実行する大規模なマルチプレイヤーゲームになることです“雲で”.この環境のために、アイデアはプレイヤーが自分のランタイムをアップロードできるようにDockerを利用することです.プレイヤーは自分のコードをDockerイメージでパッケージ化し、それを実行するサーバにアップロードします.これにより、各プレイヤーは自分のランタイムと実行環境を選択することができます.

    API
    プレイヤーがルナリアを再生するために書くコードは、APIを介してゲームと対話します.このため、APIは、ルナリアがどのように感じているかに大きな影響を与えます.これは、使用しやすい高レベルのインターフェイスを提供し、要求と応答に渡されるパラメータについての良いドキュメントを提供する必要があります.また、将来のMMOシナリオにおいて、それがパフォーマーであることも重要である.そして最後に、プログラミング言語の選択を制限しないように、API実装はできるだけ広くサポートされるべきです.
    これらの要件に最適なフィットはGRPCです.それは広くサポートされ、低遅延と小さなメッセージサイズを持ち、自動生成クライアントライブラリをサポートしています.私はクライアントライブラリについて特に興奮しています.なぜなら、彼らはゲームと対話するために、十分に文書化された、強くタイプされた、そしてハイレベルなインターフェースを提供するからです.GRPCとそのライブラリを使用することによって、プレーヤーはトランスポートプロトコル、メッセージ形式とコード化、または他の低レベルの詳細に対処する必要はありません.代わりに、彼らはメソッドを呼び出すことができますし、彼らがしたいの影響に焦点を当てる.
    // Send an asynchronous request to move a drone to a new location.
    game.moveUnit(drone.uuid, new Coordinate(1, 1)).await?;
    
    今後この決定についてもっと書きます.

    ロードマップ

    Shoot for the moon. Even if you miss, you'll land among the stars.


    ここで紹介されたルナリアは、過度に野心的なプロジェクトです.私は、それが長期的なビジョンを北スタートとして働くために役立つと思うが、その成功はもちろん保証されていません.予見可能な将来のために、私はプロジェクトのためのより控えめな計画を持っています.
    次の6ヶ月の目標は、ゲームの再生可能なプロトタイプを作成することです.プロトタイプはsingleplayerに限られています、そして、それは私が最終的にゲームに持っていたいゲーム力学の狭いスライスを実行するだけです.その目的は、両方のゲームデザインだけでなく、技術的なアーキテクチャのための強固な基盤を見つけることです.
    プロトタイプを手で、私は次の6 - 12ヶ月をより多くのゲーム力学を構築することに集中したい.目標は、実際にはコンセプトが動作するように再生するような人を作成することです.これは、私がコミュニティを育てるために時間と努力を投資したい時です.私は、何かを見て、試みる、そして、コメントするとき、それがプロジェクトに参加するのがより簡単であると思っています.
    来年を超えてのすべては、おそらくダウンするには、あまりにも早く、それまでにプロジェクトの健康に非常に依存しています.そこにたどり着くなら、2年目の焦点は次のようになります.
  • 例えば惑星から太陽系へ銀河へ行く
  • 多様性と深さを追加する手続き型世界生成
  • マルチプレイヤー
  • プロジェクトの成功の最大のリスクは、燃え尽きるか、重要なマイルストーンが達成される前に興味を失うことです.私がプロトタイプを手に入れることができて、我々がゲームのまわりでコミュニティとして集まることができるならば、私はプロジェクトの長期の持続可能性についてより楽観的に感じます.

    接触を保つ
    このポストは、ルナリアが何であるかの表面をひっくり返すことができて、なるかもしれませんでした.したがって、プロジェクトの更新のために定期的にここでチェックするようにしてください.私は、プロジェクトに関する進捗状況、重要なデザイン決定、およびゲームと他のコンテンツをカバーし、数ヶ月におよそ2つの投稿を書くつもりです.以下の投稿は既にパイプラインにあります.
  • GRPCの詳細観察となぜそれがLunariaのために選ばれたか
  • オープンソースとしてのLunaria構築に関する議論
  • 様々なビデオゲームや映画のポストの束は、ルナリアを刺激する
  • https://playlunaria.com/blog
    また、私と他の人とチャットするためにLunariaのDiscodサーバーに参加することができます.たった今、サーバーはかなり空です、しかし、プロジェクトが発達するとき、それが変わることを望みます.
    https://discord.gg/WkgJcsq
    そして、あなたがLunariaのソースコードを見つけることができるコースのgithubがあります.これは、私がちょうど私よりちょうどより多くの貢献者であるならば、私が新しい特徴とゲーム力学についての詳細な技術的議論をするつもりであるでしょう、多分、RFCプロセスを通して.
    https://github.com/playlunaria
    プロジェクトに対するあなたの関心に感謝!👋