Welcome to the first official beta release of SrcMod! This update adds a ton of new functionality. Unfortunately, most of it still isn't in command form. That'll be in version 0.6. But addon capability works, as far as I know.
I guess I haven't discussed addons much. I've written the shell in such a way that mounting additional modules is a piece of cake. The default runner program for the shell is like less than 10 lines of actual code. Anyone who wants to mod the shell can do so as much as they like. Command tools are in the Tools
class. Make sure to add the ModuleAttribute
and CommandAttribute
attributes! Check the Wiki for more information.
But anyways, here's a summary of stuff that was added in this update:
There's a new library that goes alongside the shell now, called Valve.NET
. It's currently just a small side library, but in the future when I deem it big enough it might get its own GitHub repository. For now, it is just a subdirectory. The goal of the Valve.NET library is to add lots of support for various Valve-related things. Currently, it doesn't have much, but is does have conversion support to a format called "Valve Key Values," or VKV for short. VKV is basically an older version of JSON, since I'm pretty confident that VKV came first. But it's not primitive in any way, with capabilities very similar to JSON. I've enabled conversion from objects to a datastream (likely a FileStream
in most general cases), as well as conversion to an intermediate format called VkvNode
s, which basically can either be a single node with a single value or a tree node with a dictionary of values.
I've used that library to add support to many things that need VKV parsing to function. The first of which is detecting information about the active mod the shell is currently in. Things like search paths and the base game is now automatically detected and applied where necessary. I've also added auto detection of Steam's game installation directories, which will be used in the future to mount the current mod directly onto supported Source games. For now though, it's just automatically added to the configuration defaults.
Now, unfortunately, I have to make the shell officially Windows-only. It's just not compatible with other operating systems because I'm using systems like the Windows Registry and some Windows DLLs for use in some commands. Maybe in the future I'll add support for other operating systems again, but .NET will no longer do that on its own, so for now, it's Windows-only.
Some additional small things have changed, of course, so check the changelog for everything (that matters).
Speaking of which, here's the changelog:
Changelog
- Created a side library that manages Valve related objects.
- Created a representation of Valve Key Value objects (VKV) as a node tree.
- Added conversions to and from a VKV node tree and a dynamic object.
- Added serialization and deserialization from a VKV node tree to a datastream.
- The shell now automatically detects the active source mod based on the working directory. It looks for a
GameInfo.txt
file. - The shell now deserializes the
GameInfo.txt
file present in all source mods into mod information the shell can use. - Officially made SrcMod a Windows-only application (some systems used by SrcMod are only included on Windows devices).
- The shell now automatically detects the user's Steam install location.
- The shell now deserializes the list of Steam game install directories and adds them to the configuration defaults.
- The shell will now display directories relative to the active mod located. This is a configurable variable.
- Slightly changed the shell header.
See you in the next release!