Java-Spiel in ein oder zwei Tagen [geschlossen]

9

Wir sind drei Leute , die ein einfaches Spiel in Java als Schulprojekt machen werden (Universität, erstes Jahr). Das Spiel muss objektorientiert sein. Wir haben nicht viel Zeit, 10-20 Stunden oben . Keiner von uns hat Erfahrung in der Spieleentwicklung, aber wir haben alle faire Kenntnisse in Java.

Wir können genau wählen, welche Art von Spiel, und hier liegt das Problem. Wie hoch sollen wir zielen? Da es sich um einen Wettbewerb handelt, wollen wir das beste Spiel in der Zeit machen, die wir haben. Ist ein 3D-Spiel unrealistisch? Sollten wir irgendwelche Game-Engines / Bibliotheken verwenden? Welche Art von Funktionalität sollten wir vermeiden?

Øyvind
quelle
4
3D zielt unabhängig von der Zeit etwas zu hoch, wenn man bedenkt, dass man keine Erfahrung mit Gamedev hat. ; P
Die kommunistische Ente
Øyvind
PONG! Paddel, Ball gibt es eigene Objekte, addiere eine Punktzahl. Der Ball trifft ein Paddel, mal die Richtung um -1. Wenn der Ball über den Paddelpunkt der anderen Mannschaft hinausgeht, lassen Sie den Ball dem anderen Spieler dienen. oder ist das zu einfach?>
Spooks
Ich denke, vielleicht sollten wir ein besseres, kreativeres Konzept anstreben, obwohl es leicht zu entwickeln ist ...
Øyvind
1
Wie wäre es, wenn Sie Ihr Spiel mit uns teilen? :)
Asche999

Antworten:

23

Vermeiden Sie 3D , da Sie wissen müssen, wie man 3D-Modelle erstellt oder gute findet. Sie müssen wissen, wie man solche Modelle lädt (oft eine epische Aufgabe an sich, leider) und wie man sie auf dem Bildschirm zeichnet (z OpenGL oder DirectX erfordern viel Arbeit bei geringem Gewinn, und selbst eine Engine wie jMonkeyEngine erfordert Kenntnisse über die Verwendung der Engine sowie grundlegende 3D-Kenntnisse. Das Blenden von 2D-Bildern auf dem Bildschirm und das Verschieben von Bildern ist viel einfacher als der Umgang mit Scheitelpunkten, Materialien, Ansichtsmatrizen, Transformationen usw. usw. Ich denke, Sie verstehen es.

Halten Sie sich an die integrierten Java-Bibliotheken und -Klassen: Graphics2D, ImageIO, AWT-Listener für Maus und Tastatur, Canvas, Java Sound API usw. Das Festhalten an diesen, anstatt eine andere Bibliothek zu finden, hat folgende Vorteile: Sie kennen sie bereits (bis zu einem gewissen Grad), Sie wissen, dass sie gut getestet und stabil sind und im Allgemeinen Sinn machen, Online-Dokumentation und -Ressourcen sind reichlich vorhanden und sie sind portabel Sie müssen sich keine Gedanken über die Installation zusätzlicher Bibliotheken mit nativen Bibliotheken machen.

Erstellen Sie vorab eine kleine Bibliothek mit Codefragmenten. Dazu gehören Dinge wie das Laden eines Bildes, das Zeichnen des Bildes an eine Position auf dem Bildschirm, das Skalieren des Bildes und andere Effekte, das Abspielen eines Tons, das Schleifen von Hintergrundmusik, das Erkennen von Begrenzungsrahmenkollisionen und das Zeichnen von Text. Haben Sie auch eine Skeleton-Anwendung, die einen Frame (oder ein Applet) öffnet, einen Canvas hinzufügt, und die Mal- und Repaint-Methoden der Canvas sollten überschrieben werden, und ein Thread sollte die Canvas-Repaint-Methode (oder einen Timer, der sie aufruft) in einer Schleife durchlaufen. Sie können diese Dinge lernen, wenn Sie nach suchen Java 2D game programming. Angenommen, Sie haben Zugriff auf die Bibliothek Ihrer Universität, sollten Sie über eine Reihe guter Java-Spielbücher verfügen. Schau sie dir an und überfliege sie nach den oben genannten Ausschnitten und anderen, die ich verpasst habe.

Üben Sie die Quellcodeverwaltung und Arbeitsteilung mit Ihrem Team im Voraus.Wirst du Subversion, Git, Mercurial oder etwas anderes verwenden? Sind alle Computer auf dieselbe aktuelle Version von Java eingestellt? Erstellen Sie Ihr Repository, schreiben Sie einige Dateien fest / pushen Sie sie, stellen Sie sicher, dass alle das Repository ausgecheckt haben und bereit sind, auf Ihrem System zu arbeiten. Legen Sie möglicherweise eine "Hallo Welt" -App fest und stellen Sie sicher, dass jeder sie abrufen, ändern und festschreiben kann. und stellen Sie sicher, dass Sie wissen, wie Sie mit dem Zusammenführen umgehen (ob Sie dies durch gute Kommunikation oder Paarprogrammierung vollständig vermeiden oder wie Sie ein Zusammenführungswerkzeug verwenden). Wenn Sie mit der Quellcodeverwaltung nicht vertraut sind, stellen Sie sicher, dass Sie eine funktionierende Lösung finden. Egal, ob es sich um Paarprogrammierung handelt, während die dritte Person Kunst oder Sounds macht, oder um etwas anderes, stellen Sie sicher, dass Sie von Anfang an organisiert sind, sonst verschwenden Sie jede Menge Zeit.

Lesezeichen für Links zu Websites, die kostenlose Medien bereitstellen. Es gab eine ganze Reihe solcher Websites, die in anderen Fragen hier aufgeführt sind. Websites wie Freesoundsind perfekt, um schnell nützliche Medien für Ihr Spiel zu finden, wenn Sie nicht die Zeit haben, sie von Grund auf neu zu erstellen. Setzen Sie natürlich ein Lesezeichen auf diese Site, damit Sie eine Frage stellen können, wenn Sie an etwas hängen bleiben. Setzen Sie Lesezeichen für Foren wie die gamedev.net-Foren, damit Sie nach Antworten suchen können. Wenn Sie sich für die Verwendung einer Drittanbieter-Bibliothek entscheiden, setzen Sie ein Lesezeichen für deren Website. Organisieren Sie diese Lesezeichen in Ordnern und greifen Sie auf so viele wie möglich zu. Stellen Sie sicher, dass Sie sie freigeben, damit Sie alle drei über dieselbe nützliche Bibliothek mit Lesezeichen verfügen. Es dauert nicht lange, diese Lesezeichen zu sammeln und nach Typ / Thema zu organisieren, aber es spart Ihnen viel Zeit, wenn Sie sich nicht an all diese Websites in der Mitte Ihres Projekts erinnern müssen.

Weitere Vorschläge finden Sie in den Antworten auf meine Frage "Wie bereite ich mich auf einen Spieleentwicklungswettbewerb vor?" .


Um den Rest Ihrer Frage zu beantworten ... Der allgemeine Rat lautet: Zielen Sie nicht hoch . Dies kann jedoch sehr unterschiedlich sein, je nachdem, wie gut Sie vorbereitet sind (dh meine obigen Vorschläge) und welche Kenntnisse Sie in Java haben. Dies ist größtenteils ein persönliches Urteil, das auf Ihrer Geschichte basiert, aber da keiner von Ihnen in der Vergangenheit Spiele gemacht hat (und daher die erforderliche Zeit nicht beurteilen kann), sollten Sie wirklich sehr, sehr niedrig zielen . Überlegen Sie sich eine wirklich grundlegende Idee, die ohne fortgeschrittene Konzepte einfach in 2D implementiert werden kann (z. B. vermeiden Sie pixelweise Kollisionen, verrückte physikalische Berechnungen, Partikeleffekte usw.). Erstellen Sie dann eine Prioritätenlisteder Funktionen des Spiels so detailliert wie möglich (z. B. teilen Sie jede Funktion in so viele separate Aufgaben wie möglich auf). Auf diese Weise arbeiten Sie sich einfach so weit wie möglich durch die Liste, und wenn Sie nicht zu Aufgaben mit niedriger Priorität gelangen, sollte dies keine große Sache sein. Dies muss sorgfältig durchgeführt werden (Sie benötigen am Ende der Zeit noch ein funktionierendes Spiel, sodass ein Mindestmaß an Aufgaben erledigt werden muss und einige Aufgaben von anderen Aufgaben abhängen), aber im Allgemeinen denke ich, dass dies das ist Der beste Ansatz, wenn Sie nicht wissen, wie lange es dauern wird.

Ricket
quelle
Das ist ein ausgezeichneter Rat.
Alexander Gessler
1
Gute Argumente. Obwohl ich denke, dass die Quellcodeverwaltung die Dinge für Anfänger auch komplizierter machen kann (stellen Sie sich vor, jemand bringt das Repo durcheinander). Wenn die Zeit kritisch ist, sollte man nicht anfangen, neue Werkzeuge zu verwenden. Wenn Sie jedoch bereits mit einem VCS vertraut sind, sollte es auf jeden Fall verwendet werden.
Bummzack
4
Rickets Ratschläge für ein niedriges Ziel und die Verwendung einer priorisierten Liste sind großartig - es geht darum, das Risiko zu minimieren und die Iteration zu erhöhen. Sie möchten Situationen vermeiden, in denen Sie 8 Stunden arbeiten müssen, bevor Sie etwas zum Laufen bringen. Wenn es nicht funktioniert oder länger dauert, haben Sie möglicherweise nichts. Versuchen Sie stattdessen, ein Spiel in weniger als 1 Stunde zum Laufen zu bringen, und verbringen Sie dann den Rest Ihrer 10 Stunden damit, Dinge hinzuzufügen, Tests zu spielen und zu verfeinern. Während Sie spielen, werden Sie immer mehr Dinge finden, die Sie hinzufügen können.
Amitp
@ Bummzack Einverstanden! Es kann WIRKLICH in die Quere kommen, daher sind Übung und Gewissheit der Schlüssel der Schlüssel, aber es kann auch super toll und nützlich sein, wenn es richtig verwendet wird.
Ricket
Das Beste, wie man Dinge schnell zum Laufen bringt, ist es, es in extremer Programmierweise zu machen (besser als svns), was bedeutet, dass ganze Teams zusammen vor einem Computer sitzen. Es funktioniert gut in kleinen Teams (max. 2-3). Sie unterstützen sich gegenseitig und Probleme werden schneller gelöst - Sie werden nicht frustriert.
Notabene
2

Ziel nicht zu hoch. Wählen Sie etwas aus, an dem Sie interessiert sind, und bauen Sie etwas Einfaches darauf auf. Beispiel: Vielleicht möchten Sie wirklich etwas über eine Physik-Engine lernen. Warum nicht ein Physik-Puzzle wie Totem-Zerstörer oder ähnliches bauen? Versuchen Sie, sich um ein Kernelement zu drehen, und schließen Sie keine anderen komplizierten Dinge wie KI, anspruchsvolles Rendering / Grafiken / Shader usw. ein.

Konzentrieren Sie sich auf einen Aspekt und versuchen Sie, eine Spielmechanik zu finden, die dazu passt. Wenn Sie sich für 3D interessieren, könnte Ihr Spiel so einfach wie Tic-Tac-Toe sein, aber konzentrieren Sie sich darauf, gute 3D-Grafiken auf dem Bildschirm zu erhalten.

Versuchen Sie nicht, zu viel Neues auf einmal zu lernen. Nutzen Sie vorhandene Frameworks / Tools so weit wie möglich.

Um dies abzurunden, hier einige Ideen für ein "Erste Schritte" -Spiel: Mit welchen guten Spielen können Sie sich "Ihre Flügel verdienen"?

Update: Da Sie wirklich wenig Zeit haben, würde ich die "neuen Lerninhalte" auf ein absolutes Minimum reduzieren. Eine Physik-Engine könnte bereits übertrieben sein, wenn Sie noch nie zuvor eine verwendet haben. Wählen Sie auch eine Spielmechanik aus, die Sie bereits kennen, vorzugsweise mit einem genau definierten und kleinen Regelsatz und einer begrenzten Anzahl von Spielzuständen.

bummzack
quelle
2

Wenn Sie noch keine Erfahrung mit dem Schreiben von 3D-Spielen haben, würde ich die 3D-Idee sofort fallen lassen. Konzentrieren Sie sich stattdessen auf ein einfaches Gameplay-Konzept und versuchen Sie, es mithilfe einfacher 2D-Grafiken zu implementieren. Achten Sie darauf , die Spielmechanik implementieren erste - wenn Sie früher fertig sind, können Sie immer noch anspruchsvolle visuelle Effekte hinzufügen können.

Aber ein Spiel ohne Gameplay ist kein Spiel, während ein Spiel ohne atemberaubende Grafiken trotzdem Spaß machen kann.

20 bis 30 Arbeitsstunden sind sehr wenig Zeit für ein gutes Spiel. Sie müssen Ihre Aufgaben also wirklich sorgfältig planen und priorisieren, sonst erhalten Sie nie ein angemessenes Ergebnis.

Alexander Gessler
quelle
Ein guter Punkt in der Tat :)
Øyvind