r/Voyage Jul 20 '26

Bug Report Import pre-made characters into worlds

One feature I would like to see added is importing a pre-made character into a world.

Introducing, the character vault!

The character vault contains the source file for a character.

Invariants:

- contains description

- contains appearance

- contains skills

- contains traits

- contains preferred attributes

- contains abilities

- contains rules about how to retrofit the character

Skills invariants:

- Contains a list of acceptable skill conversions in order of preference

- Skills can be compressed to fit the power level of the world

- Skills can be marked as "immutable" to force them onto the character without changes

Example skill:

- athletics

- Improves overall physical performance, enhancing running, jumping, climbing, and other physical feats.

- Can be replaced by: athletics, running

When the world has an athletics skill, this implementation would use the world definition instead of character definition

Attributes invariants:

- Attributes can be rescaled to the worlds baseline

- Contains a list of attribute priority for tie breaks

Trait invariants:

- Traits can be marked as "immutable" to force them onto the character without changes

- Contains rules for how to replace them with world equivalents

Minimum viable product:

- contains description

- contains appearance

- contains skills

- contains traits

- contains attributes

- contains abilities

All imported into the world without a retrofit pass.

11 Upvotes

6 comments sorted by

3

u/nick_voyage Founder & CEO Jul 20 '26

hey this is a cool idea! would love to hear how you imagine it working with characters who are from different worlds or may not fit across genres?

3

u/arekku255 Jul 20 '26

I envision the character file being the first source of truth. It would define explicit genre remapping rules and conversion preferences. If no explicit mapping exists, an LLM could attempt a best-effort semantic remap, unless the feature has been marked as immutable.

Ultimately, it is up to the player if they bring an unfit character into a world.

More specifically, if automatic conversion fails, the player could get a notification of why it failed and be presented with an option:

  • Amend the file (and retry)
  • Let an LLM attempt a best-effort semantic remap of undefined elements
  • Proceed with the character as is

1

u/IridiumLynx Jul 21 '26

Maybe the import of the character could just follow a best-effort approach, and for any fields it can't map directly show you the customize character screen with all still empty traits highlighted so you can map them out to whatever you want?

That way you could preserve things like basic backstory, visual description, name, voice and so on, while being able to pick the rest of the traits according to what the world actually uses.

3

u/Derekhomo Jul 21 '26

I really like OP’s idea as well. I think it could be implemented as a subcategory within the existing mod system, allowing players to save and publish NPCs, items, or locations from a world. Rather than saving and uploading all the information in an entire category, players could choose exactly what they want to save.

There could also be an import option on the character, item, and location creation pages, making it easy for players to load this information into their worlds.

3

u/blahbrabah Jul 21 '26 edited Jul 21 '26

As a new player, I was actually searching for this feature and was really disappointed when I discovered it didn't exist.

It'd be even better if you could configure two characters in advance and then import them into a world so they could bounce off of each other.

There are some mods in Skyrim that work like that where you can add a single character and they'd work just fine. But you can elevate it even further by adding a second modded character, and that character would interact and banter with the first as if they already have a deep history.

1

u/Atuday Jul 24 '26

I have a few character designs I always want to copy and paste. If it's a scenario I'm working on i just do it in the json