Willkommen in der Spielebranche :)
Sie führen also ein massives Refactoring durch. Massives Refactoring ist böse, aber das ist nicht das Thema. Wahrscheinlich haben Sie diese Aufgabe erhalten, um Ihre Nerven zu testen. Geben Sie sie also nicht auf.
Meine Antwort lautet: Sie müssen es in kleine Stücke zerlegen. In ein paar Monaten wird es Ihre tägliche Routine sein, also müssen Sie lernen, wie man teilt und siegt. Es ist im Grunde dein Job. Einige Vorschläge:
Stellen Sie sicher, dass Sie verstehen, was diese Komponente tun soll . Spielen Sie mit dem, was Sie herausnehmen müssen, und sehen Sie, was es tut. Fragen Sie Ihre Kollegen, ob Ihre Annahmen richtig sind.
Sie schreiben dieses Modul aus einem bestimmten Grund neu. Es mag für Sie nicht offensichtlich sein, aber wenn Sie diese Aufgabe erhalten haben, ist es höchstwahrscheinlich, weil etwas so beschissen war, dass die Leute das Gefühl haben, es sei besser, es von vorne zu beginnen. Fragen Sie herum: Was sind diese Mängel ?
Versuchen Sie, das Kernmerkmal der Komponente, die Sie neu schreiben, zu finden, ihre Substanz, den Grund, warum es existiert, und beginnen Sie damit, dieses zum Laufen zu bringen. Es muss wirklich winzig sein, so klein wie du kannst. Fragen Sie Ihre Kollegen, wie diese Funktion ihrer Meinung nach aussehen würde. Wenn es sich um ein GFX-System handelt, muss nur ein Polygon angezeigt werden. Wenn es sich um ein Animationssystem handelt, platzieren Sie einfach einen Knochen richtig. Wenn es sich um ein KI-System handelt, lassen Sie es einfach eine Animation abspielen. Usw. usw. Müll einfach alles weg, was dir im Weg steht und dir all diese entmutigenden Fehler macht. Lassen Sie sich nicht von den Details stören, sondern sorgen Sie dafür, dass diese Kernfunktion so schnell wie möglich funktioniert. Ihre Implementierung wird hässlich sein, voller Bugs und Hacks und magischer Zahlen, und Sie würden niemanden einen Blick auf Ihren Code werfen lassen, aber das ist kein Problem.
Sobald Sie diese Kernfunktion haben, werden Sie sich bereits besser fühlen. Es ist wichtig, das Ergebnis Ihrer Arbeit so früh wie möglich zu sehen 1) für Ihre Moral 2) um es testen zu können. Also, teste es, Stresstest, foltere es . Wenn es abstürzt oder einen wirklich schlimmen Fehler zeigt, beheben Sie dies. Es ist das Herzstück Ihres Moduls. Überarbeiten Sie es also ein wenig und räumen Sie es auf, bis Sie sich damit wohl fühlen.
Zeigen Sie es dann Ihren Kollegen und fragen Sie sie, ob das Spiel das braucht. Bitten Sie um eine Codeüberprüfung : Ihre Kollegen werden Ihnen wahrscheinlich viele Dinge erzählen, an die Sie nicht gedacht haben. Sie müssen erneut umgestalten , um sicherzustellen, dass Ihre Implementierung den Anforderungen des restlichen Teams entspricht.
Wenn Sie sich dazu bereit fühlen, wählen Sie eine der anderen Funktionen aus, die Sie zuvor verworfen haben, spülen Sie sie aus und wiederholen Sie sie. Lassen Sie es so schnell wie möglich funktionieren, überarbeiten Sie, bitten Sie um eine Überprüfung, überarbeiten Sie.
Ich muss ein letztes Mal den Schwerpunkt darauf legen: kommunizieren . Fragen Sie Ihre Kollegen, nicht nur Ihren Lead, nicht nur die Programmierer, sondern alle, die dieses System verwenden, testen oder bewerten. Haben Sie keine Angst davor, dumme Fragen zu stellen: Im Zweifelsfall ist es immer besser, die Informationen sofort zu erhalten, als Wochen auf ein Meeting oder eine Überprüfung zu warten.
Die Realität der Spielprogrammierung ist, dass Sie nicht jeden Tag brandneue Systeme erstellen, sondern den Fokus behalten und die Dinge schnell und effizient erledigen müssen. Reiß dich zusammen, mach dich an die Arbeit und viel Glück!
BEARBEITEN
Es gibt zusätzliche Informationen, die ich in Leos Kommentar und Dhasenans Antwort nützlich finde. Ich stähle diese schamlos von ihnen, um diese Antwort zu vervollständigen.
Ich habe nicht darüber geschrieben, wie man mit Abhängigkeiten umgeht . Das Modul, das Sie neu schreiben, ist wahrscheinlich eng mit dem Rest des Spiels verbunden. Deshalb treten beim Ändern von Elementen so viele Fehler auf. Es gibt also zwei Lösungen:
Wenn es nur wenige Abhängigkeiten gibt, haben Sie Glück. Das alte und das neue Modul können für eine Weile parallel gehalten werden. Sie können sogar einen Schalter für Ihre Benutzer einrichten, damit diese bei Bedarf zwischen dem alten und dem neuen Modul wechseln können. Platzieren Sie einfach irgendwo einen Schalter, in einer Konfigurationsdatei oder in einem Debug-Menü, und verwenden Sie ihn, wo immer Ihr Modul an den Rest des Spiels angeschlossen ist. Wenn Ihr neues Modul für die Produktion bereit ist, schalten Sie den Schalter standardmäßig ein. Wenn das alte Modul später nicht mehr verwendet wird oder die Produktion fortgesetzt werden muss, entfernen Sie das alte Modul und den Schalter.
Wenn es viele gibtAbhängigkeiten müssen Sie nacheinander ausstecken und wieder einstecken. Versuchen Sie, beide Module im Hintergrund zu halten, und wechseln Sie jedes Mal, wenn Sie eine neue Funktion zum Laufen bringen, zum neuen Modul für diese Funktion. Dh ziehen Sie den Stecker heraus und stecken Sie ihn wieder ein, was mit dieser Funktion zusammenhängt. Es wird einige Zeit dauern, da es wahrscheinlich mehr Arbeit ist als nur einen Funktionsaufruf zu ändern: Einige Datenstrukturen können sich ändern, der Programmablauf kann sich ändern usw. Aber es ist immer noch besser, alles einmal neu zu schreiben und Wochen zu brauchen, um das Kompilierungs-Biest zu töten. Wenn es wirklich unmöglich ist, sowohl das alte als auch das neue Modul parallel zu halten, weil Ihr Modul für das Spiel so wichtig ist, können Sie in Betracht ziehen, es neu zu schreiben. Beachten Sie jedoch, dass dies bedeuten kann, dass Sie dieselben Fehler haben, wenn sich die Fehler in der Schnittstelle des alten Moduls befinden. Wie auch immer, wenn dies passiert,
Wenn es etwas Spezifisches für die Entwicklung von Videospielen gibt, dann ist dies: Wir machen keine Raketenwissenschaft oder eine komplizierte Forschungsarbeit, wir sind Teil eines kreativen Prozesses. Wenn Sie etwas tun, müssen Sie so schnell wie möglich eine erste Version erstellen, damit sie getestet, gespielt, missbilligt und geändert werden kann. Sie können nicht Wochen damit verbringen, "eine sehr lange Arbeit" zu erledigen, ohne ein bisschen zu liefern.