OpenMW support for other games: Oblivion, Skyrim, Fallout and more
Re: Elder-scrolls IV Oblivion
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.
- psi29a
- Posts: 5361
- Joined: 29 Sep 2011, 10:13
- Location: Belgium
- Gitlab profile: https://gitlab.com/psi29a/
- Contact:
Re: Elder-scrolls IV Oblivion
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.
Re: Elder-scrolls IV Oblivion
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.
MWScript seems to simply execute the opcodes generated by the compiler, this part cannot be generated by Bison.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.
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.
- psi29a
- Posts: 5361
- Joined: 29 Sep 2011, 10:13
- Location: Belgium
- Gitlab profile: https://gitlab.com/psi29a/
- Contact:
Re: Elder-scrolls IV Oblivion
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.
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.
- AnyOldName3
- Posts: 2673
- Joined: 26 Nov 2015, 03:25
Re: Elder-scrolls IV Oblivion
I was aware my idea would probably be controversial. My fondness for .NET/Mono is because:
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.
- 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 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.
Re: Elder-scrolls IV Oblivion
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.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.
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.
-
- Posts: 38
- Joined: 09 Aug 2017, 05:32
Re: Elder-scrolls IV Oblivion
Thank you very much for that detailed explanation.
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.
- AnyOldName3
- Posts: 2673
- Joined: 26 Nov 2015, 03:25
Re: Elder-scrolls IV Oblivion
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
Re: Elder-scrolls IV Oblivion
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.
I think that TES4 implementation somehow should be support it. There are a bunch of mods (~1000 on Nexus) using this script extender.
Re: Elder-scrolls IV Oblivion
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)