f4cf / creation-framework Goto Github PK
View Code? Open in Web Editor NEWA general purpose scripting library for Fallout 4.
License: MIT License
A general purpose scripting library for Fallout 4.
License: MIT License
The Papyrus:Project
doesnt seem to be a good fit for the namespace Papyrus
. In my games project I use a Shared
namespace which I think I will adopt for the Project pattern.
I've still had this standard library for scripting on my mind. I am going for a Microsoft DotNet imitation and CSharp inspired syntax which is very expressive.
I am trying to make the entire library "stateless" where usage is called globally or via type extension (extends). In general this means you can call the global members of the classes as-is, or derive a child class and bind it to a Form
in your own mod. The child classes are stateless out of the box. You may override the provided virtual properties to change the base functionality or provide your own. It is also on derived user made classes that instance data may be used as normal.
Here is some highlights.
System:Object
Extends the base Form
type. The base for my "re-unified" type system. This is so I can extend the existing type system without overwriting base classes like xSE does.
A new System:*
base class is (will be) provided by the standard library. Each system base class will provide a special self
property which is of the Form's
concrete type. Besides this, you call, extend, and bind to Forms
as you would normally with the vanilla base scripts.
https://github.com/Scrivener07/FO4_Scripting/blob/4a490610befd2a88cdd373f547087a948330e860/System/Scripts/Source/System/System/Object.psc#L49-L60
System:Activator
With my own reunified type system I can more easily support some advanced functionality.
The activator type provides a pseudo new
operator for script types.
https://github.com/Scrivener07/FO4_Scripting/blob/4a490610befd2a88cdd373f547087a948330e860/System/Scripts/Source/System/System/Activator.psc#L42-L71
https://docs.microsoft.com/en-us/dotnet/api/system.activator
https://www.creationkit.com/fallout4/index.php?title=Activator
System:Type
An abstraction for "external" data communication. I plan for this to help support my type activator.
https://github.com/Scrivener07/FO4_Scripting/blob/4a490610befd2a88cdd373f547087a948330e860/System/Scripts/Source/System/System/Type.psc#L61-L113
Here is an example of external data for the System:Type
.
The System:Type
provides the generic globals that any script can call without doing any extends or attaching to CK forms. But you can optionally define your own System:Type
that optionally provides instance members if bound to a Form
..
The default instance implementation of the System:Object -> System:Type
is an abstraction for Fallout4.esm
. The "Creation Framework" as Ive coined it, internally uses a specialized extension of this by overriding some "virtual" members. The System:Type -> System:Properties:Assembly
provides an abstraction for System.esl
.
https://github.com/Scrivener07/FO4_Scripting/blob/4a490610befd2a88cdd373f547087a948330e860/System/Scripts/Source/System/System/Properties/Assembly.psc#L48-L58
System:Collections:Stack
An example of a type which provides a global pseudo new
operator called Type()
.
https://github.com/Scrivener07/FO4_Scripting/blob/4a490610befd2a88cdd373f547087a948330e860/System/Scripts/Source/System/System/Collections/Stack.psc#L13-L15
https://github.com/Scrivener07/FO4_Scripting/blob/4a490610befd2a88cdd373f547087a948330e860/SystemTests/Scripts/Source/SystemTests/SystemTests/Services/Object.psc#L1-L16
Its still in the design/prototype phase so Im interested to hear scripter impressions. โ
I built an inheritance diagram of script objects. Open the image in a new tab to make larger.
That is the big picture so far with my current design direction. Just leaving this here in case someone has interesting feedback.
As an experiment, I started working on porting Fallout 4 Commonwealth exterior map to Unreal Engine 5, here are some more details
UE link
I'm not an tech/artist, so visuals is not the primary focus of this experiment.
Anyways, the experiment turned out to be successful, to the point that it actually looks (albeit basic) in Unreal Engine 5 similar to Fallout 4 original. See these side-by-side comparisons
Anyways, on the to-do list is to eventually port Papyrus scripts to Unreal Engine C++, and I'm looking for someone versed in Papyrus to brainstorm with, and you came up :)
I was wondering if you can lend me a hand with some brainstorming. Thanks!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.