<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://csharpgamedev.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Winkio</id>
	<title>C# Gamedev Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://csharpgamedev.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Winkio"/>
	<link rel="alternate" type="text/html" href="https://csharpgamedev.com/wiki/Special:Contributions/Winkio"/>
	<updated>2026-04-18T21:44:27Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=365</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=365"/>
		<updated>2024-07-14T21:40:28Z</updated>

		<summary type="html">&lt;p&gt;Winkio: /* Graphics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to C# Gamedev Wiki!&lt;br /&gt;
&lt;br /&gt;
This is a place to gather explanations and examples of systems that are used in game development. The goal is to provide explanations and samples that are code-first and are not dependent on a specific engine or framework (such as Godot, Unity, Unreal, etc.). Platform specific discussions are allowed and encouraged (such as how to do X on Windows, Mac, or Linux).  Pages will contain text, diagrams, and code samples in order to help explain concepts.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
*[[Game Loop]]&lt;br /&gt;
*[[Tickrate]]&lt;br /&gt;
*[[Framerate]]&lt;br /&gt;
&lt;br /&gt;
==Graphics==&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
**[[View Matrix]]&lt;br /&gt;
**[[Projection Matrix]]&lt;br /&gt;
**[[World Matrix]]&lt;br /&gt;
&lt;br /&gt;
==Audio==&lt;br /&gt;
*[[Sound Effect]]&lt;br /&gt;
*[[Background Music]]&lt;br /&gt;
*[[Loop (Music)]]&lt;br /&gt;
&lt;br /&gt;
==Files and Databases==&lt;br /&gt;
*[[Local Directories]]&lt;br /&gt;
*[[Save Files]]&lt;br /&gt;
*[[User Settings]]&lt;br /&gt;
*[[Config Files]]&lt;br /&gt;
*[[Cloud Saves]]&lt;br /&gt;
&lt;br /&gt;
==Physics==&lt;br /&gt;
===[[Mechanics]]===&lt;br /&gt;
*[[Velocity]]&lt;br /&gt;
*[[Acceleration]]&lt;br /&gt;
*[[Force]]&lt;br /&gt;
*[[Mass]]&lt;br /&gt;
*[[Gravity]]&lt;br /&gt;
===[[Collision]]===&lt;br /&gt;
*[[AABB]]&lt;br /&gt;
*[[Separating Axis Theorem]]&lt;br /&gt;
&lt;br /&gt;
==Math==&lt;br /&gt;
*[[Differential Equations]]&lt;br /&gt;
*[[Matrices]]&lt;br /&gt;
**[[Transformation Matrix]]&lt;br /&gt;
===[[Statistics]]===&lt;br /&gt;
*[[Drop Rate]]&lt;br /&gt;
&lt;br /&gt;
==AI==&lt;br /&gt;
*[[Finite State Machine]]&lt;br /&gt;
*[[Pathfinding]]&lt;br /&gt;
**[[A*]]&lt;br /&gt;
&lt;br /&gt;
==Multiplayer==&lt;br /&gt;
===General===&lt;br /&gt;
*[[Profile]]&lt;br /&gt;
*[[Messaging]]&lt;br /&gt;
*[[Matchmaking]]&lt;br /&gt;
*[[Rating]]&lt;br /&gt;
&lt;br /&gt;
===[[Networking]]===&lt;br /&gt;
*[[TCP]]&lt;br /&gt;
*[[UDP]]&lt;br /&gt;
*[[NAT Traversal]]&lt;br /&gt;
*[[Client Side Prediction]]&lt;br /&gt;
*[[Lockstep]]&lt;br /&gt;
*[[Rollback]]&lt;br /&gt;
&lt;br /&gt;
==Wiki Community==&lt;br /&gt;
*[[Site Administration]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
Getting started&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=364</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=364"/>
		<updated>2024-07-14T21:40:14Z</updated>

		<summary type="html">&lt;p&gt;Winkio: /* Math */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to C# Gamedev Wiki!&lt;br /&gt;
&lt;br /&gt;
This is a place to gather explanations and examples of systems that are used in game development. The goal is to provide explanations and samples that are code-first and are not dependent on a specific engine or framework (such as Godot, Unity, Unreal, etc.). Platform specific discussions are allowed and encouraged (such as how to do X on Windows, Mac, or Linux).  Pages will contain text, diagrams, and code samples in order to help explain concepts.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
*[[Game Loop]]&lt;br /&gt;
*[[Tickrate]]&lt;br /&gt;
*[[Framerate]]&lt;br /&gt;
&lt;br /&gt;
==Graphics==&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
**[[View Matrix]]&lt;br /&gt;
**[[Projection Matrix]]&lt;br /&gt;
**[[World Matrix]]&lt;br /&gt;
**[[Transform Matrix]]&lt;br /&gt;
&lt;br /&gt;
==Audio==&lt;br /&gt;
*[[Sound Effect]]&lt;br /&gt;
*[[Background Music]]&lt;br /&gt;
*[[Loop (Music)]]&lt;br /&gt;
&lt;br /&gt;
==Files and Databases==&lt;br /&gt;
*[[Local Directories]]&lt;br /&gt;
*[[Save Files]]&lt;br /&gt;
*[[User Settings]]&lt;br /&gt;
*[[Config Files]]&lt;br /&gt;
*[[Cloud Saves]]&lt;br /&gt;
&lt;br /&gt;
==Physics==&lt;br /&gt;
===[[Mechanics]]===&lt;br /&gt;
*[[Velocity]]&lt;br /&gt;
*[[Acceleration]]&lt;br /&gt;
*[[Force]]&lt;br /&gt;
*[[Mass]]&lt;br /&gt;
*[[Gravity]]&lt;br /&gt;
===[[Collision]]===&lt;br /&gt;
*[[AABB]]&lt;br /&gt;
*[[Separating Axis Theorem]]&lt;br /&gt;
&lt;br /&gt;
==Math==&lt;br /&gt;
*[[Differential Equations]]&lt;br /&gt;
*[[Matrices]]&lt;br /&gt;
**[[Transformation Matrix]]&lt;br /&gt;
===[[Statistics]]===&lt;br /&gt;
*[[Drop Rate]]&lt;br /&gt;
&lt;br /&gt;
==AI==&lt;br /&gt;
*[[Finite State Machine]]&lt;br /&gt;
*[[Pathfinding]]&lt;br /&gt;
**[[A*]]&lt;br /&gt;
&lt;br /&gt;
==Multiplayer==&lt;br /&gt;
===General===&lt;br /&gt;
*[[Profile]]&lt;br /&gt;
*[[Messaging]]&lt;br /&gt;
*[[Matchmaking]]&lt;br /&gt;
*[[Rating]]&lt;br /&gt;
&lt;br /&gt;
===[[Networking]]===&lt;br /&gt;
*[[TCP]]&lt;br /&gt;
*[[UDP]]&lt;br /&gt;
*[[NAT Traversal]]&lt;br /&gt;
*[[Client Side Prediction]]&lt;br /&gt;
*[[Lockstep]]&lt;br /&gt;
*[[Rollback]]&lt;br /&gt;
&lt;br /&gt;
==Wiki Community==&lt;br /&gt;
*[[Site Administration]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
Getting started&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=363</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=363"/>
		<updated>2024-07-14T17:57:04Z</updated>

		<summary type="html">&lt;p&gt;Winkio: /* Graphics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to C# Gamedev Wiki!&lt;br /&gt;
&lt;br /&gt;
This is a place to gather explanations and examples of systems that are used in game development. The goal is to provide explanations and samples that are code-first and are not dependent on a specific engine or framework (such as Godot, Unity, Unreal, etc.). Platform specific discussions are allowed and encouraged (such as how to do X on Windows, Mac, or Linux).  Pages will contain text, diagrams, and code samples in order to help explain concepts.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
*[[Game Loop]]&lt;br /&gt;
*[[Tickrate]]&lt;br /&gt;
*[[Framerate]]&lt;br /&gt;
&lt;br /&gt;
==Graphics==&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
**[[View Matrix]]&lt;br /&gt;
**[[Projection Matrix]]&lt;br /&gt;
**[[World Matrix]]&lt;br /&gt;
**[[Transform Matrix]]&lt;br /&gt;
&lt;br /&gt;
==Audio==&lt;br /&gt;
*[[Sound Effect]]&lt;br /&gt;
*[[Background Music]]&lt;br /&gt;
*[[Loop (Music)]]&lt;br /&gt;
&lt;br /&gt;
==Files and Databases==&lt;br /&gt;
*[[Local Directories]]&lt;br /&gt;
*[[Save Files]]&lt;br /&gt;
*[[User Settings]]&lt;br /&gt;
*[[Config Files]]&lt;br /&gt;
*[[Cloud Saves]]&lt;br /&gt;
&lt;br /&gt;
==Physics==&lt;br /&gt;
===[[Mechanics]]===&lt;br /&gt;
*[[Velocity]]&lt;br /&gt;
*[[Acceleration]]&lt;br /&gt;
*[[Force]]&lt;br /&gt;
*[[Mass]]&lt;br /&gt;
*[[Gravity]]&lt;br /&gt;
===[[Collision]]===&lt;br /&gt;
*[[AABB]]&lt;br /&gt;
*[[Separating Axis Theorem]]&lt;br /&gt;
&lt;br /&gt;
==Math==&lt;br /&gt;
*[[Differential Equations]]&lt;br /&gt;
*[[Matrices]]&lt;br /&gt;
===[[Statistics]]===&lt;br /&gt;
*[[Drop Rate]]&lt;br /&gt;
&lt;br /&gt;
==AI==&lt;br /&gt;
*[[Finite State Machine]]&lt;br /&gt;
*[[Pathfinding]]&lt;br /&gt;
**[[A*]]&lt;br /&gt;
&lt;br /&gt;
==Multiplayer==&lt;br /&gt;
===General===&lt;br /&gt;
*[[Profile]]&lt;br /&gt;
*[[Messaging]]&lt;br /&gt;
*[[Matchmaking]]&lt;br /&gt;
*[[Rating]]&lt;br /&gt;
&lt;br /&gt;
===[[Networking]]===&lt;br /&gt;
*[[TCP]]&lt;br /&gt;
*[[UDP]]&lt;br /&gt;
*[[NAT Traversal]]&lt;br /&gt;
*[[Client Side Prediction]]&lt;br /&gt;
*[[Lockstep]]&lt;br /&gt;
*[[Rollback]]&lt;br /&gt;
&lt;br /&gt;
==Wiki Community==&lt;br /&gt;
*[[Site Administration]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
Getting started&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=362</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=362"/>
		<updated>2024-07-14T17:56:23Z</updated>

		<summary type="html">&lt;p&gt;Winkio: /* Math */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to C# Gamedev Wiki!&lt;br /&gt;
&lt;br /&gt;
This is a place to gather explanations and examples of systems that are used in game development. The goal is to provide explanations and samples that are code-first and are not dependent on a specific engine or framework (such as Godot, Unity, Unreal, etc.). Platform specific discussions are allowed and encouraged (such as how to do X on Windows, Mac, or Linux).  Pages will contain text, diagrams, and code samples in order to help explain concepts.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
*[[Game Loop]]&lt;br /&gt;
*[[Tickrate]]&lt;br /&gt;
*[[Framerate]]&lt;br /&gt;
&lt;br /&gt;
==Graphics==&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
&lt;br /&gt;
==Audio==&lt;br /&gt;
*[[Sound Effect]]&lt;br /&gt;
*[[Background Music]]&lt;br /&gt;
*[[Loop (Music)]]&lt;br /&gt;
&lt;br /&gt;
==Files and Databases==&lt;br /&gt;
*[[Local Directories]]&lt;br /&gt;
*[[Save Files]]&lt;br /&gt;
*[[User Settings]]&lt;br /&gt;
*[[Config Files]]&lt;br /&gt;
*[[Cloud Saves]]&lt;br /&gt;
&lt;br /&gt;
==Physics==&lt;br /&gt;
===[[Mechanics]]===&lt;br /&gt;
*[[Velocity]]&lt;br /&gt;
*[[Acceleration]]&lt;br /&gt;
*[[Force]]&lt;br /&gt;
*[[Mass]]&lt;br /&gt;
*[[Gravity]]&lt;br /&gt;
===[[Collision]]===&lt;br /&gt;
*[[AABB]]&lt;br /&gt;
*[[Separating Axis Theorem]]&lt;br /&gt;
&lt;br /&gt;
==Math==&lt;br /&gt;
*[[Differential Equations]]&lt;br /&gt;
*[[Matrices]]&lt;br /&gt;
===[[Statistics]]===&lt;br /&gt;
*[[Drop Rate]]&lt;br /&gt;
&lt;br /&gt;
==AI==&lt;br /&gt;
*[[Finite State Machine]]&lt;br /&gt;
*[[Pathfinding]]&lt;br /&gt;
**[[A*]]&lt;br /&gt;
&lt;br /&gt;
==Multiplayer==&lt;br /&gt;
===General===&lt;br /&gt;
*[[Profile]]&lt;br /&gt;
*[[Messaging]]&lt;br /&gt;
*[[Matchmaking]]&lt;br /&gt;
*[[Rating]]&lt;br /&gt;
&lt;br /&gt;
===[[Networking]]===&lt;br /&gt;
*[[TCP]]&lt;br /&gt;
*[[UDP]]&lt;br /&gt;
*[[NAT Traversal]]&lt;br /&gt;
*[[Client Side Prediction]]&lt;br /&gt;
*[[Lockstep]]&lt;br /&gt;
*[[Rollback]]&lt;br /&gt;
&lt;br /&gt;
==Wiki Community==&lt;br /&gt;
*[[Site Administration]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
Getting started&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=361</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=361"/>
		<updated>2024-07-14T17:55:40Z</updated>

		<summary type="html">&lt;p&gt;Winkio: /* AI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to C# Gamedev Wiki!&lt;br /&gt;
&lt;br /&gt;
This is a place to gather explanations and examples of systems that are used in game development. The goal is to provide explanations and samples that are code-first and are not dependent on a specific engine or framework (such as Godot, Unity, Unreal, etc.). Platform specific discussions are allowed and encouraged (such as how to do X on Windows, Mac, or Linux).  Pages will contain text, diagrams, and code samples in order to help explain concepts.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
*[[Game Loop]]&lt;br /&gt;
*[[Tickrate]]&lt;br /&gt;
*[[Framerate]]&lt;br /&gt;
&lt;br /&gt;
==Graphics==&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
&lt;br /&gt;
==Audio==&lt;br /&gt;
*[[Sound Effect]]&lt;br /&gt;
*[[Background Music]]&lt;br /&gt;
*[[Loop (Music)]]&lt;br /&gt;
&lt;br /&gt;
==Files and Databases==&lt;br /&gt;
*[[Local Directories]]&lt;br /&gt;
*[[Save Files]]&lt;br /&gt;
*[[User Settings]]&lt;br /&gt;
*[[Config Files]]&lt;br /&gt;
*[[Cloud Saves]]&lt;br /&gt;
&lt;br /&gt;
==Physics==&lt;br /&gt;
===[[Mechanics]]===&lt;br /&gt;
*[[Velocity]]&lt;br /&gt;
*[[Acceleration]]&lt;br /&gt;
*[[Force]]&lt;br /&gt;
*[[Mass]]&lt;br /&gt;
*[[Gravity]]&lt;br /&gt;
===[[Collision]]===&lt;br /&gt;
*[[AABB]]&lt;br /&gt;
*[[Separating Axis Theorem]]&lt;br /&gt;
&lt;br /&gt;
==Math==&lt;br /&gt;
*[[Differential Equations]]&lt;br /&gt;
===[[Statistics]]===&lt;br /&gt;
*[[Drop Rate]]&lt;br /&gt;
&lt;br /&gt;
==AI==&lt;br /&gt;
*[[Finite State Machine]]&lt;br /&gt;
*[[Pathfinding]]&lt;br /&gt;
**[[A*]]&lt;br /&gt;
&lt;br /&gt;
==Multiplayer==&lt;br /&gt;
===General===&lt;br /&gt;
*[[Profile]]&lt;br /&gt;
*[[Messaging]]&lt;br /&gt;
*[[Matchmaking]]&lt;br /&gt;
*[[Rating]]&lt;br /&gt;
&lt;br /&gt;
===[[Networking]]===&lt;br /&gt;
*[[TCP]]&lt;br /&gt;
*[[UDP]]&lt;br /&gt;
*[[NAT Traversal]]&lt;br /&gt;
*[[Client Side Prediction]]&lt;br /&gt;
*[[Lockstep]]&lt;br /&gt;
*[[Rollback]]&lt;br /&gt;
&lt;br /&gt;
==Wiki Community==&lt;br /&gt;
*[[Site Administration]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
Getting started&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=360</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=360"/>
		<updated>2024-07-14T14:42:50Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to C# Gamedev Wiki!&lt;br /&gt;
&lt;br /&gt;
This is a place to gather explanations and examples of systems that are used in game development. The goal is to provide explanations and samples that are code-first and are not dependent on a specific engine or framework (such as Godot, Unity, Unreal, etc.). Platform specific discussions are allowed and encouraged (such as how to do X on Windows, Mac, or Linux).  Pages will contain text, diagrams, and code samples in order to help explain concepts.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
*[[Game Loop]]&lt;br /&gt;
*[[Tickrate]]&lt;br /&gt;
*[[Framerate]]&lt;br /&gt;
&lt;br /&gt;
==Graphics==&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
&lt;br /&gt;
==Audio==&lt;br /&gt;
*[[Sound Effect]]&lt;br /&gt;
*[[Background Music]]&lt;br /&gt;
*[[Loop (Music)]]&lt;br /&gt;
&lt;br /&gt;
==Files and Databases==&lt;br /&gt;
*[[Local Directories]]&lt;br /&gt;
*[[Save Files]]&lt;br /&gt;
*[[User Settings]]&lt;br /&gt;
*[[Config Files]]&lt;br /&gt;
*[[Cloud Saves]]&lt;br /&gt;
&lt;br /&gt;
==Physics==&lt;br /&gt;
===[[Mechanics]]===&lt;br /&gt;
*[[Velocity]]&lt;br /&gt;
*[[Acceleration]]&lt;br /&gt;
*[[Force]]&lt;br /&gt;
*[[Mass]]&lt;br /&gt;
*[[Gravity]]&lt;br /&gt;
===[[Collision]]===&lt;br /&gt;
*[[AABB]]&lt;br /&gt;
*[[Separating Axis Theorem]]&lt;br /&gt;
&lt;br /&gt;
==Math==&lt;br /&gt;
*[[Differential Equations]]&lt;br /&gt;
===[[Statistics]]===&lt;br /&gt;
*[[Drop Rate]]&lt;br /&gt;
&lt;br /&gt;
==AI==&lt;br /&gt;
*[[Finite State Machine]]&lt;br /&gt;
*[[Pathfinding]]&lt;br /&gt;
&lt;br /&gt;
==Multiplayer==&lt;br /&gt;
===General===&lt;br /&gt;
*[[Profile]]&lt;br /&gt;
*[[Messaging]]&lt;br /&gt;
*[[Matchmaking]]&lt;br /&gt;
*[[Rating]]&lt;br /&gt;
&lt;br /&gt;
===[[Networking]]===&lt;br /&gt;
*[[TCP]]&lt;br /&gt;
*[[UDP]]&lt;br /&gt;
*[[NAT Traversal]]&lt;br /&gt;
*[[Client Side Prediction]]&lt;br /&gt;
*[[Lockstep]]&lt;br /&gt;
*[[Rollback]]&lt;br /&gt;
&lt;br /&gt;
==Wiki Community==&lt;br /&gt;
*[[Site Administration]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
Getting started&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=359</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=359"/>
		<updated>2024-07-14T14:40:50Z</updated>

		<summary type="html">&lt;p&gt;Winkio: /* Collision */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to C# Gamedev Wiki!&lt;br /&gt;
&lt;br /&gt;
This is a place to gather explanations and examples of systems that are used in game development. The goal is to provide explanations and samples that are code-first and are not dependent on a specific engine or framework (such as Godot, Unity, Unreal, etc.). Platform specific discussions are allowed and encouraged (such as how to do X on Windows, Mac, or Linux).  Pages will contain text, diagrams, and code samples in order to help explain concepts.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
*[[Game Loop]]&lt;br /&gt;
*[[Tickrate]]&lt;br /&gt;
*[[Framerate]]&lt;br /&gt;
&lt;br /&gt;
==Graphics==&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
&lt;br /&gt;
==Audio==&lt;br /&gt;
*[[Sound Effect]]&lt;br /&gt;
*[[Background Music]]&lt;br /&gt;
*[[Loop (Music)]]&lt;br /&gt;
&lt;br /&gt;
==Files and Databases==&lt;br /&gt;
*[[Local Directories]]&lt;br /&gt;
*[[Save Files]]&lt;br /&gt;
*[[User Settings]]&lt;br /&gt;
*[[Config Files]]&lt;br /&gt;
*[[Cloud Saves]]&lt;br /&gt;
&lt;br /&gt;
==Physics==&lt;br /&gt;
===[[Mechanics]]===&lt;br /&gt;
*[[Velocity]]&lt;br /&gt;
*[[Acceleration]]&lt;br /&gt;
*[[Force]]&lt;br /&gt;
*[[Mass]]&lt;br /&gt;
*[[Gravity]]&lt;br /&gt;
===[[Collision]]===&lt;br /&gt;
*[[AABB]]&lt;br /&gt;
*[[Separating Axis Theorem]]&lt;br /&gt;
&lt;br /&gt;
==Math==&lt;br /&gt;
*[[Differential Equations]]&lt;br /&gt;
===[[Statistics]]===&lt;br /&gt;
*[[Drop Rate]]&lt;br /&gt;
&lt;br /&gt;
==Multiplayer==&lt;br /&gt;
===General===&lt;br /&gt;
*[[Profile]]&lt;br /&gt;
*[[Messaging]]&lt;br /&gt;
*[[Matchmaking]]&lt;br /&gt;
*[[Rating]]&lt;br /&gt;
&lt;br /&gt;
===[[Networking]]===&lt;br /&gt;
*[[TCP]]&lt;br /&gt;
*[[UDP]]&lt;br /&gt;
*[[NAT Traversal]]&lt;br /&gt;
*[[Client Side Prediction]]&lt;br /&gt;
*[[Lockstep]]&lt;br /&gt;
*[[Rollback]]&lt;br /&gt;
&lt;br /&gt;
==Wiki Community==&lt;br /&gt;
*[[Site Administration]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
Getting started&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=358</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=358"/>
		<updated>2024-07-14T14:40:03Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to C# Gamedev Wiki!&lt;br /&gt;
&lt;br /&gt;
This is a place to gather explanations and examples of systems that are used in game development. The goal is to provide explanations and samples that are code-first and are not dependent on a specific engine or framework (such as Godot, Unity, Unreal, etc.). Platform specific discussions are allowed and encouraged (such as how to do X on Windows, Mac, or Linux).  Pages will contain text, diagrams, and code samples in order to help explain concepts.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
*[[Game Loop]]&lt;br /&gt;
*[[Tickrate]]&lt;br /&gt;
*[[Framerate]]&lt;br /&gt;
&lt;br /&gt;
==Graphics==&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
&lt;br /&gt;
==Audio==&lt;br /&gt;
*[[Sound Effect]]&lt;br /&gt;
*[[Background Music]]&lt;br /&gt;
*[[Loop (Music)]]&lt;br /&gt;
&lt;br /&gt;
==Files and Databases==&lt;br /&gt;
*[[Local Directories]]&lt;br /&gt;
*[[Save Files]]&lt;br /&gt;
*[[User Settings]]&lt;br /&gt;
*[[Config Files]]&lt;br /&gt;
*[[Cloud Saves]]&lt;br /&gt;
&lt;br /&gt;
==Physics==&lt;br /&gt;
===[[Mechanics]]===&lt;br /&gt;
*[[Velocity]]&lt;br /&gt;
*[[Acceleration]]&lt;br /&gt;
*[[Force]]&lt;br /&gt;
*[[Mass]]&lt;br /&gt;
*[[Gravity]]&lt;br /&gt;
===[[Collision]]===&lt;br /&gt;
*[[AABB]]&lt;br /&gt;
&lt;br /&gt;
==Math==&lt;br /&gt;
*[[Differential Equations]]&lt;br /&gt;
===[[Statistics]]===&lt;br /&gt;
*[[Drop Rate]]&lt;br /&gt;
&lt;br /&gt;
==Multiplayer==&lt;br /&gt;
===General===&lt;br /&gt;
*[[Profile]]&lt;br /&gt;
*[[Messaging]]&lt;br /&gt;
*[[Matchmaking]]&lt;br /&gt;
*[[Rating]]&lt;br /&gt;
&lt;br /&gt;
===[[Networking]]===&lt;br /&gt;
*[[TCP]]&lt;br /&gt;
*[[UDP]]&lt;br /&gt;
*[[NAT Traversal]]&lt;br /&gt;
*[[Client Side Prediction]]&lt;br /&gt;
*[[Lockstep]]&lt;br /&gt;
*[[Rollback]]&lt;br /&gt;
&lt;br /&gt;
==Wiki Community==&lt;br /&gt;
*[[Site Administration]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
Getting started&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=357</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=357"/>
		<updated>2024-07-14T14:36:46Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to C# Gamedev Wiki!&lt;br /&gt;
&lt;br /&gt;
This is a place to gather explanations and examples of systems that are used in game development. The goal is to provide explanations and samples that are code-first and are not dependent on a specific engine or framework (such as Godot, Unity, Unreal, etc.). Platform specific discussions are allowed and encouraged (such as how to do X on Windows, Mac, or Linux).  Pages will contain text, diagrams, and code samples in order to help explain concepts.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
*[[Game Loop]]&lt;br /&gt;
*[[Tickrate]]&lt;br /&gt;
*[[Framerate]]&lt;br /&gt;
&lt;br /&gt;
==Graphics==&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
&lt;br /&gt;
==Audio==&lt;br /&gt;
*[[Sound Effect]]&lt;br /&gt;
*[[Background Music]]&lt;br /&gt;
*[[Loop (Music)]]&lt;br /&gt;
&lt;br /&gt;
==Files and Databases==&lt;br /&gt;
*[[Local Directories]]&lt;br /&gt;
*[[Save Files]]&lt;br /&gt;
*[[User Settings]]&lt;br /&gt;
*[[Config Files]]&lt;br /&gt;
*[[Cloud Saves]]&lt;br /&gt;
&lt;br /&gt;
==Math==&lt;br /&gt;
===Statistics===&lt;br /&gt;
*[[Drop Rate]]&lt;br /&gt;
&lt;br /&gt;
==Multiplayer==&lt;br /&gt;
===General===&lt;br /&gt;
*[[Profile]]&lt;br /&gt;
*[[Messaging]]&lt;br /&gt;
*[[Matchmaking]]&lt;br /&gt;
*[[Rating]]&lt;br /&gt;
&lt;br /&gt;
===[[Networking]]===&lt;br /&gt;
*[[TCP]]&lt;br /&gt;
*[[UDP]]&lt;br /&gt;
*[[NAT Traversal]]&lt;br /&gt;
*[[Client Side Prediction]]&lt;br /&gt;
*[[Lockstep]]&lt;br /&gt;
*[[Rollback]]&lt;br /&gt;
&lt;br /&gt;
==Wiki Community==&lt;br /&gt;
*[[Site Administration]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
Getting started&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Loop_(Music)&amp;diff=356</id>
		<title>Loop (Music)</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Loop_(Music)&amp;diff=356"/>
		<updated>2024-07-14T14:05:45Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[Loop (Music)|Loop]] is a piece of music that repeats endlessly, often found in games as [[background music]].&lt;br /&gt;
&lt;br /&gt;
==Full File Loop==&lt;br /&gt;
In this implementation the music file loops from the start to the end, requiring the file to be trimmed neatly such that the start and end line up exactly.  Very few songs are available in a trimmed format like this, so the developer may need to take a song and trim it manually using audio editing software like [https://www.audacityteam.org/ Audacity].&lt;br /&gt;
&lt;br /&gt;
==Partial File Loop==&lt;br /&gt;
In this implementation the developer first defines a loop start and loop end within each song, and then has code that runs each frame to perform the looping.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
TimeSpan LoopStart;&lt;br /&gt;
TimeSpan LoopEnd;&lt;br /&gt;
&lt;br /&gt;
void UpdateMusicLoop()&lt;br /&gt;
{&lt;br /&gt;
    TimeSpan currentPlaybackPosition = GetPlaybackPosition();&lt;br /&gt;
    if (currentPlaybackPosition &amp;gt;= LoopEnd)&lt;br /&gt;
        PlayFrom(LoopStart + currentPlaybackPosition - LoopEnd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The advantage of this implementation is that many files do not need to be edited to loop smoothly, the developer simply needs to define the loop start and end correctly.  Make sure that the loop start and loop end are both on the same beat of the song.&lt;br /&gt;
&lt;br /&gt;
If using this approach you must not use the end of the file as the loop end, since playback expects to continue slightly past the loop end point before returning to the start of the loop.  If your file is already trimmed to the loop end, you may need to use audio editing software like [[Audacity]] to copy the first 1-2s after loop start to the end of the file in order to be safe.&lt;br /&gt;
&lt;br /&gt;
==Intro then Loop==&lt;br /&gt;
Sometimes a developer wants to play an intro once before the loop starts.  A great example of this is Zelda OoT, where pieces like Kokiri Forest and Gerudo Valley have very recognizable intros.&lt;br /&gt;
&lt;br /&gt;
This can be easily done by playing the song from the intro, and then letting it automatically continue until the loop end at which point it will loop normally.&lt;br /&gt;
&lt;br /&gt;
==Transition between Loops==&lt;br /&gt;
Sometimes a developer wants to progress from loop to loop in a file as a player makes progress in a level.  A great example of this is Celeste.&lt;br /&gt;
&lt;br /&gt;
This can be easily done by changing loop start and loop end to a different pair of values for a new loop as the player reaches new milestones in a level.&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Loop_(Music)&amp;diff=355</id>
		<title>Loop (Music)</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Loop_(Music)&amp;diff=355"/>
		<updated>2024-07-14T14:05:27Z</updated>

		<summary type="html">&lt;p&gt;Winkio: Created page with &amp;quot;A Loop is a piece of music that repeats endlessly, often found in games as background music.  ==Full File Loop== In this implementation the music file loops from the start to the end, requiring the file to be trimmed neatly such that the start and end line up exactly.  Very few songs are available in a trimmed format like this, so the developer may need to take a song and trim it manually using audio editing software like [https://www.audacityteam.org/ Audacity]....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[Loop]] is a piece of music that repeats endlessly, often found in games as [[background music]].&lt;br /&gt;
&lt;br /&gt;
==Full File Loop==&lt;br /&gt;
In this implementation the music file loops from the start to the end, requiring the file to be trimmed neatly such that the start and end line up exactly.  Very few songs are available in a trimmed format like this, so the developer may need to take a song and trim it manually using audio editing software like [https://www.audacityteam.org/ Audacity].&lt;br /&gt;
&lt;br /&gt;
==Partial File Loop==&lt;br /&gt;
In this implementation the developer first defines a loop start and loop end within each song, and then has code that runs each frame to perform the looping.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
TimeSpan LoopStart;&lt;br /&gt;
TimeSpan LoopEnd;&lt;br /&gt;
&lt;br /&gt;
void UpdateMusicLoop()&lt;br /&gt;
{&lt;br /&gt;
    TimeSpan currentPlaybackPosition = GetPlaybackPosition();&lt;br /&gt;
    if (currentPlaybackPosition &amp;gt;= LoopEnd)&lt;br /&gt;
        PlayFrom(LoopStart + currentPlaybackPosition - LoopEnd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The advantage of this implementation is that many files do not need to be edited to loop smoothly, the developer simply needs to define the loop start and end correctly.  Make sure that the loop start and loop end are both on the same beat of the song.&lt;br /&gt;
&lt;br /&gt;
If using this approach you must not use the end of the file as the loop end, since playback expects to continue slightly past the loop end point before returning to the start of the loop.  If your file is already trimmed to the loop end, you may need to use audio editing software like [[Audacity]] to copy the first 1-2s after loop start to the end of the file in order to be safe.&lt;br /&gt;
&lt;br /&gt;
==Intro then Loop==&lt;br /&gt;
Sometimes a developer wants to play an intro once before the loop starts.  A great example of this is Zelda OoT, where pieces like Kokiri Forest and Gerudo Valley have very recognizable intros.&lt;br /&gt;
&lt;br /&gt;
This can be easily done by playing the song from the intro, and then letting it automatically continue until the loop end at which point it will loop normally.&lt;br /&gt;
&lt;br /&gt;
==Transition between Loops==&lt;br /&gt;
Sometimes a developer wants to progress from loop to loop in a file as a player makes progress in a level.  A great example of this is Celeste.&lt;br /&gt;
&lt;br /&gt;
This can be easily done by changing loop start and loop end to a different pair of values for a new loop as the player reaches new milestones in a level.&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=354</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=354"/>
		<updated>2024-07-14T13:40:59Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to C# Gamedev Wiki!&lt;br /&gt;
&lt;br /&gt;
This is a place to gather explanations and examples of systems that are used in game development. The goal is to provide explanations and samples that are code-first and are not dependent on a specific engine or framework (such as Godot, Unity, Unreal, etc.). Platform specific discussions are allowed and encouraged (such as how to do X on Windows, Mac, or Linux).  Pages will contain text, diagrams, and code samples in order to help explain concepts.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
*[[Game Loop]]&lt;br /&gt;
*[[Tickrate]]&lt;br /&gt;
*[[Framerate]]&lt;br /&gt;
&lt;br /&gt;
==Graphics==&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
&lt;br /&gt;
==Audio==&lt;br /&gt;
*[[Loop (Music)]]&lt;br /&gt;
&lt;br /&gt;
==Files and Databases==&lt;br /&gt;
*[[Local Directories]]&lt;br /&gt;
*[[Save Files]]&lt;br /&gt;
*[[User Settings]]&lt;br /&gt;
*[[Config Files]]&lt;br /&gt;
*[[Cloud Saves]]&lt;br /&gt;
&lt;br /&gt;
==Math==&lt;br /&gt;
===Statistics===&lt;br /&gt;
*[[Drop Rate]]&lt;br /&gt;
&lt;br /&gt;
==Multiplayer==&lt;br /&gt;
===General===&lt;br /&gt;
*[[Profile]]&lt;br /&gt;
*[[Messaging]]&lt;br /&gt;
*[[Matchmaking]]&lt;br /&gt;
*[[Rating]]&lt;br /&gt;
&lt;br /&gt;
===[[Networking]]===&lt;br /&gt;
*[[TCP]]&lt;br /&gt;
*[[UDP]]&lt;br /&gt;
*[[NAT Traversal]]&lt;br /&gt;
*[[Client Side Prediction]]&lt;br /&gt;
*[[Lockstep]]&lt;br /&gt;
*[[Rollback]]&lt;br /&gt;
&lt;br /&gt;
==Wiki Community==&lt;br /&gt;
*[[Site Administration]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
Getting started&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=NAT_Traversal&amp;diff=353</id>
		<title>NAT Traversal</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=NAT_Traversal&amp;diff=353"/>
		<updated>2024-07-13T14:32:01Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*[https://bford.info/pub/net/p2pnat/ Peer-to-Peer Communication Across Network Address Translators] - Paper by Bryan Ford&lt;br /&gt;
*[https://keithjohnston.wordpress.com/2014/02/17/nat-punch-through-for-multiplayer-games/ NAT Punch-through for Multiplayer Games] - Blog post by Keith Johnston&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Tickrate&amp;diff=352</id>
		<title>Tickrate</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Tickrate&amp;diff=352"/>
		<updated>2024-07-08T22:01:34Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tickrate]], also known as &#039;&#039;&#039;TPS&#039;&#039;&#039;, &#039;&#039;&#039;Update Rate&#039;&#039;&#039;, or &#039;&#039;&#039;UPS&#039;&#039;&#039;, is the measure of how many [[tick|ticks]] are simulated in one second of real-world time.&lt;br /&gt;
&lt;br /&gt;
While the term framerate is also commonly used to refer to the rate at which game logic is updated, this wiki uses the term tickrate to refer to game logic instead, and uses [[framerate]] only to refer to rendered frames.&lt;br /&gt;
&lt;br /&gt;
==Common Tickrates==&lt;br /&gt;
The most common tick rate for games is 60 hz.  Some well-optimized games (usually shooters) are played at either 64 hz or 128 hz, but others are played at 20 hz, 30 hz, or 40 hz.&lt;br /&gt;
&lt;br /&gt;
==High Framerates==&lt;br /&gt;
Often games do not run full game logic at higher framerates, and instead maintain a lower tickrate while using [[Game Loop#Frame Interpolation|frame interpolation]] to quickly calculate intermediate frames.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game]]&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=TrueSkill&amp;diff=351</id>
		<title>TrueSkill</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=TrueSkill&amp;diff=351"/>
		<updated>2024-06-29T15:59:20Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[TrueSkill]] is a [[rating]] system originally developed by Microsoft Research that models each player&#039;s skill as a normal distribution with a mean and a variance.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*[https://trueskill.org/ Homepage]&lt;br /&gt;
*[https://github.com/sublee/trueskill Github]&lt;br /&gt;
*[https://www.moserware.com/assets/computing-your-skill/The%20Math%20Behind%20TrueSkill.pdf Paper]&lt;br /&gt;
&lt;br /&gt;
[[Category:Rating]]&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Rating&amp;diff=350</id>
		<title>Rating</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Rating&amp;diff=350"/>
		<updated>2024-06-29T15:59:04Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Rating]] systems are a way to determine player skill and create more balanced matches in multiplayer games.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
*[[TrueSkill]] - Estimates each player&#039;s skill using a normal distribution with a mean and variance.&lt;br /&gt;
&lt;br /&gt;
[[Category:Rating]]&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=TrueSkill&amp;diff=349</id>
		<title>TrueSkill</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=TrueSkill&amp;diff=349"/>
		<updated>2024-06-29T14:34:16Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[TrueSkill]] is a [[rating]] system originally developed by Microsoft Research that models each player&#039;s skill as a normal distribution with a mean and a variance.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*[https://trueskill.org/ Homepage]&lt;br /&gt;
*[https://github.com/sublee/trueskill github]&lt;br /&gt;
*[https://www.moserware.com/assets/computing-your-skill/The%20Math%20Behind%20TrueSkill.pdf Paper]&lt;br /&gt;
&lt;br /&gt;
[[Category:Rating]]&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Rating&amp;diff=348</id>
		<title>Rating</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Rating&amp;diff=348"/>
		<updated>2024-06-29T14:29:31Z</updated>

		<summary type="html">&lt;p&gt;Winkio: Created page with &amp;quot;Rating systems are a way to determine player skill and create more balanced matches in multiplayer games.  ==Implementations== *TrueSkill  Category:Rating&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Rating]] systems are a way to determine player skill and create more balanced matches in multiplayer games.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
*[[TrueSkill]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Rating]]&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=347</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=347"/>
		<updated>2024-06-29T14:27:01Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to C# Gamedev Wiki!&lt;br /&gt;
&lt;br /&gt;
This is a place to gather explanations and examples of systems that are used in game development. The goal is to provide explanations and samples that are code-first and are not dependent on a specific engine or framework (such as Godot, Unity, Unreal, etc.). Platform specific discussions are allowed and encouraged (such as how to do X on Windows, Mac, or Linux).  Pages will contain text, diagrams, and code samples in order to help explain concepts.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
*[[Game Loop]]&lt;br /&gt;
*[[Tickrate]]&lt;br /&gt;
*[[Framerate]]&lt;br /&gt;
&lt;br /&gt;
==Graphics==&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
&lt;br /&gt;
==Files and Databases==&lt;br /&gt;
*[[Local Directories]]&lt;br /&gt;
*[[Save Files]]&lt;br /&gt;
*[[User Settings]]&lt;br /&gt;
*[[Config Files]]&lt;br /&gt;
*[[Cloud Saves]]&lt;br /&gt;
&lt;br /&gt;
==Math==&lt;br /&gt;
===Statistics===&lt;br /&gt;
*[[Drop Rate]]&lt;br /&gt;
&lt;br /&gt;
==Multiplayer==&lt;br /&gt;
===General===&lt;br /&gt;
*[[Profile]]&lt;br /&gt;
*[[Messaging]]&lt;br /&gt;
*[[Matchmaking]]&lt;br /&gt;
*[[Rating]]&lt;br /&gt;
&lt;br /&gt;
===[[Networking]]===&lt;br /&gt;
*[[TCP]]&lt;br /&gt;
*[[UDP]]&lt;br /&gt;
*[[NAT Traversal]]&lt;br /&gt;
*[[Client Side Prediction]]&lt;br /&gt;
*[[Lockstep]]&lt;br /&gt;
*[[Rollback]]&lt;br /&gt;
&lt;br /&gt;
==Wiki Community==&lt;br /&gt;
*[[Site Administration]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
Getting started&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Networking&amp;diff=346</id>
		<title>Networking</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Networking&amp;diff=346"/>
		<updated>2024-06-29T02:25:33Z</updated>

		<summary type="html">&lt;p&gt;Winkio: Created page with &amp;quot;  ==External Links== [https://github.com/ThusSpokeNomad/GameNetworkingResources Game Networking Resources] - A curated github page with links to articles, talks, libraries, and tools related to networking.  Category:Networking&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
[https://github.com/ThusSpokeNomad/GameNetworkingResources Game Networking Resources] - A curated github page with links to articles, talks, libraries, and tools related to networking.&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=345</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=345"/>
		<updated>2024-06-29T02:24:02Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to C# Gamedev Wiki!&lt;br /&gt;
&lt;br /&gt;
This is a place to gather explanations and examples of systems that are used in game development. The goal is to provide explanations and samples that are code-first and are not dependent on a specific engine or framework (such as Godot, Unity, Unreal, etc.). Platform specific discussions are allowed and encouraged (such as how to do X on Windows, Mac, or Linux).  Pages will contain text, diagrams, and code samples in order to help explain concepts.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
*[[Game Loop]]&lt;br /&gt;
*[[Tickrate]]&lt;br /&gt;
*[[Framerate]]&lt;br /&gt;
&lt;br /&gt;
==Graphics==&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
&lt;br /&gt;
==Files and Databases==&lt;br /&gt;
*[[Local Directories]]&lt;br /&gt;
*Save Files&lt;br /&gt;
*User Settings&lt;br /&gt;
*Config Files&lt;br /&gt;
*Cloud Saves&lt;br /&gt;
&lt;br /&gt;
==Math==&lt;br /&gt;
===Statistics===&lt;br /&gt;
*[[Drop Rate]]&lt;br /&gt;
&lt;br /&gt;
==Multiplayer==&lt;br /&gt;
===General===&lt;br /&gt;
*[[Profile]]&lt;br /&gt;
*[[Messaging]]&lt;br /&gt;
*[[Matchmaking]]&lt;br /&gt;
*[[Rating]]&lt;br /&gt;
&lt;br /&gt;
===[[Networking]]===&lt;br /&gt;
*[[TCP]]&lt;br /&gt;
*[[UDP]]&lt;br /&gt;
*[[NAT Traversal]]&lt;br /&gt;
*[[Client Side Prediction]]&lt;br /&gt;
*[[Lockstep]]&lt;br /&gt;
*[[Rollback]]&lt;br /&gt;
&lt;br /&gt;
==Wiki Community==&lt;br /&gt;
*[[Site Administration]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
Getting started&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Category:Networking&amp;diff=344</id>
		<title>Category:Networking</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Category:Networking&amp;diff=344"/>
		<updated>2024-06-29T02:23:43Z</updated>

		<summary type="html">&lt;p&gt;Winkio: Created page with &amp;quot;Category:Multiplayer&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Multiplayer]]&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=NAT_Traversal&amp;diff=343</id>
		<title>NAT Traversal</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=NAT_Traversal&amp;diff=343"/>
		<updated>2024-06-29T01:17:59Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*[https://bford.info/pub/net/p2pnat/ ] - Paper by Bryan Ford&lt;br /&gt;
*[https://keithjohnston.wordpress.com/2014/02/17/nat-punch-through-for-multiplayer-games/ NAT Punch-through for Multiplayer Games] - Blog post by Keith Johnston&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=NAT_Traversal&amp;diff=342</id>
		<title>NAT Traversal</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=NAT_Traversal&amp;diff=342"/>
		<updated>2024-06-29T01:14:14Z</updated>

		<summary type="html">&lt;p&gt;Winkio: Created page with &amp;quot;  ==External Links== *[https://keithjohnston.wordpress.com/2014/02/17/nat-punch-through-for-multiplayer-games/ NAT Punch-through for Multiplayer Games] - Blog post by Keith Johnston  Category:Networking&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*[https://keithjohnston.wordpress.com/2014/02/17/nat-punch-through-for-multiplayer-games/ NAT Punch-through for Multiplayer Games] - Blog post by Keith Johnston&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=341</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=341"/>
		<updated>2024-06-29T01:13:01Z</updated>

		<summary type="html">&lt;p&gt;Winkio: /* Networking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to C# Gamedev Wiki!&lt;br /&gt;
&lt;br /&gt;
This is a place to gather explanations and examples of systems that are used in game development. The goal is to provide explanations and samples that are code-first and are not dependent on a specific engine or framework (such as Godot, Unity, Unreal, etc.). Platform specific discussions are allowed and encouraged (such as how to do X on Windows, Mac, or Linux).  Pages will contain text, diagrams, and code samples in order to help explain concepts.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
*[[Game Loop]]&lt;br /&gt;
*[[Tickrate]]&lt;br /&gt;
*[[Framerate]]&lt;br /&gt;
&lt;br /&gt;
==Graphics==&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
&lt;br /&gt;
==Files and Databases==&lt;br /&gt;
*[[Local Directories]]&lt;br /&gt;
*Save Files&lt;br /&gt;
*User Settings&lt;br /&gt;
*Config Files&lt;br /&gt;
*Cloud Saves&lt;br /&gt;
&lt;br /&gt;
==Math==&lt;br /&gt;
===Statistics===&lt;br /&gt;
*[[Drop Rate]]&lt;br /&gt;
&lt;br /&gt;
==Multiplayer==&lt;br /&gt;
===General===&lt;br /&gt;
*[[Profile]]&lt;br /&gt;
*[[Messaging]]&lt;br /&gt;
*[[Matchmaking]]&lt;br /&gt;
*[[Rating]]&lt;br /&gt;
&lt;br /&gt;
===Networking===&lt;br /&gt;
*[[TCP]]&lt;br /&gt;
*[[UDP]]&lt;br /&gt;
*[[NAT Traversal]]&lt;br /&gt;
*[[Client Side Prediction]]&lt;br /&gt;
*[[Lockstep]]&lt;br /&gt;
*[[Rollback]]&lt;br /&gt;
&lt;br /&gt;
==Wiki Community==&lt;br /&gt;
*[[Site Administration]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
Getting started&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=340</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Main_Page&amp;diff=340"/>
		<updated>2024-06-29T01:02:42Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to C# Gamedev Wiki!&lt;br /&gt;
&lt;br /&gt;
This is a place to gather explanations and examples of systems that are used in game development. The goal is to provide explanations and samples that are code-first and are not dependent on a specific engine or framework (such as Godot, Unity, Unreal, etc.). Platform specific discussions are allowed and encouraged (such as how to do X on Windows, Mac, or Linux).  Pages will contain text, diagrams, and code samples in order to help explain concepts.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
*[[Game Loop]]&lt;br /&gt;
*[[Tickrate]]&lt;br /&gt;
*[[Framerate]]&lt;br /&gt;
&lt;br /&gt;
==Graphics==&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
&lt;br /&gt;
==Files and Databases==&lt;br /&gt;
*[[Local Directories]]&lt;br /&gt;
*Save Files&lt;br /&gt;
*User Settings&lt;br /&gt;
*Config Files&lt;br /&gt;
*Cloud Saves&lt;br /&gt;
&lt;br /&gt;
==Math==&lt;br /&gt;
===Statistics===&lt;br /&gt;
*[[Drop Rate]]&lt;br /&gt;
&lt;br /&gt;
==Multiplayer==&lt;br /&gt;
===General===&lt;br /&gt;
*[[Profile]]&lt;br /&gt;
*[[Messaging]]&lt;br /&gt;
*[[Matchmaking]]&lt;br /&gt;
*[[Rating]]&lt;br /&gt;
&lt;br /&gt;
===Networking===&lt;br /&gt;
*TCP&lt;br /&gt;
*UDP&lt;br /&gt;
*NAT Traversal&lt;br /&gt;
*Client Side Prediction&lt;br /&gt;
*Lockstep&lt;br /&gt;
*Rollback&lt;br /&gt;
&lt;br /&gt;
==Wiki Community==&lt;br /&gt;
*[[Site Administration]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
Getting started&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Category:Multiplayer&amp;diff=339</id>
		<title>Category:Multiplayer</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Category:Multiplayer&amp;diff=339"/>
		<updated>2024-06-29T00:54:41Z</updated>

		<summary type="html">&lt;p&gt;Winkio: Created page with &amp;quot;Category:Game&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Game]]&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Category:Rating&amp;diff=338</id>
		<title>Category:Rating</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Category:Rating&amp;diff=338"/>
		<updated>2024-06-29T00:54:13Z</updated>

		<summary type="html">&lt;p&gt;Winkio: Created page with &amp;quot;Category:Multiplayer&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Multiplayer]]&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=TrueSkill&amp;diff=337</id>
		<title>TrueSkill</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=TrueSkill&amp;diff=337"/>
		<updated>2024-06-29T00:54:00Z</updated>

		<summary type="html">&lt;p&gt;Winkio: Created page with &amp;quot;TrueSkill is a rating system originally developed by Microsoft Research used to determine the approximate skill rating of players in a multiplayer game.  ==External Links== *[https://trueskill.org/ Homepage] *[https://github.com/sublee/trueskill github] *[https://www.moserware.com/assets/computing-your-skill/The%20Math%20Behind%20TrueSkill.pdf Paper]  Category:Rating&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[TrueSkill]] is a [[rating]] system originally developed by Microsoft Research used to determine the approximate skill rating of players in a [[multiplayer]] game.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*[https://trueskill.org/ Homepage]&lt;br /&gt;
*[https://github.com/sublee/trueskill github]&lt;br /&gt;
*[https://www.moserware.com/assets/computing-your-skill/The%20Math%20Behind%20TrueSkill.pdf Paper]&lt;br /&gt;
&lt;br /&gt;
[[Category:Rating]]&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Category:Common_Templates&amp;diff=336</id>
		<title>Category:Common Templates</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Category:Common_Templates&amp;diff=336"/>
		<updated>2024-06-23T03:16:30Z</updated>

		<summary type="html">&lt;p&gt;Winkio: Created page with &amp;quot;Category:Templates&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Templates]]&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Template:T/piece/doc&amp;diff=335</id>
		<title>Template:T/piece/doc</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Template:T/piece/doc&amp;diff=335"/>
		<updated>2024-06-23T03:15:54Z</updated>

		<summary type="html">&lt;p&gt;Winkio: Created page with &amp;quot;;Description :Parameter piece for {{t|t}}, controls styling/showing of parameter fragments. ;See also :Template:T/piece on WoWWiki &amp;lt;noinclude&amp;gt;{{PAGENAME}}&amp;lt;/noinclude&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;;Description&lt;br /&gt;
:Parameter piece for {{t|t}}, controls styling/showing of parameter fragments.&lt;br /&gt;
;See also&lt;br /&gt;
:[[w:c:wow:Template:T/piece|Template:T/piece]] on WoWWiki&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Template documentation|{{PAGENAME}}]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Template:T/piece&amp;diff=334</id>
		<title>Template:T/piece</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Template:T/piece&amp;diff=334"/>
		<updated>2024-06-23T03:15:30Z</updated>

		<summary type="html">&lt;p&gt;Winkio: Created page with &amp;quot;{{#ifeq: {{{1|---}}}|---||&amp;amp;#124;&amp;lt;font color=&amp;quot;gray&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;amp;lt;{{{1}}}&amp;amp;gt;&amp;#039;&amp;#039;&amp;lt;/font&amp;gt;}}&amp;lt;noinclude&amp;gt; {{documentation}}Category:Common Templates&amp;lt;/noinclude&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#ifeq: {{{1|---}}}|---||&amp;amp;#124;&amp;lt;font color=&amp;quot;gray&amp;quot;&amp;gt;&#039;&#039;&amp;amp;lt;{{{1}}}&amp;amp;gt;&#039;&#039;&amp;lt;/font&amp;gt;}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}[[Category:Common Templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Template:T/doc&amp;diff=333</id>
		<title>Template:T/doc</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Template:T/doc&amp;diff=333"/>
		<updated>2024-06-23T03:14:15Z</updated>

		<summary type="html">&lt;p&gt;Winkio: Created page with &amp;quot;; Description : A template link with a variable number of example parameters (0-20), which can be used to show example inputs. : Utilises Template:T/piece.  ; Syntax : {{t|t|parameter1|parameter2|parameter3|parameter4|...|parameter20}}  ; Sample code : &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{t|HeroInfo}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; gives... : {{t|HeroInfo}} : &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{t|HeroInfo|Item1|Item2|Item3|Item4|Item5|...}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; gives... : {{t|HeroInfo|Item1|Item2|Item3|Item4|Item5|...}}  ; See...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; Description&lt;br /&gt;
: A template link with a variable number of example parameters (0-20), which can be used to show example inputs.&lt;br /&gt;
: Utilises [[Template:T/piece]].&lt;br /&gt;
&lt;br /&gt;
; Syntax&lt;br /&gt;
: {{t|t|parameter1|parameter2|parameter3|parameter4|...|parameter20}}&lt;br /&gt;
&lt;br /&gt;
; Sample code&lt;br /&gt;
: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{t|HeroInfo}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; gives...&lt;br /&gt;
: {{t|HeroInfo}}&lt;br /&gt;
: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{t|HeroInfo|Item1|Item2|Item3|Item4|Item5|...}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; gives...&lt;br /&gt;
: {{t|HeroInfo|Item1|Item2|Item3|Item4|Item5|...}}&lt;br /&gt;
&lt;br /&gt;
; See also&lt;br /&gt;
: [https://wowpedia.fandom.com/wiki/Template:T Template:T] on WoWWiki&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Template documentation|{{PAGENAME}}]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Template:T&amp;diff=332</id>
		<title>Template:T</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Template:T&amp;diff=332"/>
		<updated>2024-06-23T03:13:55Z</updated>

		<summary type="html">&lt;p&gt;Winkio: Created page with &amp;quot;&amp;lt;includeonly&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{&amp;lt;/nowiki&amp;gt;{{{1}}}{{t/piece|{{{2|---}}}}}{{t/piece|{{{3|---}}}}}{{t/piece|{{{4|---}}}}}{{t/piece|{{{5|---}}}}}{{t/piece|{{{6|---}}}}}{{t/piece|{{{7|---}}}}}{{t/piece|{{{8|---}}}}}{{t/piece|{{{9|---}}}}}{{t/piece|{{{10|---}}}}}{{t/piece|{{{11|---}}}}}{{t/piece|{{{12|---}}}}}{{t/piece|{{{13|---}}}}}{{t/piece|{{{14|---}}}}}{{t/piece|{{{15|---}}}}}{{t/piece|{{{16|---}}}}}{{t/piece|{{{17|---}}}}}{{t/piece|{{{18|---}}}}}{{t/piece...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{&amp;lt;/nowiki&amp;gt;[[Template:{{{1}}}|{{{1}}}]]{{t/piece|{{{2|---}}}}}{{t/piece|{{{3|---}}}}}{{t/piece|{{{4|---}}}}}{{t/piece|{{{5|---}}}}}{{t/piece|{{{6|---}}}}}{{t/piece|{{{7|---}}}}}{{t/piece|{{{8|---}}}}}{{t/piece|{{{9|---}}}}}{{t/piece|{{{10|---}}}}}{{t/piece|{{{11|---}}}}}{{t/piece|{{{12|---}}}}}{{t/piece|{{{13|---}}}}}{{t/piece|{{{14|---}}}}}{{t/piece|{{{15|---}}}}}{{t/piece|{{{16|---}}}}}{{t/piece|{{{17|---}}}}}{{t/piece|{{{18|---}}}}}{{t/piece|{{{19|---}}}}}{{t/piece|{{{20|---}}}}}{{t/piece|{{{21|---}}}}}&amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}[[Category:Common Templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Template:Anchor/doc&amp;diff=331</id>
		<title>Template:Anchor/doc</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Template:Anchor/doc&amp;diff=331"/>
		<updated>2024-06-23T03:13:29Z</updated>

		<summary type="html">&lt;p&gt;Winkio: Created page with &amp;quot;; Description : This template is used to create a hidden anchor that appears as a section on the table of contents but does not render on the page.  ; Syntax : Type {{t|anchor|title|level}} : title - header title : level - 1 - 6 (header level, defaults to 2)  ; Usage example : Code: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{anchor|My Section|2}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; : Result: {{anchor|My Section|2}}  &amp;lt;noinclude&amp;gt;{{PAGENAME}}&amp;lt;/noinclude&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; Description&lt;br /&gt;
: This template is used to create a hidden anchor that appears as a section on the table of contents but does not render on the page.&lt;br /&gt;
&lt;br /&gt;
; Syntax&lt;br /&gt;
: Type {{t|anchor|title|level}}&lt;br /&gt;
: title - header title&lt;br /&gt;
: level - 1 - 6 (header level, defaults to 2)&lt;br /&gt;
&lt;br /&gt;
; Usage example&lt;br /&gt;
: Code: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{anchor|My Section|2}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Result:&lt;br /&gt;
{{anchor|My Section|2}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Template documentation|{{PAGENAME}}]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Template:Anchor&amp;diff=330</id>
		<title>Template:Anchor</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Template:Anchor&amp;diff=330"/>
		<updated>2024-06-23T03:13:11Z</updated>

		<summary type="html">&lt;p&gt;Winkio: Created page with &amp;quot;&amp;lt;includeonly&amp;gt;&amp;lt;h{{{2|2}}} class=&amp;quot;anchor-hidden&amp;quot;&amp;gt;{{{1|Anchor}}}&amp;lt;/h{{{2|2}}}&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{documentation}}Category:Common Templates&amp;lt;/noinclude&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;h{{{2|2}}} class=&amp;quot;anchor-hidden&amp;quot;&amp;gt;{{{1|Anchor}}}&amp;lt;/h{{{2|2}}}&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{documentation}}[[Category:Common Templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Category:Templates&amp;diff=329</id>
		<title>Category:Templates</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Category:Templates&amp;diff=329"/>
		<updated>2024-06-23T03:11:48Z</updated>

		<summary type="html">&lt;p&gt;Winkio: Created page with &amp;quot;Category:CSharp Gamedev Wiki&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CSharp Gamedev Wiki]]&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Category:Template_documentation&amp;diff=328</id>
		<title>Category:Template documentation</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Category:Template_documentation&amp;diff=328"/>
		<updated>2024-06-23T03:11:13Z</updated>

		<summary type="html">&lt;p&gt;Winkio: Created page with &amp;quot;Category:Templates&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Templates]]&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Template:Documentation&amp;diff=327</id>
		<title>Template:Documentation</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Template:Documentation&amp;diff=327"/>
		<updated>2024-06-23T03:10:52Z</updated>

		<summary type="html">&lt;p&gt;Winkio: Created page with &amp;quot;&amp;lt;includeonly&amp;gt;{| class=&amp;quot;article-table&amp;quot; style=&amp;quot;width:100%;&amp;quot; |- style=&amp;quot;font-size:18px;&amp;quot; ! Template documentation follows |- | &amp;#039;&amp;#039;Note: the template above may sometimes be partially or fully invisible.&amp;#039;&amp;#039; |- | Visit Template:{{PAGENAMEE}}/doc to edit this documentation. (How does this work?) |} &amp;lt;div style=&amp;quot;margin:0 1em;&amp;quot;&amp;gt; {{{{PAGENAME}}/doc}}&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{documentation}}Category:Template documentation&amp;lt;/noinclude&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{| class=&amp;quot;article-table&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-size:18px;&amp;quot;&lt;br /&gt;
! Template documentation follows&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Note: the template above may sometimes be partially or fully invisible.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Visit [[Template:{{PAGENAMEE}}/doc]] to edit this documentation. ([[Template:Documentation|How does this work?]])&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{{{PAGENAME}}/doc}}&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{documentation}}[[Category:Template documentation]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=MediaWiki:Common.css&amp;diff=326</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=MediaWiki:Common.css&amp;diff=326"/>
		<updated>2024-06-23T00:37:18Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* font for title */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Press+Start+2P&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
/* default vector theme */&lt;br /&gt;
:root {&lt;br /&gt;
	--layout-topbar-height: 35px; /* height of topbar */&lt;br /&gt;
	--layout-sidespace: 24px; /* whitespace width on most left and most right */&lt;br /&gt;
	--layout-content-width: minmax(0,1fr);&lt;br /&gt;
	&lt;br /&gt;
	--font-size: 14px;&lt;br /&gt;
	--line-height: 24px;&lt;br /&gt;
	--font-size-s: 12px;&lt;br /&gt;
	--line-height-s: 20px;&lt;br /&gt;
	--font-size-xs: 10px;&lt;br /&gt;
	--line-height-xs: 16px;&lt;br /&gt;
	--font-size-l: 16px;&lt;br /&gt;
	--line-height-l: 24px;&lt;br /&gt;
	&lt;br /&gt;
	--theme-text-color: #fff;&lt;br /&gt;
	--theme-site-background: #141;&lt;br /&gt;
	--theme-header-background: #151;&lt;br /&gt;
	&lt;br /&gt;
	--mw-page-container-side-padding: 1.5em;&lt;br /&gt;
	&lt;br /&gt;
	--theme-body-bg: #f8f9fa;&lt;br /&gt;
	--theme-body-color: #202122;&lt;br /&gt;
	--theme-body-link-color: #3366cc;&lt;br /&gt;
	--theme-header-bg: #fff;&lt;br /&gt;
	--theme-header-color: #202122;&lt;br /&gt;
	--theme-header-link-color: #3366cc;&lt;br /&gt;
	&lt;br /&gt;
	--theme-content-bg: #fff;&lt;br /&gt;
	--theme-heading-color: #000;&lt;br /&gt;
	--theme-code-bg: #f8f9fa;&lt;br /&gt;
	--theme-code-border: 1px solid #eaecf0;&lt;br /&gt;
	--theme-code-color: #000;&lt;br /&gt;
	&lt;br /&gt;
	--theme-icon-filter: invert(100%);&lt;br /&gt;
	--theme-catlinks-bg: #f8f9fa;&lt;br /&gt;
	--theme-catlinks-border: 1px solid #a2a9b1;&lt;br /&gt;
	&lt;br /&gt;
	--theme-sidebar-bg: #fff;&lt;br /&gt;
	--theme-sidebar-color: #202122;&lt;br /&gt;
	--theme-sidebar-link-color: #3366cc;&lt;br /&gt;
	--theme-pinnable-header-label-color: #54595d;&lt;br /&gt;
	--theme-pinnable-header-link-color: #3366cc;&lt;br /&gt;
	--theme-pinnable-header-link-hover-color: #447ff5;&lt;br /&gt;
	--theme-pinnable-list-heading-color: #54595d;&lt;br /&gt;
	--theme-pinnable-list-link-color: #3366cc;&lt;br /&gt;
	&lt;br /&gt;
	--theme-main-menu-bg: #f8f9fa;&lt;br /&gt;
	&lt;br /&gt;
	--theme-toc-bg: #fff;&lt;br /&gt;
	--theme-toc-link-color: #3366cc;&lt;br /&gt;
	--theme-toc-active-parent-link-color: #202122;&lt;br /&gt;
	--theme-toc-active-link-color: #202122;&lt;br /&gt;
	&lt;br /&gt;
	--theme-dropdown-bg: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-footer-color: #202122;&lt;br /&gt;
	&lt;br /&gt;
	/* syntax highlighting colors, original from cs2022dark.css highlight.js theme */&lt;br /&gt;
	--theme-hljs-bg: #1e1e1e;&lt;br /&gt;
	--theme-hljs-unset: #dbdbdb;&lt;br /&gt;
	--theme-hljs-comment: #57a64a;&lt;br /&gt;
	--theme-hljs-doctag: #556b2f;&lt;br /&gt;
	--theme-hljs-keyword: #569cd6;&lt;br /&gt;
	--theme-hljs-type: #4ec9b0;&lt;br /&gt;
	--theme-hljs-function: #dcdcaa;&lt;br /&gt;
	--theme-hljs-string: #d69d85;&lt;br /&gt;
	--theme-hljs-number: #b5cea8;&lt;br /&gt;
	--theme-hljs-variable: #9cdcfe;&lt;br /&gt;
	--theme-hljs-symbol: #d8a0df;&lt;br /&gt;
	--theme-hljs-regexp: #9a5334;&lt;br /&gt;
	--theme-hljs-meta: #9b9b9b;&lt;br /&gt;
	--theme-hljs-section: gold;&lt;br /&gt;
	--theme-hljs-attribute: #92caf4;&lt;br /&gt;
	--theme-hljs-bullet: #d7ba7d;&lt;br /&gt;
	--theme-hljs-selector: #d7ba7d;&lt;br /&gt;
	--theme-hljs-addition: #144212;&lt;br /&gt;
	--theme-hljs-deletion: #600;&lt;br /&gt;
	--theme-hljs-tsql-symbol: #dcdcdc;&lt;br /&gt;
	--theme-hljs-tsql-string: #cb4141;&lt;br /&gt;
	--theme-hljs-tsql-built_in: #c975d5;&lt;br /&gt;
	--theme-hljs-tsql-sp: #b3725b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.vector-feature-zebra-design-disabled .mw-page-container {&lt;br /&gt;
	padding-left: var(--mw-page-container-side-padding);&lt;br /&gt;
    padding-right: var(--mw-page-container-side-padding);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-logo,&lt;br /&gt;
.vector-header-start a:visited {&lt;br /&gt;
	color: var(--theme-header-link-color);&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-container:before {&lt;br /&gt;
	content: &amp;quot;GAME DEV&amp;quot;;&lt;br /&gt;
	font-size: 20px;&lt;br /&gt;
	font-family: &amp;quot;Press Start 2P&amp;quot;, system-ui;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
	line-height: 28px;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen {&lt;br /&gt;
	.vector-header-container,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-header-container {&lt;br /&gt;
		box-shadow: 0 0 16px #000;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-page-container,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .mw-page-container {&lt;br /&gt;
		box-shadow: 0 8px 16px #000;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-sticky-header-container,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-sticky-header-container {&lt;br /&gt;
		box-shadow: none;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-feature-zebra-design-disabled body {&lt;br /&gt;
	   background: var(--theme-body-bg);&lt;br /&gt;
	   color: var(--theme-body-color);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .vector-feature-zebra-design-disabled .vector-header-container {&lt;br /&gt;
    	background: var(--theme-header-bg);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .vector-sticky-header-context-bar-primary,&lt;br /&gt;
    .vector-feature-zebra-design-disabled .vector-sticky-header-context-bar-primary {&lt;br /&gt;
    	color: var(--theme-header-color);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .vector-header-container #pt-userpage-2 a:not(.mw-selflink) {&lt;br /&gt;
    	color: var(--theme-header-link-color);&lt;br /&gt;
    }&lt;br /&gt;
	&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-dropdown .vector-dropdown-content {&lt;br /&gt;
		background: var(--theme-dropdown-bg);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	 .vector-user-menu-logged-in .vector-dropdown-label::after {&lt;br /&gt;
	 	filter: var(--theme-icon-filter);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-pinnable-header-label,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-header-label,&lt;br /&gt;
	 .vector-pinnable-header-toggle-button::before,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-header-toggle-button::before,&lt;br /&gt;
	 .vector-pinnable-header-toggle-button::after,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-header-toggle-button::after {&lt;br /&gt;
	 	color: var(--theme-pinnable-header-label-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-pinnable-header-toggle-button,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-header-toggle-button {&lt;br /&gt;
	 	color: var(--theme-pinnable-header-link-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-pinnable-header-toggle-button:hover,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-header-toggle-button:hover {&lt;br /&gt;
	 	color: var(--theme-pinnable-header-link-hover-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-element .vector-menu-heading,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-dropdown-content .vector-menu-heading {&lt;br /&gt;
	 	color: var(--theme-pinnable-list-heading-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-element .mw-list-item a,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-dropdown-content .mw-list-item a,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-dropdown .mw-list-item a:not(.mw-selflink),&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-element .mw-list-item a:not(.mw-selflink):visited,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-dropdown-content .mw-list-item a:not(.mw-selflink):visited {&lt;br /&gt;
	 	color: var(--theme-pinnable-list-link-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	.mw-page-container,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .mw-page-container {&lt;br /&gt;
		background: var(--theme-content-bg);&lt;br /&gt;
	}&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-main-menu,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-main-menu,&lt;br /&gt;
	 #vector-main-menu-pinned-container .vector-main-menu,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled #vector-main-menu-pinned-container .vector-main-menu {&lt;br /&gt;
	 	background: var(--theme-main-menu-bg);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-toc,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-toc {&lt;br /&gt;
	 	background: var(--theme-toc-bg);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-toc .vector-toc-link,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-toc .vector-toc-link {&lt;br /&gt;
	 	color: var(--theme-toc-link-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-toc .vector-toc-level-1-active:not(.vector-toc-list-item-active) &amp;gt; .vector-toc-link {&lt;br /&gt;
	 	color: var(--theme-toc-active-parent-link-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-toc .vector-toc-list-item-active &amp;gt; .vector-toc-link,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-toc .vector-toc-level-1-active:not(.vector-toc-list-item-expanded) &amp;gt; .vector-toc-link,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-toc .vector-toc-level-1-active:not(.vector-toc-list-item-active) &amp;gt; .vector-toc-link,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-toc .vector-toc-list-item-active.vector-toc-level-1-active &amp;gt; .vector-toc-link {&lt;br /&gt;
		color: var(--theme-toc-active-link-color);&lt;br /&gt;
	}&lt;br /&gt;
	 &lt;br /&gt;
	.vector-header-container a {&lt;br /&gt;
	 	color: var(--theme-header-link-color);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-menu-tabs .mw-list-item.selected a, &lt;br /&gt;
	.vector-menu-tabs .mw-list-item.selected a:visited {&lt;br /&gt;
		color: var(--theme-body-color);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
		color: var(--theme-heading-color);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	a {&lt;br /&gt;
	 	color: var(--theme-body-link-color);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	ul {&lt;br /&gt;
		list-style: disc;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	pre, code, .mw-code {&lt;br /&gt;
		background: var(--theme-code-bg);&lt;br /&gt;
		border: var(--theme-code-border);&lt;br /&gt;
		color: var(--theme-code-color);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	table.zebra tr.odd {&lt;br /&gt;
		background-color: #eee;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.catlinks {&lt;br /&gt;
		background-color: var(--theme-catlinks-bg);&lt;br /&gt;
		border: var(--theme-catlinks-border);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.cdx-button:enabled, &lt;br /&gt;
	.cdx-button.cdx-button--fake-button--enabled {&lt;br /&gt;
		color: var(--theme-body-color);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-settings .cdx-button {&lt;br /&gt;
		background-color: var(--theme-sidebar-bg);&lt;br /&gt;
		color: var(--theme-body-color);&lt;br /&gt;
		border-color: #a2a9b1;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-settings .cdx-button:hover {&lt;br /&gt;
		background-color: var(--theme-dropdown-bg);&lt;br /&gt;
		color: var(--theme-body-color);&lt;br /&gt;
		cursor: pointer;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-feature-zebra-design-disabled #vector-page-tools-pinned-container .vector-page-tools::after {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.mw-footer li {&lt;br /&gt;
		color: var(--theme-footer-color);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:1000px) {&lt;br /&gt;
	:root {&lt;br /&gt;
		--mw-page-container-side-padding: 2.75em;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	#vector-toc-pinned-container .vector-toc::after,&lt;br /&gt;
	.vector-feature-zebra-design-disabled #vector-toc-pinned-container .vector-toc::after {&lt;br /&gt;
		background: none;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.mw-footer-container,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .mw-footer-container {&lt;br /&gt;
		grid-row-start: footer;&lt;br /&gt;
		grid-row-end: footer;&lt;br /&gt;
		grid-column-start: pageContent;&lt;br /&gt;
		grid-column-end: pageContent;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-icon {&lt;br /&gt;
		filter: var(--theme-icon-filter);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:1200px) {&lt;br /&gt;
	:root {&lt;br /&gt;
		--mw-page-container-side-padding: 3.25em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-page-container-inner::before {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
    display: block;&lt;br /&gt;
	grid-column-start: toc;&lt;br /&gt;
    grid-column-end: toc;&lt;br /&gt;
    grid-row-start: siteNotice;&lt;br /&gt;
    grid-row-end: footer;&lt;br /&gt;
    margin-left: calc(-1*var(--mw-page-container-side-padding));&lt;br /&gt;
	background: var(--theme-sidebar-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled.vector-toc-not-available .mw-page-container-inner::before,&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled .vector-sidebar-container-no-toc ~ .mw-page-container-inner::before,&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled.vector-feature-toc-pinned-clientpref-0 .mw-page-container-inner::before {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-main-menu-action-opt-out {&lt;br /&gt;
	display: none;	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-footer-container {&lt;br /&gt;
	grid-row-start: footer;&lt;br /&gt;
	grid-row-end: footer;&lt;br /&gt;
	grid-column-start: pageContent;&lt;br /&gt;
	grid-column-end: pageContent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled.vector-toc-not-available .mw-footer-container,&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled .vector-sidebar-container-no-toc ~ .mw-footer-container,&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled.vector-feature-toc-pinned-clientpref-0 .mw-footer-container {&lt;br /&gt;
	grid-column-start: toc;&lt;br /&gt;
	grid-column-end: pageContent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* syntax highlighting colors */&lt;br /&gt;
.hljs{background:var(--theme-hljs-bg)}&lt;br /&gt;
.hljs,.hljs-operator,.hljs-property,.hljs-punctuation,.hljs-subst,.hljs-unset{color:var(--theme-hljs-unset)}&lt;br /&gt;
.hljs-quote,.hljs-comment{color:var(--theme-hljs-comment)}&lt;br /&gt;
.hljs-doctag{color:var(--theme-hljs-doctag)}&lt;br /&gt;
.hljs-built_in,.hljs-name,.hljs-literal,.hljs-link,.hljs-meta-keyword,.hljs-keyword{color:var(--theme-hljs-keyword)}&lt;br /&gt;
.hljs-title,.hljs-type{color:var(--theme-hljs-type)}&lt;br /&gt;
.hljs-title.function_{color:var(--theme-hljs-function)}&lt;br /&gt;
.hljs-meta-string,.hljs-string{color:var(--theme-hljs-string)}&lt;br /&gt;
.hljs-number{color:var(--theme-hljs-number)}&lt;br /&gt;
.hljs-builtin-name,.hljs-formula,.hljs-params,.hljs-template-variable,.hljs-variable{color:var(--theme-hljs-variable)}&lt;br /&gt;
.hljs-symbol{color:var(--theme-hljs-symbol)}&lt;br /&gt;
.hljs-template-tag,.hljs-regexp{color:var(--theme-hljs-regexp)}&lt;br /&gt;
.hljs-tag,.hljs-tsql-literal,.hljs-meta{color:var(--theme-hljs-meta)}&lt;br /&gt;
.hljs-section{color:var(--theme-hljs-section)}&lt;br /&gt;
.hljs-attr,.hljs-attribute{color:var(--theme-hljs-attribute)}&lt;br /&gt;
.hljs-bullet{color:var(--theme-hljs-bullet)}&lt;br /&gt;
.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:var(--theme-hljs-selector)}&lt;br /&gt;
.hljs-addition{background-color:var(--theme-hljs-addition)}&lt;br /&gt;
.hljs-deletion{background-color:var(--theme-hljs-deletion)}&lt;br /&gt;
.hljs-tsql-symbol{color:var(--theme-hljs-tsql-symbol)}&lt;br /&gt;
.hljs-tsql-string{color:var(--theme-hljs-tsql-string)}&lt;br /&gt;
.hljs-tsql-built_in{color:var(--theme-hljs-tsql-built_in)}&lt;br /&gt;
.hljs-tsql-sp{color:var(--theme-hljs-tsql-sp)}&lt;br /&gt;
&lt;br /&gt;
/* light vector theme */&lt;br /&gt;
:root {&lt;br /&gt;
	--theme-body-bg: #072207;&lt;br /&gt;
	--theme-body-color: #202122;&lt;br /&gt;
	--theme-body-link-color: #3366cc;&lt;br /&gt;
	--theme-header-bg: &lt;br /&gt;
		repeating-linear-gradient(to top, #0002, #0000 1em), &lt;br /&gt;
		repeating-linear-gradient(to right, #0002, #0000 1em), &lt;br /&gt;
		radial-gradient(circle at left, #141, #151 10%, #151 40%, #113811);&lt;br /&gt;
	--theme-header-color: #fff;&lt;br /&gt;
	--theme-header-icon-filter: invert(100%);&lt;br /&gt;
	--theme-header-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-content-bg: #fff;&lt;br /&gt;
	--theme-heading-color: #000;&lt;br /&gt;
	--theme-code-bg: #f8f9fa;&lt;br /&gt;
	--theme-code-border: 1px solid #eaecf0;&lt;br /&gt;
	--theme-code-color: #000;&lt;br /&gt;
	&lt;br /&gt;
	--theme-catlinks-bg: #f8f9fa;&lt;br /&gt;
	--theme-catlinks-border: 1px solid #a2a9b1;&lt;br /&gt;
	&lt;br /&gt;
	--theme-sidebar-bg: #141;&lt;br /&gt;
	--theme-sidebar-color: #fff;&lt;br /&gt;
	--theme-sidebar-link-color: #ddf;&lt;br /&gt;
	--theme-pinnable-header-label-color: #ddd;&lt;br /&gt;
	--theme-pinnable-header-link-color: #fafff4;&lt;br /&gt;
	--theme-pinnable-header-link-hover-color: #fff;&lt;br /&gt;
	--theme-pinnable-list-heading-color: #eee;&lt;br /&gt;
	--theme-pinnable-list-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-main-menu-bg: transparent;&lt;br /&gt;
	&lt;br /&gt;
	--theme-toc-bg: transparent;&lt;br /&gt;
	--theme-toc-link-color: #fafff4;&lt;br /&gt;
	--theme-toc-active-parent-link-color: #fafafa;&lt;br /&gt;
	--theme-toc-active-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-dropdown-bg: #151;&lt;br /&gt;
	&lt;br /&gt;
	--theme-footer-color: #202122;&lt;br /&gt;
	&lt;br /&gt;
	/* syntax highlighting colors */&lt;br /&gt;
	--theme-hljs-bg: #f7f7f7;&lt;br /&gt;
	--theme-hljs-unset: #000;&lt;br /&gt;
	--theme-hljs-comment: #080;&lt;br /&gt;
	--theme-hljs-doctag: #556b2f;&lt;br /&gt;
	--theme-hljs-keyword: #00f;&lt;br /&gt;
	--theme-hljs-type: #2b91af;&lt;br /&gt;
	--theme-hljs-function: #74531f;&lt;br /&gt;
	--theme-hljs-string: #a31515;&lt;br /&gt;
	--theme-hljs-number: #000;&lt;br /&gt;
	--theme-hljs-variable: #9cdcfe;&lt;br /&gt;
	--theme-hljs-symbol: #d8a0df;&lt;br /&gt;
	--theme-hljs-regexp: #9a5334;&lt;br /&gt;
	--theme-hljs-meta: #9b9b9b;&lt;br /&gt;
	--theme-hljs-section: gold;&lt;br /&gt;
	--theme-hljs-attribute: #2b91af;&lt;br /&gt;
	--theme-hljs-bullet: #d7ba7d;&lt;br /&gt;
	--theme-hljs-selector: #2b91af;&lt;br /&gt;
	--theme-hljs-addition: #144212;&lt;br /&gt;
	--theme-hljs-deletion: #600;&lt;br /&gt;
	--theme-hljs-tsql-symbol: #dcdcdc;&lt;br /&gt;
	--theme-hljs-tsql-string: #cb4141;&lt;br /&gt;
	--theme-hljs-tsql-built_in: #c975d5;&lt;br /&gt;
	--theme-hljs-tsql-sp: #b3725b;&lt;br /&gt;
}&lt;br /&gt;
/* light vector theme body colors (default) */&lt;br /&gt;
.mw-content-container {&lt;br /&gt;
	--theme-icon-filter: none;&lt;br /&gt;
	&lt;br /&gt;
	--theme-pinnable-header-label-color: #54595d;&lt;br /&gt;
	--theme-pinnable-header-link-color: #3366cc;&lt;br /&gt;
	--theme-pinnable-header-link-hover-color: #447ff5;&lt;br /&gt;
	--theme-pinnable-list-heading-color: #54595d;&lt;br /&gt;
	--theme-pinnable-list-link-color: #3366cc;&lt;br /&gt;
	&lt;br /&gt;
	--theme-dropdown-bg: #fff;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=MediaWiki:Common.css&amp;diff=325</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=MediaWiki:Common.css&amp;diff=325"/>
		<updated>2024-06-23T00:36:43Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* font for title */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Press+Start+2P&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
/* default vector theme */&lt;br /&gt;
:root {&lt;br /&gt;
	--layout-topbar-height: 35px; /* height of topbar */&lt;br /&gt;
	--layout-sidespace: 24px; /* whitespace width on most left and most right */&lt;br /&gt;
	--layout-content-width: minmax(0,1fr);&lt;br /&gt;
	&lt;br /&gt;
	--font-size: 14px;&lt;br /&gt;
	--line-height: 24px;&lt;br /&gt;
	--font-size-s: 12px;&lt;br /&gt;
	--line-height-s: 20px;&lt;br /&gt;
	--font-size-xs: 10px;&lt;br /&gt;
	--line-height-xs: 16px;&lt;br /&gt;
	--font-size-l: 16px;&lt;br /&gt;
	--line-height-l: 24px;&lt;br /&gt;
	&lt;br /&gt;
	--theme-text-color: #fff;&lt;br /&gt;
	--theme-site-background: #141;&lt;br /&gt;
	--theme-header-background: #151;&lt;br /&gt;
	&lt;br /&gt;
	--mw-page-container-side-padding: 1.5em;&lt;br /&gt;
	&lt;br /&gt;
	--theme-body-bg: #f8f9fa;&lt;br /&gt;
	--theme-body-color: #202122;&lt;br /&gt;
	--theme-body-link-color: #3366cc;&lt;br /&gt;
	--theme-header-bg: #fff;&lt;br /&gt;
	--theme-header-color: #202122;&lt;br /&gt;
	--theme-header-link-color: #3366cc;&lt;br /&gt;
	&lt;br /&gt;
	--theme-content-bg: #fff;&lt;br /&gt;
	--theme-heading-color: #000;&lt;br /&gt;
	--theme-code-bg: #f8f9fa;&lt;br /&gt;
	--theme-code-border: 1px solid #eaecf0;&lt;br /&gt;
	--theme-code-color: #000;&lt;br /&gt;
	&lt;br /&gt;
	--theme-icon-filter: invert(100%);&lt;br /&gt;
	--theme-catlinks-bg: #f8f9fa;&lt;br /&gt;
	--theme-catlinks-border: 1px solid #a2a9b1;&lt;br /&gt;
	&lt;br /&gt;
	--theme-sidebar-bg: #fff;&lt;br /&gt;
	--theme-sidebar-color: #202122;&lt;br /&gt;
	--theme-sidebar-link-color: #3366cc;&lt;br /&gt;
	--theme-pinnable-header-label-color: #54595d;&lt;br /&gt;
	--theme-pinnable-header-link-color: #3366cc;&lt;br /&gt;
	--theme-pinnable-header-link-hover-color: #447ff5;&lt;br /&gt;
	--theme-pinnable-list-heading-color: #54595d;&lt;br /&gt;
	--theme-pinnable-list-link-color: #3366cc;&lt;br /&gt;
	&lt;br /&gt;
	--theme-main-menu-bg: #f8f9fa;&lt;br /&gt;
	&lt;br /&gt;
	--theme-toc-bg: #fff;&lt;br /&gt;
	--theme-toc-link-color: #3366cc;&lt;br /&gt;
	--theme-toc-active-parent-link-color: #202122;&lt;br /&gt;
	--theme-toc-active-link-color: #202122;&lt;br /&gt;
	&lt;br /&gt;
	--theme-dropdown-bg: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-footer-color: #202122;&lt;br /&gt;
	&lt;br /&gt;
	/* syntax highlighting colors, original from cs2022dark.css highlight.js theme */&lt;br /&gt;
	--theme-hljs-bg: #1e1e1e;&lt;br /&gt;
	--theme-hljs-unset: #dbdbdb;&lt;br /&gt;
	--theme-hljs-comment: #57a64a;&lt;br /&gt;
	--theme-hljs-doctag: #556b2f;&lt;br /&gt;
	--theme-hljs-keyword: #569cd6;&lt;br /&gt;
	--theme-hljs-type: #4ec9b0;&lt;br /&gt;
	--theme-hljs-function: #dcdcaa;&lt;br /&gt;
	--theme-hljs-string: #d69d85;&lt;br /&gt;
	--theme-hljs-number: #b5cea8;&lt;br /&gt;
	--theme-hljs-variable: #9cdcfe;&lt;br /&gt;
	--theme-hljs-symbol: #d8a0df;&lt;br /&gt;
	--theme-hljs-regexp: #9a5334;&lt;br /&gt;
	--theme-hljs-meta: #9b9b9b;&lt;br /&gt;
	--theme-hljs-section: gold;&lt;br /&gt;
	--theme-hljs-attribute: #92caf4;&lt;br /&gt;
	--theme-hljs-bullet: #d7ba7d;&lt;br /&gt;
	--theme-hljs-selector: #d7ba7d;&lt;br /&gt;
	--theme-hljs-addition: #144212;&lt;br /&gt;
	--theme-hljs-deletion: #600;&lt;br /&gt;
	--theme-hljs-tsql-symbol: #dcdcdc;&lt;br /&gt;
	--theme-hljs-tsql-string: #cb4141;&lt;br /&gt;
	--theme-hljs-tsql-built_in: #c975d5;&lt;br /&gt;
	--theme-hljs-tsql-sp: #b3725b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.vector-feature-zebra-design-disabled .mw-page-container {&lt;br /&gt;
	padding-left: var(--mw-page-container-side-padding);&lt;br /&gt;
    padding-right: var(--mw-page-container-side-padding);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-logo,&lt;br /&gt;
.vector-header-start a:visited {&lt;br /&gt;
	color: var(--theme-header-link-color);&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-container:before {&lt;br /&gt;
	content: &amp;quot;GAME DEV&amp;quot;;&lt;br /&gt;
	font-size: 20px;&lt;br /&gt;
	font-family: &amp;quot;Press Start 2P&amp;quot;, system-ui;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
	line-height: 28px;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen {&lt;br /&gt;
	.vector-header-container,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-header-container {&lt;br /&gt;
		box-shadow: 0 0 16px #000;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-page-container,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .mw-page-container {&lt;br /&gt;
		box-shadow: 0 8px 16px #000;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-sticky-header-container,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-sticky-header-container {&lt;br /&gt;
		box-shadow: none;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-feature-zebra-design-disabled body {&lt;br /&gt;
	   background: var(--theme-body-bg);&lt;br /&gt;
	   color: var(--theme-body-color);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .vector-feature-zebra-design-disabled .vector-header-container {&lt;br /&gt;
    	background: var(--theme-header-bg);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .vector-sticky-header-context-bar-primary,&lt;br /&gt;
    .vector-feature-zebra-design-disabled .vector-sticky-header-context-bar-primary {&lt;br /&gt;
    	color: var(--theme-header-color);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .vector-header-container #pt-userpage-2 a:not(.mw-selflink) {&lt;br /&gt;
    	color: var(--theme-header-link-color);&lt;br /&gt;
    }&lt;br /&gt;
	&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-dropdown .vector-dropdown-content {&lt;br /&gt;
		background: var(--theme-dropdown-bg);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	 .vector-user-menu-logged-in .vector-dropdown-label::after {&lt;br /&gt;
	 	filter: var(--theme-icon-filter);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-pinnable-header-label,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-header-label,&lt;br /&gt;
	 .vector-pinnable-header-toggle-button::before,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-header-toggle-button::before,&lt;br /&gt;
	 .vector-pinnable-header-toggle-button::after,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-header-toggle-button::after {&lt;br /&gt;
	 	color: var(--theme-pinnable-header-label-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-pinnable-header-toggle-button,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-header-toggle-button {&lt;br /&gt;
	 	color: var(--theme-pinnable-header-link-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-pinnable-header-toggle-button:hover,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-header-toggle-button:hover {&lt;br /&gt;
	 	color: var(--theme-pinnable-header-link-hover-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-element .vector-menu-heading,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-dropdown-content .vector-menu-heading {&lt;br /&gt;
	 	color: var(--theme-pinnable-list-heading-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-element .mw-list-item a,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-dropdown-content .mw-list-item a,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-dropdown .mw-list-item a:not(.mw-selflink),&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-element .mw-list-item a:not(.mw-selflink):visited,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-dropdown-content .mw-list-item a:not(.mw-selflink):visited {&lt;br /&gt;
	 	color: var(--theme-pinnable-list-link-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	.mw-page-container,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .mw-page-container {&lt;br /&gt;
		background: var(--theme-content-bg);&lt;br /&gt;
	}&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-main-menu,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-main-menu,&lt;br /&gt;
	 #vector-main-menu-pinned-container .vector-main-menu,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled #vector-main-menu-pinned-container .vector-main-menu {&lt;br /&gt;
	 	background: var(--theme-main-menu-bg);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-toc,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-toc {&lt;br /&gt;
	 	background: var(--theme-toc-bg);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-toc .vector-toc-link,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-toc .vector-toc-link {&lt;br /&gt;
	 	color: var(--theme-toc-link-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-toc .vector-toc-level-1-active:not(.vector-toc-list-item-active) &amp;gt; .vector-toc-link {&lt;br /&gt;
	 	color: var(--theme-toc-active-parent-link-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-toc .vector-toc-list-item-active &amp;gt; .vector-toc-link,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-toc .vector-toc-level-1-active:not(.vector-toc-list-item-expanded) &amp;gt; .vector-toc-link,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-toc .vector-toc-level-1-active:not(.vector-toc-list-item-active) &amp;gt; .vector-toc-link,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-toc .vector-toc-list-item-active.vector-toc-level-1-active &amp;gt; .vector-toc-link {&lt;br /&gt;
		color: var(--theme-toc-active-link-color);&lt;br /&gt;
	}&lt;br /&gt;
	 &lt;br /&gt;
	.vector-header-container a {&lt;br /&gt;
	 	color: var(--theme-header-link-color);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-menu-tabs .mw-list-item.selected a, &lt;br /&gt;
	.vector-menu-tabs .mw-list-item.selected a:visited {&lt;br /&gt;
		color: var(--theme-body-color);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
		color: var(--theme-heading-color);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	a {&lt;br /&gt;
	 	color: var(--theme-body-link-color);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	ul {&lt;br /&gt;
		list-style: disc;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	pre, code, .mw-code {&lt;br /&gt;
		background: var(--theme-code-bg);&lt;br /&gt;
		border: var(--theme-code-border);&lt;br /&gt;
		color: var(--theme-code-color);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	table.zebra tr.odd {&lt;br /&gt;
		background-color: #eee;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.catlinks {&lt;br /&gt;
		background-color: var(--theme-catlinks-bg);&lt;br /&gt;
		border: var(--theme-catlinks-border);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.cdx-button:enabled, &lt;br /&gt;
	.cdx-button.cdx-button--fake-button--enabled {&lt;br /&gt;
		color: var(--theme-body-color);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-settings .cdx-button {&lt;br /&gt;
		background-color: var(--theme-sidebar-bg);&lt;br /&gt;
		color: var(--theme-body-color);&lt;br /&gt;
		border-color: #a2a9b1;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-settings .cdx-button:hover {&lt;br /&gt;
		background-color: var(--theme-dropdown-bg);&lt;br /&gt;
		color: var(--theme-body-color);&lt;br /&gt;
		cursor: pointer;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-pinned-container .vector-page-tools::after {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.mw-footer li {&lt;br /&gt;
		color: var(--theme-footer-color);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:1000px) {&lt;br /&gt;
	:root {&lt;br /&gt;
		--mw-page-container-side-padding: 2.75em;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	#vector-toc-pinned-container .vector-toc::after,&lt;br /&gt;
	.vector-feature-zebra-design-disabled #vector-toc-pinned-container .vector-toc::after {&lt;br /&gt;
		background: none;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.mw-footer-container,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .mw-footer-container {&lt;br /&gt;
		grid-row-start: footer;&lt;br /&gt;
		grid-row-end: footer;&lt;br /&gt;
		grid-column-start: pageContent;&lt;br /&gt;
		grid-column-end: pageContent;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-icon {&lt;br /&gt;
		filter: var(--theme-icon-filter);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:1200px) {&lt;br /&gt;
	:root {&lt;br /&gt;
		--mw-page-container-side-padding: 3.25em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-page-container-inner::before {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
    display: block;&lt;br /&gt;
	grid-column-start: toc;&lt;br /&gt;
    grid-column-end: toc;&lt;br /&gt;
    grid-row-start: siteNotice;&lt;br /&gt;
    grid-row-end: footer;&lt;br /&gt;
    margin-left: calc(-1*var(--mw-page-container-side-padding));&lt;br /&gt;
	background: var(--theme-sidebar-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled.vector-toc-not-available .mw-page-container-inner::before,&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled .vector-sidebar-container-no-toc ~ .mw-page-container-inner::before,&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled.vector-feature-toc-pinned-clientpref-0 .mw-page-container-inner::before {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-main-menu-action-opt-out {&lt;br /&gt;
	display: none;	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-footer-container {&lt;br /&gt;
	grid-row-start: footer;&lt;br /&gt;
	grid-row-end: footer;&lt;br /&gt;
	grid-column-start: pageContent;&lt;br /&gt;
	grid-column-end: pageContent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled.vector-toc-not-available .mw-footer-container,&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled .vector-sidebar-container-no-toc ~ .mw-footer-container,&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled.vector-feature-toc-pinned-clientpref-0 .mw-footer-container {&lt;br /&gt;
	grid-column-start: toc;&lt;br /&gt;
	grid-column-end: pageContent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* syntax highlighting colors */&lt;br /&gt;
.hljs{background:var(--theme-hljs-bg)}&lt;br /&gt;
.hljs,.hljs-operator,.hljs-property,.hljs-punctuation,.hljs-subst,.hljs-unset{color:var(--theme-hljs-unset)}&lt;br /&gt;
.hljs-quote,.hljs-comment{color:var(--theme-hljs-comment)}&lt;br /&gt;
.hljs-doctag{color:var(--theme-hljs-doctag)}&lt;br /&gt;
.hljs-built_in,.hljs-name,.hljs-literal,.hljs-link,.hljs-meta-keyword,.hljs-keyword{color:var(--theme-hljs-keyword)}&lt;br /&gt;
.hljs-title,.hljs-type{color:var(--theme-hljs-type)}&lt;br /&gt;
.hljs-title.function_{color:var(--theme-hljs-function)}&lt;br /&gt;
.hljs-meta-string,.hljs-string{color:var(--theme-hljs-string)}&lt;br /&gt;
.hljs-number{color:var(--theme-hljs-number)}&lt;br /&gt;
.hljs-builtin-name,.hljs-formula,.hljs-params,.hljs-template-variable,.hljs-variable{color:var(--theme-hljs-variable)}&lt;br /&gt;
.hljs-symbol{color:var(--theme-hljs-symbol)}&lt;br /&gt;
.hljs-template-tag,.hljs-regexp{color:var(--theme-hljs-regexp)}&lt;br /&gt;
.hljs-tag,.hljs-tsql-literal,.hljs-meta{color:var(--theme-hljs-meta)}&lt;br /&gt;
.hljs-section{color:var(--theme-hljs-section)}&lt;br /&gt;
.hljs-attr,.hljs-attribute{color:var(--theme-hljs-attribute)}&lt;br /&gt;
.hljs-bullet{color:var(--theme-hljs-bullet)}&lt;br /&gt;
.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:var(--theme-hljs-selector)}&lt;br /&gt;
.hljs-addition{background-color:var(--theme-hljs-addition)}&lt;br /&gt;
.hljs-deletion{background-color:var(--theme-hljs-deletion)}&lt;br /&gt;
.hljs-tsql-symbol{color:var(--theme-hljs-tsql-symbol)}&lt;br /&gt;
.hljs-tsql-string{color:var(--theme-hljs-tsql-string)}&lt;br /&gt;
.hljs-tsql-built_in{color:var(--theme-hljs-tsql-built_in)}&lt;br /&gt;
.hljs-tsql-sp{color:var(--theme-hljs-tsql-sp)}&lt;br /&gt;
&lt;br /&gt;
/* light vector theme */&lt;br /&gt;
:root {&lt;br /&gt;
	--theme-body-bg: #072207;&lt;br /&gt;
	--theme-body-color: #202122;&lt;br /&gt;
	--theme-body-link-color: #3366cc;&lt;br /&gt;
	--theme-header-bg: &lt;br /&gt;
		repeating-linear-gradient(to top, #0002, #0000 1em), &lt;br /&gt;
		repeating-linear-gradient(to right, #0002, #0000 1em), &lt;br /&gt;
		radial-gradient(circle at left, #141, #151 10%, #151 40%, #113811);&lt;br /&gt;
	--theme-header-color: #fff;&lt;br /&gt;
	--theme-header-icon-filter: invert(100%);&lt;br /&gt;
	--theme-header-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-content-bg: #fff;&lt;br /&gt;
	--theme-heading-color: #000;&lt;br /&gt;
	--theme-code-bg: #f8f9fa;&lt;br /&gt;
	--theme-code-border: 1px solid #eaecf0;&lt;br /&gt;
	--theme-code-color: #000;&lt;br /&gt;
	&lt;br /&gt;
	--theme-catlinks-bg: #f8f9fa;&lt;br /&gt;
	--theme-catlinks-border: 1px solid #a2a9b1;&lt;br /&gt;
	&lt;br /&gt;
	--theme-sidebar-bg: #141;&lt;br /&gt;
	--theme-sidebar-color: #fff;&lt;br /&gt;
	--theme-sidebar-link-color: #ddf;&lt;br /&gt;
	--theme-pinnable-header-label-color: #ddd;&lt;br /&gt;
	--theme-pinnable-header-link-color: #fafff4;&lt;br /&gt;
	--theme-pinnable-header-link-hover-color: #fff;&lt;br /&gt;
	--theme-pinnable-list-heading-color: #eee;&lt;br /&gt;
	--theme-pinnable-list-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-main-menu-bg: transparent;&lt;br /&gt;
	&lt;br /&gt;
	--theme-toc-bg: transparent;&lt;br /&gt;
	--theme-toc-link-color: #fafff4;&lt;br /&gt;
	--theme-toc-active-parent-link-color: #fafafa;&lt;br /&gt;
	--theme-toc-active-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-dropdown-bg: #151;&lt;br /&gt;
	&lt;br /&gt;
	--theme-footer-color: #202122;&lt;br /&gt;
	&lt;br /&gt;
	/* syntax highlighting colors */&lt;br /&gt;
	--theme-hljs-bg: #f7f7f7;&lt;br /&gt;
	--theme-hljs-unset: #000;&lt;br /&gt;
	--theme-hljs-comment: #080;&lt;br /&gt;
	--theme-hljs-doctag: #556b2f;&lt;br /&gt;
	--theme-hljs-keyword: #00f;&lt;br /&gt;
	--theme-hljs-type: #2b91af;&lt;br /&gt;
	--theme-hljs-function: #74531f;&lt;br /&gt;
	--theme-hljs-string: #a31515;&lt;br /&gt;
	--theme-hljs-number: #000;&lt;br /&gt;
	--theme-hljs-variable: #9cdcfe;&lt;br /&gt;
	--theme-hljs-symbol: #d8a0df;&lt;br /&gt;
	--theme-hljs-regexp: #9a5334;&lt;br /&gt;
	--theme-hljs-meta: #9b9b9b;&lt;br /&gt;
	--theme-hljs-section: gold;&lt;br /&gt;
	--theme-hljs-attribute: #2b91af;&lt;br /&gt;
	--theme-hljs-bullet: #d7ba7d;&lt;br /&gt;
	--theme-hljs-selector: #2b91af;&lt;br /&gt;
	--theme-hljs-addition: #144212;&lt;br /&gt;
	--theme-hljs-deletion: #600;&lt;br /&gt;
	--theme-hljs-tsql-symbol: #dcdcdc;&lt;br /&gt;
	--theme-hljs-tsql-string: #cb4141;&lt;br /&gt;
	--theme-hljs-tsql-built_in: #c975d5;&lt;br /&gt;
	--theme-hljs-tsql-sp: #b3725b;&lt;br /&gt;
}&lt;br /&gt;
/* light vector theme body colors (default) */&lt;br /&gt;
.mw-content-container {&lt;br /&gt;
	--theme-icon-filter: none;&lt;br /&gt;
	&lt;br /&gt;
	--theme-pinnable-header-label-color: #54595d;&lt;br /&gt;
	--theme-pinnable-header-link-color: #3366cc;&lt;br /&gt;
	--theme-pinnable-header-link-hover-color: #447ff5;&lt;br /&gt;
	--theme-pinnable-list-heading-color: #54595d;&lt;br /&gt;
	--theme-pinnable-list-link-color: #3366cc;&lt;br /&gt;
	&lt;br /&gt;
	--theme-dropdown-bg: #fff;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=MediaWiki:Theme-dark.css&amp;diff=324</id>
		<title>MediaWiki:Theme-dark.css</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=MediaWiki:Theme-dark.css&amp;diff=324"/>
		<updated>2024-06-23T00:32:31Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* dark vector theme */&lt;br /&gt;
:root {&lt;br /&gt;
	--theme-body-bg: #072207;&lt;br /&gt;
	--theme-body-color: #e7e7e7;&lt;br /&gt;
	--theme-body-link-color: #3366cc;&lt;br /&gt;
	--theme-header-bg: &lt;br /&gt;
		repeating-linear-gradient(to top, #0002, #0000 1em), &lt;br /&gt;
		repeating-linear-gradient(to right, #0002, #0000 1em), &lt;br /&gt;
		radial-gradient(circle at left, #141, #151 10%, #151 40%, #113811);&lt;br /&gt;
	--theme-header-color: #fff;&lt;br /&gt;
	--theme-header-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-content-bg: #181818;&lt;br /&gt;
	--theme-heading-color: #fcfcfc;&lt;br /&gt;
	--theme-code-bg: #222;&lt;br /&gt;
	--theme-code-border: 1px solid #444;&lt;br /&gt;
	--theme-code-color: #e7e7e7;&lt;br /&gt;
	&lt;br /&gt;
	--theme-icon-filter: invert(100%);&lt;br /&gt;
	--theme-catlinks-bg: #262626;&lt;br /&gt;
	--theme-catlinks-border: 1px solid #4b4b4b;&lt;br /&gt;
	&lt;br /&gt;
	--theme-sidebar-bg: #141;&lt;br /&gt;
	--theme-sidebar-color: #fff;&lt;br /&gt;
	--theme-sidebar-link-color: #ddf;&lt;br /&gt;
	--theme-pinnable-header-label-color: #ddd;&lt;br /&gt;
	--theme-pinnable-header-link-color: #fafff4;&lt;br /&gt;
	--theme-pinnable-header-link-hover-color: #fff;&lt;br /&gt;
	--theme-pinnable-list-heading-color: #eee;&lt;br /&gt;
	--theme-pinnable-list-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-main-menu-bg: transparent;&lt;br /&gt;
	&lt;br /&gt;
	--theme-toc-bg: transparent;&lt;br /&gt;
	--theme-toc-link-color: #fafff4;&lt;br /&gt;
	--theme-toc-active-parent-link-color: #fafafa;&lt;br /&gt;
	--theme-toc-active-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-dropdown-bg: #151;&lt;br /&gt;
	&lt;br /&gt;
	--theme-footer-color: #e7e7e7;&lt;br /&gt;
	&lt;br /&gt;
	/* syntax highlighting colors */&lt;br /&gt;
	--theme-hljs-bg: #1e1e1e;&lt;br /&gt;
	--theme-hljs-unset: #dbdbdb;&lt;br /&gt;
	--theme-hljs-comment: #57a64a;&lt;br /&gt;
	--theme-hljs-doctag: #556b2f;&lt;br /&gt;
	--theme-hljs-keyword: #569cd6;&lt;br /&gt;
	--theme-hljs-type: #4ec9b0;&lt;br /&gt;
	--theme-hljs-function: #dcdcaa;&lt;br /&gt;
	--theme-hljs-string: #d69d85;&lt;br /&gt;
	--theme-hljs-number: #dbdbdb;&lt;br /&gt;
	--theme-hljs-variable: #9cdcfe;&lt;br /&gt;
	--theme-hljs-symbol: #d8a0df;&lt;br /&gt;
	--theme-hljs-regexp: #9a5334;&lt;br /&gt;
	--theme-hljs-meta: #9b9b9b;&lt;br /&gt;
	--theme-hljs-section: gold;&lt;br /&gt;
	--theme-hljs-attribute: #92caf4;&lt;br /&gt;
	--theme-hljs-bullet: #d7ba7d;&lt;br /&gt;
	--theme-hljs-selector: #d7ba7d;&lt;br /&gt;
	--theme-hljs-addition: #144212;&lt;br /&gt;
	--theme-hljs-deletion: #600;&lt;br /&gt;
	--theme-hljs-tsql-symbol: #dcdcdc;&lt;br /&gt;
	--theme-hljs-tsql-string: #cb4141;&lt;br /&gt;
	--theme-hljs-tsql-built_in: #c975d5;&lt;br /&gt;
	--theme-hljs-tsql-sp: #b3725b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* dark vector theme body colors */&lt;br /&gt;
.mw-content-container {&lt;br /&gt;
	--theme-icon-filter: invert(100%);&lt;br /&gt;
	&lt;br /&gt;
	--theme-pinnable-header-label-color: #ddd;&lt;br /&gt;
	--theme-pinnable-header-link-color: #3366cc;&lt;br /&gt;
	--theme-pinnable-header-link-hover-color: #447ff5;&lt;br /&gt;
	--theme-pinnable-list-heading-color: #ddd;&lt;br /&gt;
	--theme-pinnable-list-link-color: #3366cc;&lt;br /&gt;
	&lt;br /&gt;
	--theme-dropdown-bg: #181818;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=MediaWiki:Theme-dark.css&amp;diff=323</id>
		<title>MediaWiki:Theme-dark.css</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=MediaWiki:Theme-dark.css&amp;diff=323"/>
		<updated>2024-06-23T00:31:54Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* dark vector theme */&lt;br /&gt;
:root {&lt;br /&gt;
	--theme-body-bg: #072207;&lt;br /&gt;
	--theme-body-color: #e7e7e7;&lt;br /&gt;
	--theme-body-link-color: #3366cc;&lt;br /&gt;
	--theme-header-bg: &lt;br /&gt;
		repeating-linear-gradient(to top, #0002, #0000 1em), &lt;br /&gt;
		repeating-linear-gradient(to right, #0002, #0000 1em), &lt;br /&gt;
		radial-gradient(circle at left, #141, #151 10%, #151 40%, #113811);&lt;br /&gt;
	--theme-header-color: #fff;&lt;br /&gt;
	--theme-header-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-content-bg: #181818;&lt;br /&gt;
	--theme-heading-color: #fcfcfc;&lt;br /&gt;
	--theme-code-bg: #222;&lt;br /&gt;
	--theme-code-border: 1px solid #444;&lt;br /&gt;
	--theme-code-color: #e7e7e7;&lt;br /&gt;
	&lt;br /&gt;
	--theme-icon-filter: invert(100%);&lt;br /&gt;
	--theme-catlinks-bg: #262626;&lt;br /&gt;
	--theme-catlinks-border: 1px solid #4b4b4b;&lt;br /&gt;
	&lt;br /&gt;
	--theme-sidebar-bg: #141;&lt;br /&gt;
	--theme-sidebar-color: #fff;&lt;br /&gt;
	--theme-sidebar-link-color: #ddf;&lt;br /&gt;
	--theme-pinnable-header-label-color: #ddd;&lt;br /&gt;
	--theme-pinnable-header-link-color: #fafff4;&lt;br /&gt;
	--theme-pinnable-header-link-hover-color: #fff;&lt;br /&gt;
	--theme-pinnable-list-heading-color: #eee;&lt;br /&gt;
	--theme-pinnable-list-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-main-menu-bg: transparent;&lt;br /&gt;
	&lt;br /&gt;
	--theme-toc-bg: transparent;&lt;br /&gt;
	--theme-toc-link-color: #fafff4;&lt;br /&gt;
	--theme-toc-active-parent-link-color: #fafafa;&lt;br /&gt;
	--theme-toc-active-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-dropdown-bg: #151;&lt;br /&gt;
	&lt;br /&gt;
	--theme-footer-color: #e7e7e7;&lt;br /&gt;
	&lt;br /&gt;
	/* syntax highlighting colors */&lt;br /&gt;
	--theme-hljs-bg: #1e1e1e;&lt;br /&gt;
	--theme-hljs-unset: #dbdbdb;&lt;br /&gt;
	--theme-hljs-comment: #57a64a;&lt;br /&gt;
	--theme-hljs-doctag: #556b2f;&lt;br /&gt;
	--theme-hljs-keyword: #569cd6;&lt;br /&gt;
	--theme-hljs-type: #4ec9b0;&lt;br /&gt;
	--theme-hljs-function: #dcdcaa;&lt;br /&gt;
	--theme-hljs-string: #d69d85;&lt;br /&gt;
	--theme-hljs-number: #dbdbdb;&lt;br /&gt;
	--theme-hljs-variable: #9cdcfe;&lt;br /&gt;
	--theme-hljs-symbol: #d8a0df;&lt;br /&gt;
	--theme-hljs-regexp: #9a5334;&lt;br /&gt;
	--theme-hljs-meta: #9b9b9b;&lt;br /&gt;
	--theme-hljs-section: gold;&lt;br /&gt;
	--theme-hljs-attribute: #92caf4;&lt;br /&gt;
	--theme-hljs-bullet: #d7ba7d;&lt;br /&gt;
	--theme-hljs-selector: #d7ba7d;&lt;br /&gt;
	--theme-hljs-addition: #144212;&lt;br /&gt;
	--theme-hljs-deletion: #600;&lt;br /&gt;
	--theme-hljs-tsql-symbol: #dcdcdc;&lt;br /&gt;
	--theme-hljs-tsql-string: #cb4141;&lt;br /&gt;
	--theme-hljs-tsql-built_in: #c975d5;&lt;br /&gt;
	--theme-hljs-tsql-sp: #b3725b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* dark vector theme body colors */&lt;br /&gt;
.mw-content-container {&lt;br /&gt;
	--theme-icon-filter: invert(100%);&lt;br /&gt;
	&lt;br /&gt;
	--theme-pinnable-header-label-color: #34355d;&lt;br /&gt;
	--theme-pinnable-header-link-color: #3366cc;&lt;br /&gt;
	--theme-pinnable-header-link-hover-color: #447ff5;&lt;br /&gt;
	--theme-pinnable-list-heading-color: #34355d;&lt;br /&gt;
	--theme-pinnable-list-link-color: #3366cc;&lt;br /&gt;
	&lt;br /&gt;
	--theme-dropdown-bg: #181818;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=MediaWiki:Theme-dark.css&amp;diff=322</id>
		<title>MediaWiki:Theme-dark.css</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=MediaWiki:Theme-dark.css&amp;diff=322"/>
		<updated>2024-06-21T23:26:15Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* dark vector theme */&lt;br /&gt;
:root {&lt;br /&gt;
	--theme-body-bg: #072207;&lt;br /&gt;
	--theme-body-color: #e7e7e7;&lt;br /&gt;
	--theme-body-link-color: #3366cc;&lt;br /&gt;
	--theme-header-bg: &lt;br /&gt;
		repeating-linear-gradient(to top, #0002, #0000 1em), &lt;br /&gt;
		repeating-linear-gradient(to right, #0002, #0000 1em), &lt;br /&gt;
		radial-gradient(circle at left, #141, #151 10%, #151 40%, #113811);&lt;br /&gt;
	--theme-header-color: #fff;&lt;br /&gt;
	--theme-header-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-content-bg: #181818;&lt;br /&gt;
	--theme-heading-color: #fcfcfc;&lt;br /&gt;
	--theme-code-bg: #222;&lt;br /&gt;
	--theme-code-border: 1px solid #444;&lt;br /&gt;
	--theme-code-color: #e7e7e7;&lt;br /&gt;
	&lt;br /&gt;
	--theme-icon-filter: invert(100%);&lt;br /&gt;
	--theme-catlinks-bg: #262626;&lt;br /&gt;
	--theme-catlinks-border: 1px solid #4b4b4b;&lt;br /&gt;
	&lt;br /&gt;
	--theme-sidebar-bg: #141;&lt;br /&gt;
	--theme-sidebar-color: #fff;&lt;br /&gt;
	--theme-sidebar-link-color: #ddf;&lt;br /&gt;
	--theme-pinnable-header-label-color: #ddd;&lt;br /&gt;
	--theme-pinnable-header-link-color: #fafff4;&lt;br /&gt;
	--theme-pinnable-header-link-hover-color: #fff;&lt;br /&gt;
	--theme-pinnable-list-heading-color: #eee;&lt;br /&gt;
	--theme-pinnable-list-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-main-menu-bg: transparent;&lt;br /&gt;
	&lt;br /&gt;
	--theme-toc-bg: transparent;&lt;br /&gt;
	--theme-toc-link-color: #fafff4;&lt;br /&gt;
	--theme-toc-active-parent-link-color: #fafafa;&lt;br /&gt;
	--theme-toc-active-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-dropdown-bg: #151;&lt;br /&gt;
	&lt;br /&gt;
	--theme-footer-color: #e7e7e7;&lt;br /&gt;
	&lt;br /&gt;
	/* syntax highlighting colors */&lt;br /&gt;
	--theme-hljs-bg: #1e1e1e;&lt;br /&gt;
	--theme-hljs-unset: #dbdbdb;&lt;br /&gt;
	--theme-hljs-comment: #57a64a;&lt;br /&gt;
	--theme-hljs-doctag: #556b2f;&lt;br /&gt;
	--theme-hljs-keyword: #569cd6;&lt;br /&gt;
	--theme-hljs-type: #4ec9b0;&lt;br /&gt;
	--theme-hljs-function: #dcdcaa;&lt;br /&gt;
	--theme-hljs-string: #d69d85;&lt;br /&gt;
	--theme-hljs-number: #dbdbdb;&lt;br /&gt;
	--theme-hljs-variable: #9cdcfe;&lt;br /&gt;
	--theme-hljs-symbol: #d8a0df;&lt;br /&gt;
	--theme-hljs-regexp: #9a5334;&lt;br /&gt;
	--theme-hljs-meta: #9b9b9b;&lt;br /&gt;
	--theme-hljs-section: gold;&lt;br /&gt;
	--theme-hljs-attribute: #92caf4;&lt;br /&gt;
	--theme-hljs-bullet: #d7ba7d;&lt;br /&gt;
	--theme-hljs-selector: #d7ba7d;&lt;br /&gt;
	--theme-hljs-addition: #144212;&lt;br /&gt;
	--theme-hljs-deletion: #600;&lt;br /&gt;
	--theme-hljs-tsql-symbol: #dcdcdc;&lt;br /&gt;
	--theme-hljs-tsql-string: #cb4141;&lt;br /&gt;
	--theme-hljs-tsql-built_in: #c975d5;&lt;br /&gt;
	--theme-hljs-tsql-sp: #b3725b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* dark vector theme body colors */&lt;br /&gt;
.mw-content-container {&lt;br /&gt;
	--theme-icon-filter: invert(100%);&lt;br /&gt;
	&lt;br /&gt;
	--theme-pinnable-header-label-color: #54595d;&lt;br /&gt;
	--theme-pinnable-header-link-color: #3366cc;&lt;br /&gt;
	--theme-pinnable-header-link-hover-color: #447ff5;&lt;br /&gt;
	--theme-pinnable-list-heading-color: #54595d;&lt;br /&gt;
	--theme-pinnable-list-link-color: #3366cc;&lt;br /&gt;
	&lt;br /&gt;
	--theme-dropdown-bg: #181818;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=MediaWiki:Common.css&amp;diff=321</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=MediaWiki:Common.css&amp;diff=321"/>
		<updated>2024-06-21T22:56:30Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* font for title */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Press+Start+2P&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
/* default vector theme */&lt;br /&gt;
:root {&lt;br /&gt;
	--layout-topbar-height: 35px; /* height of topbar */&lt;br /&gt;
	--layout-sidespace: 24px; /* whitespace width on most left and most right */&lt;br /&gt;
	--layout-content-width: minmax(0,1fr);&lt;br /&gt;
	&lt;br /&gt;
	--font-size: 14px;&lt;br /&gt;
	--line-height: 24px;&lt;br /&gt;
	--font-size-s: 12px;&lt;br /&gt;
	--line-height-s: 20px;&lt;br /&gt;
	--font-size-xs: 10px;&lt;br /&gt;
	--line-height-xs: 16px;&lt;br /&gt;
	--font-size-l: 16px;&lt;br /&gt;
	--line-height-l: 24px;&lt;br /&gt;
	&lt;br /&gt;
	--theme-text-color: #fff;&lt;br /&gt;
	--theme-site-background: #141;&lt;br /&gt;
	--theme-header-background: #151;&lt;br /&gt;
	&lt;br /&gt;
	--mw-page-container-side-padding: 1.5em;&lt;br /&gt;
	&lt;br /&gt;
	--theme-body-bg: #f8f9fa;&lt;br /&gt;
	--theme-body-color: #202122;&lt;br /&gt;
	--theme-body-link-color: #3366cc;&lt;br /&gt;
	--theme-header-bg: #fff;&lt;br /&gt;
	--theme-header-color: #202122;&lt;br /&gt;
	--theme-header-link-color: #3366cc;&lt;br /&gt;
	&lt;br /&gt;
	--theme-content-bg: #fff;&lt;br /&gt;
	--theme-heading-color: #000;&lt;br /&gt;
	--theme-code-bg: #f8f9fa;&lt;br /&gt;
	--theme-code-border: 1px solid #eaecf0;&lt;br /&gt;
	--theme-code-color: #000;&lt;br /&gt;
	&lt;br /&gt;
	--theme-icon-filter: invert(100%);&lt;br /&gt;
	--theme-catlinks-bg: #f8f9fa;&lt;br /&gt;
	--theme-catlinks-border: 1px solid #a2a9b1;&lt;br /&gt;
	&lt;br /&gt;
	--theme-sidebar-bg: #fff;&lt;br /&gt;
	--theme-sidebar-color: #202122;&lt;br /&gt;
	--theme-sidebar-link-color: #3366cc;&lt;br /&gt;
	--theme-pinnable-header-label-color: #54595d;&lt;br /&gt;
	--theme-pinnable-header-link-color: #3366cc;&lt;br /&gt;
	--theme-pinnable-header-link-hover-color: #447ff5;&lt;br /&gt;
	--theme-pinnable-list-heading-color: #54595d;&lt;br /&gt;
	--theme-pinnable-list-link-color: #3366cc;&lt;br /&gt;
	&lt;br /&gt;
	--theme-main-menu-bg: #f8f9fa;&lt;br /&gt;
	&lt;br /&gt;
	--theme-toc-bg: #fff;&lt;br /&gt;
	--theme-toc-link-color: #3366cc;&lt;br /&gt;
	--theme-toc-active-parent-link-color: #202122;&lt;br /&gt;
	--theme-toc-active-link-color: #202122;&lt;br /&gt;
	&lt;br /&gt;
	--theme-dropdown-bg: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-footer-color: #202122;&lt;br /&gt;
	&lt;br /&gt;
	/* syntax highlighting colors, original from cs2022dark.css highlight.js theme */&lt;br /&gt;
	--theme-hljs-bg: #1e1e1e;&lt;br /&gt;
	--theme-hljs-unset: #dbdbdb;&lt;br /&gt;
	--theme-hljs-comment: #57a64a;&lt;br /&gt;
	--theme-hljs-doctag: #556b2f;&lt;br /&gt;
	--theme-hljs-keyword: #569cd6;&lt;br /&gt;
	--theme-hljs-type: #4ec9b0;&lt;br /&gt;
	--theme-hljs-function: #dcdcaa;&lt;br /&gt;
	--theme-hljs-string: #d69d85;&lt;br /&gt;
	--theme-hljs-number: #b5cea8;&lt;br /&gt;
	--theme-hljs-variable: #9cdcfe;&lt;br /&gt;
	--theme-hljs-symbol: #d8a0df;&lt;br /&gt;
	--theme-hljs-regexp: #9a5334;&lt;br /&gt;
	--theme-hljs-meta: #9b9b9b;&lt;br /&gt;
	--theme-hljs-section: gold;&lt;br /&gt;
	--theme-hljs-attribute: #92caf4;&lt;br /&gt;
	--theme-hljs-bullet: #d7ba7d;&lt;br /&gt;
	--theme-hljs-selector: #d7ba7d;&lt;br /&gt;
	--theme-hljs-addition: #144212;&lt;br /&gt;
	--theme-hljs-deletion: #600;&lt;br /&gt;
	--theme-hljs-tsql-symbol: #dcdcdc;&lt;br /&gt;
	--theme-hljs-tsql-string: #cb4141;&lt;br /&gt;
	--theme-hljs-tsql-built_in: #c975d5;&lt;br /&gt;
	--theme-hljs-tsql-sp: #b3725b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.vector-feature-zebra-design-disabled .mw-page-container {&lt;br /&gt;
	padding-left: var(--mw-page-container-side-padding);&lt;br /&gt;
    padding-right: var(--mw-page-container-side-padding);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-logo,&lt;br /&gt;
.vector-header-start a:visited {&lt;br /&gt;
	color: var(--theme-header-link-color);&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-container:before {&lt;br /&gt;
	content: &amp;quot;GAME DEV&amp;quot;;&lt;br /&gt;
	font-size: 20px;&lt;br /&gt;
	font-family: &amp;quot;Press Start 2P&amp;quot;, system-ui;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
	line-height: 28px;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen {&lt;br /&gt;
	.vector-header-container,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-header-container {&lt;br /&gt;
		box-shadow: 0 0 16px #000;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-page-container,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .mw-page-container {&lt;br /&gt;
		box-shadow: 0 8px 16px #000;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-sticky-header-container,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-sticky-header-container {&lt;br /&gt;
		box-shadow: none;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-feature-zebra-design-disabled body {&lt;br /&gt;
	   background: var(--theme-body-bg);&lt;br /&gt;
	   color: var(--theme-body-color);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .vector-feature-zebra-design-disabled .vector-header-container {&lt;br /&gt;
    	background: var(--theme-header-bg);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .vector-sticky-header-context-bar-primary,&lt;br /&gt;
    .vector-feature-zebra-design-disabled .vector-sticky-header-context-bar-primary {&lt;br /&gt;
    	color: var(--theme-header-color);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .vector-header-container #pt-userpage-2 a:not(.mw-selflink) {&lt;br /&gt;
    	color: var(--theme-header-link-color);&lt;br /&gt;
    }&lt;br /&gt;
	&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-dropdown .vector-dropdown-content {&lt;br /&gt;
		background: var(--theme-dropdown-bg);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	 .vector-user-menu-logged-in .vector-dropdown-label::after {&lt;br /&gt;
	 	filter: var(--theme-icon-filter);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-pinnable-header-label,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-header-label,&lt;br /&gt;
	 .vector-pinnable-header-toggle-button::before,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-header-toggle-button::before,&lt;br /&gt;
	 .vector-pinnable-header-toggle-button::after,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-header-toggle-button::after {&lt;br /&gt;
	 	color: var(--theme-pinnable-header-label-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-pinnable-header-toggle-button,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-header-toggle-button {&lt;br /&gt;
	 	color: var(--theme-pinnable-header-link-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-pinnable-header-toggle-button:hover,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-header-toggle-button:hover {&lt;br /&gt;
	 	color: var(--theme-pinnable-header-link-hover-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-element .vector-menu-heading,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-dropdown-content .vector-menu-heading {&lt;br /&gt;
	 	color: var(--theme-pinnable-list-heading-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-element .mw-list-item a,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-dropdown-content .mw-list-item a,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-dropdown .mw-list-item a:not(.mw-selflink),&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-element .mw-list-item a:not(.mw-selflink):visited,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-dropdown-content .mw-list-item a:not(.mw-selflink):visited {&lt;br /&gt;
	 	color: var(--theme-pinnable-list-link-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	.mw-page-container,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .mw-page-container {&lt;br /&gt;
		background: var(--theme-content-bg);&lt;br /&gt;
	}&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-main-menu,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-main-menu,&lt;br /&gt;
	 #vector-main-menu-pinned-container .vector-main-menu,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled #vector-main-menu-pinned-container .vector-main-menu {&lt;br /&gt;
	 	background: var(--theme-main-menu-bg);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-toc,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-toc {&lt;br /&gt;
	 	background: var(--theme-toc-bg);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-toc .vector-toc-link,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-toc .vector-toc-link {&lt;br /&gt;
	 	color: var(--theme-toc-link-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-toc .vector-toc-level-1-active:not(.vector-toc-list-item-active) &amp;gt; .vector-toc-link {&lt;br /&gt;
	 	color: var(--theme-toc-active-parent-link-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-toc .vector-toc-list-item-active &amp;gt; .vector-toc-link,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-toc .vector-toc-level-1-active:not(.vector-toc-list-item-expanded) &amp;gt; .vector-toc-link,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-toc .vector-toc-level-1-active:not(.vector-toc-list-item-active) &amp;gt; .vector-toc-link,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-toc .vector-toc-list-item-active.vector-toc-level-1-active &amp;gt; .vector-toc-link {&lt;br /&gt;
		color: var(--theme-toc-active-link-color);&lt;br /&gt;
	}&lt;br /&gt;
	 &lt;br /&gt;
	.vector-header-container a {&lt;br /&gt;
	 	color: var(--theme-header-link-color);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-menu-tabs .mw-list-item.selected a, &lt;br /&gt;
	.vector-menu-tabs .mw-list-item.selected a:visited {&lt;br /&gt;
		color: var(--theme-body-color);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
		color: var(--theme-heading-color);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	a {&lt;br /&gt;
	 	color: var(--theme-body-link-color);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	ul {&lt;br /&gt;
		list-style: disc;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	pre, code, .mw-code {&lt;br /&gt;
		background: var(--theme-code-bg);&lt;br /&gt;
		border: var(--theme-code-border);&lt;br /&gt;
		color: var(--theme-code-color);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	table.zebra tr.odd {&lt;br /&gt;
		background-color: #eee;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.catlinks {&lt;br /&gt;
		background-color: var(--theme-catlinks-bg);&lt;br /&gt;
		border: var(--theme-catlinks-border);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.cdx-button:enabled, &lt;br /&gt;
	.cdx-button.cdx-button--fake-button--enabled {&lt;br /&gt;
		color: var(--theme-body-color);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-settings .cdx-button {&lt;br /&gt;
		background-color: var(--theme-sidebar-bg);&lt;br /&gt;
		color: var(--theme-body-color);&lt;br /&gt;
		border-color: #a2a9b1;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-settings .cdx-button:hover {&lt;br /&gt;
		background-color: var(--theme-dropdown-bg);&lt;br /&gt;
		color: var(--theme-body-color);&lt;br /&gt;
		cursor: pointer;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.mw-footer li {&lt;br /&gt;
		color: var(--theme-footer-color);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:1000px) {&lt;br /&gt;
	:root {&lt;br /&gt;
		--mw-page-container-side-padding: 2.75em;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	#vector-toc-pinned-container .vector-toc::after,&lt;br /&gt;
	.vector-feature-zebra-design-disabled #vector-toc-pinned-container .vector-toc::after {&lt;br /&gt;
		background: none;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.mw-footer-container,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .mw-footer-container {&lt;br /&gt;
		grid-row-start: footer;&lt;br /&gt;
		grid-row-end: footer;&lt;br /&gt;
		grid-column-start: pageContent;&lt;br /&gt;
		grid-column-end: pageContent;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-icon {&lt;br /&gt;
		filter: var(--theme-icon-filter);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:1200px) {&lt;br /&gt;
	:root {&lt;br /&gt;
		--mw-page-container-side-padding: 3.25em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-page-container-inner::before {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
    display: block;&lt;br /&gt;
	grid-column-start: toc;&lt;br /&gt;
    grid-column-end: toc;&lt;br /&gt;
    grid-row-start: siteNotice;&lt;br /&gt;
    grid-row-end: footer;&lt;br /&gt;
    margin-left: calc(-1*var(--mw-page-container-side-padding));&lt;br /&gt;
	background: var(--theme-sidebar-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled.vector-toc-not-available .mw-page-container-inner::before,&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled .vector-sidebar-container-no-toc ~ .mw-page-container-inner::before,&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled.vector-feature-toc-pinned-clientpref-0 .mw-page-container-inner::before {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-main-menu-action-opt-out {&lt;br /&gt;
	display: none;	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-footer-container {&lt;br /&gt;
	grid-row-start: footer;&lt;br /&gt;
	grid-row-end: footer;&lt;br /&gt;
	grid-column-start: pageContent;&lt;br /&gt;
	grid-column-end: pageContent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled.vector-toc-not-available .mw-footer-container,&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled .vector-sidebar-container-no-toc ~ .mw-footer-container,&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled.vector-feature-toc-pinned-clientpref-0 .mw-footer-container {&lt;br /&gt;
	grid-column-start: toc;&lt;br /&gt;
	grid-column-end: pageContent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* syntax highlighting colors */&lt;br /&gt;
.hljs{background:var(--theme-hljs-bg)}&lt;br /&gt;
.hljs,.hljs-operator,.hljs-property,.hljs-punctuation,.hljs-subst,.hljs-unset{color:var(--theme-hljs-unset)}&lt;br /&gt;
.hljs-quote,.hljs-comment{color:var(--theme-hljs-comment)}&lt;br /&gt;
.hljs-doctag{color:var(--theme-hljs-doctag)}&lt;br /&gt;
.hljs-built_in,.hljs-name,.hljs-literal,.hljs-link,.hljs-meta-keyword,.hljs-keyword{color:var(--theme-hljs-keyword)}&lt;br /&gt;
.hljs-title,.hljs-type{color:var(--theme-hljs-type)}&lt;br /&gt;
.hljs-title.function_{color:var(--theme-hljs-function)}&lt;br /&gt;
.hljs-meta-string,.hljs-string{color:var(--theme-hljs-string)}&lt;br /&gt;
.hljs-number{color:var(--theme-hljs-number)}&lt;br /&gt;
.hljs-builtin-name,.hljs-formula,.hljs-params,.hljs-template-variable,.hljs-variable{color:var(--theme-hljs-variable)}&lt;br /&gt;
.hljs-symbol{color:var(--theme-hljs-symbol)}&lt;br /&gt;
.hljs-template-tag,.hljs-regexp{color:var(--theme-hljs-regexp)}&lt;br /&gt;
.hljs-tag,.hljs-tsql-literal,.hljs-meta{color:var(--theme-hljs-meta)}&lt;br /&gt;
.hljs-section{color:var(--theme-hljs-section)}&lt;br /&gt;
.hljs-attr,.hljs-attribute{color:var(--theme-hljs-attribute)}&lt;br /&gt;
.hljs-bullet{color:var(--theme-hljs-bullet)}&lt;br /&gt;
.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:var(--theme-hljs-selector)}&lt;br /&gt;
.hljs-addition{background-color:var(--theme-hljs-addition)}&lt;br /&gt;
.hljs-deletion{background-color:var(--theme-hljs-deletion)}&lt;br /&gt;
.hljs-tsql-symbol{color:var(--theme-hljs-tsql-symbol)}&lt;br /&gt;
.hljs-tsql-string{color:var(--theme-hljs-tsql-string)}&lt;br /&gt;
.hljs-tsql-built_in{color:var(--theme-hljs-tsql-built_in)}&lt;br /&gt;
.hljs-tsql-sp{color:var(--theme-hljs-tsql-sp)}&lt;br /&gt;
&lt;br /&gt;
/* light vector theme */&lt;br /&gt;
:root {&lt;br /&gt;
	--theme-body-bg: #072207;&lt;br /&gt;
	--theme-body-color: #202122;&lt;br /&gt;
	--theme-body-link-color: #3366cc;&lt;br /&gt;
	--theme-header-bg: &lt;br /&gt;
		repeating-linear-gradient(to top, #0002, #0000 1em), &lt;br /&gt;
		repeating-linear-gradient(to right, #0002, #0000 1em), &lt;br /&gt;
		radial-gradient(circle at left, #141, #151 10%, #151 40%, #113811);&lt;br /&gt;
	--theme-header-color: #fff;&lt;br /&gt;
	--theme-header-icon-filter: invert(100%);&lt;br /&gt;
	--theme-header-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-content-bg: #fff;&lt;br /&gt;
	--theme-heading-color: #000;&lt;br /&gt;
	--theme-code-bg: #f8f9fa;&lt;br /&gt;
	--theme-code-border: 1px solid #eaecf0;&lt;br /&gt;
	--theme-code-color: #000;&lt;br /&gt;
	&lt;br /&gt;
	--theme-catlinks-bg: #f8f9fa;&lt;br /&gt;
	--theme-catlinks-border: 1px solid #a2a9b1;&lt;br /&gt;
	&lt;br /&gt;
	--theme-sidebar-bg: #141;&lt;br /&gt;
	--theme-sidebar-color: #fff;&lt;br /&gt;
	--theme-sidebar-link-color: #ddf;&lt;br /&gt;
	--theme-pinnable-header-label-color: #ddd;&lt;br /&gt;
	--theme-pinnable-header-link-color: #fafff4;&lt;br /&gt;
	--theme-pinnable-header-link-hover-color: #fff;&lt;br /&gt;
	--theme-pinnable-list-heading-color: #eee;&lt;br /&gt;
	--theme-pinnable-list-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-main-menu-bg: transparent;&lt;br /&gt;
	&lt;br /&gt;
	--theme-toc-bg: transparent;&lt;br /&gt;
	--theme-toc-link-color: #fafff4;&lt;br /&gt;
	--theme-toc-active-parent-link-color: #fafafa;&lt;br /&gt;
	--theme-toc-active-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-dropdown-bg: #151;&lt;br /&gt;
	&lt;br /&gt;
	--theme-footer-color: #202122;&lt;br /&gt;
	&lt;br /&gt;
	/* syntax highlighting colors */&lt;br /&gt;
	--theme-hljs-bg: #f7f7f7;&lt;br /&gt;
	--theme-hljs-unset: #000;&lt;br /&gt;
	--theme-hljs-comment: #080;&lt;br /&gt;
	--theme-hljs-doctag: #556b2f;&lt;br /&gt;
	--theme-hljs-keyword: #00f;&lt;br /&gt;
	--theme-hljs-type: #2b91af;&lt;br /&gt;
	--theme-hljs-function: #74531f;&lt;br /&gt;
	--theme-hljs-string: #a31515;&lt;br /&gt;
	--theme-hljs-number: #000;&lt;br /&gt;
	--theme-hljs-variable: #9cdcfe;&lt;br /&gt;
	--theme-hljs-symbol: #d8a0df;&lt;br /&gt;
	--theme-hljs-regexp: #9a5334;&lt;br /&gt;
	--theme-hljs-meta: #9b9b9b;&lt;br /&gt;
	--theme-hljs-section: gold;&lt;br /&gt;
	--theme-hljs-attribute: #2b91af;&lt;br /&gt;
	--theme-hljs-bullet: #d7ba7d;&lt;br /&gt;
	--theme-hljs-selector: #2b91af;&lt;br /&gt;
	--theme-hljs-addition: #144212;&lt;br /&gt;
	--theme-hljs-deletion: #600;&lt;br /&gt;
	--theme-hljs-tsql-symbol: #dcdcdc;&lt;br /&gt;
	--theme-hljs-tsql-string: #cb4141;&lt;br /&gt;
	--theme-hljs-tsql-built_in: #c975d5;&lt;br /&gt;
	--theme-hljs-tsql-sp: #b3725b;&lt;br /&gt;
}&lt;br /&gt;
/* light vector theme body colors (default) */&lt;br /&gt;
.mw-content-container {&lt;br /&gt;
	--theme-icon-filter: none;&lt;br /&gt;
	&lt;br /&gt;
	--theme-pinnable-header-label-color: #54595d;&lt;br /&gt;
	--theme-pinnable-header-link-color: #3366cc;&lt;br /&gt;
	--theme-pinnable-header-link-hover-color: #447ff5;&lt;br /&gt;
	--theme-pinnable-list-heading-color: #54595d;&lt;br /&gt;
	--theme-pinnable-list-link-color: #3366cc;&lt;br /&gt;
	&lt;br /&gt;
	--theme-dropdown-bg: #fff;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=MediaWiki:Common.css&amp;diff=320</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=MediaWiki:Common.css&amp;diff=320"/>
		<updated>2024-06-21T22:52:02Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* font for title */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Press+Start+2P&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
/* default vector theme */&lt;br /&gt;
:root {&lt;br /&gt;
	--layout-topbar-height: 35px; /* height of topbar */&lt;br /&gt;
	--layout-sidespace: 24px; /* whitespace width on most left and most right */&lt;br /&gt;
	--layout-content-width: minmax(0,1fr);&lt;br /&gt;
	&lt;br /&gt;
	--font-size: 14px;&lt;br /&gt;
	--line-height: 24px;&lt;br /&gt;
	--font-size-s: 12px;&lt;br /&gt;
	--line-height-s: 20px;&lt;br /&gt;
	--font-size-xs: 10px;&lt;br /&gt;
	--line-height-xs: 16px;&lt;br /&gt;
	--font-size-l: 16px;&lt;br /&gt;
	--line-height-l: 24px;&lt;br /&gt;
	&lt;br /&gt;
	--theme-text-color: #fff;&lt;br /&gt;
	--theme-site-background: #141;&lt;br /&gt;
	--theme-header-background: #151;&lt;br /&gt;
	&lt;br /&gt;
	--mw-page-container-side-padding: 1.5em;&lt;br /&gt;
	&lt;br /&gt;
	--theme-body-bg: #f8f9fa;&lt;br /&gt;
	--theme-body-color: #202122;&lt;br /&gt;
	--theme-body-link-color: #3366cc;&lt;br /&gt;
	--theme-header-bg: #fff;&lt;br /&gt;
	--theme-header-color: #202122;&lt;br /&gt;
	--theme-header-link-color: #3366cc;&lt;br /&gt;
	&lt;br /&gt;
	--theme-content-bg: #fff;&lt;br /&gt;
	--theme-heading-color: #000;&lt;br /&gt;
	--theme-code-bg: #f8f9fa;&lt;br /&gt;
	--theme-code-border: 1px solid #eaecf0;&lt;br /&gt;
	--theme-code-color: #000;&lt;br /&gt;
	&lt;br /&gt;
	--theme-icon-filter: invert(100%);&lt;br /&gt;
	--theme-catlinks-bg: #f8f9fa;&lt;br /&gt;
	--theme-catlinks-border: 1px solid #a2a9b1;&lt;br /&gt;
	&lt;br /&gt;
	--theme-sidebar-bg: #fff;&lt;br /&gt;
	--theme-sidebar-color: #202122;&lt;br /&gt;
	--theme-sidebar-link-color: #3366cc;&lt;br /&gt;
	--theme-pinnable-header-label-color: #54595d;&lt;br /&gt;
	--theme-pinnable-header-link-color: #3366cc;&lt;br /&gt;
	--theme-pinnable-header-link-hover-color: #447ff5;&lt;br /&gt;
	--theme-pinnable-list-heading-color: #54595d;&lt;br /&gt;
	--theme-pinnable-list-link-color: #3366cc;&lt;br /&gt;
	&lt;br /&gt;
	--theme-main-menu-bg: #f8f9fa;&lt;br /&gt;
	&lt;br /&gt;
	--theme-toc-bg: #fff;&lt;br /&gt;
	--theme-toc-link-color: #3366cc;&lt;br /&gt;
	--theme-toc-active-parent-link-color: #202122;&lt;br /&gt;
	--theme-toc-active-link-color: #202122;&lt;br /&gt;
	&lt;br /&gt;
	--theme-dropdown-bg: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-footer-color: #202122;&lt;br /&gt;
	&lt;br /&gt;
	/* syntax highlighting colors, original from cs2022dark.css highlight.js theme */&lt;br /&gt;
	--theme-hljs-bg: #1e1e1e;&lt;br /&gt;
	--theme-hljs-unset: #dbdbdb;&lt;br /&gt;
	--theme-hljs-comment: #57a64a;&lt;br /&gt;
	--theme-hljs-doctag: #556b2f;&lt;br /&gt;
	--theme-hljs-keyword: #569cd6;&lt;br /&gt;
	--theme-hljs-type: #4ec9b0;&lt;br /&gt;
	--theme-hljs-function: #dcdcaa;&lt;br /&gt;
	--theme-hljs-string: #d69d85;&lt;br /&gt;
	--theme-hljs-number: #b5cea8;&lt;br /&gt;
	--theme-hljs-variable: #9cdcfe;&lt;br /&gt;
	--theme-hljs-symbol: #d8a0df;&lt;br /&gt;
	--theme-hljs-regexp: #9a5334;&lt;br /&gt;
	--theme-hljs-meta: #9b9b9b;&lt;br /&gt;
	--theme-hljs-section: gold;&lt;br /&gt;
	--theme-hljs-attribute: #92caf4;&lt;br /&gt;
	--theme-hljs-bullet: #d7ba7d;&lt;br /&gt;
	--theme-hljs-selector: #d7ba7d;&lt;br /&gt;
	--theme-hljs-addition: #144212;&lt;br /&gt;
	--theme-hljs-deletion: #600;&lt;br /&gt;
	--theme-hljs-tsql-symbol: #dcdcdc;&lt;br /&gt;
	--theme-hljs-tsql-string: #cb4141;&lt;br /&gt;
	--theme-hljs-tsql-built_in: #c975d5;&lt;br /&gt;
	--theme-hljs-tsql-sp: #b3725b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.vector-feature-zebra-design-disabled .mw-page-container {&lt;br /&gt;
	padding-left: var(--mw-page-container-side-padding);&lt;br /&gt;
    padding-right: var(--mw-page-container-side-padding);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-logo,&lt;br /&gt;
.vector-header-start a:visited {&lt;br /&gt;
	color: var(--theme-header-link-color);&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-container:before {&lt;br /&gt;
	content: &amp;quot;GAME DEV&amp;quot;;&lt;br /&gt;
	font-size: 20px;&lt;br /&gt;
	font-family: &amp;quot;Press Start 2P&amp;quot;, system-ui;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
	line-height: 28px;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen {&lt;br /&gt;
	.vector-header-container,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-header-container {&lt;br /&gt;
		box-shadow: 0 0 16px #000;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-page-container,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .mw-page-container {&lt;br /&gt;
		box-shadow: 0 8px 16px #000;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-sticky-header-container,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-sticky-header-container {&lt;br /&gt;
		box-shadow: none;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-feature-zebra-design-disabled body {&lt;br /&gt;
	   background: var(--theme-body-bg);&lt;br /&gt;
	   color: var(--theme-body-color);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .vector-feature-zebra-design-disabled .vector-header-container {&lt;br /&gt;
    	background: var(--theme-header-bg);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .vector-sticky-header-context-bar-primary,&lt;br /&gt;
    .vector-feature-zebra-design-disabled .vector-sticky-header-context-bar-primary {&lt;br /&gt;
    	color: var(--theme-header-color);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .vector-header-container #pt-userpage-2 a:not(.mw-selflink) {&lt;br /&gt;
    	color: var(--theme-header-link-color);&lt;br /&gt;
    }&lt;br /&gt;
	&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-dropdown .vector-dropdown-content {&lt;br /&gt;
		background: var(--theme-dropdown-bg);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	 .vector-user-menu-logged-in .vector-dropdown-label::after {&lt;br /&gt;
	 	filter: var(--theme-icon-filter);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-pinnable-header-label,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-header-label,&lt;br /&gt;
	 .vector-pinnable-header-toggle-button::before,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-header-toggle-button::before,&lt;br /&gt;
	 .vector-pinnable-header-toggle-button::after,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-header-toggle-button::after {&lt;br /&gt;
	 	color: var(--theme-pinnable-header-label-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-pinnable-header-toggle-button,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-header-toggle-button {&lt;br /&gt;
	 	color: var(--theme-pinnable-header-link-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-pinnable-header-toggle-button:hover,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-header-toggle-button:hover {&lt;br /&gt;
	 	color: var(--theme-pinnable-header-link-hover-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-element .vector-menu-heading,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-dropdown-content .vector-menu-heading {&lt;br /&gt;
	 	color: var(--theme-pinnable-list-heading-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-element .mw-list-item a,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-dropdown-content .mw-list-item a,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-dropdown .mw-list-item a:not(.mw-selflink),&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-pinnable-element .mw-list-item a:not(.mw-selflink):visited,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-dropdown-content .mw-list-item a:not(.mw-selflink):visited {&lt;br /&gt;
	 	color: var(--theme-pinnable-list-link-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	.mw-page-container,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .mw-page-container {&lt;br /&gt;
		background: var(--theme-content-bg);&lt;br /&gt;
	}&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-main-menu,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-main-menu,&lt;br /&gt;
	 #vector-main-menu-pinned-container .vector-main-menu,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled #vector-main-menu-pinned-container .vector-main-menu {&lt;br /&gt;
	 	background: var(--theme-main-menu-bg);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-toc,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-toc {&lt;br /&gt;
	 	background: var(--theme-toc-bg);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-toc .vector-toc-link,&lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-toc .vector-toc-link {&lt;br /&gt;
	 	color: var(--theme-toc-link-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 .vector-feature-zebra-design-disabled .vector-toc .vector-toc-level-1-active:not(.vector-toc-list-item-active) &amp;gt; .vector-toc-link {&lt;br /&gt;
	 	color: var(--theme-toc-active-parent-link-color);&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-toc .vector-toc-list-item-active &amp;gt; .vector-toc-link,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-toc .vector-toc-level-1-active:not(.vector-toc-list-item-expanded) &amp;gt; .vector-toc-link,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-toc .vector-toc-level-1-active:not(.vector-toc-list-item-active) &amp;gt; .vector-toc-link,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .vector-toc .vector-toc-list-item-active.vector-toc-level-1-active &amp;gt; .vector-toc-link {&lt;br /&gt;
		color: var(--theme-toc-active-link-color);&lt;br /&gt;
	}&lt;br /&gt;
	 &lt;br /&gt;
	.vector-header-container a {&lt;br /&gt;
	 	color: var(--theme-header-link-color);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-menu-tabs .mw-list-item.selected a, &lt;br /&gt;
	.vector-menu-tabs .mw-list-item.selected a:visited {&lt;br /&gt;
		color: var(--theme-body-color);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
		color: var(--theme-heading-color);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	a {&lt;br /&gt;
	 	color: var(--theme-body-link-color);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	ul {&lt;br /&gt;
		list-style: disc;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	pre, code, .mw-code {&lt;br /&gt;
		background: var(--theme-code-bg);&lt;br /&gt;
		border: var(--theme-code-border);&lt;br /&gt;
		color: var(--theme-code-color);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	table.zebra tr.odd {&lt;br /&gt;
		background-color: #eee;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.catlinks {&lt;br /&gt;
		background-color: var(--theme-catlinks-bg);&lt;br /&gt;
		border: var(--theme-catlinks-border);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-settings .cdx-button {&lt;br /&gt;
		background-color: var(--theme-sidebar-bg);&lt;br /&gt;
		color: #202122;&lt;br /&gt;
		border-color: #a2a9b1;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-settings .cdx-button:hover {&lt;br /&gt;
		background-color: var(--theme-dropdown-bg);&lt;br /&gt;
		color: #202122;&lt;br /&gt;
		cursor: pointer;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.mw-footer li {&lt;br /&gt;
		color: var(--theme-footer-color);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:1000px) {&lt;br /&gt;
	:root {&lt;br /&gt;
		--mw-page-container-side-padding: 2.75em;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	#vector-toc-pinned-container .vector-toc::after,&lt;br /&gt;
	.vector-feature-zebra-design-disabled #vector-toc-pinned-container .vector-toc::after {&lt;br /&gt;
		background: none;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.mw-footer-container,&lt;br /&gt;
	.vector-feature-zebra-design-disabled .mw-footer-container {&lt;br /&gt;
		grid-row-start: footer;&lt;br /&gt;
		grid-row-end: footer;&lt;br /&gt;
		grid-column-start: pageContent;&lt;br /&gt;
		grid-column-end: pageContent;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.vector-icon {&lt;br /&gt;
		filter: var(--theme-icon-filter);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:1200px) {&lt;br /&gt;
	:root {&lt;br /&gt;
		--mw-page-container-side-padding: 3.25em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-page-container-inner::before {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
    display: block;&lt;br /&gt;
	grid-column-start: toc;&lt;br /&gt;
    grid-column-end: toc;&lt;br /&gt;
    grid-row-start: siteNotice;&lt;br /&gt;
    grid-row-end: footer;&lt;br /&gt;
    margin-left: calc(-1*var(--mw-page-container-side-padding));&lt;br /&gt;
	background: var(--theme-sidebar-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled.vector-toc-not-available .mw-page-container-inner::before,&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled .vector-sidebar-container-no-toc ~ .mw-page-container-inner::before,&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled.vector-feature-toc-pinned-clientpref-0 .mw-page-container-inner::before {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-main-menu-action-opt-out {&lt;br /&gt;
	display: none;	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-footer-container {&lt;br /&gt;
	grid-row-start: footer;&lt;br /&gt;
	grid-row-end: footer;&lt;br /&gt;
	grid-column-start: pageContent;&lt;br /&gt;
	grid-column-end: pageContent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled.vector-toc-not-available .mw-footer-container,&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled .vector-sidebar-container-no-toc ~ .mw-footer-container,&lt;br /&gt;
.vector-feature-zebra-design-disabled.vector-feature-main-menu-pinned-disabled.vector-feature-toc-pinned-clientpref-0 .mw-footer-container {&lt;br /&gt;
	grid-column-start: toc;&lt;br /&gt;
	grid-column-end: pageContent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* syntax highlighting colors */&lt;br /&gt;
.hljs{background:var(--theme-hljs-bg)}&lt;br /&gt;
.hljs,.hljs-operator,.hljs-property,.hljs-punctuation,.hljs-subst,.hljs-unset{color:var(--theme-hljs-unset)}&lt;br /&gt;
.hljs-quote,.hljs-comment{color:var(--theme-hljs-comment)}&lt;br /&gt;
.hljs-doctag{color:var(--theme-hljs-doctag)}&lt;br /&gt;
.hljs-built_in,.hljs-name,.hljs-literal,.hljs-link,.hljs-meta-keyword,.hljs-keyword{color:var(--theme-hljs-keyword)}&lt;br /&gt;
.hljs-title,.hljs-type{color:var(--theme-hljs-type)}&lt;br /&gt;
.hljs-title.function_{color:var(--theme-hljs-function)}&lt;br /&gt;
.hljs-meta-string,.hljs-string{color:var(--theme-hljs-string)}&lt;br /&gt;
.hljs-number{color:var(--theme-hljs-number)}&lt;br /&gt;
.hljs-builtin-name,.hljs-formula,.hljs-params,.hljs-template-variable,.hljs-variable{color:var(--theme-hljs-variable)}&lt;br /&gt;
.hljs-symbol{color:var(--theme-hljs-symbol)}&lt;br /&gt;
.hljs-template-tag,.hljs-regexp{color:var(--theme-hljs-regexp)}&lt;br /&gt;
.hljs-tag,.hljs-tsql-literal,.hljs-meta{color:var(--theme-hljs-meta)}&lt;br /&gt;
.hljs-section{color:var(--theme-hljs-section)}&lt;br /&gt;
.hljs-attr,.hljs-attribute{color:var(--theme-hljs-attribute)}&lt;br /&gt;
.hljs-bullet{color:var(--theme-hljs-bullet)}&lt;br /&gt;
.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:var(--theme-hljs-selector)}&lt;br /&gt;
.hljs-addition{background-color:var(--theme-hljs-addition)}&lt;br /&gt;
.hljs-deletion{background-color:var(--theme-hljs-deletion)}&lt;br /&gt;
.hljs-tsql-symbol{color:var(--theme-hljs-tsql-symbol)}&lt;br /&gt;
.hljs-tsql-string{color:var(--theme-hljs-tsql-string)}&lt;br /&gt;
.hljs-tsql-built_in{color:var(--theme-hljs-tsql-built_in)}&lt;br /&gt;
.hljs-tsql-sp{color:var(--theme-hljs-tsql-sp)}&lt;br /&gt;
&lt;br /&gt;
/* light vector theme */&lt;br /&gt;
:root {&lt;br /&gt;
	--theme-body-bg: #072207;&lt;br /&gt;
	--theme-body-color: #202122;&lt;br /&gt;
	--theme-body-link-color: #3366cc;&lt;br /&gt;
	--theme-header-bg: &lt;br /&gt;
		repeating-linear-gradient(to top, #0002, #0000 1em), &lt;br /&gt;
		repeating-linear-gradient(to right, #0002, #0000 1em), &lt;br /&gt;
		radial-gradient(circle at left, #141, #151 10%, #151 40%, #113811);&lt;br /&gt;
	--theme-header-color: #fff;&lt;br /&gt;
	--theme-header-icon-filter: invert(100%);&lt;br /&gt;
	--theme-header-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-content-bg: #fff;&lt;br /&gt;
	--theme-heading-color: #000;&lt;br /&gt;
	--theme-code-bg: #f8f9fa;&lt;br /&gt;
	--theme-code-border: 1px solid #eaecf0;&lt;br /&gt;
	--theme-code-color: #000;&lt;br /&gt;
	&lt;br /&gt;
	--theme-catlinks-bg: #f8f9fa;&lt;br /&gt;
	--theme-catlinks-border: 1px solid #a2a9b1;&lt;br /&gt;
	&lt;br /&gt;
	--theme-sidebar-bg: #141;&lt;br /&gt;
	--theme-sidebar-color: #fff;&lt;br /&gt;
	--theme-sidebar-link-color: #ddf;&lt;br /&gt;
	--theme-pinnable-header-label-color: #ddd;&lt;br /&gt;
	--theme-pinnable-header-link-color: #fafff4;&lt;br /&gt;
	--theme-pinnable-header-link-hover-color: #fff;&lt;br /&gt;
	--theme-pinnable-list-heading-color: #eee;&lt;br /&gt;
	--theme-pinnable-list-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-main-menu-bg: transparent;&lt;br /&gt;
	&lt;br /&gt;
	--theme-toc-bg: transparent;&lt;br /&gt;
	--theme-toc-link-color: #fafff4;&lt;br /&gt;
	--theme-toc-active-parent-link-color: #fafafa;&lt;br /&gt;
	--theme-toc-active-link-color: #fff;&lt;br /&gt;
	&lt;br /&gt;
	--theme-dropdown-bg: #151;&lt;br /&gt;
	&lt;br /&gt;
	--theme-footer-color: #202122;&lt;br /&gt;
	&lt;br /&gt;
	/* syntax highlighting colors */&lt;br /&gt;
	--theme-hljs-bg: #f7f7f7;&lt;br /&gt;
	--theme-hljs-unset: #000;&lt;br /&gt;
	--theme-hljs-comment: #080;&lt;br /&gt;
	--theme-hljs-doctag: #556b2f;&lt;br /&gt;
	--theme-hljs-keyword: #00f;&lt;br /&gt;
	--theme-hljs-type: #2b91af;&lt;br /&gt;
	--theme-hljs-function: #74531f;&lt;br /&gt;
	--theme-hljs-string: #a31515;&lt;br /&gt;
	--theme-hljs-number: #000;&lt;br /&gt;
	--theme-hljs-variable: #9cdcfe;&lt;br /&gt;
	--theme-hljs-symbol: #d8a0df;&lt;br /&gt;
	--theme-hljs-regexp: #9a5334;&lt;br /&gt;
	--theme-hljs-meta: #9b9b9b;&lt;br /&gt;
	--theme-hljs-section: gold;&lt;br /&gt;
	--theme-hljs-attribute: #2b91af;&lt;br /&gt;
	--theme-hljs-bullet: #d7ba7d;&lt;br /&gt;
	--theme-hljs-selector: #2b91af;&lt;br /&gt;
	--theme-hljs-addition: #144212;&lt;br /&gt;
	--theme-hljs-deletion: #600;&lt;br /&gt;
	--theme-hljs-tsql-symbol: #dcdcdc;&lt;br /&gt;
	--theme-hljs-tsql-string: #cb4141;&lt;br /&gt;
	--theme-hljs-tsql-built_in: #c975d5;&lt;br /&gt;
	--theme-hljs-tsql-sp: #b3725b;&lt;br /&gt;
}&lt;br /&gt;
/* light vector theme body colors (default) */&lt;br /&gt;
.mw-content-container {&lt;br /&gt;
	--theme-icon-filter: none;&lt;br /&gt;
	&lt;br /&gt;
	--theme-pinnable-header-label-color: #54595d;&lt;br /&gt;
	--theme-pinnable-header-link-color: #3366cc;&lt;br /&gt;
	--theme-pinnable-header-link-hover-color: #447ff5;&lt;br /&gt;
	--theme-pinnable-list-heading-color: #54595d;&lt;br /&gt;
	--theme-pinnable-list-link-color: #3366cc;&lt;br /&gt;
	&lt;br /&gt;
	--theme-dropdown-bg: #fff;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Camera&amp;diff=319</id>
		<title>Camera</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Camera&amp;diff=319"/>
		<updated>2024-06-21T18:35:22Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A camera is an object with functionality that supports viewing the game world from a specific position and orientation.  Cameras can be fixed in place or move dynamically, and many games have sophisticated camera systems that include collision and physics.&lt;br /&gt;
&lt;br /&gt;
==Transition==&lt;br /&gt;
Often a static camera will need to move from one location to another, which is called a transition.  A common use for a camera transition is when a character moves between two adjacent rooms, and the camera transitions from only showing room A to only showing room B.&lt;br /&gt;
&lt;br /&gt;
===Linear Interpolation===&lt;br /&gt;
The simplest implementation for a transition is to use linear interpolation to move the camera from the starting point to the ending point over a transition time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
Vector3 CameraPosition;&lt;br /&gt;
// camera position at transition start&lt;br /&gt;
Vector3 TransitionStart;&lt;br /&gt;
// camera position at transition end&lt;br /&gt;
Vector3 TransitionEnd;&lt;br /&gt;
// progress through current transition&lt;br /&gt;
float TransitionProgressTime;&lt;br /&gt;
// Total transition time in seconds&lt;br /&gt;
float TransitionTime;&lt;br /&gt;
&lt;br /&gt;
void BeginTransition(Vector3 transitionEnd, float transitionTime)&lt;br /&gt;
{&lt;br /&gt;
    TransitionStart = CameraPosition;&lt;br /&gt;
    TransitionEnd = transitionEnd;&lt;br /&gt;
    TransitionTime = transitionTime;&lt;br /&gt;
    TransitionProgressTime = 0f;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void Update(float dt)&lt;br /&gt;
{&lt;br /&gt;
    // if a transition is in progress&lt;br /&gt;
    if (TransitionProgressTime &amp;lt; TotalTransitionTime)&lt;br /&gt;
    {&lt;br /&gt;
        TransitionProgressTime += dt;&lt;br /&gt;
        if (TransitionProgressTime &amp;lt; TotalTransitionTime)&lt;br /&gt;
        {&lt;br /&gt;
            var t = TransitionProgressTime / TotalTransitionTime;&lt;br /&gt;
            // linear interpolation&lt;br /&gt;
            CameraPosition = TransitionStart + t * (TransitionEnd - TransitionStart);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            CameraPosition = TransitionEnd;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Follow==&lt;br /&gt;
One of the most common behaviors implemented on dynamic cameras is the ability to follow a target, often the player.&lt;br /&gt;
&lt;br /&gt;
===Rigid Follow===&lt;br /&gt;
The simplest implementation to achieve follow behavior is to rigidly lock your camera to the follow target.  This was often done with early 2D games, where the camera would keep the player in the center of the screen at all times, unless the camera hit the scroll boundary of the map.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
Vector3 CameraPosition;&lt;br /&gt;
Vector3 FollowTarget;&lt;br /&gt;
Vector3 FollowOffset = Vector3.Zero;&lt;br /&gt;
&lt;br /&gt;
void Update(float dt)&lt;br /&gt;
{&lt;br /&gt;
    CameraPosition = FollowTarget + FollowOffset;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Spring Damper===&lt;br /&gt;
Sometimes the desired behavior is for the camera to trail behind the follow target.  Adding camera physics helps to smooth out the motion of the camera, and the simplest form of camera physics is a spring damper system.  The following code simulates a critically damped spring damper system.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
Vector3 CameraPosition;&lt;br /&gt;
Vector3 CameraVelocity;&lt;br /&gt;
Vector3 FollowTarget;&lt;br /&gt;
Vector3 FollowOffset = Vector3.Zero;&lt;br /&gt;
// FollowRate must be greater than zero.&lt;br /&gt;
float FollowRate = 2.0f;&lt;br /&gt;
&lt;br /&gt;
void Update(float dt)&lt;br /&gt;
{&lt;br /&gt;
    // get vector to desired location&lt;br /&gt;
    var d = FollowTarget + FollowOffset - CameraPosition;&lt;br /&gt;
    // Calculate the acceleration of the camera.  This will be the sum of two terms:&lt;br /&gt;
    // the spring acceleration which scales with distance from the target&lt;br /&gt;
    Vector3 AccelerationSpring = (FollowRate * FollowRate / 4) * d;&lt;br /&gt;
    // the damping acceleration which scales opposite the velocity of the camera&lt;br /&gt;
    Vector3 AccelerationDamping = -1 * FollowRate * CameraVelocity;&lt;br /&gt;
    Vector3 CameraAcceleration = AccelerationSpring + AccelerationDamping;&lt;br /&gt;
    // apply acceleration to velocity&lt;br /&gt;
    CameraVelocity += CameraAcceleration * dt;&lt;br /&gt;
    // settle if both velocity and acceleration are near zero&lt;br /&gt;
    if (CameraVelocity.DistanceSquared() &amp;lt; 1 &amp;amp;&amp;amp; CameraAcceleration.DistanceSquared() &amp;lt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        CameraVelocity = Vector2.Zero;&lt;br /&gt;
        CameraPosition = FollowTarget + FollowOffset;&lt;br /&gt;
    }&lt;br /&gt;
    // apply velocity to position&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        CameraPosition += CameraVelocity * dt;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that there is a check for the camera being at a minimum distance from the target which snaps the camera into its equilibrium position.&lt;br /&gt;
&lt;br /&gt;
[[Category:Camera]]&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Camera&amp;diff=318</id>
		<title>Camera</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Camera&amp;diff=318"/>
		<updated>2024-06-21T01:17:28Z</updated>

		<summary type="html">&lt;p&gt;Winkio: /* Spring Damper */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A camera is an object with functionality that supports viewing the game world from a specific position and orientation.  Cameras can be fixed in place or move dynamically, and many games have sophisticated camera systems that include collision and physics.&lt;br /&gt;
&lt;br /&gt;
==Follow==&lt;br /&gt;
One of the most common behaviors implemented on dynamic cameras is the ability to follow a target, often the player.&lt;br /&gt;
&lt;br /&gt;
===Rigid Follow===&lt;br /&gt;
The simplest implementation to achieve follow behavior is to rigidly lock your camera to the follow target.  This was often done with early 2D games, where the camera would keep the player in the center of the screen at all times, unless the camera hit the scroll boundary of the map.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
Vector3 CameraPosition;&lt;br /&gt;
Vector3 FollowTarget;&lt;br /&gt;
Vector3 FollowOffset = Vector3.Zero;&lt;br /&gt;
&lt;br /&gt;
void Update(float dt)&lt;br /&gt;
{&lt;br /&gt;
    CameraPosition = FollowTarget + FollowOffset;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Interpolation===&lt;br /&gt;
Sometimes the desired behavior is for the camera to trail behind the follow target.  The simplest implementation for this behavior is to use interpolation to move the camera a percentage of the way towards the target each frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
Vector3 CameraPosition;&lt;br /&gt;
Vector3 FollowTarget;&lt;br /&gt;
Vector3 FollowOffset = Vector3.Zero;&lt;br /&gt;
// FollowRate must be greater than zero.&lt;br /&gt;
float FollowRate = 2.0f;&lt;br /&gt;
&lt;br /&gt;
void Update(float dt)&lt;br /&gt;
{&lt;br /&gt;
    // get vector to desired location&lt;br /&gt;
    var d = FollowTarget + FollowOffset - CameraPosition;&lt;br /&gt;
    var dsq = d.LengthSquared();&lt;br /&gt;
    CameraPosition += dsq &amp;gt; 1 ? d * FollowRate * dt : d;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that there is a check for the camera being at a minimum distance from the target which snaps the camera into its equilibrium position.&lt;br /&gt;
&lt;br /&gt;
===Spring Damper===&lt;br /&gt;
Adding camera physics helps to smooth out the motion of the camera, and the simplest form of camera physics is a spring damper system.  The following code simulates a critically damped spring damper system.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
Vector3 CameraPosition;&lt;br /&gt;
Vector3 CameraVelocity;&lt;br /&gt;
Vector3 FollowTarget;&lt;br /&gt;
Vector3 FollowOffset = Vector3.Zero;&lt;br /&gt;
// FollowRate must be greater than zero.&lt;br /&gt;
float FollowRate = 2.0f;&lt;br /&gt;
&lt;br /&gt;
void Update(float dt)&lt;br /&gt;
{&lt;br /&gt;
    // get vector to desired location&lt;br /&gt;
    var d = FollowTarget + FollowOffset - CameraPosition;&lt;br /&gt;
    // Calculate the acceleration of the camera.  This will be the sum of two terms:&lt;br /&gt;
    // the spring acceleration which scales with distance from the target&lt;br /&gt;
    Vector3 AccelerationSpring = (FollowRate * FollowRate / 4) * d;&lt;br /&gt;
    // the damping acceleration which scales opposite the velocity of the camera&lt;br /&gt;
    Vector3 AccelerationDamping = -1 * FollowRate * CameraVelocity;&lt;br /&gt;
    Vector3 CameraAcceleration = AccelerationSpring + AccelerationDamping;&lt;br /&gt;
    // apply acceleration to velocity&lt;br /&gt;
    CameraVelocity += CameraAcceleration * dt;&lt;br /&gt;
    // settle if both velocity and acceleration are near zero&lt;br /&gt;
    if (CameraVelocity.DistanceSquared() &amp;lt; 1 &amp;amp;&amp;amp; CameraAcceleration.DistanceSquared() &amp;lt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        CameraVelocity = Vector2.Zero;&lt;br /&gt;
        CameraPosition = FollowTarget + FollowOffset;&lt;br /&gt;
    }&lt;br /&gt;
    // apply velocity to position&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        CameraPosition += CameraVelocity * dt;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Camera]]&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Camera&amp;diff=317</id>
		<title>Camera</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Camera&amp;diff=317"/>
		<updated>2024-06-20T19:34:40Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A camera is an object with functionality that supports viewing the game world from a specific position and orientation.  Cameras can be fixed in place or move dynamically, and many games have sophisticated camera systems that include collision and physics.&lt;br /&gt;
&lt;br /&gt;
==Follow==&lt;br /&gt;
One of the most common behaviors implemented on dynamic cameras is the ability to follow a target, often the player.&lt;br /&gt;
&lt;br /&gt;
===Rigid Follow===&lt;br /&gt;
The simplest implementation to achieve follow behavior is to rigidly lock your camera to the follow target.  This was often done with early 2D games, where the camera would keep the player in the center of the screen at all times, unless the camera hit the scroll boundary of the map.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
Vector3 CameraPosition;&lt;br /&gt;
Vector3 FollowTarget;&lt;br /&gt;
Vector3 FollowOffset = Vector3.Zero;&lt;br /&gt;
&lt;br /&gt;
void Update(float dt)&lt;br /&gt;
{&lt;br /&gt;
    CameraPosition = FollowTarget + FollowOffset;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Interpolation===&lt;br /&gt;
Sometimes the desired behavior is for the camera to trail behind the follow target.  The simplest implementation for this behavior is to use interpolation to move the camera a percentage of the way towards the target each frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
Vector3 CameraPosition;&lt;br /&gt;
Vector3 FollowTarget;&lt;br /&gt;
Vector3 FollowOffset = Vector3.Zero;&lt;br /&gt;
// FollowRate must be greater than zero.&lt;br /&gt;
float FollowRate = 2.0f;&lt;br /&gt;
&lt;br /&gt;
void Update(float dt)&lt;br /&gt;
{&lt;br /&gt;
    // get vector to desired location&lt;br /&gt;
    var d = FollowTarget + FollowOffset - CameraPosition;&lt;br /&gt;
    var dsq = d.LengthSquared();&lt;br /&gt;
    CameraPosition += dsq &amp;gt; 1 ? d * FollowRate * dt : d;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that there is a check for the camera being at a minimum distance from the target which snaps the camera into its equilibrium position.&lt;br /&gt;
&lt;br /&gt;
===Spring Damper===&lt;br /&gt;
Adding camera physics helps to smooth out the motion of the camera, and the simplest form of camera physics is a spring damper system.  The following code simulates a critically damped spring damper system.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
Vector3 CameraPosition;&lt;br /&gt;
Vector3 CameraVelocity;&lt;br /&gt;
Vector3 FollowTarget;&lt;br /&gt;
Vector3 FollowOffset = Vector3.Zero;&lt;br /&gt;
// FollowRate must be greater than zero.&lt;br /&gt;
float FollowRate = 2.0f;&lt;br /&gt;
&lt;br /&gt;
void Update(float dt)&lt;br /&gt;
{&lt;br /&gt;
    // get vector to desired location&lt;br /&gt;
    var d = FollowTarget + FollowOffset - CameraPosition;&lt;br /&gt;
    // Calculate the acceleration of the camera.  This will be the sum of two terms:&lt;br /&gt;
    // the spring acceleration which scales with distance from the target&lt;br /&gt;
    Vector3 AccelerationSpring = (FollowRate * FollowRate / 4) * d;&lt;br /&gt;
    // the damping acceleration which scales opposite the velocity of the camera&lt;br /&gt;
    Vector3 AccelerationDamping = -1 * FollowRate * CameraVelocity;&lt;br /&gt;
    Vector3 CameraAcceleration = AccelerationSpring + AccelerationDamping;&lt;br /&gt;
    // apply acceleration to velocity&lt;br /&gt;
    CameraVelocity += CameraAcceleration * dt;&lt;br /&gt;
    // round velocity to zero if both velocity and acceleration are near zero&lt;br /&gt;
    if (CameraVelocity.DistanceSquared() &amp;lt; 1 &amp;amp;&amp;amp; CameraAcceleration.DistanceSquared() &amp;lt; 1)&lt;br /&gt;
        CameraVelocity = Vector2.Zero;&lt;br /&gt;
    // apply velocity to position&lt;br /&gt;
    CameraPosition += CameraVelocity * dt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Camera]]&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
	<entry>
		<id>https://csharpgamedev.com/w/index.php?title=Camera&amp;diff=316</id>
		<title>Camera</title>
		<link rel="alternate" type="text/html" href="https://csharpgamedev.com/w/index.php?title=Camera&amp;diff=316"/>
		<updated>2024-06-20T14:24:16Z</updated>

		<summary type="html">&lt;p&gt;Winkio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A camera is an object with functionality that supports viewing the game world from a specific position and orientation.  Cameras can be fixed in place or move dynamically, and many games have sophisticated camera systems that include collision and physics.&lt;br /&gt;
&lt;br /&gt;
==Follow==&lt;br /&gt;
One of the most common behaviors implemented on dynamic cameras is the ability to follow a target, often the player.&lt;br /&gt;
&lt;br /&gt;
===Rigid Follow===&lt;br /&gt;
The simplest implementation to achieve follow behavior is to rigidly lock your camera to the follow target.  This was often done with early 2D games, where the camera would keep the player in the center of the screen at all times, unless the camera hit the scroll boundary of the map.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
Vector3 CameraPosition;&lt;br /&gt;
Vector3 FollowTarget;&lt;br /&gt;
Vector3 FollowOffset = Vector3.Zero;&lt;br /&gt;
&lt;br /&gt;
void Update(float dt)&lt;br /&gt;
{&lt;br /&gt;
    CameraPosition = FollowTarget + FollowOffset;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Interpolation===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
Vector3 CameraPosition;&lt;br /&gt;
Vector3 FollowTarget;&lt;br /&gt;
Vector3 FollowOffset = Vector3.Zero;&lt;br /&gt;
// FollowRate must be greater than zero.&lt;br /&gt;
float FollowRate = 2.0f;&lt;br /&gt;
&lt;br /&gt;
void Update(float dt)&lt;br /&gt;
{&lt;br /&gt;
    // get vector to desired location&lt;br /&gt;
    var d = FollowTarget + FollowOffset - CameraPosition;&lt;br /&gt;
    var dsq = d.LengthSquared();&lt;br /&gt;
    CameraPosition += dsq &amp;gt; 1 ? d * FollowRate * dt : d;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Spring Damper===&lt;br /&gt;
Adding camera physics helps to smooth out the motion of the camera, and the simplest form of camera physics is a spring damper system.  The following code simulates a critically damped spring damper system.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cs&amp;quot;&amp;gt;&lt;br /&gt;
Vector3 CameraPosition;&lt;br /&gt;
Vector3 CameraVelocity;&lt;br /&gt;
Vector3 FollowTarget;&lt;br /&gt;
Vector3 FollowOffset = Vector3.Zero;&lt;br /&gt;
// FollowRate must be greater than zero.&lt;br /&gt;
float FollowRate = 2.0f;&lt;br /&gt;
&lt;br /&gt;
void Update(float dt)&lt;br /&gt;
{&lt;br /&gt;
    // get vector to desired location&lt;br /&gt;
    var d = FollowTarget + FollowOffset - CameraPosition;&lt;br /&gt;
    // Calculate the acceleration of the camera.  This will be the sum of two terms:&lt;br /&gt;
    // the spring acceleration which scales with distance from the target&lt;br /&gt;
    Vector3 AccelerationSpring = (FollowRate * FollowRate / 4) * d;&lt;br /&gt;
    // the damping acceleration which scales opposite the velocity of the camera&lt;br /&gt;
    Vector3 AccelerationDamping = -1 * FollowRate * CameraVelocity;&lt;br /&gt;
    Vector3 CameraAcceleration = AccelerationSpring + AccelerationDamping;&lt;br /&gt;
    // apply acceleration to velocity&lt;br /&gt;
    CameraVelocity += CameraAcceleration * dt;&lt;br /&gt;
    // round velocity to zero if both velocity and acceleration are near zero&lt;br /&gt;
    if (CameraVelocity.DistanceSquared() &amp;lt; 1 &amp;amp;&amp;amp; CameraAcceleration.DistanceSquared() &amp;lt; 1)&lt;br /&gt;
        CameraVelocity = Vector2.Zero;&lt;br /&gt;
    // apply velocity to position&lt;br /&gt;
    CameraPosition += CameraVelocity * dt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Camera]]&lt;/div&gt;</summary>
		<author><name>Winkio</name></author>
	</entry>
</feed>