OpenMW support for other games: Oblivion, Skyrim, Fallout and more

Feedback on past, current, and future development.
Chris
Posts: 1625
Joined: 04 Sep 2011, 08:33

Re: Elder-scrolls IV Oblivion

Post by Chris »

I would avoid .NET/Mono/C# like the plague. I'd use either a proper programming language or a proper scripting language, rather than a Java-wannabe.
User avatar
psi29a
Posts: 5355
Joined: 29 Sep 2011, 10:13
Location: Belgium
Gitlab profile: https://gitlab.com/psi29a/
Contact:

Re: Elder-scrolls IV Oblivion

Post by psi29a »

Chris wrote: 04 Sep 2017, 16:11 I would avoid .NET/Mono/C# like the plague. I'd use either a proper programming language or a proper scripting language, rather than a Java-wannabe.
I couldn't agree more, but I also give the benefit of the doubt and leave the door open for an explanation as to why Mono would be a better language to use aside from that one is more familiar with it than with other languages.
User avatar
Deltaxus
Posts: 39
Joined: 12 Aug 2017, 17:43

Re: Elder-scrolls IV Oblivion

Post by Deltaxus »

Writing it once is prototype code, to get you to from A to B... once you understand what is going on, then you can re-write it properly.

I think at this point in 'the game', it is the rapid development of features and gaining knowledge to do it right later.
As psi29a stated, the work would be building a foundation for later. For changes to the master now, improvements to OpenMW-CS would be the way to go. I don't know if it is possible but improvements to MWScript that don't break the 1.0 plan? See the thread, Delay 1.0 untill all of MWSE is implemented.
MWScript seems to simply execute the opcodes generated by the compiler, this part cannot be generated by Bison.
It is however possible to write the lexer and grammar definitions for morrowind, oblivion and skyrim scripting languages.
As I see it, all of those languages are context free, which enables us to generate fast LALR(1) parsers.
So Bison takes in a file for the lexical definitions and generates a tokenizer (either pure C or C++).
Then the formal grammar is specified by a BNF and again, with the tokenizer Bison generates a LALR(1) parser in
either C or C++. Those can be used either by the construction kits, or to compile a script on the fly. It does not introduce any further dependencies other than the std library functions. It can also be quickly extended in the future.
User avatar
psi29a
Posts: 5355
Joined: 29 Sep 2011, 10:13
Location: Belgium
Gitlab profile: https://gitlab.com/psi29a/
Contact:

Re: Elder-scrolls IV Oblivion

Post by psi29a »

I'm familiar with Bison, I was just saying that you shouldn't be thrown off by: "save it for post 1.0". If you want to do it, go ahead.

This is in several topics now, if you see something you want to work on... just do it! Don't let people tell you otherwise. No one should tell you what to do unless you ask: "what can I do to help". For those people, 1.0 is still the target. Getting us there is the goal. Some people are not interested in that, and that is OK! Go do cool stuff with OpenMW!

Message to the rest who are not Zini or Scrawl: Please stop telling people what they can't or should be doing. You're not helping.
User avatar
AnyOldName3
Posts: 2666
Joined: 26 Nov 2015, 03:25

Re: Elder-scrolls IV Oblivion

Post by AnyOldName3 »

I was aware my idea would probably be controversial. My fondness for .NET/Mono is because:
  • The .NET CLI defines a very comprehensive way for different languages to talk to each other
  • Mono gives us a single thing to hook OpenMW up with to get immediate support for a zillion languages (https://en.wikipedia.org/wiki/List_of_CLI_languages) Note: Mod/game creators may have to include compiled .NET bytecode in their OMWAddon files if we don't want to rely on a zillion different other projects.
  • .NET gives us an easier job when implementing Oblivion's scripting language and Papyrus as it should be easier to write a compiler to .NET bytecode that calls OpenMW native functions than writing a whole interpreter or JIT.
As for Chris calling C# a Java wannabe, has he seen a comparison of the two languages done in the last twelve years or so? (Maybe a slight exaggeration.) C# gets rid of a lot of the problems with Java, and Java has been a wannabe C# for quite a while now.

As for why we'd ever want mods to create scripts in a full on language as opposed to a more barebones scripting one, it hopefully means mods can be made that would otherwise require a fork of OpenMW to be made. This allows users an easy way to pick and choose which major engine changes they want to use without manually having to merge sixteen forks.
Chris
Posts: 1625
Joined: 04 Sep 2011, 08:33

Re: Elder-scrolls IV Oblivion

Post by Chris »

AnyOldName3 wrote: 05 Sep 2017, 00:50 As for Chris calling C# a Java wannabe, has he seen a comparison of the two languages done in the last twelve years or so? (Maybe a slight exaggeration.) C# gets rid of a lot of the problems with Java, and Java has been a wannabe C# for quite a while now.
The comment was more about why .NET/C# exists and its intended role, rather than its relative quality. Back in the earlier years, Microsoft embraced Java with Windows. Over time they extended it with new features and capabilities, causing Sun/Oracle to take issue since Java code made for Microsoft's implementation would not work with the official Java releases. Microsoft was sued over it and made to stop (avoiding the final extinguish phase). This ultimately led Microsoft to back away from Java and design .NET as a replacement (which in turn created the C# language you write .NET code in). Eventually some parts of the .NET runtime were released under one of Microsoft's open licenses, which allowed Mono to take shape as an alternative .NET runtime.

So while .NET/C# may have improvements over Java, it was essentially created because Microsoft couldn't continue using Java as they wanted. .NET/Mono/Java are for making full programs, with runtimes offering a full range of capabilities that programs would need, which is far more than a scripting engine should have to worry about IMO.
JohnMaster
Posts: 38
Joined: 09 Aug 2017, 05:32

Re: Elder-scrolls IV Oblivion

Post by JohnMaster »

Deltaxus wrote: 04 Sep 2017, 19:43 MWScript seems to simply execute the opcodes generated by the compiler, this part cannot be generated by Bison...
Thank you very much for that detailed explanation.
psi29a wrote: 04 Sep 2017, 22:20 Message to the rest who are not Zini or Scrawl: Please stop telling people what they can't or should be doing. You're not helping.
If this was directed to me, it certainly wasn't my intent to mislead. A question was asked and I referenced Zini. It is highly beneficial to be as clear as possible in project work. The prevention of situation were someone may submit a PR that is rejected later due to it being post 1.0 without clear foreknowledge is not desirable. Also, I will never dissuade anyone from developing anything, especially, building foundational knowledge for post 1.0.
User avatar
AnyOldName3
Posts: 2666
Joined: 26 Nov 2015, 03:25

Re: Elder-scrolls IV Oblivion

Post by AnyOldName3 »

Chris wrote: 05 Sep 2017, 02:33.NET/Mono/Java are for making full programs, with runtimes offering a full range of capabilities that programs would need, which is far more than a scripting engine should have to worry about IMO.
VBA is a scripting language that runs on .NET and isn't designed for writing applications. Scripts for Unity engine games are compiled to .NET bytecode and run as that. I guess that while there's already a GPL-compatible system for efficiently running something platform-independent that could be simple or complicated, and could be generated with a variety of tools, I like the idea of using it rather than rolling our own interpreter for every language we want to use
User avatar
Br0ken
Posts: 243
Joined: 02 Apr 2012, 05:54
Location: Siberia

Re: Elder-scrolls IV Oblivion

Post by Br0ken »

What about OBSE?
I think that TES4 implementation somehow should be support it. There are a bunch of mods (~1000 on Nexus) using this script extender.
magamo
Posts: 109
Joined: 28 May 2016, 17:28

Re: Elder-scrolls IV Oblivion

Post by magamo »

I agree about OBSE personally. While MWSE is very much a niche thing, it seems as though for Oblivion most mods use OBSE (and for Skyrim a large number used SKSE, until the Special Edition)
Post Reply