89
28
evolve2k 3 days ago

> “.. to ensure seamless integration with C#-based game engines.”

Which game engines do they probably have in mind?

unclad5968 3 days ago

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.

pjmlp 2 days ago

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.

https://en.wikipedia.org/wiki/Arena_Wars

dismalaf 3 days ago

All the big engines have C# scripting, so a scripting language for your scripting language?

Rohansi 3 days ago

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.

MindSpunk 3 days ago

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".

p_ing 3 days ago

    $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# ;-)

lIl-IIIl 2 days ago

Even better, C# has top-level methods, no classes needed:

https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals...

p_ing 2 days ago

Does that run under Windows PowerShell, or just PowerShell [core]?

MrLeap 3 days ago

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.

hnlmorg 2 days ago

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.

MrLeap 19 hours ago

Didn't say it blocked it, just said it added friction.

johnisgood 2 days ago

> - 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.

hnlmorg 2 days 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.

johnisgood 2 days ago

"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.".

pimeys 2 days ago

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...

johnisgood 2 days ago

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. :)

[1] https://www.urbanterror.info/servers/home/

moomin 2 days ago

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.

dismalaf 2 days ago

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.

voidUpdate 2 days ago

Unreal has C# scripting? I've only seen it having blueprints and C++

dismalaf 2 days ago

There's 3rd party C# scripting plugins for Unreal.

jayd16 3 days ago

More like IL as the, well ... intermediate language.

mastax 3 days ago

Unity, surely.

trevorhinesley 3 days ago

And Godot

ROFISH 3 days ago

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.

Rohansi 3 days ago

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.

hokumguru 3 days ago

Monogame is still huge with indies too AFAIK

Alifatisk 2 days ago

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!