Welche Art von Projektmanagement sollte ein Einzelentwicklerprojekt verwenden?


49

Ich arbeite alleine an einem Spielprojekt, dessen Entwicklung in drei unabhängige Teile unterteilt werden könnte (Kartengenerierung, Überwelt-Engine und Battle-Engine), aber im Laufe der Entwicklung bin ich mir nicht sicher, wie ich damit umgehen soll das Management dieses Projekts, insbesondere in Bezug auf diese 3 Punkte:

  1. Lohnt es sich, ein Versionskontrollsystem zu verwenden, da ich alleine arbeite?

  2. Sollte ich eine formale Methode verwenden, um geplante Features / Bugs zu registrieren (ich erinnere mich nur, was jetzt getan werden muss)

  3. Die wichtigste Frage: Wie kann ich wissen, was ich zuerst entwickeln soll? Nun, da die Grundlagen fertig sind, kenne ich die Liste der zu codierenden Funktionen, weiß jedoch nicht, in welcher Reihenfolge ich sie ausführen soll.


39
1) ja, ja, ja und ja ; Ich hoffe wirklich, dass niemand Ihnen jemals sagt, dass Sie kein VCS verwenden sollen.
Sam Hocevar

3
Es gibt verschiedene Probleme, die auf eine Versionskontrolle als Notwendigkeit hinweisen: (a) Die Grundidee der Sicherung für den Fall, dass Ihre lokale Kopie zerstört wird, und (b) Die Idee, dass Code und Assets, die Sie überschrieben haben, nicht unbedingt die Dinge sind, die Sie wollen für immer verlieren (was im Wesentlichen (a) ist, da Überschreiben ein destruktiver Mechanismus ist). Es gibt auch (c), das mit (b) zusammenhängt: Möglicherweise möchten Sie verzweigen, um verschiedene Ansätze auszuprobieren. Ich verzweige ziemlich häufig, wenn ich an leistungskritischem Code arbeite, da es mir hilft, verschiedene Ansätze zu profilieren, ohne zu verlieren, wo ich mich in anderen Ansätzen befunden habe.
Ingenieur

Ich stimme den Kommentaren von @Sam zu - benutze immer die Versionskontrolle. In diesem Jahr wirst du froh sein, dass du es getan hast. Es gibt viele günstige / kostenlose gehostete VCS- und DVCS-Systeme, mit denen Sie auch Ihre Offsite-Sicherung durchführen können. Ich habe meine Farben an den Subversion-Mast geheftet, aber wenn ich von vorne anfangen würde, würde ich wahrscheinlich Mercurial verwenden.
Tim Long

1
Bei jeder dieser Fragen sollte es sich um separate Fragen handeln, da es sich wirklich um separate Themen handelt.
Tetrad

Antworten:


59

Ich würde ... benutzen:

1. Code-Management

GIT (und die großartige Referenz ), ein verteilter Quellcodeverwalter, zum Verwalten meines Codes und zum Hosten auf GitHub als privates Projekt, wenn ich dies nicht zulassen möchte.

(Hier gibt es VIELE Optionen, nur Google für die Quellcodeverwaltung. Sie MÜSSEN nicht einmal GitHub oder eine andere Website verwenden. Git funktioniert auf Ihrem lokalen Computer einwandfrei, aber die Verwendung von GitHub macht die Verwaltung von Sicherungen mühsam viel leichter.

Wenn Sie über zwei Computer verfügen, können Sie ein Repository auf einem Computer erstellen, den Sie als Backup-Computer bezeichnen. Anschließend klonen Sie das Repository über das lokale Netzwerk und verwenden es für die Entwicklung Backup-Maschine und Sie haben ein 1: 1-Backup!)

2. Issue & Feature Management

Ich würde das integrierte Issue-Management von Trello oder GitHub verwenden , um Fehler und zu erledigende Aufgaben im Auge zu behalten.

3. Haben Sie einen Designprozess

Ich würde mein Spiel zuerst entwerfen;

  1. zuerst in meinem Kopf,
  2. dann auf dem Papier,
  3. Dann verwende wahrscheinlich GameMaker oder PyGame, um meine Idee zu prototypisieren, und iteriere 1-3, bis ich etwas habe, das ich gerne spiele.

4. Verwenden Sie meinen Prototyp als Leitfaden und entwickeln Sie mein Spiel

Dann würde ich meinen Prototyp beiseite legen und eine Plattform auswählen, für die ich entwickeln möchte. Suchen Sie dann nach vorhandenen Engines und wählen Sie diejenige aus, die am besten zu meiner Spielidee passt. Dann würde ich klare Ziele für mein Projekt festlegen, diese in kleine Aufgaben strukturieren und dann damit beginnen, die Aufgaben zu erledigen. Wenn Sie diesen Zustand erreicht haben, werden Sie höchstwahrscheinlich feststellen, dass Sie eine eigene Arbeitsweise haben, die am besten zu Ihnen passt.

Es gibt verschiedene Methoden / Philosophien , die Sie auf Ihren Entwicklungsstil, XP, Wasserfall usw. anwenden können. Entscheiden Sie sich einfach für die, die Sie für den schnellsten Fortschritt halten.

5. Habe viele Spieletester!

Wenn Sie etwas Spielbares haben, bitten Sie Ihre direkten Freunde, es auszuprobieren! Machen Sie es ihnen einfach, Ihnen zu helfen, indem Sie QuickInstaller-Pakete einrichten, wenn sie Windows ausführen, oder ein Shell-Skript schreiben, das den Prozess für sie automatisieren kann, wenn sie Linux / Mac verwenden. Passen Sie gut auf das Feedback Ihrer Tester auf, und vergessen Sie nicht, sie über Ihr Spieldesign und die Art des Spiels zu informieren, das Sie erstellen möchten.

6. Erstelle eine Website für mein Spiel

Sobald etwas gut läuft, würde ich wahrscheinlich eine Website für mein Spiel erstellen, um meine Kreativität und meinen Inhalt in Fluss zu halten, wenn er nicht auf den Fortschritt meines Spiels angewendet werden kann, zum Beispiel, wenn ich mich auf mein Studium konzentriere oder brauche eine Entwicklungspause!

Wenn ich GitHub benutze , würde ich eine Projektseite für mein Spiel einrichten , ansonsten ein WordPress / Jekyll- Blog oder ähnliches hosten und meine Beiträge damit schreiben.

So bleiben Sie motiviert und können potenzielle Gamer / Tester ansprechen!

7. An Wettbewerben teilnehmen

Es gibt viele Spieleentwicklungswettbewerbe, die fast die ganze Zeit stattfinden. Ich würde versuchen, mich einem dieser Spiele anzuschließen, wenn die Regeln dies zulassen. Das steigert die Motivation und macht alles noch lustiger - wer gewinnt nicht gerne!

(Wenn Sie unter einer strengen Frist entwickeln, können Sie diesen Punkt zumindest überspringen.)


1
Gute Antwort. Ich würde FogBugz für die Problemverfolgung vorschlagen . Für einen Solo-Entwickler (wie mich) ist es kostenlos.
notlesh

2
So viele +1 verdient, aber ich kann nur eine geben.
chaosTechnician

Die Verwendung von GIT / hg / any other mit Dropbox macht Magie.
zeroDivisible

14

Ich würde dringend empfehlen, ein Versionskontrollsystem zu verwenden, auch wenn Sie alleine arbeiten. Es kann Ihnen viel Zeit sparen, wenn Sie versehentlich etwas löschen oder eine größere Änderung vornehmen, um später festzustellen, dass dies eine schlechte Idee war und Sie alle Änderungen rückgängig machen müssen.

Bearbeiten : Es gibt viele kostenlose Lösungen für die Quellcodeverwaltung.

  • Ich habe den VisualSVN- Server verwendet, der unter Windows einfach einzurichten und zu verwenden ist.

  • Es gibt auch Online-Alternativen wie Codeplex (mit SVNoder Mercurial), SourceForge oder Google Code . Der Vorteil ist, dass Sie kein Repository einrichten und verwalten müssen und sich Ihre Daten in der Cloud befinden. Der Haken ist, dass Sie keine Closed-Source-Projekte frei hosten können.

Fehler- und Feature-Tracking: Wenn Sie bereits eine größere Zielgruppe haben, die daran interessiert sein könnte, Ihr Spiel zu testen, Fehler zu melden und Features anzufordern, fahren Sie fort.
Wenn es jedoch nur eine Handvoll solcher Leute gibt (oder überhaupt keine), ist dies unnötig.

Und was die Entwicklungsprioritäten angeht, müssen Sie selbst entscheiden. Wer sollte besser wissen, was in einem Projekt zu tun ist als sein einziger Entwickler?


1
+1 SVN ist es wert, wenn Ihre Festplatte Kratzer, Sie die falsche Datei usw. usw. usw. löschen
Valmond

5
Das Problem bei vielen der oben genannten VCSs ist, dass sie öffentlich sind. Wenn Sie kostenloses privates Hosting wünschen, besuchen Sie assembla.com .
ClassicThunder

12
bitbucket.org unterstützt private Repositories
o0 '.

1
@ClassicThunder Das habe ich in meinem Beitrag gesagt. Als ich das letzte Mal nachgesehen habe, hat assembla auch nicht nach privaten Projekten gesucht. Hat sich in der Zwischenzeit etwas geändert? (Das bezweifle ich, aber du weißt es nie.)
ver

1
Sie können ein privates SVN-Repository auf Ihrer eigenen Festplatte einrichten, wenn Sie möchten. Das wird viel besser als gar kein VCS ... Wie viele doppelte Antworten, OMG ..
Kromster sagt Unterstützung Monica

7

Lohnt es sich, ein Versionskontrollsystem zu verwenden, da ich alleine arbeite?

Ich glaube schon. Es ist ziemlich trivial einzurichten und ich war schon mehrere Male verrückt nach dem Refactoring oder habe etwas anderes Dummes gemacht und die Möglichkeit, meine Änderungen rückgängig zu machen, hat e Tonnen Zeit gespart. Wenn es auf einem Server gehostet wird, haben Sie eine Sicherungskopie unseres Codes, falls etwas schief geht .

Sollte ich eine formale Methode verwenden, um geplante Features / Bugs zu registrieren (ich erinnere mich nur, was jetzt getan werden muss)

Ich denke nicht, dass es notwendig ist. Ich würde eine schriftliche Liste der geplanten Aktionen führen, um sicherzustellen, dass Sie einen kleinen Fehler nicht vergessen, und ich finde, dass dies Ihnen hilft, nach einer Pause vom Programmieren wieder anzufangen.

Die wichtigste Frage: Wie kann ich wissen, was ich zuerst entwickeln soll? Nun, da die Grundlagen fertig sind, kenne ich die Liste der zu codierenden Funktionen, weiß jedoch nicht, in welcher Reihenfolge ich sie ausführen soll.

Nehmen Sie die Liste oben, schließen Sie die Augen und stoßen Sie sie zufällig an. Arbeiten Sie an der Funktion, auf die Ihr Finger zeigt. Sofern die Elemente nicht voneinander abhängen, ist es wichtiger, den Fluss aufrechtzuerhalten, als sicherzustellen, dass die Dinge in einer bestimmten Reihenfolge geschehen.


5

Verwenden Sie auf jeden Fall die Versionskontrolle

Die Versionskontrolle ist wie ein Sicherheitsnetz für einen Seiltänzer: Sie gibt Ihnen die Freiheit, verrückte Dinge auszuprobieren. Ein großer Umgestalter, der große Codestücke löscht, ist kein Problem, wenn Sie leicht zurücksetzen können. Noch weniger, wenn Sie sich in einem experimentellen Zweig Ihres Repos befinden und sich entscheiden können, diesen nicht wieder zusammenzuführen.

Wenn Sie diese Art von Freiheit nicht haben, werden Sie wahrscheinlich überall auskommentierten Code zurücklassen, aus Angst, dass Sie ihn brauchen könnten.

Ich würde für Git abstimmen. Die Syntax ist etwas seltsam, aber zwei großartige Dinge sind:

  • Geringer Overhead . Wechseln Sie in einen Ordner und geben git initSie Folgendes ein, und Sie können mit dem Einchecken beginnen. Wenn Sie sich entscheiden, dass Sie die Versionskontrolle doch nicht möchten, dann rm -rf .gitin diesem Ordner und es ist kein Git-Repo mehr.
  • Über SSH verteilt . Git ist verteilt, was bedeutet, dass Sie mehrere vollständige Kopien Ihres Repos (den gesamten Verlauf usw.) an verschiedenen Orten haben und diese synchron halten können. Sie können ein anderes Git-Repo auf jedem Computer einrichten, auf den Sie SSH-Zugriff haben, und dieses andere Repo dann als Remote-Repo hinzufügen. Danach, wann immer Sie wollen, um nur git pushdieses Repo zu sichern.

    Das ist ein großer Vorteil gegenüber beispielsweise Subversion, wo das gesamte Repo auf einem Computer läuft und auf diesem Computer ein Subversion-Server ausgeführt werden muss.

Mercurial mag die gleichen Punkte zu seinen Gunsten haben, aber ich habe es nicht benutzt.


3
  1. Ja! Da Sie fragen, vermute ich, dass Sie mit dem Revisionskontrollsystem gut aufgenommen sind. Es ist ein Muss!

  2. In Bezug auf Ihre zweite Frage gibt es eine formale Methode zum Registrieren von Fehlern, die Sie verwenden sollten. Für Planungsfunktionen schadet es meiner Meinung nach nicht, eine weniger formelle Route zu nehmen (wenn Sie alleine arbeiten).

  3. Tun Sie zuerst die Funktionen, die Ihr Spiel zum Leben erwecken. Machen Sie sich ein Bild davon, wie das endgültige Gameplay aussehen wird.


3

1) Ja natürlich. Ich empfehle Mercurial über BitBucket und TortoiseHg. BitBucket ist für bis zu 5 Benutzer kostenlos und da es in der Cloud gehostet wird, können Sie sich etwas mehr Gedanken machen (es sind keine Backups erforderlich).

2) Fehler sollten behoben werden, bevor neue Funktionen implementiert werden. Ich würde einfach zugängliche TODO-Liste verwenden, um Dinge zu verfolgen - ausstehend / erledigt. Möglicherweise verwenden Sie nur eine reine Textdatei. Vergessen Sie jedoch nicht, sie Ihrem Quellcodeverwaltungs-Repository hinzuzufügen.

3) Tun Sie, was Sie an einem bestimmten Tag tun möchten, und denken Sie dabei daran, dass es ein vorrangiges Ziel ist, dem Endbenutzer etwas zu bieten, das er spielen kann. Wenn Sie es leid sind, die Physik richtig zu machen, arbeiten Sie am Rendern oder fügen Sie möglicherweise fehlende Komponententests für diese KI hinzu.

Die Arbeit sollte so klein sein, dass sie in ein paar Tagen erledigt werden kann. Es ist wichtig, motiviert zu bleiben und Burnout zu vermeiden.

Wenn die Architektur richtig gemacht wird, sollten Sie in der Lage sein, leicht modifizierte Teile der Engine / des Spiels hinzuzufügen, ohne mehrere andere zu beeinflussen (andernfalls beginnen Sie mit einem Refactoring :).


2

1) Wie jeder sagt: JA (Ich würde sogar sagen, ein billiges online mieten)

2) Führen Sie eine einfache Liste oder installieren Sie Mantis Bug Tracker, wenn Ihr Projekt umfangreich wird und Sie Betatester erhalten

3) Ich weiß es nicht, aber ich sage Ihnen, wie ich es mache: Entwickeln Sie zuerst die am wenigsten interessanten und / oder schwierigsten Dinge. Wiederholen, bis alles erledigt ist. Auf diese Weise wird die Entwicklung immer lustiger und einfacher (und Sie werden das Problem nicht zu spät lösen können, wenn dies jemals passieren würde).


1

Danke, dass Sie diese Frage gestellt haben. Genau das mache ich gerade.

1) Versionskontrolle: Es ist ein Muss. Im Moment verwalte ich die manuelle Sicherung. Es ist zumindest dann nützlich, wenn etwas, das gut funktioniert hat, plötzlich Fehler verursacht (oder nicht wie erwartet funktioniert). Ich vergleiche Versionen und finde oft dumme Fehler (meistens etwas kommentierend)

2) Ich habe ein Word-Dokument erstellt und alle Funktionen meines Spiels in einer kategorialen Reihenfolge und mit mehrstufigen Einzügen aufgelistet, in denen die Unterfunktionen (und Client / Server-bezogene oder was auch immer zutreffend ist) aufgelistet sind.

3) Nach der Liste, die ich erhalten habe (die in der Regel nicht vollständig ist, wird immer etwas hinzugefügt), denke ich an meinen Spielfluss und hebe alle Punkte hervor, die erforderlich sind, damit ich das Spiel zum Laufen bringe und damit beginne. Ich markiere gelb, was bedeutet, dass gerade gearbeitet wird. grün, wenn fertig. Orange, um anzuzeigen, dass Verbesserungen erforderlich sind oder bekannte Fehler aufgetreten sind

hoffe das hilft


0

1.) Es lohnt sich, die Versionskontrolle für jedes Projekt zu verwenden. Auch sehr kleine, wenn Sie bereits wissen, wie man eins benutzt. Ich benutze Subversion seit Jahren unter Linux und Windows mit TortoiseSVN . Selbst wenn ich ein kleines Projekt (<500 Zeilen) erstelle, erstelle ich ein Repository, damit ich Änderungen rückgängig machen, nachverfolgen kann, was ich getan habe, wenn ich das Projekt für eine Weile abgebrochen habe usw.

2.) Hängt davon ab, wie groß das Projekt sein wird. Wenn Sie vorhaben, mit einem Team zu testen und zu verbreiten, lohnt sich wahrscheinlich ein Fehlerverfolgungssystem. Ich arbeite derzeit alleine (obwohl ich einen Künstler habe) an einem Projekt mit mehr als 20.000 Zeilen und behalte meine Aufgabenliste einfach in einer Textdatei, die sich auch in meinem SVN-Repository befindet. Obwohl ich es gerade noch nicht unbedingt mit anderen teilen muss, entspricht es meinen Bedürfnissen, wenn ich kein Bug-Tracking habe. Ich würde mir darüber keine Sorgen machen, bis es einen Bedarf gibt. Das Schlimmste, was passieren kann, ist, dass Sie alle Fehler eingeben müssen, die Sie bereits notiert haben, und die von Ihnen behobenen Fehler entfernen / überarbeiten müssen. Wenn Sie anfangen, den Überblick über Ihre Notizen zu verlieren, sollten Sie sich einen Bug-Tracker zulegen.

3.) Zeichne es auf Papier aus. Beginnen Sie mit dem, was Ihr fertiges Spiel sein soll, und notieren Sie sich den Kern des Spiels. Dann zerlegen Sie es in das, was es braucht, um es zu machen: Kollisionserkennung? Netzwerkcode? Arten von Spielern und Monstern? Klassenhierarchien? Arbeiten Sie von Ihrer Vision aus rückwärts, damit Sie eine klare Vorstellung davon bekommen, wie Sie sie von Grund auf aufbauen können. Ich gehe davon aus, dass Sie eine objektorientierte Sprache verwenden. Der wichtigste Schritt beim Start wäre, diese Klassenhierarchien auf vernünftige Weise einzurichten. Versuchen Sie, absolut keine Mehrfachvererbung zu haben (obwohl dies manchmal unvermeidbar ist), zeichnen Sie die Klassenbeziehungen in einem Diagrammeditor (ich verwende Dia ) usw. auf. Grundlegende Prinzipien helfen später, Kopfschmerzen zu vermeiden.


Hinweis: TortoiseSVN ist ein Windows-Client für Subversion.
nullten
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.