Ich arbeite an einem "sozialen" Spiel, das zu 90% abgeschlossen ist. Eine der verbleibenden Funktionen ist der Lernmodus.
Grundsätzlich beschränkt der Lernmodus den Benutzer auf den Zugriff auf einige Teile der Benutzeroberfläche und auf die Funktionen (z. B. Speicherelemente). Das Lernprogramm wird nur fortgesetzt, wenn ein bestimmtes Ereignis ausgelöst wird, insbesondere nach dem Lernprogramm.
Der Code ist fertig und wir haben bereits ein "fast" funktionierendes Spiel. Das Problem ist, dass ich den Tutorial-Modus nicht vorausgesehen habe, während ich diese 90% gemacht habe. Meine Anforderung ist, dass es keinen Ladevorgang / Übergang vom Tutorial-Modus zum normalen Modus geben sollte. Dies bedeutet, dass ich den Fortschritt aus dem Tutorial aufgreifen muss (kein erneutes Rendern von Assets und anderen Dingen).
Wie soll ich das so gestalten, dass ich nichts von meinem alten Code anfasse? Ich möchte, dass es so einfach ist, wie es einfach anzuschließen. Ich möchte das Tutorial nicht in meinem alten Code blockieren, da dies zu vielen Fehlern führen wird.
quelle
Antworten:
Weitere Informationen helfen Ihnen dabei, bessere Antworten zu erhalten. Ohne viel darüber zu wissen, welche Art von Spiel du hast oder wie deine Levelstruktur aussieht, kann ich nur im Dunkeln stechen.
Wenn ich jedoch mit meinem aktuellen Projekt etwas Ähnliches machen würde, würde ich eine spezielle Ebene erstellen, die den Benutzer durch die betreffenden Themen führt. Ihre NPCs können beispielsweise nur mit den Elementen erstellt werden, die im Tutorial verfügbar sein sollen.
Um den Zugriff auf bestimmte UI-Elemente zu verhindern, müssen Sie möglicherweise einen Filter in vorhandenen Code integrieren, um zu bestimmen, ob ein Element vorhanden sein soll, wenn Sie die Elemente, die Sie in Ihrem Lernprogramm tun / nicht möchten, nicht hinzufügen oder entfernen können oder nicht (denken Sie an "Zugriffsbeschränkungen").
quelle
Ich arbeite gerade an einem Tutorial für mein C # -Spiel. Ich trenne das Tutorial durch Ereignisse vom Spiel. In meinem Spiel gibt es eine Reihe von Ereignissen, die ausgelöst werden, wenn sich der Spielstatus auf verschiedene Weise ändert: Objekte, die sich bewegen, zerstört werden, gebaut werden, ein Upgrade abschließen usw. Mein Tutorial hört auf die Ereignisse von Interesse und hat die Fähigkeit das HUD zu manipulieren. Das ist alles was du brauchst. Um es ganz klar zu machen, hat das Spiel keine Ahnung, dass das Tutorial stattfindet.
Dies kann auch wichtig sein: Mein Tutorial ist eine Unterklasse von Szenario, in der das Spiel immer ein Szenario ausführt. Da ich C # verwende, könnte ich jedes meiner Szenarien in eine C # -Skriptdatei werfen, aber im Moment werden alle meine Szenarien direkt im Spiel kompiliert.
Die Klasse ist noch in Arbeit, aber hier ist eine etwas veraltete Version, die Sie sich ansehen können: http://asteroidoutpost.svn.sourceforge.net/viewvc/asteroidoutpost/trunk/Scenarios/TutorialScenario.cs? view = markup
quelle
Ich arbeite auch an einem Tutorial für mein Flash-Spiel und so habe ich es eingerichtet. Jeder Teil des Spiels überprüft ein Tutorial-Objekt, um festzustellen, ob eine Aktion für den Spieler verfügbar ist. Wenn das Tutorial-Modul nicht existiert oder inaktiv ist, können wir davon ausgehen, dass der Player alles kann.
Nehmen wir zum Beispiel an, Sie möchten zu Beginn Ihres Tutorials nicht, dass der Spieler bis zum richtigen Zeitpunkt etwas tun kann. In Ihrem Lernprogrammobjekt können Flags wie PLAYER_CAN_USE_TOOLBAR, PLAYER_CAN_SWITCH_VIEWS oder PLAYER_CAN_DESIGNATE_ZONE usw. auf FALSE gesetzt sein. Wenn der Player Ihr Tutorial durchläuft, können Sie diese Flags auf true setzen.
Blockieren Sie für Ihren UI-Teil das Signal an das Modell oder den Controller, der die Aktion tatsächlich ausführt, wenn Ihre Tutorial-Flags nicht gesetzt sind:
Um auf bestimmte Ereignisse zu warten, können Sie das Ereignis an Ihr Lernprogrammobjekt zurückgeben, um zu überprüfen, ob der Spieler dies tun muss, um diesen Lernschritt fortzusetzen. Wenn Sie beispielsweise den Player zum Erstellen einer Wohnzone an einem bestimmten X, Y benötigen:
Ich hoffe das hat geholfen. Leider müssen Sie die Tutorial-Checks in Ihren alten Code einfügen, damit dies funktioniert. Wenn Sie jedoch davon ausgehen, dass alle Aktionen gültig sind, sofern das Lernprogrammobjekt nicht vorhanden ist, sollten Sie diesen Integrationsprozess vereinfachen und Ihre Fehler minimieren.
quelle