
Assets
Assets are files used by Components. An Asset can be:
- GLB/GLTF (3D Model: .glb, .gltf)
- Gaussian Splat (GSplat: .ply)
- Texture (PNG, JPG, etc.)
- Material
- Sound/Music (MP3, WAV, etc.)
- Animation
- Script
and more. We'll expand this page as we release more features.
Assets are Per-Game (But Can Be Copied and Reused)
When you add an asset to a game, it's tied to that game. To use the asset in another game, simply copy it.
Why? If you update a monster 3D model asset in your MMORPG, you don't want it to affect other games. That'd be a nightmare with easy breakage.
But, it's easy to copy the monster asset to another game and pull in updates as you wish.
This gives you the best of both worlds: You can ensure any changes to an asset only affect your MMORPG, but for a separate match-based game with the same monster, you can always pull updates from the asset you copied it from. You have full control with smooth sharing between games.
Streaming Assets
Since everything is mirrored, Assets are streamed to all players in real-time.
No local builds or file sharing required: When an asset exists in-world for you, it’s instantly available for everyone else.
Optimization
Use 1024x1024 textures unless you run into issues.
Mirror Engine will soon optimize assets with compression and level of detail (LOD), automatically creating downscaled versions of your assets for lower-end devices.
We want you to be able to just focus on 1 version of your asset and let the engine handle the rest.
Asset Creation
With our aim to be an all-in-one game engine, Mirror Engine provides a handful of tools to create your own assets.
Mesh
When you create a new entity, you'll see a box mesh by default. Open the bottom-right menu to change its shape. You can then modify its position, rotation, and scale in the Transform menu to build more complex shapes.
AI Generate Gaussian Splats
There's hot debate in the game dev community about AI use. We recognize it's not for everone and aim to support you, regardless of which side you're on.
We care about game developers: If you wish to abstain from AI tools, great! If you wish to use AI tools, great!
We simply view AI as a tool. It doesn't replace game developers, but rather makes them more powerful. Game dev is hard, and we're excited because these tools can help indie developers compete with AAA studios.
We also wouldn't be aligned with our mission of an all-in-one game engine if we left out specific tools. It simply wouldn't be "all-in-one".
If you don't use AI, we'll have a #NotAI tag on published games,so your discoverability can be enhanced. We leave the choice up to you!
We always warmly welcome your thoughts.
To generate a Gaussian splat, right-click in-world and select "Generate". Type in your prompt, press enter, and you'll see a group of particles while the engine generates the asset.
We encourage you to play with it a bit for the best results. Post some cool creations!
Gaussian splats are heavy and unoptimized as of V3 Alpha. You'll notice some camera jitters and lag. We're working on it!
Similar to other entities without components, you won't collide with these in-world just yet. We're enhancing collision shapes, which will be released soon.
A Gaussian splat is a 3D type. Instead of using meshes, it renders thousands of "splats", 3D blobs, that each carry color, opacity, and shape information.
The result? A near-photorealistic scene, often captured from real-world cameras.
Materials
A Material is a container for rendering settings and texture maps that define how a surface looks. Materials don’t define 3D data — they're applied to meshes to control visual appearance.
Each material holds parameters like color, opacity, and a set of textures.
Materials and textures are not the same thing. Though they sound similar, materials can contain multiple textures (or just 1, or none at all). For high-quality materials, you'll often find 3-5 textures with each material.
Each texture defines distinct settings for how the material is viewed in 3D space.
Textures
Textures are simply 2D images that specify how a material appears.
Texture types:
- Color: The primary texture. This is the most important: It's simply the main 2D texture that's applied to the surface.
- "Diffuse" is the proper technical term, but we use "Color" alternatively for simplicity. Depending on your material workflow, "Albedo" may also be used.
- Normal: Adds surface detail by faking small bumps via lighting distortion, but doesn't change actual 3D data.
- Height: A greyscale texture used for parallax effects or actual displacement if supported, giving real surface depth.
- Gloss: Controls how matte or glossy the surface appears.
- Roughness: Gloss settings can be toggled to roughness (it's simply inverted). Up to you for which you wish to use.
- Specular: Affects reflection intensity and color, important for metal vs non-metal surfaces.
- Emissive: Makes parts of the surface appear self-lit, glowing independently of scene lights.
"Maps" refer to textures in game dev, so if you see "Color Map", it's the same thing as "Color Texture". The "map" and "texture" terms are used interchangeably.
Mirror Engine materials are dynamic; when you change a texture or material property, it updates in real time for all players to see. This lets you build everything from dull concrete to glowing sci-fi panels and see the effects immediately.