f22f252aac
* Decrease overall font size * Fix improper line height calculation at low font size in Typeface * Do not word-wrap in TextWidget unless the text element has printable text. * Merge whitespace text elements together in TextWidget * Remove DynamicFont and FontStashSharp support * Mark DynamicFont as obsolete and remove all API needed to load it * Improve legibility of smaller font sizes * Fix underlines in TextWidget * Don't use system culture for in-game time strings on desktop * Fix some whitespace chars being treated as unknown glyphs * Fix improper line height measurement in Typeface.MeasureString * Use FreeType for icon rendering * Allow independent atlases for different font sizes, improves overall legibility * Add experimental FreeType-based text rendering * Add support for popover theming * Add support for popovers on any widget. * Add support for GUI layers * Fix crash when opening apps * Replace Material icons with Lucide icons * Fix various chromatic aberration typoes * Add support for workspace switching * Don't render scroll view children if their visual rectangle is out of bounds * Allow parent widgets to decide whether a given child gets to render onto the screen * Add support for window minimizing * Fix over-measuring of font sizes in DynamicFont * Use new applet system for Status Bar user display * Add support for launcher applets * Add support for status applets on both Dock and Status Bar * Remove ToolManager * Allow windows to be maximized by double-clicking the title area * Add minimum sizes to Chat and Email * Add support for dirty rendering in background blurs * Remove all tile-based tools in favour of floating windows * Move Dock to bottom of screen and Info Panel to an overlay * Adjust bloom to better-suit the game * Fix background blurs using incorrect UVs * Add support for chromatic abberation * Add support for bloom * Fix various blur shader issues and adjust for performance * Use Dual Kawasse blur technique in place of Gaussian Blur for more intense-looking, less intense-fucking blurs * Add basic debug overlay on F3 key |
||
---|---|---|
.config | ||
Assets | ||
docs | ||
src | ||
vendor | ||
.gitignore | ||
.gitlab-ci.yml | ||
career-gitmodules | ||
CONTRIBUTING.md | ||
docfx.json | ||
index.md | ||
LICENSE | ||
mgfxc-wine-setup.sh | ||
nuget.config | ||
README.md | ||
toc.yml |
Socially Distant
Socially Distant is an up-coming hacking game following the story of a global ransomware attack disrupting a society forced into cyberspace by the spread of a deadly biological threat to humanity.
Ritchie's Toolbox
This game is made using Ritchie's Toolbox, a defacto custom game engine built on top of a fork of MonoGame. We do not directly use the MonoGame Content Pipeline, instead we use AutoPipeline and some custom MSBuild targets to build the game's content. Most of the time, you shouldn't notice - but if you are adding content to the game, you should never directly interact with or commit the Content.mgcb
file as it'll be wiped and overwritten by AutoPipeline.
Building from source
Building Socially Distant from source is moderately simple.
Pre-requisites
On all platforms, you should have the .NET 8 SDK and Steam installed.
You will need to add a NuGet package source for our MonoGame fork, otherwise dotnet
will not download the correct version of MonoGame.
dotnet nuget add source -n monogame-socially-distant https://gitlab.acidiclight.dev/api/v4/projects/13/packages/nuget/index.json
You will need to add the source once for every device you build the game on. You can find the source code for our custom MonoGame fork over on its GitLab group.
⚠️ Shaders on non-Windows platforms
If you aren't building the game on Windows, you will run into build errors during shader compilation. This is because MonoGame currently uses the Direct3D shader compiler for initial shader compilation before transpiling to the target platform. Linux users will need to install Wine and run the
mgfxc-wine-setup.sh
script in the root of the repository, this will set up a Wine prefix with the necessary setup for shader compilation. For macOS users running Apple Silicon, you're on your own.
How to build
- Clone this repo, or fork and clone that.
- Open the solution file at
src/sociallydistant.sln
in your .NET IDE - Build and run the
SociallyDistant
project.
Depending on your IDE/setup, you may need to run:
dotnet tool restore
in the repo root, and
dotnet restore
in the src
directory. The first command installs any missing local .NET tools, and the second restores NuGet packages.
We're accepting contributions!
Feel free to submit merge requests to the game. If merged, they will be shipped in the next Steam release of Socially Distant. For more info, see the CONTRIBUTING.md
and LICENSE
files in the repo root.
*️⃣ **Note
By contributing to the game, you agree to the Developer Certificate of Origin. You acknowledge that you own or otherwise have the permission to submit your contribution under the same license as the game's source code. To acknowledge the DCO, all commits must be signed off.
Project structure
Source code
All the important code lives under src/
. In there, you will find:
SociallyDistant
: This is the main game application.SociallyDistant.Framework
: This is the Socially Distant runtime, a library that the game itself and all mods must reference.AcidicGUI
: This is the game's UI system, and the small part of Ritchie's Toolbox that actually exists despite not properly being named. This is subject to be moved to its own repo in the future.
Third-party stuff
Some MonoGame extensions, such as IMGUI, are compiled from source as part of the game build. These are all found under the vendor
folder.
Game assets
All game assets are (and must be) placed in src/SociallyDistant/Content
. This directory is managed by AutoPipeline and some custom MSBuild tasks.
Continuous integration
Currently, CI/CD is set up for the Windows and Linux versions of the game. Windows builds are done on AppVeyor, while Linux builds are built locally on Ritchie's workstation.