Wenn ich eine Plattform für ein Spiel in Betracht ziehe, habe ich mich für eine Multi-Plattform (Win / Lin / Mac) entschieden, kann mich aber nicht so weit entscheiden, was Browser oder Desktop betrifft. Da ich nicht allzu weit in der Entwicklung bin, und jetzt nachdenkend, würde ich Ihre Meinung mögen!
Gibt es eine Möglichkeit, das Beste aus beiden Welten zu haben? Ich liebe Java-Applets, aber mir gefallen auch die Gründe, ein Desktop-Spiel zu schreiben. Ich möchte nicht ständig alles zwischen einem Java-Applet-Projekt und einem C ++ - Projekt portieren; das wäre doppelt so viel Arbeit!
Unity entschied sich dafür, ihr eigenes Web-Player-Plugin zu schreiben. Ich mag das nicht, weil ich einer der Leute bin, die ihren Web-Player für nichts installieren, und ich sehe mich nicht in der Lage, mein Publikum zu überzeugen, ein Browser-Plugin zu installieren.
Was sind meine Möglichkeiten? Gibt es neben Unity noch weitere Beispiele für Spiele mit Browser- und Desktop-Versionen? Habe ich irgendetwas in den oben genannten Pro / Contro-Listen weggelassen?
Ja, Sie können das Beste aus beiden Welten haben.
Es ist durchaus möglich, eine Java-Anwendung zu schreiben, die sowohl in einem Applet (für Ihre Online-Benutzer) als auch als eigenständige Anwendung in heruntergeladener Form ausgeführt wird.
Die Schlüsseltechnologien sind:
Wenn es irgendeinen Nutzen bringt, hat ein altes Spiel namens Tyrant das Ausführen sowohl als Applet als auch als eigenständiges Programm unterstützt. JAR-Datei, alle Quellen sind geöffnet, wenn Sie sie betrachten möchten. Dies verwendete einfache AWT statt 3D-Grafiken.
Und schließlich ist hier ein weiteres Beispiel , um ein Applet mit relativ wenig Code in eine Anwendung zu konvertieren .
Ich würde vorschlagen, zuerst ein Spiel zu schreiben.
Es ist leicht zu verstehen, wie man das beste Spiel aller Zeiten schafft, das von einem Abakus bis zu SkyNet laufen kann, aber die Realität ist, dass Sie viele Herausforderungen haben werden bevor du ein Spiel beendest, das auf deinem eigenen PC läuft.
Schreiben Sie zuerst ein Spiel für one -Plattform (ob diese Plattform "Windows-nativ mit DirectX" oder "Java-Applet" oder sogar "reines AJAX in einem Browser" ist). Wenn Sie das können, können Sie darüber nachdenken, wie Sie es auf andere Plattformen portieren können. Aber alles versuchen ist ein sicherer Weg, um nichts zu erreichen.
Oder anders gesagt:
Ich habe mich für Multi-Plattform entschieden (Win / Lin / Mac)
Sie haben sich also entschieden nichts . Entscheiden Sie sich für eine Plattform, auf der Sie sich weiterentwickeln können. Dann mach das Spiel. Dann mach es auf anderen Plattformen funktionieren.
Sorgen Sie sich nicht so sehr darum, was Ihr "Publikum" akzeptabel finden wird. Wenn dein Spiel Spaß macht, dann werden die Leute gerne Unity installieren. Genau wie sie dein Spiel installieren, wenn es nicht browserbasiert ist. Aber der wichtige Punkt ist nicht "Was muss ich installieren, um es zu spielen", sondern "ist es das wert". Dein Fokus sollte darauf sein, ein Spiel zu machen, das die Installation wert ist .
Und wenn Sie nicht planen, 20 Millionen Kopien des Spiels zu verkaufen und davon zu leben, ist Ihr "Publikum" nicht so wichtig, oder? Es kommt darauf an, das Spiel auf den Markt zu bringen, damit Interessierte es ausprobieren können.
Aber ein Single-Plattform Spiel ist viel besser als eine unvollendete Cross-Plattform nichts .
Ein Spiel, bei dem ich Unity installieren muss, ist viel besser als etwas, das Sie um weitere drei Jahre entwickeln müssen, weil Sie darauf bestanden haben, das Rad neu zu erfinden.
Wenn Sie diese Art von Penetration wirklich wollen, dann empfehle ich HTML 5 + Javascript, abhängig von der Leistung, die Sie brauchen.
Zuerst beginnen Sie mit der falschen Frage. Deine Entscheidung für eine Technologie sollte vom Konzept des Spiels abhängen. Es scheint, dass Sie sich sicher sind, ein Spiel zu schreiben - also fragen Sie sich, was die Anforderungen für das Spiel sind. Dies führt Sie zu Ihrer Technologie. Wenn es keine Ahnung von "was" Sie machen möchten.
Zu Ihren Pro und Con's: Konzentriere dich nicht auf Dinge, die du niemals brauchen oder nutzen kannst. Nachdenken über die Dampfplattform ist für Hobbyentwickler nicht interessant. Auch Android ist nicht interessant, wenn Sie nicht wirklich Ihre Anwendung für Android versenden möchten. Diese Profis werden in der Realität niemals ein Profi sein.
Um es zusammenzufassen: Lassen Sie diese Entscheidung von Ihrer Idee und nicht von der Technologie selbst ausgehen. Wenn Sie eine klare Vorstellung davon haben, was Sie tun möchten, erhalten Sie Ihre Antwort.
(Und übrigens: Denken Sie darüber nach, was Browserspiele bedeuten. Hinter einem Browsergame befindet sich ein riesiger Service-Bereich, nur um das Spiel am Laufen zu halten. Firmen, die in solchen Bereichen arbeiten, sind im Grunde Dienstleister.)
Sie können sich vielleicht den Google-Client ansehen, mit dem Sie Ihre Anwendung in C oder C ++ schreiben können ( oder irgendetwas anderes, das zu nativem Code kompiliert, wirklich). Eine neue Funktion des SDK ist die LLVM-Unterstützung, die es (hoffentlich) ermöglicht, dass NaCl-Software auf jede Plattform abzielt, auf der Googles Chrome-Browser läuft (oder auf jeden Browser, mit dem das NaCl-Plugin arbeitet - derzeit werden x86 und ARM unterstützt, IIRC).
Du hast Android in deiner Frage erwähnt - hast du darüber nachgedacht, das Spiel ausschließlich für Android zu entwickeln?
Im Endeffekt erhalten Sie das Beste aus beiden Welten, sind leicht zu pflegen, einfach zu veröffentlichen, leicht zu monetarisieren und erhalten ein kleines Einkommen, und Sie haben auch keinen eigenen Installer oder Update-Mechanismen geschrieben.
Ja. Sie können etwas machen, das in beiden funktioniert. Grundsätzlich sollte Ihr Programm in einem JPanel funktionieren. Das Applet kann JPanel anzeigen, und die Desktop-Version ist nur ein Fenster mit Ihrem JPanel drin.
Sie könnten auch eine vollständige Swing-GUI (oder was auch immer) haben, die das Applet in einem neuen Fenster startet, wenn sie auf die kleine "Start" -Schaltfläche in Ihrem Applet klicken.
Es gibt noch ein paar andere Unterschiede, die Sie berücksichtigen müssen, wie das Laden von Ressourcen, aber ich habe es vorher für einfache Spiele gemacht, die ich gemacht habe.
Ich glaube nicht, dass Sie die beiden wirklich vergleichen können:
Meiner Meinung nach:
Wenn Sie mit C ++ nicht vertraut sind, wäre mein Rat, mit JOGL in Richtung Java zu gehen. Auf diese Weise können Sie die OpenGL-Lernkurve skalieren, bevor Sie C ++ in Angriff nehmen müssen.
BEARBEITEN
Um den anderen Abschnitt Ihrer Frage bezüglich der Implementierung eines Spiels sowohl in Browser- als auch in Desktop-Form anzugehen, könnten Sie das Spiel in Java implementieren und eine Applet- und Standalone-Version bereitstellen, wobei die Standalone-Version den Vollbildmodus von Java nutzen kann Exklusivmodus-API Sie können beide Anwendungen auf derselben Codebasis basieren. Sie könnten auch in Betracht ziehen, die Footprint-Größe des Applets zu verkleinern, indem Sie Datendateien (z. B. Spielebenen) serverseitig beibehalten und sie bei Bedarf dynamisch abrufen.
Obwohl WebSense mich aus offensichtlichen Gründen nicht direkt zur Seite navigieren lässt, war das erste, was mir beim Lesen dieser Frage einfällt, ein Spiel wie Wurm Online . Es ist in Java mit JOGL geschrieben, implementiert Content-Streaming und lokale Caches und scheint eine Menge der Punkte angesprochen zu haben, an denen Sie interessiert sind. Es ist eine Desktop-Java-Anwendung, anstatt wirklich "In-Browser" zu sein, aber ich denke, Sie könnten lerne noch einiges von seiner Implementierung.
Das In-Browser-Spiel ist immer in Gefahr, sein Fenster geschlossen oder aufgefrischt zu haben, was dazu führt, dass es abrupt den Status verliert, wenn nicht alles serverseitig gehalten wird. Das bedeutet, dass Sie entweder sehr einfache Spiele haben, die die Synchronisation mithilfe eines Anruf- / Antwortmodells aufrechterhalten können (z. B. die unzähligen textbasierten Spiele von Facebook "Mob Wars") oder ein unbeabsichtigtes Auftauchen von F5
jemanden auf den letzten "katapultieren". gespeichertes Spiel. "
Ich bin mir nicht sicher, ob es eine vernünftige Entscheidung ist, ein Plugin nicht zu verwenden, weil Sie es persönlich nicht mögen. Mit dieser Option können Sie Ihre App als Desktop-App oder als Browser-Plugin (mit wenig zusätzlichem Aufwand) installieren und in C ++ / GL schreiben. Du hast gesagt, du glaubst nicht, dass deine Benutzer Plugins installieren werden ... warum nicht? Wenn sie eine Anwendung installieren, warum nicht ein Plugin, das im Grunde auf das gleiche läuft?
Sie können sich auch Flash ansehen, die einige 3D-Funktionen sammelt und in-Browser oder als AIR-Desktop-App ausgeführt werden kann. Aber dann würden Benutzer ein Flash-Plugin benötigen, das Sie vermutlich auch nicht haben.
Tags und Links java c++ browser-plugin