> “.. to ensure seamless integration with C#-based game engines.”
Which game engines do they probably have in mind?
The author has several other repos that are libraries for unity, so probably that, but it's just a VM so it could be any of them.
Stride is the only C# implemented engine I'm aware of, but I'm sure there are others.
At least all of these,
https://dotnet.microsoft.com/en-us/apps/games/engines
And Capcom's own fork, used on Devil May Cry for the PlayStation 5.
"RE:2023 C# 8.0 / .NET Support for Game Code, and the Future"
https://www.youtube.com/watch?v=tDUY90yIC7U
It took a while since Arena Wars was published in 2004, but eventually it took off.
All the big engines have C# scripting, so a scripting language for your scripting language?
I wouldn't really classify C# as a scripting language even if some of those engines say it is. The main criteria (IMO) of a scripting language is to be easily embeddable and C# is not.
Whether you classify C# as a scripting language isn't really important though. In Unity and other engines C# is the 'language you write game scripts with', which has nothing to do with whether C# falls into the woefully vague and borderline useless category of "scripting language".
$CSharpCode = @"
using System;
public class HelloWorld
{
public static void SayHello()
{
Console.WriteLine("Hello, World!");
}
}
"@
Add-Type -TypeDefinition $CSharpCode -Language CSharp
[HelloWorld]::SayHello()
There's your scriptable-in-PowerShell C# ;-) Even better, C# has top-level methods, no classes needed:
https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals...
I agree with you but maybe for different reasons. (Depends on how you defined embeddable I suppose). The primary purpose of a scripting language for gamedev is for mod support. If end users can't open the scripts up in notepad, play around and have them change the game, you're adding friction to this.
That’s never been a blocker for game modding.
- Worms: required a CLI tool to convert SFX
- Doom: WAD files were pkzip format
- Duke3D: came with its own level editor
- Jazz Jack Rabbit 2: also came with its own level editor
- Grand Theft Auto: massive modding community for the original game on PC via unofficial 3rd party hacks
- Minecraft, Roblox, Mario Maker, etc: all have massive communities of user generated content and none of that has been created via notepad.exe.
It would be harder to come up with examples, either modern or retro, where plain text files were the preferred method for modding.
> - Doom: WAD files were pkzip format
> - Duke3D: came with its own level editor
Add ioquake3 forks to it (there are many), such as Tremulous (massively modded, initially came from Quake 3), Urban Terror, Unvanquished (development is very active), etc.
(Tremulous mappers use NetRadiant.)
Anyways, you are absolutely right, although maybe I am just a boomer by now. I was 14 years old (along with many other players and modders) when I started modding Tremulous. I wish Tremulous was still active, but it is not. :( I still keep in touch with players from >15 years ago.
Pretty much all of Id Softwares FPS were pkzip wad files — or at least all of them up to Return To Castle Wolfenstine. After that point I had too many commitments to invest much time into modding so couldn’t say how they were built.
I seem to recall reading that their choice of wad architecture was intentionally to enable the modding community too.
"DPK format extends the legacy PK3 format with dependency mechanism and versioning", for example: https://wiki.unvanquished.net/wiki/Formats/DPK
BUT: "The archive format uses the PKZIP container (the well-known zip format) with a .dpk extension.".
Urban Terror. That's a game I haven't heard about in a long time. It must've been somewhere between 1998-2002 I played it. Damn, we even had a clan, and I played it on my Linux PC.
Does it still exist? If so, I probably get instantly killed if I dare to join any of the public servers...
Apparently it is still under development: https://www.urbanterror.info/news/blogs/ (last post is from 11 days ago).
There are players, too: "Online: 208 servers with 109 players" at this time.[1]
Fun times for sure! Bomb was my favorite game type. :)
I think for the purposes of a third-party system, the ease of embedding is pretty much a question of whether or not it’s already embedded.
I mean, Unity and Godot used to embed Mono... And C# is used as a scripting language for both, in the sense that the user uses C# to call engine functions (dunno about all of Unity's internals but Godot is written entirely in C++) to script gameplay behaviour. It doesn't matter what you classify C# as because they use it for scripting.
Unreal has C# scripting? I've only seen it having blueprints and C++
The author mentioned Unity in the README, but every other game engine I know requires NativeAOT support. I hope it doesn't run into the limitations of NativeAOT otherwise it's just Unity-only.
Even Unity games compile AOT via IL2CPP. It's optional on PC/macOS but required for most other platforms. The only real reason games may not build with it enabled is if they want to allow modding via IL decompilation.
Wow, if I am understand this right, this relies on the bytecode outputted by MRuby. So it's not yet another Ruby implementation in that sense. What a fun project!