Post 1.0 Planning Update

Anything related to PR, release planning and any other non-technical idea how to move the project forward should be discussed here.
Post Reply
User avatar
AnyOldName3
Posts: 1453
Joined: 26 Nov 2015, 03:25

Re: Post 1.0 Planning Update

Post by AnyOldName3 » 05 Apr 2018, 20:58

I think there's confusion here about what would and wouldn't be possible with Zini's envisioned OpenMW version.

There'll definitely be improvements to the scripting system, so things that were never possible with MWScript will be doable in OpenMW, and it's likely that either there'll be a scripting language available other than MWScript or via some futuristic magic, somehow MWScript will become good. Adding Lua has been discussed before and wasn't completely dismissed as a possibility, but including parts of Lua's standard library that allow 'dangerous' things like networking was declared a bad idea.

The not-'calling arbitrary C functions from within OpenMW scripts' comment was specifically regarding MWSE's support for DLL-based mods and for Lua FFI support. His belief is that any mod should be possible without doing this as stuff that was a DLL mod in the past can be implemented into the engine.

Either way, the scripting situation will be improved, so if the mod can be made for Morrowind (with or without MWSE) without a DLL, it will become possible to make it for OpenMW.

My disagreement is because I think there are things that would have been a DLL-based mod before that wouldn't be integrated for whatever reason. I don't think it's going to be stuff like making extra functions callable from scripts as provided they're not stupid, that kind of thing is likely to be merged, and if it is stupid, then people shouldn't ever need to call it from a mod. It's going to be something like, for example, completely replacing the combat system so that when you're wearing your VR headset and flailing your arms around (or just repeatedly clicking the mouse), if you hit an enemy's exposed skin a bloody cut appears, and when you hit their armour it gets scratched and armour only affects damage resistance if part of the armour mesh instead of the body mesh gets hit so suddenly a deadric bikini stops being useful. This is the kind of mod that people might actually want to use but would have sweeping changes to how the game was supposed to be played and to balance, so wouldn't necessarily get merged. If someone then decides to release it as a separate fork, everything's fine until someone wants to use it in conjunction with TES3MP or some other mod that's also its own fork. Suddenly, users who don't want to compile their own engine have to pick which single overhaul mod they most want to use.

It's possible that there's some way around this problem, such as Zini being much more open to weird and wacky engine features being added post-1.0 or exposing so many extra functions to scripts that something link this becomes feasible to create via a regular mod as long as the engine has a more basic VR implementation built-in or even that no one with the desire, ability and time to create such a thing exists, so no such mods were ever going to be made anyway. I don't know if a less contrived example mod can be thought up. Without non-contrived examples, Zini's vision is probably fine.
Last edited by AnyOldName3 on 05 Apr 2018, 20:59, edited 1 time in total.
AnyOldName3, Master of Shadows

fraang
Posts: 12
Joined: 26 Apr 2013, 13:48

Re: Post 1.0 Planning Update

Post by fraang » 05 Apr 2018, 20:58

Jad wrote:
05 Apr 2018, 19:02
Is there anyone out there who actually likes MWScript?
MWScript was so bad mainly because the compiler (from the original CS) sucks and doesn't tell you about some errors. Also it placed unnecessary limits on how you structure yout code. See https://wiki.openmw.org/index.php?title ... #Scripting for more info on that. The way how scripts are called is tied tightly to the engine and can't be changed so simply.
Jad wrote:
05 Apr 2018, 19:02
Does it have *any* redeemable features?
What features do you mean?
Jad wrote:
05 Apr 2018, 19:02
Moving to a "real" scripting language ala LUA seems like a no-brainer.
What is a "real" scripting language to you?
Jad wrote:
05 Apr 2018, 19:02
modders from other games are more inclined to join in due to transferable knowledge, you get to bypass all the troubles of designing a new language from basically scratch
Most of the time a new language is mostly a new syntax to express stuff. Except when you change the paradigm (e.g. imperative to functional) which is probably not the case for OpenMW scripting. The only thing that really needs an improvement is the runtime environment which gives you access to the game state like game time and date, character attributes, etc. This part is going to be extended post 1.0 if I untderstood the OpenMW devs correctly. See more infos here: viewtopic.php?f=3&t=4720&hilit=mwse#p50663

Jad
Posts: 5
Joined: 18 Nov 2015, 20:22

Re: Post 1.0 Planning Update

Post by Jad » 05 Apr 2018, 21:15

fraang wrote:
05 Apr 2018, 20:58
MWScript was so bad mainly because the compiler (from the original CS) sucks and doesn't tell you about some errors. Also it placed unnecessary limits on how you structure yout code. See https://wiki.openmw.org/index.php?title ... #Scripting for more info on that. The way how scripts are called is tied tightly to the engine and can't be changed so simply.

What features do you mean?
Simple features, like the ability to define your own functions or classes. Support for strings, arrays, hashes, or any kind of data structure. Conveniences like for-loops, logical operators, or even a minimal standard library. The ability to target and manipulate world instances. Not having to always do state machine mental gymnastics because *every script is running every frame, constantly*.

I've spent more time in MWScript than most and damn near every moment of it was/is painful. To make it into something decent will be an absurd amount of work. Seems a waste, especially when there are ready-to-go alternatives that are already being used in other parts of the community (TESMP/MWSE).
Last edited by Jad on 05 Apr 2018, 21:18, edited 1 time in total.

JDGBOLT
Posts: 21
Joined: 05 Apr 2018, 19:52

Re: Post 1.0 Planning Update

Post by JDGBOLT » 05 Apr 2018, 21:16

For me personally what would be a "real" scripting language would be something that allows functions with parameters, at the very least. Classes can also be good for being able to structure code in an intelligible way. When I was modding I lost count of how many times I wanted functions and parameter passing, and potentially other variable types as well. I made vehicles like mounted creatures or boats in vanilla morrowind, and the hoops necessary to get that to work was painful. Had to have like 30-40 globals or something to be able to handle all of the variable passing between multiple scripts and it was a bit of a nightmare logistically to get things to work. Also having to work around quirks of the engine to get the game not to crash while executing this code was quite the feat. If you try to do anything complicated in the vanilla scripting system it quickly becomes a mess of spaghetti code, not just in terms of functions but just the structure of it, as it was very limited in what it was capable of. The fact that it worked at all is a bit of a miracle, as the vanilla scripting system just wasn't designed to do what I was trying to do with it.

User avatar
lysol
Posts: 1277
Joined: 26 Mar 2013, 01:48
Location: Sweden

Re: Post 1.0 Planning Update

Post by lysol » 05 Apr 2018, 21:19

Ok, so if implementing a scripting language like Lua was agreed upon, the debate would of course be weather if it would be sandboxed or not.

After thinking a bit about this, having a non-sandboxed scripting would actually require you to run openmw.exe as admin on windows and type in root access password when launching in linux right? Well this would be plain stupid and feel like running windows 98 again IMO. If I wanted to run a game and it by default asked me to give it admin rights, I would get really suspicious. Unless it was something made for windows xp.

But maybe that's just me...

Having a sandboxed lua would make total sense to me however, especially if it was done combined with an extended mwscript language.
Normal mapped texture replacers, exclusive for OpenMW:
My Nexus page

User avatar
AnyOldName3
Posts: 1453
Joined: 26 Nov 2015, 03:25

Re: Post 1.0 Planning Update

Post by AnyOldName3 » 05 Apr 2018, 21:39

If you wanted to make an OpenMW mod that updated your graphics drivers if they were out of date, then you'd obviously have to run the whole engine as Admin/root, but if you weren't doing anything silly, then you'd just run it normally with normal permissions and it would work. If you had it running with normal permissions and tried to do something that required elevated permissions, the OS would tell you that it couldn't let you do that, Dave, and then terminate the process.

There'd still be the OS-level permissions control type sandboxing (unless a user intentionally ran the engine with elevated permissions) even if there wasn't an added sandbox on top of it in the engine.
AnyOldName3, Master of Shadows

User avatar
lysol
Posts: 1277
Joined: 26 Mar 2013, 01:48
Location: Sweden

Re: Post 1.0 Planning Update

Post by lysol » 05 Apr 2018, 21:44

Right. I'll let you guys continue the debate then.
Normal mapped texture replacers, exclusive for OpenMW:
My Nexus page

MikeMXellers
Posts: 22
Joined: 30 Aug 2014, 13:19

Re: Post 1.0 Planning Update

Post by MikeMXellers » 05 Apr 2018, 22:21

I'm interested in hearing what Scrawl has to say about this.

NullCascade
Posts: 120
Joined: 16 Jan 2012, 07:58

Re: Post 1.0 Planning Update

Post by NullCascade » 05 Apr 2018, 22:34

Zini wrote:
05 Apr 2018, 19:32
NullCascade wrote:
05 Apr 2018, 17:52
With things like Sky Diversity, Discord Rich Presence, and Fliggerty's C&E mod, what is a modder to do? Try to convince you to add imagemagick bindings? Bundle the Discord API? Expose networking functions? I don't see you approving any of those things
I can see most of these things going into OpenMW in one way or another.
How, exactly? How does Fliggerty's C&E or Discord RPC work on OpenMW without core engine forks or support/bloat added to the engine? The only way would be to let people connect to those APIs. And, you connect to those API through native code.
Last edited by NullCascade on 05 Apr 2018, 22:44, edited 2 times in total.
MWSE 2.x lead.

User avatar
Zini
Posts: 5536
Joined: 06 Aug 2011, 15:16

Re: Post 1.0 Planning Update

Post by Zini » 05 Apr 2018, 22:40

I would have to look into each of these features individually to answer that. There may be some room for further abstraction. Or not. Needs more research (and not a priority right now).

Unless there is a license problem with a third party API, of course (also needs to be looked at). But this point is independent of the implementation path anyway.

Post Reply