Android "Aktivitäten" - eine oder mehrere für Spiele?

7

Ich habe in meiner Freizeit Android gelernt und eines der ersten Dinge, die Ihnen jedes Tutorial / jede Anleitung vorstellen wird, ist das Konzept einer "Aktivität". Jeder definiert eine Aktivität lose als einen Bildschirm zum Ausführen einer bestimmten Aktivität.

Meine Frage ist, wie relevant / wichtig ist es, mehrere Aktivitäten für ein Spiel zu haben? Gibt es Richtlinien für die Aufteilung eines Spiels in mehrere Aktivitäten? Um zu erklären, was ich meine, nehmen wir ein Spiel wie Final Fantasy.

In Final Fantasy gibt es verschiedene Bildschirme, die immer und immer wieder verwendet werden:

  • Die Welt- / Dungeonkarte
  • Der Kampfbildschirm
  • Die Menüs Ausrüsten / Fertigkeiten / Gegenstände

Wäre jede dieser Aktivitäten eine Aktivität, zwischen der Sie hin und her wechseln, oder würden Sie den Bildschirm innerhalb einer Aktivität neu zeichnen?

Nehmen wir an, es ist alles nur eine "Spiel" -Aktivität - dies wirft andere Fragen auf, z. B. was ist mit einem Begrüßungsbildschirm vor Spielbeginn, der Ihr Firmenlogo / -namen anzeigt und einen Sound wiedergibt? Sollte das als Teil der Spielaktivität betrachtet werden oder sollte es eine eigene Aktivität sein?

CptSupermrkt
quelle
1
Warum verwenden Sie nicht aus Neugier LibGDX oder AndEngine, die all diese Dinge vollständig für Sie erledigen?
Sidar
Da ich gerade erst angefangen habe - um Ihnen eine Idee zu geben -, war das letzte Tutorial, das ich gemacht habe, Tic Tac Toe, und bisher hat keines dieser beiden Dinge erwähnt.
CptSupermrkt
1
Nun, ich habe das Aktivitätsobjekt nie wirklich angeschaut. Die LibGDX- und AndEngine-API beschäftigen sich nicht wirklich mit der Android-API auf der Oberfläche (obwohl Sie darauf zugreifen können). Ich konnte meinen einfachen Testlauf in kürzester Zeit ohne Kenntnis eines Aktivitätsobjekts ausführen. Wenn Sie sich jedoch wirklich darauf konzentrieren, mehr über Android selbst zu erfahren, bleiben Sie dabei! = D
Sidar
2
Auch LibGDX und AndEngine sind KEINE offiziellen Google-Android-Bibliotheken. Sie werden von anderen Menschen gemacht. Aus diesem Grund werden sie in Ihrem Lernprogramm nicht erwähnt, da diese beiden Bibliotheken auf der Android-API aufbauen. Ihr Tic-Tac-Toe war ein völlig anderer Fokus und arbeitete direkt mit der Android-API.
Sidar
2
Kein Problem, Sie sparen sich viele Kopfschmerzen! Aber andererseits, wenn Sie mehr über Android erfahren möchten, fahren Sie fort, was Sie bereits tun! (Ich bevorzuge LibGDX gegenüber dem anderen, schau es dir an, es ist großartig)
Sidar

Antworten:

8

Ich bin kürzlich selbst in die Android-Entwicklung eingestiegen. Ich habe langjährige Entwicklungserfahrung, habe mich aber entschlossen, in das flache Ende der Android-Entwicklung einzusteigen.

Das heißt, ich habe so ziemlich ähnliche Dinge getan wie Sie, aber meine Perspektive unterscheidet sich aufgrund der Erfahrung.

Trotzdem habe ich ursprünglich mit dem Ansatz "Ein Bildschirm == Eine Aktivität" begonnen und schnell seine Grenzen kennengelernt.

Welches funktioniert nach einer Mode. Ausnahmslos werde ich eine Art endliche Zustandsmaschine verwenden, und so wurden Aktivitäten zu Zuständen ... einfach genug, dachte ich.

Dann wurde mir klar, dass ich jedes Mal, wenn ich den Zurück-Knopf drücke, zu der vorherigen Aktivität gehe.

Dies kann eine große Sache für Ihr Spiel sein oder auch nicht, aber beachten Sie Folgendes:

Sie befinden sich in der OverworldActivity (unter Verwendung der bekannten Final Fantasy-ähnlichen Terminologie) und wandern um die Welt, wenn Sie plötzlich eine Begegnung haben und zur CombatActivity gehen.

Wenn Sie zu diesem Zeitpunkt den Zurück-Knopf drücken, kehrt Ihr Spiel in die Überwelt zurück.

Und das ist für mich inakzeptabel, und ich bin für Sie fast sicher inakzeptabel.

Ja, Sie können Handler in die Aktivitäten einfügen, sodass Sie bei einer ungültigen Aktivität an die richtige weitergeleitet werden. Am besten ist es jedoch, Aktivitäten mit der Schaltfläche "Kann ich sicher auf die Schaltfläche" Zurück "klicken und trotzdem" Entwerfen " das Spiel macht Sinn ".

Hier ist ein Schema, das eher für ein Spiel im FF-Stil funktioniert:

  • MainMenuActivity (hat die "Start / Lebenslauf", "Anweisungen", "über")
  • HelpActivity (selbsterklärend)
  • AboutActivity (auch selbsterklärend)
  • GamePlayActivity (geht die Welt umher, kämpft und die meisten anderen Spielaspekte, die nicht in das "Zurück" -Schema passen, und drücken Sie die Zurück-Taste, um zur HauptmenüAktivität zurückzukehren, was Sinn macht.)
  • InventoryActivity (Sie erhalten es von der GamePlayActivity, und daher ist es sinnvoll, dass Sie zur GamePlayActivity "zurückkehren"
  • ShopActivity (wenn Sie ein Geschäft / Gasthaus / was auch immer betreten)
  • DialogActivity (vorausgesetzt, Sie können ein Gespräch jederzeit beenden, indem Sie auf die Schaltfläche "Zurück" klicken).

Und hoffentlich hilft das.

PlayDeezGames
quelle
0

In der Android-Dokumentation heißt es: "Eine Aktivität ist eine einzelne, fokussierte Sache, die der Benutzer ausführen kann."

Für jede Art von Spiel- / Menüfunktion möchten Sie also eine andere Aktivität haben. Ihr Beispiel mit Final Fantasy ist perfekt. Ein Begrüßungsbildschirm scheint eine Frage der Präferenz zu sein. Sie können ihn beispielsweise in die Hauptmenüaktivität integrieren oder als separaten Bildschirm in das Hauptmenü einbinden.

AohmZ
quelle
1
Ja, aber dieser Rat lässt sich nicht gut übersetzen, wenn Sie jedes Mal, wenn Sie zu einer anderen Aktivität springen möchten, einen gl-Kontext erstellen müssen. Es ist am besten, einen einzelnen Grafikkontext auszuführen und eine Bildschirmoberfläche zu verwenden, wie sie in libgdx und andengine unterstützt wird.
Chuck D
Huh. Ich hatte nicht über Gl-Kontexte nachgedacht, da ich nur einige rudimentäre 2D-Programmierungen auf dem Android durchgeführt habe
AohmZ
0

Ich kann mich wiederholen, aber dies war meine Antwort auf eine ähnliche Frage:

Schauen Sie sich Replica Island an . Es wurde von einem der Google-Ingenieure geschrieben. Sie nutzen für alles unterschiedliche Aktivitäten. Aber ich denke, eine Aktivität zu verwenden ist viel einfacher! Andere Spiele und einige der verfügbaren Spiele-Engines machen das so. Der Nachteil ist, dass Sie Verhalten wie Tastendruck usw. selbst implementieren müssen.

Und nicht nur das Drücken von Tasten, sondern auch die verschiedenen Zustände, in denen sich ein Spiel befinden kann, wie Begrüßungsbildschirm, Menü, Spielen usw. Da alle genannten Spiele-Engines Open Source sind, laden Sie sie herunter und sehen Sie sich ihren Code an;)

Manchmal denke ich, dass Googles Vorstellung von Aktivitäten mehr verwirrt als hilft.

Lurca
quelle