Ich habe kürzlich eine Idee für ein Simulations- / Strategiespiel entwickelt. Ich habe viele meiner Ideen auf Papier über die Spielmechanik skizziert und einige der grundlegenden Klassen und Objekte, die funktionieren. (Ich schreibe dies in C # mit XNA).
Eine Sache, die für mich schmerzlich offensichtlich ist, ist, dass ich kein Grafiker bin und versuche, etwas grafisch Programmiertes zu bekommen, frustriert mich. Ein Gedanke, der mir in den Sinn kam, war, zuerst das gesamte Spiel von der Textkonsole abzuarbeiten. Ich erinnere mich, dass ich als Kind hunderte von Stunden damit verbracht habe, Zork und Hack zu spielen, und dass die meisten meiner Ideen für Spielelemente keine Echtzeit-Sprite-Animationen erfordern.
Also meine Frage an die Community hier ist, sollte ich versuchen, meine Begeisterung für das Konzept beizubehalten, indem ich mich darauf konzentriere, dass es zuerst in einem Textbasismodus arbeitet und sich dann neu gruppiert, um ihm eine hübsche grafische Oberfläche zu geben?
ODER
Tackle den grafischen Interface Hill zur gleichen Zeit, die ich versuche, meine Idee zu spülen?
Während ich diese Frage geschrieben habe, glaube ich, dass ich sie selbst beantwortet habe, aber ich würde gerne die Gedanken von Menschen hören.
Ich denke, du hast die richtige Idee basierend auf deiner Beschreibung des Spiels. Wenn Sie Ihre Bedenken trennen, können Sie zuerst viele Geschäftslogiken implementieren. Stellen Sie es sich wie eine MVC-Anwendung vor. Sie können Ihre Ansicht verlassen, um später implementiert zu werden; Stellen Sie nur eine Ebene zur Verfügung, die mit Ihrer Geschäftslogik in Verbindung steht, die Ihre Ansicht verwenden kann.
Auf diese Weise ist es egal, was Ihre Ansicht ist (Text oder Grafik). Sie können einfach Metadaten an die Ansicht übergeben, und die Ansicht entscheidet darüber, wie sie gerendert wird.
Also würde ich sagen, dass Ihre Idee gut ist. Beginnen Sie mit der Geschäftslogik und einer textbasierten Ansicht. Auf diese Weise können Sie Ihre Konzepte und Ideen konkretisieren und entscheiden, welche Daten an die Ansicht übergeben werden sollen. Denken Sie jedoch an eine Sache - Sie müssen in diesem Stadium sehr vorsichtig sein, damit nicht Annahmen über die Ansicht in Ihre Business-Ebene eindringen können. Sie sollten also Ihre Business-Schicht und die zugehörige Schnittstelle für die Ansicht codieren, als ob Sie keine Ahnung haben, was die Ansicht sein wird. Was ich meine ist, da Sie mit einer textbasierten Schnittstelle beginnen, machen Sie keine Kodierungsentscheidungen, die Sie an diese bestimmte Implementierung binden.
Sobald Sie alles ausgearbeitet haben, können Sie anfangen, Grafiken zu lernen und Ihre Grafikebene langsam zu starten.
Natürlich funktioniert dieser Ansatz (MVC) möglicherweise nicht in allen Situationen, besonders wenn Ihre Ansicht zeitkritisch ist. Für weitere Informationen werfen Sie einen Blick auf diese Stackoverflow-Fragen:
Ich möchte nur klarstellen, dass ich kein MVC-Muster für Ihr Spiel befürworte - ich möchte nur die Trennung der Interessen betonen, so dass es Ihnen leicht fällt, Ihre Ansicht zu wechseln, ohne eine wesentliche Umgestaltung vorzunehmen.
>Ein Spiel ist ein kompliziertes Projekt, das in viele Fächer unterteilt werden kann. Diese können ein tatsächliches Modul sein (z. B. ein GUI-Renderer oder ein Kommunikationsmanager), oder sie können theoretischer oder logischer sein, wie das "Spieldesign".
Während alle diese Teile zusammenarbeiten - vorzugsweise in Harmonie -, um das eigentliche Spiel herauszustellen, steht jeder von ihnen auch für sich. Als solche ist es immer eine gute Richtung zu teilen & Amp; erobern. Wenn Sie von Ihrer Idee überzeugt sind, dann gehen Sie auf jeden Fall vor und implementieren Sie es in der einfachsten Form, die wahrscheinlich eine Konsolenanwendung wäre.
Sie müssen jedoch beachten, dass Sie zwar starten können, indem Sie jedes Modul einzeln entwickeln, aber Sie müssen eventuell berücksichtigen, wie diese Teile zusammenarbeiten. Dies hat Auswirkungen auf das Design Ihrer Module. Zum Beispiel können Sie herausfinden, dass Ihre Spiellogik wunderbar funktioniert, aber Sie haben keine Möglichkeit, den Benutzer tatsächlich einen bestimmten Schritt in Bezug auf die Benutzeroberfläche ausführen zu lassen. Die Spielbarkeit ist eine der wichtigsten Funktionen eines Spiels, und Ihre Benutzeroberfläche kann sogar eine gewisse Spiellogik diktieren. Dieses Konzept widerspricht der goldenen Regel, die UI von der Logik zu trennen - aber wie ich sagte, sind Spiele kompliziert, und für das Endprodukt neigen Sie oft dazu, einige Regeln zu verbiegen. Spiele sind anders als andere Projekte - Skalierbarkeit ist kein Problem. Wartbarkeit ist wichtig, wird aber geopfert, wenn Sie den zusätzlichen CPU-Saft benötigen ... und so weiter.
Erstellen Sie eine Benutzeroberfläche. Halten Sie die Grafiken einfach (Paint) und konzentrieren Sie sich auf die Benutzerfreundlichkeit. Dann veröffentlichen Sie Ihr Spiel als Open Source und jemand anderes wird schöne Grafiken und eine coole Benutzeroberfläche erstellen.
Mein Rat: Fast keine Software kann heutzutage allein gemacht werden.
Versuchen Sie, Ihre Ideen zu skizzieren, irgendwo zu posten, mehr Interessierte zu finden, eine Gruppe zusammenzustellen und sich die Hände schmutzig zu machen.
Wenn Ihre Idee wirklich gut ist, werden Sie mehr Teammitglieder finden, die Ihr mangelndes Fachwissen in den anderen benötigten Bereichen ergänzen können.
Sie können versuchen, Leute im Internet zu finden, indem Sie etwas wie ein Open-Source-Projekt starten, oder Sie können versuchen, einen Investor zu finden, der Ihrem Geschäft Geld zuflößen kann und Sie spezialisierte Leute einstellen können.
Wenn ich Sie wäre, würde ich zuerst eine textbasierte Befehlszeilenschnittstelle erstellen. Wenn Sie sich entscheiden, eine tatsächliche GUI zu erstellen, können Sie einfach die GUI das Befehlszeilen-Spiel automatisieren lassen, so dass Sie die Spiellogik nicht zweimal schreiben müssen. Viele Tools werden diesen Ansatz verwenden. Jemand wird zum Beispiel ein Befehlszeilen-Defragmentierungstool erstellen und dann wird jemand einen GUI-Wrapper für das Werkzeug erstellen. So ähnlich wie Nethack.
Tags und Links c# console-application