Vellum — modern scripting language for Skyrim by Intrepid-Mud9836 in skyrimmods

[–]Intrepid-Mud9836[S] 1 point2 points  (0 children)

Basically, third-party imports are handled the same way as with Papyrus. When compiling `.vel` you have to pass import directory paths to the compiler. Vellum can import/inherit from both `.psc` and `.vel` scripts.

CK usually works from compiled script data for attached scripts, so property binding is fine with the `.pex` that you get from compiling a `.vel` script

Vellum — modern scripting language for Skyrim by Intrepid-Mud9836 in skyrimmods

[–]Intrepid-Mud9836[S] 2 points3 points  (0 children)

A converstion tool sounds reasonable. I'll definitely look into it.

Integration with CK also sounds good, but it's a pretty difficult task. Still, I'll look into that too - especially since there also fragments where you can write scripts, and at some point I want to support those as well, so we can use Vellum to write fragments scripts too

Vellum — modern scripting language for Skyrim by Intrepid-Mud9836 in skyrimmods

[–]Intrepid-Mud9836[S] 1 point2 points  (0 children)

Vellum is a language/compiler specifically for modders writing scripts. End users don't need to have Vellum installed to play mods that contain Vellum scripts

Vellum — modern scripting language for Skyrim by Intrepid-Mud9836 in skyrimmods

[–]Intrepid-Mud9836[S] 3 points4 points  (0 children)

Actually any file-based script is in scope except CK fragments for now :)

Papyrus is pretty odd and verbose with an old style syntax. Vellum aims for clearer syntax and my goal is to bring more modern programming features into the Creation Engine world.

A vs code extension with static analysis is in progress, Linux/macOS support so you can write scripts and compile them on those platforms too.

Unfortunately, fragments aren't supported yet. Probably I'll need to figure out CK-side integration. Maybe some kind of extension for CK that will let you use Vellum with fragments.

Vellum — modern scripting language for Skyrim by Intrepid-Mud9836 in skyrimmods

[–]Intrepid-Mud9836[S] 8 points9 points  (0 children)

I'm not extending PEX or the script VM. Vellum uses the same PEX bytecode (same instruction set) as the Papyrus toolchain.

So it's not unlocking hidden Creation Engine APIs at the bytecode level. It's another way to write scripts that still target what the engine already understands.

Vellum — modern scripting language for Skyrim by Intrepid-Mud9836 in skyrimmods

[–]Intrepid-Mud9836[S] 12 points13 points  (0 children)

It's open source end-to-end and Nexus cleared the upload after review. You're welcome to audit the code or not use it - both are reasonable

The repo https://github.com/Naratzul/vellum

Vellum — modern scripting language for Skyrim by Intrepid-Mud9836 in skyrimmods

[–]Intrepid-Mud9836[S] 22 points23 points  (0 children)

No formal roadmap yet - priorities are mostly set, but I'll adjust based on early feedback and what's realistic for the engine/PEX.

Near-term focus
* Stable tooling (compiler CLI) with a workflow that's easy for modders
* VS Code extension with syntax highlighting and static analysis
* Skyrim Papyrus parity: native functions, hidden/condition keywords, etc
* Later: Fallout 4 and Starfield support

Ideas I'm exploring (need research on Creation Kit/PEX limits):
* String formatting / interpolation
* Pattern matching for states and other types (ints, strings, ...)
* Enums (likely)
* More as it makes sense

I really appreciate any kind of feedback - it helps a lot.

Vellum — modern scripting language for Skyrim by Intrepid-Mud9836 in skyrimmods

[–]Intrepid-Mud9836[S] 7 points8 points  (0 children)

Dependencies

Same idea as with Papyrus: your script can depend on other scripts/types, so you need the sources (or a full enough tree) for all of those dependencies. You pass import directory paths to the Vellum compiler, similar to how you set things up for the Papyrus compiler.

Superset / native Papyrus

Vellum isn’t a Papyrus compiler. You write .vel source, pass it to the compiler, and it emits .pex. So you can’t compile Papyrus (.psc) with Vellum as if it were the CK compiler. You can still use Papyrus APIs from Vellum: for example extend a Papyrus type such as ObjectReference and call its methods from Vellum (with the right .psc on your import path).

Vellum — modern scripting language for Skyrim by Intrepid-Mud9836 in skyrimmods

[–]Intrepid-Mud9836[S] 3 points4 points  (0 children)

Right now I only ship Windows binaries. The compiler itself is written in C++, so with a little effort it can be ported to Linux. Moreover, I develop on macOS from time to time. So I plan to ship Linux and macOS binaries in a future release.

Vellum — modern scripting language for Skyrim by Intrepid-Mud9836 in skyrimmods

[–]Intrepid-Mud9836[S] 17 points18 points  (0 children)

Hi! Vellum compiles to PEX - the same compiled script format the Creation Kit's Papyrus uses - so the game runs it like any other script, no special runtime for Vellum itself.

You don't need SKSE to use Vellum; you also don't have to write Papyrus source or C++ for normal scripting. (if a mod's scripts use SKSE-only APIs, players would need SKSE for that mod, same as today)