# Gravity Realms Creator Guide ## Build And Test The Three Pilot Emotions The marketplace is CLOSED. Public purchases and submissions are disabled. Platform Admin can use the private pilot at `/marketplace/#emotions`. These three presets are implemented for the Character Customizer male and female Gravity avatars. They combine facial expressions with head and upper-arm gestures. They do not move the feet or avatar position. OnLive heads and retired generated bodies are outside this preset version. ### 1. Choose The Facial Controls Start with a neutral face. Use the exported, named facial controls below; values are normalized strengths from 0 to 1. Do not rename bones, change the skeleton, or include executable scripts. Each left/right control is separate. The pilot uses actual exported control poses, not an image pasted over the face. Warm Smile: mouthSmileLeft 1.0, mouthSmileRight 1.0, cheekSquintLeft 0.65, cheekSquintRight 0.65, eyeSquintLeft 0.30, eyeSquintRight 0.30, jawOpen 0.20. The avatar gives a visible greeting nod. Really?: browOuterUpLeft 1.0, browDownRight 0.50, eyeSquintRight 0.60, mouthSmileRight 0.70, mouthPressLeft 0.55, jawOpen 0.08. The avatar tilts and turns its head with a one-sided arm gesture. Delighted: mouthSmileLeft 1.0, mouthSmileRight 1.0, cheekSquintLeft 0.70, cheekSquintRight 0.70, eyeWideLeft 0.35, eyeWideRight 0.35, browOuterUpLeft 0.65, browOuterUpRight 0.65, jawOpen 0.55. The avatar animates its head and both arms in a joyful reaction. ### 2. Build The Preset Data Use this as an authoring example. Public file ingestion is not enabled; this JSON is an example of the values reviewed into the pilot registry, not a currently accepted upload format. ```json { "id": "warm-smile", "name": "Warm Smile", "weights": { "mouthSmileLeft": 1.0, "mouthSmileRight": 1.0, "cheekSquintLeft": 0.65, "cheekSquintRight": 0.65, "eyeSquintLeft": 0.30, "eyeSquintRight": 0.30, "jawOpen": 0.20 } } ``` ### 3. Blend In, Hold, Return To Neutral The pilot shares the established five-second expression envelope: a smooth 0.35-second introduction, full strength until two seconds, then a smooth three-second release. The player can replay the expression. No camera, collision, avatar position, or locomotion values belong in an emotion preset. The three built-in pilot gestures use reviewed runtime head/arm animation; uploaded creator gesture data is not accepted. Speech continues through its independent mouth/viseme layer. Reduced Motion follows the existing avatar preference and suppresses animated expression strength. ### 4. Preview Both Supported Bodies In the private marketplace, choose Male Avatar, then Preview On Avatar. Inspect the front-facing actual face. Repeat with Female Avatar. Check asymmetry is intentional, lips do not invert, eyelids remain reasonable, and the expression returns to neutral. Test speech in-world as well; a static render cannot prove speech blending. A public creator preview and downloadable reference kit remain planned. ### 5. Add The Preset To The Emotions Bar Choose Add To Emotions Bar. The server saves the approved preset ID to the signed-in pilot account, with up to three distinct selections. Return to the world: focusing that window reloads the selection. The named custom buttons appear beside the existing emotions. Choose a supported Gravity avatar, then click a custom emotion. Other browser participants receive only its approved ID, never arbitrary facial data or scripts. Choose Remove From Bar to hide a preset. Reload the marketplace to confirm persistence. The three free pilot examples remain available to add again. This is a test collection; it does not create a paid entitlement or subtract Gravity Coins. The eventual purchase process will create ownership before equipping and will preserve ownership after unequipping. ### 6. Review Before A Public Creator Release Record body compatibility, exact preset version, facial values, timing, frontal screenshots, reduced-motion behavior, speech results, and return-to-neutral results. Public creator uploads, rights review, moderation, paid entitlements, and wallet checkout must be implemented before opening sales. Clothing specifications elsewhere in this guide remain draft until their own sample export tests and reference-kit release are complete. Draft v1 • Private design review • September 23, 2026 This guide describes the proposed creator program. Submissions, purchases and reference-kit downloads are not enabled. Proposed limits must pass a sample garment and device benchmark before becoming the published contract. ## Start Here Create clothing, accessories and facial expressions for Gravity avatars. Choose a supported body, create your item, validate it, preview its behavior and submit it for review. Only approved and explicitly published revisions reach players. The first supported bodies are Character Customizer male and female. OnLive heads remain available in the game but do not automatically support these garments or facial presets. Declare each tested body independently. A shared design does not establish that one mesh fits both bodies. Choose a path: Wearables → Materials → Packaging → Validation → Submission, or Emotions → Validation → Submission. Full-body dances and custom gesture animations are a later pipeline; facial presets contain data, not executable scripts. ## Wearables ### Reference And Scale Use an authorized, versioned creator kit that identifies body revision, reference pose, skeleton hierarchy and bind matrices. The runtime applies a one-third display scale to native models; do not bake that browser scale into clothing. The proposed export contract uses meters and Y up. Verify forward direction and transforms against the kit's known-good sample rather than guessing an exporter setting. The reference kit is not yet approved for distribution. Do not bundle the purchased body mesh or other vendor source assets into submissions or public downloads without the necessary permission. ### Model And Fit Model around the reference pose. Inspect shoulders, underarms, hips, knees and cuffs. Create and test a separate fit for each advertised body. Transfer skin weights from a permitted reference and adjust deformation manually. Preserve bone names, hierarchy and bind pose. Proposed initial limit: four normalized influences per vertex. Do not rename the skeleton or include root motion, scripts or unapproved extra bones. ### Slots And Layering Current runtime slot mappings: | Player Category | Runtime Slot | |---|---| | Tops, Jackets, Dresses | jacket | | Bottoms | pants | | Footwear | shoes | | Eyewear | glasses | | Watches | bracelet | | Hair | hairStyle | | Facial Hair | facialHair | A dress or multi-slot item must identify covered slots. Multi-slot hiding must be implemented and validated before publishing such a product; it must not be assumed from a category name. Existing clothing aliases are not additional products. ### Clipping And Footwear Provide an appropriate body mask where clothing hides skin. The kit must specify mask channel, UV convention and naming. Test with other permitted layers. Neck shrink, hair compression and footwear offsets require a versioned importer contract; creators must not guess their units. Footwear metadata describes sole height and any supported foot/toe adjustment. It must never change camera settings or world spawn coordinates. Test walking, stairs, sitting and landing. The shared avatar grounding system remains authoritative. ### Export Workflow 1. Work from the pinned reference pose and body revision. 2. Model, UV and skin the creator-owned garment. 3. Check deformation in the required pose set. 4. Export one GLB per body fit, local textures and a manifest. 5. Remove unused meshes, cameras, lights, scripts and external references. 6. Run the proposed validator and inspect the browser preview. 7. Submit the package and rights declaration for review. Upload does not publish an item. The service converts approved source into its own immutable runtime assets. ## Materials And Performance Use glTF metallic-roughness PBR. Base color and emissive use sRGB; normal, roughness, metalness and occlusion use linear data. Prefer opaque materials. Use alpha clipping only where needed, such as hair or genuine cutouts. Do not include custom shaders or external texture URLs. Proposed launch targets, pending device profiling: | Asset | Proposed Budget | |---|---| | Garment | 20,000 triangles; 2 materials | | Small Accessory | 5,000 triangles | | Hair | 25,000 triangles; alpha-overdraw review | | Texture | 2048-pixel maximum edge | | Garment Package | 15 MB compressed target | Measure the combined outfit, not just individual pieces. Final outfit limits and LOD thresholds remain a launch prerequisite. Lower-detail meshes must preserve fit and silhouette. Finishes are named material/color variants of one product. Include tint channels, texture assignments and preview images. The listing states whether every finish is included. Do not silently charge again for a color variation. Current assets already have finish mappings. Generate stored image thumbnails during review. Public marketplace browsing must not load a 3D model per card. The private pilot currently generates visible-card thumbnails once in the browser and caches them; server-generated thumbnails remain a public-launch prerequisite. Load a model only for deliberate try-on or detail preview. ## Emotion Presets ### Create And Preview Start with a neutral supported body. Adjust the approved facial controls for smile, brows, eyelids, cheeks and mouth. The allowlist must come from the actual exported male/female control maps. Do not expose arbitrary bones or assume every vendor control has been integrated. Save a name, compatible rig revision, control values and playback envelope. Proposed limits: control weights from 0 to 1, attack/release from 0.1 to 2 seconds, and hold from 0.5 to 8 seconds. These are proposed validator rules, not existing production behavior. An illustrative manifest: ```json { "schemaVersion": 1, "kind": "emotion", "title": "Warm Smile", "rigVersion": "gravity-cc-v1-proposed", "supportedBodies": ["character-customizer-male", "character-customizer-female"], "controls": {"mouthSmileLeft": 0.45, "mouthSmileRight": 0.45}, "envelope": {"attackSeconds": 0.25, "holdSeconds": 2, "releaseSeconds": 0.4} } ``` The kit must validate exact control spelling and availability before accepting this format. This example does not create a working production preset. ### Playback Rules Blend with blinking and speech rather than replacing lip-sync. Return to neutral after playback. Respect Reduced Motion and repeated activation. Facial presets cannot alter eye height, collision, body proportions, camera behavior or account privileges. Full-body gestures require a separate animation review. Test neutral → preset → neutral, repeated clicks, switching presets, speaking, blinking, avatar changes and reconnect. Verify both advertised bodies and remote-player playback. ### My Emotions And The Bar Purchases belong to the account. Compatible avatar changes do not require another purchase. A new emotion can fill an empty custom slot; if full, the player chooses a custom slot to replace. Default emotions and Neutral stay available. Unequipping retains ownership. An incompatible avatar shows an explanation and preserves the purchased entitlement. Recommended layout: retain the six existing default actions; add a manageable custom section with overflow. Slot counts and mobile layout are product choices to validate in the prototype. ## Package And Version Your Work Wearable manifest fields: schemaVersion, title, kind, slot, bodyFits, rigVersion, files, finishes, coveredSlots, rightsDeclaration and screenshots. Creator identity is assigned by the authenticated server. Each body fit links a GLB and any permitted masks/offsets. Server-calculated hashes bind the review to exact files. Proposed upload bounds: 50 MB compressed, 150 MB expanded, bounded file count and compression ratio. Reject path traversal, symlinks, nested archives, executable files and remote resources. Scan and parse in isolated workers with memory/time limits and no outbound network. Never replace a published file in place. New revisions return to review. Retain prior files and entitlement references. Delisting stops new sales without deleting receipts. Compatibility quarantine, ownership revocation and refunds are separate explicit operations. ## Validate Your Submission Automatic checks cover manifest fields, file signatures, GLB integrity, skeleton and bind pose, normalized influences, texture dimensions, materials, slot coverage and budgets. Unknown rig versions and unsupported emotion controls produce actionable errors. Wearable poses: neutral, walk, run, sit, wave, torso turns, stairs, spawn and landing. Test all claimed bodies, finishes and allowed layers. Profile representative mobile and lower-end devices before finalizing budgets. Human review covers authorship, metadata, visual quality, clipping, compatibility and content policy. Reviewers can request changes, reject with reasons, approve a private preview or approve publication. Approval does not automatically turn sales on. ## Submit And Track Stages: Draft → Uploaded → Automated Checks → Human Review → Changes Requested / Rejected / Approved → Scheduled → Published. Revised assets return to review. Draft assets are private to their creator and authorized reviewers. The dashboard shows per-file errors, reviewer notes and version comparisons. Rate-limit uploads and deliver in-account stage notifications. No public contact details or source downloads are exposed by default. The footer link is Developers. It opens a searchable Creator Guide with version notes, reference manifests, validation instructions and known issues. Downloads remain unavailable until the reference kit is both permitted and tested. ## Marketplace And Ownership Listings describe title, creator, category, price, supported bodies, included finishes, version and screenshots. Offer preview before purchase. Clearly show Owned and compatibility states. The private mockup uses illustrative prices and concept emotion products. Checkout uses existing Gravity Coins. The server rechecks price, availability and spendable funds after holds, locks the relevant wallet records, writes balanced accounting entries and grants a unique account entitlement in one transaction. Idempotency prevents double charging across retries and concurrent tabs. Return a receipt only after commit. Creator revenue share, treasury account, refunds, terms and whether creator earnings are spend-only Coins must be settled before launch. No cash-out or external payout is assumed. No Stripe account or credential changes are part of this work. Recommended migration: grandfather currently available apparel for existing eligible accounts and preserve equipped looks. Do not retroactively remove clothes or charge players for existing access. Decide the eligibility cutoff before enforcing new ownership rules. ## Rights And Sources Before launch, review the exact purchased license for monetized wardrobe use, user-generated-content applications and distribution of a creator kit. Package ownership alone does not establish all those permissions. Record any required provider permission; do not distribute purchased source models as a public kit while that remains unresolved. Official references: [Character Customizer documentation](https://gist.github.com/jordbugg/cdc93719a4e57f4ec86d5230dc367054) and [Unity Asset Store Terms and EULA](https://unity.com/legal/as-terms). The latter contains relevant restrictions in its license grant and limitations. This draft is an implementation prerequisite list, not a legal conclusion. Runtime evidence: core/character_wardrobe_data.py, core/character_outfits.py, gravity/web/character-wardrobe.js, gravity/web/character-body.js and viewer/js/gravity-avatar.js. Catalog inventory: 77 body-specific items, including 47 apparel/accessory entries and 30 hair/facial-hair entries. This prototype contains no newly purchased Modern Clothes Pack assets.