S&box: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(→‎Programming: Corrected script kiddie misinformation and revised section)
Line 80: Line 80:


== Programming ==
== Programming ==
S&box user content is programmed with C#, Microsoft's managed, object-oriented programming language of [https://en.wikipedia.org/wiki/.NET_Framework .NET] fame. S&box includes an API which provides bindings to the underlying Source 2 engine and to Facepunch's middleware. All code in user content is distributed in source form, which S&box later compiles on-demand with [https://en.wikipedia.org/wiki/Roslyn_(compiler) Roslyn]. Language support is at least C# 5.0, since the s&box wiki instructs the use of [https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.task?view=netframework-4.5 Tasks] and [https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/task-asynchronous-programming-model asynchronous methods]. Only a specific subset of the baseline .NET or .NET Core complement is available for use.
S&box user content is programmed with C#, Microsoft's managed, object-oriented programming language of [https://en.wikipedia.org/wiki/.NET_Framework .NET] fame. S&box includes an API which provides bindings to the underlying Source 2 engine and to Facepunch's middleware. All code in user content is distributed in source form, which S&box later compiles on-demand with [https://en.wikipedia.org/wiki/Roslyn_(compiler) Roslyn]. Language support is at least C# 5.0, since the s&box wiki instructs the use of [https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.task?view=netframework-4.5 Tasks] with [https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/task-asynchronous-programming-model asynchronous methods]. Only a specific subset of the baseline .NET or .NET Core complement is available for use.


Security is a primary concern with user content. C# and its ubiquitous pairing with .NET is a software ecosystem many magnitudes larger, more complex, and more powerful than s&box or Source 2. Awarding unchecked access to this leviathan would effectively turn user content into fully-fledged applications with potentially unlimited access to the host computer. To this end, '''s&box restricts the use of certain types and namespaces.''' For example, access to the local file system is only available through a [https://wiki.facepunch.com/sbox/FileSystem sanctioned abstraction layer]; <code>System.IO.File</code> and similar types may '''not''' be used. This practice is common among applications which attempt to distill down .NET into a limited "scripting" platform for untrusted user code.
Security is a primary concern with user content. C# and its ubiquitous pairing with .NET is a software ecosystem many magnitudes larger, more complex, and more powerful than s&box or Source 2. Awarding unchecked access to this leviathan would effectively turn user content into fully-fledged applications with potentially unlimited access to the host computer. To this end, '''s&box restricts the use of certain types and namespaces.''' For example, access to the local file system is only available through a [https://wiki.facepunch.com/sbox/FileSystem sanctioned abstraction layer]; <code>System.IO.File</code> and similar types may '''not''' be used. This practice is common among applications which attempt to distill down .NET into a limited "scripting" platform for untrusted user code.

Revision as of 08:26, 3 September 2022

English (en)Français (fr)Русский (ru)中文 (zh)Translate (Translate)

Garry's Mod Garry's ModS&box S&box

Stub

This article or section is a stub. You can help by expanding it.


File:Sbox-Logo-5may2022.png
S&box logo dated May 5, 2022

S&box S&box is a platform and game development toolkit developed by Facepunch studio powered by Source 2 Source 2. Initially, the development was based on Unreal Engine 4, but as soon as Half-Life: Alyx Half-Life: Alyx came out, Facepunch immediately requested the engine branch of the newly-published game. A few weeks later Valve gave Facepunch access to the terabyte large repository, after which, in 2020, S&box's transition to Source 2 Source 2 was announced. This is the first (and currently only) time that Source 2 was licensed to third-party developers.

Template:ModernNote

User Access

S&box is currently in closed developer testing, as of May 5, 2022, the automated queue has been shut down indefinitely due to the termination of the test recruitment in December 2021.

Previously, access was available from the addon developers page, which now takes care of redirecting users to the Asset.Party home page.

Release Date

An exact release date is unknown, but Facepunch plans to release S&box around 2023, according to a post on the project’s description page: “Our plan is to get to a releasable state over the next 6–12 months, then improve it over 10–20 years.”

The approximate dates for the completion of primary work were first announced by Garry Newman on February 19, 2022, on the official S&box Discord server:

Message from Garry Newman

Addons

S&box currently supports 4 types of add-ons: Template:MdQuote

Template:ModernNote

Maps

File:Sbox-Hammer-26july2022.png
Hammer Dated July 26th 2022

Mappers are provided with a modified version of the Source 2 Hammer map editor, with some parts exposed for C# scripting for increased flexibility.

Addon control panel

In the addons menu in the dev tools, you can restrict map selection for your game mode. You can limit it to specific curated maps or maps tagged with supporting the game mode.

Publication

Currently, maps cannot be launched directly from the game mode, so they have to be released as a separate addon (one for each map). The map is published by clicking on a special button in the addons menu in the developer toolkit.

Characteristics
Available territory
Unlimited for models, but 32768 units (624.23 m / 2048 ft) for meshes
Visibility
The player currently sees approximately 78740 units (2 km / 6561,68 ft) in front of him

Template:ModernWarning

Template:ModernWarning

Template:ModernWarning

Shaders

S&box supports HLSL Shader Model 3.0, 4.0 and 5.0. You can create your own shaders and customize their interface for the material editor.

Template:ModernNote

Sounds

Future Node Graph Editor

Currently, the sounds are arranged in an extremely primitive way due to the content associated with them cut from the engine.

An analog of Steam Audio using C# is currently being developed. In addition, a convenient sound editor based on graph nodes is being developed.

Programming

S&box user content is programmed with C#, Microsoft's managed, object-oriented programming language of .NET fame. S&box includes an API which provides bindings to the underlying Source 2 engine and to Facepunch's middleware. All code in user content is distributed in source form, which S&box later compiles on-demand with Roslyn. Language support is at least C# 5.0, since the s&box wiki instructs the use of Tasks with asynchronous methods. Only a specific subset of the baseline .NET or .NET Core complement is available for use.

Security is a primary concern with user content. C# and its ubiquitous pairing with .NET is a software ecosystem many magnitudes larger, more complex, and more powerful than s&box or Source 2. Awarding unchecked access to this leviathan would effectively turn user content into fully-fledged applications with potentially unlimited access to the host computer. To this end, s&box restricts the use of certain types and namespaces. For example, access to the local file system is only available through a sanctioned abstraction layer; System.IO.File and similar types may not be used. This practice is common among applications which attempt to distill down .NET into a limited "scripting" platform for untrusted user code.

Currently, the C# API and tools are in a preview stage of development. Breaking changes happen often and the API is not yet complete.

Todo: 
  • Confirm exact C# language version support.
  • Confirm exact subset of available .NET or .NET Core components.
  • Investigate if S&box requires a .NET or .NET Core runtime to be installed or if it bundles its own.
  • Investigate if S&box uses Mono in any capacity.

There are many similarities between the use of C# in S&box and the use of the more primitive Lua language in Template:Game name. Many concepts of Gmod's Lua environment have been carried over, including limited access the language's features and "hot reloading" of edited code.

Gallery

External Links

For Developers
Other