Up-coming narrative hacking game for PC coming to Steam.
Find a file
Ritchie Frodomar 79d5f00e99 New UI Visual Style System
* Move visual style types to their own files

* Use new visual style system for chat completion list

* Use new visual style system for window decorations

* Use new visual style system for chat message bubbles

* Add support for running actions inside GUI debugger

* Completely rewrite the UI debugger

* Fix scrollbars not rendering

* Argh. Blur is messed up in a way I can't describe.

* Minimize draw call overhead of widgets

* Don't use the same vertex and index buffer over and over again when rendering UI meshes. Create and cache buffers for each widget instead.

* Use actual blitting techniques when possible in IVirtualScreen.Blit

* Squeeze some extra performance out of the blur shader

* Optimize background blurs by only blurring the area under the widget

* Add support for region-to-region grabbing of the virtual screen

* Various widget property cache fixes

* Use new visual style system for window tabs

* Add support for dynamic text color in new style system

* Allow background blur darkening

* Optimize window dragging

* Use new visual style system for blur panels

* Use new visual style system for form fields

* Render input field caret in SociallyDistantVisualStyle

* Fix message dialog buttons calling their callbacks multiple times

* Use new visual style system for input fields

* Use new visual style for list items

* Use new visual style system for Dock

* Use new visual style system for the Status Bar

* Use new visual style system for decorative blocks

* Use new visual style system for toggles

* Use new visual style system for buttons and move buttons into AcidicGUI

* Add support for animated scrollbars

* Add support for click scrolling in ScrollBar

* Avoid layout updates when scrolling in a ScrollView

* Fix scrollbar not disappearing in scroll views that do not have enough content to scroll

* Add suppport for basic drag scrolling in ScrollView

* Add support for starting a drag and drop session from a MouseDown event

* Fix dropdowns not laying out their items properly after switch to new visual style system

* Fix handling of focus events when a mouse event results in a widget being created

* Consume all scroll events when a dropdown is open

* Use new visual style system for dropdown item backgrounds

* Use new visual style system for rendering all widget backgrounds

* Skip rendering widgets whose computed render opacity is zero, including rendering any of their children.

* Use new visual style system for dropdown item backgrounds

* Add support for drawing default widget backgrounds with the BackgroundStyle property

Signed-off-by: Ritchie Frodomar <alkalinethunder@gmail.com>

* Use new visual style system for scroll bars

Signed-off-by: Ritchie Frodomar <alkalinethunder@gmail.com>

* Split Scroll View and Scroll Bar into separate widgets

* Use new visual style system for Sliders

* Re-add support for mouse scrolling in Terminal
2024-11-03 19:15:27 +00:00
.config Fix various platform issues and slightly improve UI 2024-10-28 03:17:01 +00:00
Assets Fix various platform issues and slightly improve UI 2024-10-28 03:17:01 +00:00
docs Fix even more platform-related issues 2024-10-29 19:32:18 +00:00
src New UI Visual Style System 2024-11-03 19:15:27 +00:00
vendor New UI Visual Style System 2024-11-03 19:15:27 +00:00
.gitignore Fix various platform issues and slightly improve UI 2024-10-28 03:17:01 +00:00
.gitlab-ci.yml Fix various platform issues and slightly improve UI 2024-10-28 03:17:01 +00:00
career-gitmodules Rename Career submodule list so users don't accidentally try to clone it when not permitted. 2024-10-20 20:27:59 -04:00
CONTRIBUTING.md Fix various platform issues and slightly improve UI 2024-10-28 03:17:01 +00:00
docfx.json Add xml sitemap for documentation site 2024-10-19 14:32:37 -04:00
index.md Add getting started documentation 2024-10-20 00:09:36 -04:00
LICENSE Fix various platform issues and slightly improve UI 2024-10-28 03:17:01 +00:00
mgfxc-wine-setup.sh Fix various platform issues and slightly improve UI 2024-10-28 03:17:01 +00:00
nuget.config Remove need for manually adding NuGet feeds 2024-10-23 16:21:50 -04:00
README.md Fix various platform issues and slightly improve UI 2024-10-28 03:17:01 +00:00
toc.yml Add docfx for documentation generation 2024-10-18 23:17:58 -04:00

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

  1. Clone this repo, or fork and clone that.
  2. Open the solution file at src/sociallydistant.sln in your .NET IDE
  3. 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.