- Valve hat das Counter-Strike 2 Update gezielt für Mapper und Modder ausgerichtet. Im Kern liefert es neue Script-Schnittstellen für Custom Maps, ein eigenes HUD-System für Karten sowie mehr Kontrolle über Kamera, Bomben-Events und das Bewegungsverhalten von Entities. Für normale Matchmaking-Spieler ändert sich auf den ersten Blick wenig, für Leute aus dem Workshop dagegen ziemlich viel.
Das Update erweitert den Spielraum für Custom Maps
Der wichtigste Bestandteil dieses Counter-Strike 2 Updates ist die neue custom_hud_layout-Entity. Damit können gescriptete Maps eigene UI-Elemente bereitstellen. Valve nennt dafür mehrere unterstützte Panel-Typen, darunter Panel, Label, Image und Button. Zusätzlich ist CSS-Styling möglich. Für Creator bedeutet das: Informationen müssen nicht mehr ausschließlich über klassische World-Elemente oder Text-Hacks vermittelt werden, sondern lassen sich sauber im HUD darstellen.
Ganz frei ist das System jedoch nicht. Valve unterstützt ausdrücklich kein clientseitiges Scripting und keine Events in dem Umfang, wie man es sich aus einer vollständigen UI-Engine wünschen würde. Das bremst die Möglichkeiten etwas, setzt aber auch klare Grenzen, damit Kartenbauer nicht an der eigentlichen Spielclient-Logik vorbeientwickeln.
Ein praktisches Detail: Der Zustand der HUD-Layouts bleibt bei Reloads im Tools-Modus erhalten. Das klingt nach Kleinigkeiten, spart aber in der täglichen Arbeit spürbar Zeit.
Dazu kommt die neue cs_player_camera-Entity. Sie gibt einer Map Kontrolle über die Sicht eines Spielers, ohne dessen Pawn zu verschieben. Das ist mehr als eine technische Nebenfunktion. Damit lassen sich geführte Intros, kurze Szenen, Trainingsabläufe oder spezielle Mechaniken deutlich sauberer umsetzen. Mapper können zudem einstellen, dass Spieler sich aus der gescripteten Perspektive noch umsehen dürfen. Dadurch wirkt die Kamera in der Praxis weniger starr, was für Übergänge und Trainingsmomente besonders hilfreich ist.
Zusätzliche Hooks für Bombenlogik, Bewegung und Zustände
Valve hat im Counter-Strike 2 Update auch die Script-API deutlich erweitert. Auffällig ist vor allem, wie viele neue Hooks direkt an typische CS-Abläufe gekoppelt sind. Neu sind unter anderem Instance.OnBombPlantStart, Instance.OnBombPlantAbort, Instance.OnBombDefuseStart und Instance.OnBombDefuseAbort. Karten reagieren damit präziser auf einzelne Phasen des Plants oder Defuses, statt nur auf grobere Trigger zu setzen.
Gerade bei Defuse-Maps, Trainingskarten oder experimentellen Modi ist das ein echter Gewinn. Ein Mapper kann beispielsweise beim Start eines Plants eine Kamera schalten, ein HUD-Element einblenden oder eine Zone sperren. Bricht der Spieler den Vorgang ab, kann das Script sofort entsprechend reagieren. Frühere Ansätze waren dafür oft umständlicher oder mussten mit weniger genauen Events auskommen.
Ergänzend kommen weitere Bausteine hinzu:
Instance.DelayInstance.OnCustomHudClickedInstance.IsDedicatedServerEntity.MoveEntity.GetMoveTypeEntity.SetMoveTypeCSPlayerPawn.GetC4CSPlayerPawn.GetDefuseTargetCSPlayerPawn.IsBuyMenuOpenCSPlayerPawn.GetCameraC4.GetPlantStartTimeC4.GetPlantFinishTimeC4.AbortPlant
Besonders relevant sind die neuen C4- und Player-Funktionen. GetC4, GetDefuseTarget oder IsBuyMenuOpen liefern direktere Informationen darüber, was ein Spieler gerade macht. In Workshop-Projekten, bei denen Timing, Zustandsabfragen oder eigene Interface-Logik eine Rolle spielen, kann das den Unterschied zwischen "irgendwie passend" und "sauber kontrolliert" ausmachen. Für den Casual-Teil der Community ist das weniger ein Blickfang, für Scripting-Enthusiasten hingegen ein solides Fundament.
Auch bei der Bewegung wurde nachgelegt. Entity.Move sowie GetMoveType und SetMoveType zusammen mit dem neuen Enum CSMoveType geben mehr Kontrolle darüber, wie sich Objekte oder gescriptete Elemente verhalten. Für Custom-Modi bedeutet das: präzisere Interaktionen werden leichter.
Das neue HUD-System lässt sich gezielt steuern
Valve beschränkt sich beim HUD nicht auf reine Anzeigeoptionen. Für CustomHudLayout gibt es mehrere Funktionen, die im Alltag bei der Umsetzung von Karten nützlich sind:
| Funktion | Zweck |
|---|---|
SetHasClass |
CSS-Klassen am HUD-Layout setzen |
SetHasClassForPlayer |
Klassen gezielt pro Spieler setzen |
SetDialogVariableString |
Textvariablen im Layout befüllen |
SetDialogVariableStringForPlayer |
Variablen pro Spieler individuell setzen |
SetInputCaptureEnabled |
Eingaben für das HUD aktivieren |
IsInputCaptureEnabled |
Status der Eingabeabfangung prüfen |
Damit wird klar, wohin Valve denkt: Karten sollen nicht nur statische Hinweise anzeigen, sondern Inhalte dynamisch an Spielerzustände anpassen. Wenn eine Trainings-Map unterschiedliche Hinweise für verschiedene Spieler geben soll, sind die player-spezifischen Funktionen dafür bereits vorbereitet.
Dass Buttons unterstützt werden und es mit Instance.OnCustomHudClicked außerdem einen passenden Hook gibt, rundet das Paket ab.
Gleichzeitig bleibt das System kontrolliert. Kein umfangreiches clientseitiges Scripting, keine freie Event-Kaskade nur für das UI. Aus Entwicklersicht ist das insgesamt sinnvoll, weil es die Tür öffnet, aber die Grenzen klar hält.
Verbesserte Fehlersuche für Mapper
Neben den neuen Features hat Valve auch am Debugging gearbeitet. Fehler aus dem ersten Script-Durchlauf werden jetzt in der Konsole sichtbar. Unhandled Promise Rejections werden ebenfalls geloggt. Zusätzlich zeigt der CompileModule-Schritt beim Laden von Scripts nun auch die Spaltennummer eines Fehlers an.
Das wirkt wie Kleinkram, ist aber in der Praxis oft genau der Punkt, der die Entwicklungszeit verkürzt. Wer mit Scripts arbeitet, kennt das Problem: Fehlersuche frisst häufig mehr Zeit als das Erstellen selbst. Eine Zeilennummer hilft bereits, eine Spaltennummer hilft noch deutlich mehr. Wenn Promise-Rejections sichtbar werden, reduziert das außerdem das Rätselraten.
Valve hat außerdem bei einigen Events Typen korrigiert, bei denen Parameter möglicherweise undefined waren. Diese Kanten sind besonders nervig, weil sie Fehler erzeugen können, die sich nicht sofort sauber reproduzieren lassen.
Im Zuge der Anpassungen gibt es zwei Deprecations: planter aus Instance.OnBombPlant und defuser aus Instance.OnBombDefuse gelten nun als veraltet. Das passt zum Gesamtbild: Die Bombenlogik wird feiner, und Mapper werden von älteren, groberen Event-Mustern weggeführt.
Der Patch zielt kaum auf Gunplay oder Matchmaking. Er zielt auf Leute, die in Counter-Strike 2 eigene Inhalte bauen.
Gerade deswegen ist das Update für viele Workshop-Creator deutlich interessanter als es auf den ersten Blick wirkt. Für Premier-Spieler ist es eher eine Randnotiz. Für Mapper und Scripter ist es dagegen ein spürbarer Werkzeugkasten mit mehr Reichweite.
Vollständige Änderungen (Valve)
[ MAP SCRIPTING ]
-
Hinzugefügt custom_hud_layout Entity:
-
custom_hud_layouts sind der Einstiegspunkt für gescriptete Karten, um benutzerdefinierte UI bereitzustellen.
-
Panel-, Label-, Bild- und Button-Paneltypen werden unterstützt.
-
Styling mit CSS wird unterstützt.
-
Ereignisse und clientseitiges Scripting werden nicht unterstützt.
-
Beibehaltung des Zustands während der Werkzeugsmodus-Neuladungen.
-
Hinzugefügt cs_player_camera Entity:
-
Gibt die Kontrolle über die Sicht eines Spielers, ohne dessen Spielfigur zu bewegen.
-
Kann konfiguriert werden, um dem Spieler zu ermöglichen, von der gescripteten Position aus umzusehen.
-
Hinzugefügt Instance.Delay
-
Hinzugefügt Instance.OnBombPlantStart
-
Hinzugefügt Instance.OnBombPlantAbort
-
Hinzugefügt Instance.OnBombDefuseStart
-
Hinzugefügt Instance.OnBombDefuseAbort
-
Hinzugefügt Instance.OnCustomHudClicked
-
Hinzugefügt Instance.IsDedicatedServer
-
Hinzugefügt Entity.Move
-
Hinzugefügt Entity.GetMoveType
-
Hinzugefügt Entity.SetMoveType
-
Hinzugefügt CSPlayerPawn.GetC4
-
Hinzugefügt CSPlayerPawn.GetDefuseTarget
-
Hinzugefügt CSPlayerPawn.IsBuyMenuOpen
-
Hinzugefügt CSPlayerPawn.GetCamera
-
Hinzugefügt C4.GetPlantStartTime
-
Hinzugefügt C4.GetPlantFinishTime
-
Hinzugefügt C4.AbortPlant
-
Hinzugefügt CustomHudLayout.SetHasClass
-
Hinzugefügt CustomHudLayout.SetHasClassForPlayer
-
Hinzugefügt CustomHudLayout.SetDialogVariableString
-
Hinzugefügt CustomHudLayout.SetDialogVariableStringForPlayer
-
Hinzugefügt CustomHudLayout.SetInputCaptureEnabled
-
Hinzugefügt CustomHudLayout.IsInputCaptureEnabled
-
Hinzugefügt CSPlayerCamera.IsEnabled
-
Hinzugefügt CSPlayerCamera.SetEnabled
-
Hinzugefügt CSPlayerCamera.SetIsControllingAngles
-
Hinzugefügt enum CSMoveType
-
Korrigierte Typen für einige Ereignisse, bei denen Parameter möglicherweise undefiniert waren.
-
Fehler, die während des ersten Skriptlaufs auftraten, werden jetzt in der Konsole protokolliert.
-
Unbehandelte Promise-Ablehnungen werden jetzt in der Konsole protokolliert.
-
Die Spaltennummer wurde zu Fehlern hinzugefügt, die während des CompileModule-Schrittes des Skriptladens erfasst wurden.
-
Deprecated planter von Instance.OnBombPlant-Ereignis
-
Deprecated defuser von Instance.OnBombDefuse-Ereignis
Polski
English
Українська
Deutsch
Español
Türkçe
Português (BR)
Français
Čeština