What is the context of the proposal?

Prototyping is essential for validation and iteration in V-Sekai development. This proposal recommends a single-stack approach centered around the Godot Engine, augmented by Elixir and Phoenix for cloud functionalities.

What is the problem being solved?

Even within a single-stack approach using technologies like Godot and Elixir, over-specialization can hinder prototyping. Developers may gravitate towards their areas of expertise, leading to imbalances and challenges when building features that span both client-side and server-side domains.

Design

This proposal uses a single stack with Godot as the foundation, integrated with Elixir and Phoenix:

mix igniter.new --with phx.new --install ash,ash_postgres,ash_phoenix,ash_authentication,ash_authentication_phoenix,ash_admin
mix ash_authentication.add_strategy magic_link
mix ash.codegen initial
mix ecto.create
mix ash.setup
sequenceDiagram
    participant Alice
    participant Bob
    participant Charlie
    participant David
    participant Emily
    participant Fiona
    participant Gina
    participant Harry

    Alice->>+V-Sekai Integration: Explore, Socialize
    activate V-Sekai Integration
    V-Sekai Integration->>-Elixir/Phoenix: User activity data
    activate Elixir/Phoenix
    Elixir/Phoenix->>+PostgreSQL: Store/retrieve data
    deactivate Elixir/Phoenix
    deactivate V-Sekai Integration

    Bob->>+V-Sekai Integration: Explore, Socialize
    activate V-Sekai Integration
    V-Sekai Integration->>-Elixir/Phoenix: User activity data
    activate Elixir/Phoenix
    Elixir/Phoenix->>+PostgreSQL: Store/retrieve data
    deactivate Elixir/Phoenix
    deactivate V-Sekai Integration
    Bob->>+Godot Engine: Modify Platform (Coordinator)
    activate Godot Engine
    Godot Engine->>-GDScript: Execute modification scripts
    deactivate Godot Engine

    Charlie->>+Godot Engine: Build, Script
    activate Godot Engine
    Godot Engine->>-GDScript: Execute scripts
    deactivate Godot Engine

    David->>+Godot Engine: Build, Script
    activate Godot Engine
    Godot Engine->>-GDScript: Execute scripts
    deactivate Godot Engine
    David->>+Godot Engine: Modify Platform (Coordinator)
    activate Godot Engine
    Godot Engine->>-GDScript: Execute modification scripts
    deactivate Godot Engine

    Emily->>+V-Sekai Integration: Perform, Roleplay
    activate V-Sekai Integration
    V-Sekai Integration->>-Elixir/Phoenix: User activity data
    activate Elixir/Phoenix
    Elixir/Phoenix->>+PostgreSQL: Store/retrieve data
    deactivate Elixir/Phoenix
    deactivate V-Sekai Integration

    Fiona->>+V-Sekai Integration: Perform, Roleplay
    activate V-Sekai Integration
    V-Sekai Integration->>-Elixir/Phoenix: User activity data
    activate Elixir/Phoenix
    Elixir/Phoenix->>+PostgreSQL: Store/retrieve data
    deactivate Elixir/Phoenix
    deactivate V-Sekai Integration
    Fiona->>+Godot Engine: Modify Platform (Coordinator)
    activate Godot Engine
    Godot Engine->>-GDScript: Execute modification scripts
    deactivate Godot Engine

    Gina->>+V-Sekai Integration: Strategize, Compete
    activate V-Sekai Integration
    V-Sekai Integration->>-Elixir/Phoenix: User activity data
    activate Elixir/Phoenix
    Elixir/Phoenix->>+PostgreSQL: Store/retrieve data
    deactivate Elixir/Phoenix
    deactivate V-Sekai Integration

    Harry->>+V-Sekai Integration: Strategize, Compete
    activate V-Sekai Integration
    V-Sekai Integration->>-Elixir/Phoenix: User activity data
    activate Elixir/Phoenix
    Elixir/Phoenix->>+PostgreSQL: Store/retrieve data
    deactivate Elixir/Phoenix
    deactivate V-Sekai Integration
    Harry->>+Godot Engine: Modify Platform (Coordinator)
    activate Godot Engine
    Godot Engine->>-GDScript: Execute modification scripts
    deactivate Godot Engine

What are the benefits of the proposal?

  • Flexibility: Godot, Elixir, and Phoenix provide a wide range of tools for prototyping diverse applications, from games and VR/AR experiences to web-based tools with cloud functionalities.
  • Consistency: Centering on Godot promotes consistency in code style and development practices, facilitating knowledge sharing and reducing onboarding time for new developers.
  • Efficiency: This approach simplifies development, reducing the overhead of managing multiple technologies and leading to faster prototyping cycles.
  • Developer Empowerment: A unified toolset empowers developers to explore new possibilities and contribute more effectively to the project.

What are the downsides of the proposal?

  • Limited Flexibility in Technology Choices: Adopting a single-stack approach may restrict the incorporation of other technologies better suited for specific requirements.
  • Learning Curve: Developers may need to become proficient in both client-side and server-side technologies, requiring additional training and time.

What are the alternative proposals?

Alternative approaches, such as a multi-stack approach or relying solely on Godot without cloud capabilities, were considered.

  • Multi-stack approach: While offering flexibility in tool choice, this introduces complexities and inefficiencies. Managing multiple languages, frameworks, and deployment processes can significantly increase overhead.
  • Godot-only approach: Relying solely on Godot limits the ability to prototype features that require server-side logic or cloud functionalities, such as user accounts, persistent data storage, and online interactions.

When might the proposed solution be used rarely or not at all?

The single-stack approach may be less effective for projects requiring highly specialized technologies not covered by Godot, Elixir, or Phoenix, or when rapid integration with existing multi-stack systems is necessary.

Is this a V-Sekai core responsibility, and can it be done by us?

Implementing the single-stack approach aligns with V-Sekai’s core responsibilities. The development team has the expertise in Godot, Elixir, and Phoenix necessary to execute and maintain this stack, ensuring integration and functionality within this stack.

What is the status of the proposal?

Status: Proposed

Who is making decisions on the proposal?

  • V-Sekai development team
  • Fire
  • Benbot

What tags does the proposal have?

  • V-Sekai
  • Prototyping
  • Godot
  • Elixir
  • Phoenix

List further reading references

(Elixir Lang 2026): “Elixir Lang.” Official website for the Elixir programming language. https://elixir-lang.org/ (Phoenix Framework 2026): “Phoenix Framework.” Official website for the Phoenix web framework. https://www.phoenixframework.org/ (BenBot 2026): “BenBot.” GitHub profile of BenBot, a contributor to the V-Sekai project. https://github.com/benbot

Tags

  • 20241229-one-prototyping-stack

References

BenBot. 2026. https://github.com/benbot.
Elixir Lang. 2026. https://elixir-lang.org/.
Phoenix Framework. 2026. https://www.phoenixframework.org/.