This document is a repository-wide map intended to help contributors find the right project, folder, and file before making changes.
The repository has three main desktop applications:
- SIGame — game client and host UI
- SIQuester — package editor
- SImulator — presentation/offline simulator
These applications are built on shared libraries:
- SICore — high-level game runtime, orchestration, and messaging
- SIEngine — package-level game engine
- SIEngine.Core — question-level state machine
- SIPackages — package model and SIQ persistence
- SIUI and related UI libraries — reusable UI pieces
src/Common— shared librariessrc/SICore— runtime game/session core and networkingsrc/SIGame— desktop game application and view modelssrc/SIQuester— editor application and view modelssrc/SImulator— simulator application and view modelstest— test projectsassets— schemas and package-format assetstools— build/publish scriptsweb— web-related assets and projects
The runtime stack is layered roughly like this:
- SIPackages reads and writes SIQ packages.
- SIEngine.Core plays a single question as a state machine.
- SIEngine plays a full package/round/question sequence.
- SICore wraps engine behavior with players, showman, viewers, network messaging, timers, and session rules.
- SIGame and SImulator provide application/UI layers.
Application startup:
src/SIGame/SIGame/App.xaml.cs
Desktop application composition:
- host and service configuration are created in
App.xaml.cs services.AddSIGame()is called fromsrc/SIGame/SIGame.ViewModel/ServiceCollectionExtensions.cs- the desktop shell uses
src/SIGame/SIGame.ViewModel/ViewModel/MainViewModel.cs
Typical UI/view model hotspots:
src/SIGame/SIGame.ViewModel/ViewModel/MainViewModel.cssrc/SIGame/SIGame.ViewModel/ViewModel/GameViewModel.cssrc/SIGame/SIGame.ViewModel/ViewModel/GameSettingsViewModel.cssrc/SIGame/SIGame.ViewModel/ViewModel/Logic/ViewerHumanLogic.cs
Application startup:
src/SIQuester/SIQuester/App.xaml.cs
Editor shell and workspaces:
src/SIQuester/SIQuester.ViewModel/Workspaces/MainViewModel.cssrc/SIQuester/SIQuester.ViewModel/Workspaces/QDocument.cs
Typical editor hotspots:
- document editing and package manipulation in
QDocument.cs - import workflows in
Workspaces/Import*.cs - item-level editors in
Items/*
Application startup:
src/SImulator/SImulator/App.xaml.cs
Shell and main orchestration:
src/SImulator/SImulator/View/CommandWindow.xaml.csis not present; the window code-behind issrc/SImulator/SImulator/CommandWindow.xaml.cssrc/SImulator/SImulator.ViewModel/ViewModel/MainViewModel.cssrc/SImulator/SImulator.ViewModel/ViewModel/GameViewModel.cs
Controller layer:
src/SImulator/SImulator.ViewModel/Controllers/GameEngineController.cssrc/SImulator/SImulator.ViewModel/Controllers/GameController.cssrc/SImulator/SImulator.ViewModel/Controllers/WebPresentationController.cs
New game creation and composition:
src/SICore/SICore/GameRunner.cs
Main runtime hotspots:
src/SICore/SICore/Clients/Game/GameController.cssrc/SICore/SICore/Clients/Game/Game.cssrc/SICore/SICore/Clients/Viewer/Viewer.cssrc/SICore/SICore/Services/Intelligence.cs
Question-specific runtime state and handlers:
src/SICore/SICore/Clients/Game/QuestionPlayHandler.cssrc/SICore/SICore/Clients/Game/QuestionPlayState.cssrc/SICore/SICore/Clients/Game/PlayHandler.cs
Package-level engine:
src/Common/SIEngine/GameEngine.cs- see
src/Common/SIEngine/DOCUMENTATION.md
Question-level engine:
src/Common/SIEngine.Core/QuestionEngine.cs- see
src/Common/SIEngine.Core/DOCUMENTATION.md
Package model and file format:
src/Common/SIPackages/README.md
Shared libraries. Common reasons to look here:
- package model and SIQ IO →
SIPackages - question/package playback engines →
SIEngine,SIEngine.Core - shared UI bits →
SIUI,SIUI.Model,SIUI.ViewModel - shared helpers →
Utils,Notions - server/service contracts and clients →
SI.GameServer.*
Core runtime and networking. Typical responsibilities:
- runtime game orchestration →
SICore - higher-level nodes and clients →
SICore.Network - lower-level connection primitives →
SICore.Connections - shared runtime models →
SIData,SI.Contracts
Desktop application and presentation logic:
- WPF app shell →
SIGame - desktop view models and services →
SIGame.ViewModel - web-oriented view model project →
SIGame.ViewModel.Web
Editor-related projects:
- WPF app shell →
SIQuester - editor view model and workspaces →
SIQuester.ViewModel - text converter →
QTxtConverter
Simulator-related projects:
- WPF app shell →
SImulator - simulator view models/controllers →
SImulator.ViewModel
Start with:
src/Common/SIEngine.Core/QuestionEngine.cssrc/Common/SIEngine.Core/DOCUMENTATION.mdsrc/SICore/SICore/Clients/Game/QuestionPlayHandler.cssrc/SICore/SICore/Clients/Game/QuestionPlayState.cs
Start with:
src/Common/SIEngine/GameEngine.cssrc/Common/SIEngine/DOCUMENTATION.mdsrc/SICore/SICore/Clients/Game/GameController.cssrc/SICore/SICore/Clients/Game/Game.cs
Start with:
src/SICore/SICore/GameRunner.cssrc/SIGame/SIGame/App.xaml.cssrc/SImulator/SImulator/App.xaml.cs
Start with:
src/SICore/SICore/GAME_AGENT_DOCUMENTATION.mdsrc/SICore/SICore/Messages.cssrc/SICore/SICore.Network/Clients/Client.cssrc/SICore/SICore.Network/Nodes/*src/SICore/SICore.Connections/*
Start with:
src/SIGame/SIGame.ViewModel/ViewModel/MainViewModel.cssrc/SIGame/SIGame/View/*src/SIGame/SIGame/Converters/*
Start with:
src/SIQuester/SIQuester.ViewModel/Workspaces/QDocument.cssrc/SIQuester/SIQuester.ViewModel/Items/*src/SIQuester/SIQuester/View/*
Start with:
src/SImulator/SImulator/App.xaml.cssrc/SImulator/SImulator.ViewModel/ViewModel/MainViewModel.cssrc/SImulator/SImulator.ViewModel/ViewModel/GameViewModel.cssrc/SImulator/SImulator.ViewModel/Controllers/*
These files are important, but they are also major navigation hotspots:
src/SICore/SICore/Clients/Game/GameController.cssrc/SICore/SICore/Clients/Game/Game.cssrc/SICore/SICore/Clients/Viewer/Viewer.cssrc/SICore/SICore/Services/Intelligence.cssrc/SIQuester/SIQuester.ViewModel/Workspaces/QDocument.cssrc/SImulator/SImulator.ViewModel/ViewModel/GameViewModel.cssrc/SIGame/SIGame.ViewModel/ViewModel/Logic/ViewerHumanLogic.cs
When working in these files, search for narrow domain terms first instead of reading top-to-bottom.
Some folders are useful but broad:
HelpersUtilsSpecialOther
Search these only after checking more domain-specific folders.
For most feature work, ignore:
bin/obj/Properties/Resources.Designer.cs- generated
*.g.csand*.g.i.cs - very large static resource XAML dictionaries unless the task is specifically about resources or theme assets
Recommended search order:
- pick the right top-level area (
SIGame,SIQuester,SImulator,SICore,Common) - identify the right project
- identify the right workflow folder
- only then inspect the largest coordinator files
For best results, search with domain terms such as:
- question flow
- round flow
- selection
- validation
- viewer
- showman
- storage
- package
- import
- presentation
- network