infinity-architecture

Define module and package ownership for Java code in Subspace Infinity.

25|5|Updated Apr 22, 2017
One-click install
npx skills add https://github.com/assofohdz/subspace-infinity --skill infinity-architecture
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: infinity-architecture
Source: https://github.com/assofohdz/subspace-infinity/tree/main/.claude/skills/infinity-architecture
Command: npx skills add https://github.com/assofohdz/subspace-infinity --skill infinity-architecture

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Developing for Subspace Infinity requires adhering to strict module and package separation rules between the shared API, authoritative server, and client rendering layers, which can be confusing for new contributors or when adding new features. This Skill eliminates guesswork about where code belongs and how data moves between layers.

Core Features & Use Cases

  • Exact code placement mapping: Provides a clear reference for which module and package every type of code (components, systems, events, configs, UI elements) belongs in.
  • Data flow and boundary explanation: Details the authoritative server model, SimEthereal state sync, and RMI command boundaries between client and server.
  • Use Case: A developer adding a new ship energy system can use this Skill to confirm the immutable energy component belongs in api/src/main/java/infinity/es/ship/, the writer system belongs in infinity-server/src/main/java/infinity/systems/ship/, and that client code cannot directly modify the component state.

Quick Start

Use the infinity-architecture skill to confirm the correct module and package for a new ship energy system component you are implementing.

Frequently Asked Questions about infinity-architecture

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I structure Java game modules for compile-time layer separation?

Java game modules achieve compile-time layer separation by enforcing strict package ownership across shared api, authoritative server, and observer client modules, eliminating misplacement errors for components, systems, and events.

Where should SimEthereal state sync components and writer systems be placed in a Java game client and server?

SimEthereal state sync components belong in the shared api module's entity packages, while writer systems that modify state belong in the authoritative server module, preventing the client from directly modifying component state.

What is the correct data flow for RMI commands between an authoritative server and an observer client?

RMI command boundaries define data flow by routing state mutations exclusively through the authoritative server module, while the observer client module receives SimEthereal state sync updates without direct write access.

How do I add a new ship energy system to a Java game project without breaking module separation rules?

To add a new ship energy system, place the immutable energy component in the api module's ship package, place the writer system in the server module's ship systems package, and ensure client code only reads state.

Does Gradle enforce package ownership and layer separation for Java game development workflows?

Gradle manages the module structure for Java game development workflows, enforcing compile-time layer separation between shared api, authoritative server, and observer client modules to prevent unauthorized code placement.

Why does my client code fail to directly modify a game component state in an authoritative server model?

Client code fails because the authoritative server model enforces compile-time layer separation, restricting component state mutations to server-side writer systems and limiting the client to reading SimEthereal state sync updates.