<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://sms-wiki.rrgames.org/index.php?action=history&amp;feed=atom&amp;title=Spielmechaniken</id>
	<title>Spielmechaniken - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://sms-wiki.rrgames.org/index.php?action=history&amp;feed=atom&amp;title=Spielmechaniken"/>
	<link rel="alternate" type="text/html" href="https://sms-wiki.rrgames.org/index.php?title=Spielmechaniken&amp;action=history"/>
	<updated>2026-07-26T07:39:54Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Social Media Simulator Wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://sms-wiki.rrgames.org/index.php?title=Spielmechaniken&amp;diff=29&amp;oldid=prev</id>
		<title>FeGmbH: /* API-Referenz für Mechaniken */</title>
		<link rel="alternate" type="text/html" href="https://sms-wiki.rrgames.org/index.php?title=Spielmechaniken&amp;diff=29&amp;oldid=prev"/>
		<updated>2026-06-16T19:04:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;API-Referenz für Mechaniken&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 16. Juni 2026, 21:04 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l48&quot;&gt;Zeile 48:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 48:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;/api/shop/buy&amp;lt;/code&amp;gt; || POST || Führt einen Kauf aus. || Validiert Guthaben, zieht Kosten ab und aktiviert Upgrade-Effekte.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;/api/shop/buy&amp;lt;/code&amp;gt; || POST || Führt einen Kauf aus. || Validiert Guthaben, zieht Kosten ab und aktiviert Upgrade-Effekte.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;/api/game/event-choice&amp;lt;/code&amp;gt; || POST || Verarbeitet RPG-Entscheidungen. || Wendet die positiven/negativen Konsequenzen des Events an.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;/api/game/event-choice&amp;lt;/code&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(Coming Soon) &lt;/ins&gt;|| POST || Verarbeitet RPG-Entscheidungen. || Wendet die positiven/negativen Konsequenzen des Events an.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategorie:Spielmechanik]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategorie:Spielmechanik]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategorie:Entwickler-Dokumentation]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategorie:Entwickler-Dokumentation]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key smsimwiki:diff:1.41:old-28:rev-29:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>FeGmbH</name></author>
	</entry>
	<entry>
		<id>https://sms-wiki.rrgames.org/index.php?title=Spielmechaniken&amp;diff=28&amp;oldid=prev</id>
		<title>FeGmbH: Die Seite wurde neu angelegt: „Das System hinter den &#039;&#039;&#039;Spielmechaniken&#039;&#039;&#039; im &#039;&#039;Social Media Simulator&#039;&#039; steuert die gesamte Spiellogik, die Berechnungen der Kennzahlen und die Abwicklung von Events. Die Mechaniken sind serverseitig in Spring Boot implementiert und laufen komplett unabhängig vom darstellenden PHP-Frontend.  __TOC__  == Core-Loop &amp; Zeitsteuerung == Die Spielmechanik basiert auf einem zustandslosen, pull-basierten Modell. Es gibt keinen permanenten Hintergrund-Thread, d…“</title>
		<link rel="alternate" type="text/html" href="https://sms-wiki.rrgames.org/index.php?title=Spielmechaniken&amp;diff=28&amp;oldid=prev"/>
		<updated>2026-06-16T19:02:28Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „Das System hinter den &amp;#039;&amp;#039;&amp;#039;Spielmechaniken&amp;#039;&amp;#039;&amp;#039; im &amp;#039;&amp;#039;Social Media Simulator&amp;#039;&amp;#039; steuert die gesamte Spiellogik, die Berechnungen der Kennzahlen und die Abwicklung von Events. Die Mechaniken sind serverseitig in Spring Boot implementiert und laufen komplett unabhängig vom darstellenden PHP-Frontend.  __TOC__  == Core-Loop &amp;amp; Zeitsteuerung == Die Spielmechanik basiert auf einem zustandslosen, pull-basierten Modell. Es gibt keinen permanenten Hintergrund-Thread, d…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Das System hinter den &amp;#039;&amp;#039;&amp;#039;Spielmechaniken&amp;#039;&amp;#039;&amp;#039; im &amp;#039;&amp;#039;Social Media Simulator&amp;#039;&amp;#039; steuert die gesamte Spiellogik, die Berechnungen der Kennzahlen und die Abwicklung von Events. Die Mechaniken sind serverseitig in Spring Boot implementiert und laufen komplett unabhängig vom darstellenden PHP-Frontend.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Core-Loop &amp;amp; Zeitsteuerung ==&lt;br /&gt;
Die Spielmechanik basiert auf einem zustandslosen, pull-basierten Modell. Es gibt keinen permanenten Hintergrund-Thread, der die Server-Ressourcen blockiert, sondern die Updates werden über die Client-Anfragen getriggert.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Das 10-Hz-Intervall:&amp;#039;&amp;#039;&amp;#039; Da das Frontend die Daten über &amp;lt;code&amp;gt;updateHUD()&amp;lt;/code&amp;gt; 10 Mal in der Sek (100ms) neu abfragt, nutzt das Backend diese Requests, um die zeitabhängigen Variablen (z. B. passives Einkommen durch Werbeeinnahmen oder Mitarbeiter-Kosten) zu berechnen und zu inkrementieren.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Echtzeit-Berechnung:&amp;#039;&amp;#039;&amp;#039; Bei jedem Aufruf der REST-Schnittstelle wird die Zeitdifferenz zum letzten Request ermittelt und die Werte wie Guthaben (&amp;lt;code&amp;gt;money&amp;lt;/code&amp;gt;) oder Forschungspunkte (&amp;lt;code&amp;gt;researchPoints&amp;lt;/code&amp;gt;) entsprechend hochgerechnet.&lt;br /&gt;
&lt;br /&gt;
== Kern-Komponenten der Mechanik ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Wirtschaftssystem (Finanzen) ===&lt;br /&gt;
Das Wirtschaftssystem berechnet den Cashflow des Spielers. &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Einnahmen:&amp;#039;&amp;#039;&amp;#039; Generieren sich passiv basierend auf der Reichweite der Plattform und aktiv durch Interaktionen.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ausgaben:&amp;#039;&amp;#039;&amp;#039; Die laufenden Kosten berechnen sich direkt aus der Anzahl der eingestellten Mitarbeiter (&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;). &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Sandbox-Modus:&amp;#039;&amp;#039;&amp;#039; Ist in der Konfiguration die Flag &amp;lt;code&amp;gt;infinite_money&amp;lt;/code&amp;gt; aktiv, werden finanzielle Abzüge bei Einkäufen im Shop ausgesetzt.&lt;br /&gt;
&lt;br /&gt;
=== 2. Upgrade-Logik (Shop-Schnittstelle) ===&lt;br /&gt;
Der Shop schaltet neue spielerische Möglichkeiten frei und skaliert die Produktionswerte. Ein Kauf läuft nach folgendem mechanischen Muster ab:&lt;br /&gt;
# Der Client sendet den Item-Namen per &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; an &amp;lt;code&amp;gt;/api/shop/buy&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Das Backend schaut in der registrierten Upgrade-Liste nach dem Basispreis.&lt;br /&gt;
# Es wird geprüft, ob &amp;lt;code&amp;gt;money &amp;gt;= price&amp;lt;/code&amp;gt; erfüllt ist.&lt;br /&gt;
# Bei Erfolg wird der Preis abgezogen und der jeweilige Effekt (z. B. Erhöhung der Forschungsrate oder Freischaltung neuer Event-Typen) auf das Spielobjekt angewendet.&lt;br /&gt;
&lt;br /&gt;
=== 3. Ereignis-Trigger (RPG-Events) ===&lt;br /&gt;
Zufallsereignisse brechen das lineare Wachstum auf und fordern strategische Entscheidungen.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Trigger-Chance:&amp;#039;&amp;#039;&amp;#039; Bei den regelmäßigen API-Abfragen besteht eine prozentuale Wahrscheinlichkeit, dass ein unvorhergesehenes Ereignis generiert wird.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Zustands-Sperre:&amp;#039;&amp;#039;&amp;#039; Sobald ein Event aktiv ist, wird im JSON ein Event-Objekt mitgeliefert. Das Frontend pausiert optisch und erzwingt das HTML5-Dialogfeld.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Konsequenzen-Verarbeitung:&amp;#039;&amp;#039;&amp;#039; Die Antwort des Spielers wird an &amp;lt;code&amp;gt;/api/game/event-choice?choice=...&amp;lt;/code&amp;gt; gesendet. Das Backend wertet den String aus und modifiziert die Server-Variablen (z. B. Abbuchen von 50 Euro bei Gehaltserhöhungen oder Verringern des Mitarbeiter-Zählers bei einer Kündigung).&lt;br /&gt;
&lt;br /&gt;
== Erweiterbarkeit (Extensions) ==&lt;br /&gt;
Die Spielmechaniken sind so aufgebaut, dass sie über ein Modul-System erweitert werden können. Wie im Frontend-Template ersichtlich, können Themes oder Mechanik-Erweiterungen (z. B. &amp;lt;code&amp;gt;cyberpunk&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;matrix_theme&amp;lt;/code&amp;gt;) registriert werden.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Style- &amp;amp; Skript-Hooks:&amp;#039;&amp;#039;&amp;#039; Über die &amp;lt;code&amp;gt;ext.php&amp;lt;/code&amp;gt; der jeweiligen Extension werden zusätzliche Stylesheets und JavaScript-Dateien injiziert, die das Verhalten der Aktionen-Box manipulieren können.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;HTML-Footer-Hooks:&amp;#039;&amp;#039;&amp;#039; Ermöglichen es, eigene, unsichtbare Dialoge oder zusätzliche Event-Listener in den DOM einzubetten, um neue Gameplay-Elemente zu registrieren, ohne den Core-Code der Plattform zu verändern.&lt;br /&gt;
&lt;br /&gt;
== API-Referenz für Mechaniken ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Endpunkt !! Methode !! Beschreibung !! Auswirkung auf Spielmechanik&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/api/init&amp;lt;/code&amp;gt; || GET || Initialisiert eine neue Session. || Generiert eine neue, eindeutige Game-UUID.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/api/game&amp;lt;/code&amp;gt; || GET || Ruft den aktuellen Zustand ab. || Berechnet den zeitlichen Fortschritt seit dem letzten Aufruf.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/api/shop/buy&amp;lt;/code&amp;gt; || POST || Führt einen Kauf aus. || Validiert Guthaben, zieht Kosten ab und aktiviert Upgrade-Effekte.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/api/game/event-choice&amp;lt;/code&amp;gt; || POST || Verarbeitet RPG-Entscheidungen. || Wendet die positiven/negativen Konsequenzen des Events an.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Spielmechanik]]&lt;br /&gt;
[[Kategorie:Entwickler-Dokumentation]]&lt;/div&gt;</summary>
		<author><name>FeGmbH</name></author>
	</entry>
</feed>