Zurück   Flashforum > Flash > ActionScript > Spielkonzepte und Spieleprogrammierung

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12-12-2009, 16:10   #1 (permalink)
Neuer User
 
Benutzerbild von grudge
 
Registriert seit: Dec 2009
Beiträge: 5
Der grundliegende Aufbau

Hallo Freunde,
ich habe mit Java ein einigermasen komplexes Spiel erstellt:
Metzger Joggl

So ich arbeite jetzt an der Umsetzung des Spieles in Flash. Bis jetzt hab ich mich mit Flash nur mäßig beschäftigt, und es gibt so einiges was mit google oder den lern-Videos nicht ganz beantworten konnten.

Ich verstehe zwar wie ich Videos, Animation etc. mache, auch mit Listenern etc. komm ich klar,aber ich verstehe nicht wie ich den grundliegend Aufbau machen kann.

Wo kann ich Klassen und Felder definieren, dass sie überall erreichbar sind, und nicht nur in den einzelnen Frames. Wo erstelle ich die Instanzen von diesen?

Vielleicht können mir die Leute, die schon einmal ein größeres Game gemacht haben, etwas über den Aufbau erklären.

Grüße grudge
grudge ist offline   Mit Zitat antworten
Alt 12-12-2009, 16:22   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Wie hast du es denn in Java gemacht? Also, prinzpiell machst du es in ActionScript nicht anders?!
Omega Psi ist offline   Mit Zitat antworten
Alt 12-12-2009, 16:25   #3 (permalink)
Neuer User
 
Benutzerbild von grudge
 
Registriert seit: Dec 2009
Beiträge: 5
In Java hab ich eigene Klassen (mit Felder :-D ) definiert und mir war der Programmfluss genau bewusst. In Flash weiß ich nicht WO ich diese Befehle, die einmal ausgeführt werden sollen (zB zur definition eines Feldes) hinschreiben soll.

Von der Physik her bleibst gleich, das is klar
grudge ist offline   Mit Zitat antworten
Alt 12-12-2009, 16:50   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
In ActionScript kannst du Klassen definieren, die Java Klassen sehr ähnlich. Im Gegensatz zu Java definierst du neben Felder und Methoden auch Properties. Diese kapseln den Zugriff auf Felder.

Wenn du in Java mit Klassen gearbeitet hast, kannst du diese Arbeitsweise übernehmen. Prinzipiell kannst du genauso arbeiten. Die eigentlich Unterschiede liegen in der Implementierung des Controllers. In Swing würdest du einen ActionListener implementieren. In ActionScript must du mit Klassen arbeiten, die von DisplayObject oder DisplayObjectContainer abgeleitet sind (du bist mit OOP vertraut).

Um einen Controller zu implementieren, musst du das Eventsystem verstanden haben.

Aber wann wie und wo du Instanzen von Klassen initialisierst, funktioniert im Allgemeinen wie in Java.
Omega Psi ist offline   Mit Zitat antworten
Alt 12-12-2009, 16:53   #5 (permalink)
Neuer User
 
Benutzerbild von grudge
 
Registriert seit: Dec 2009
Beiträge: 5
Etwas konkreter. ich habe jetzt Adobe Flash CS4 (trial). Ich kann in der Zeitleiste in allen Frames Befehle schreiben. Jedoch weiß ich nicht wo ich meine Hauptdatei mit Klassen etc. hinschreiben soll. In welches Dokument so dass ich in allen Frames auf Klassen, Instanzvariablen etc. zugreifen kann.

Das sich die Sprachen im Bereich Syntax etc. ähneln ist mir klar und damit habe ich auch kein Problem.

Geändert von grudge (12-12-2009 um 16:55 Uhr)
grudge ist offline   Mit Zitat antworten
Alt 12-12-2009, 17:16   #6 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Ah ok, das macht es etwas einfacher für mich.

Du hast nun mehrere Möglichkeiten:
  1. Auf Flash verzichten und mit Flex Builder (Eclipse basiert), IntelliJ IDEA, FDT oder FlashDevelop (Widows only, Freeware) switchen, um komfortabel zu entwickeln.
  2. Mit einer Dokumenten-Klasse zu arbeiten.
  3. Im ersten Keyframe zu arbeiten, als wenn es eine Klasse wäre.
Ich würde dir Variante 1 ans Herz legen.
Omega Psi ist offline   Mit Zitat antworten
Alt 12-12-2009, 17:27   #7 (permalink)
Neuer User
 
Benutzerbild von grudge
 
Registriert seit: Dec 2009
Beiträge: 5
Danke erstmal

Denkst du echt dass die alternativen besser sind?

Meinst du mit Dokumentenklasse eine "Action Script Datei".

Wenn ich in einer solchen meine Klassen, Methoden etc. hineinschreibe, wie kann ich diese dann in die "Flash Datei" importieren bzw. wo erstelle ich dann die Globalen Instanzen?
grudge ist offline   Mit Zitat antworten
Alt 12-12-2009, 18:25   #8 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Wenn du ein Programmierer bist, dann ist die Flash IDE kein Werkzeug, dass deinen Ansprüchen genügen wird.
Omega Psi ist offline   Mit Zitat antworten
Alt 13-12-2009, 12:38   #9 (permalink)
Neuer User
 
Benutzerbild von grudge
 
Registriert seit: Dec 2009
Beiträge: 5
Mir gefällt die Möglichkeit die Animation so gut zu gestallten. Mit Java konnte ich pro Bewegung nur 2 Bilder machen.

Aber ich weiß jetzt immer noch nicht an welche stelle ich meine Engine (also alle Funktionen, Klassen, etc. ) zur Berechnung der Physik hinschreiben soll, dass diese Funktionen immer erreichbar sind.

Und ich weiß auch noch nicht an welcher Stelle ich die Instanzen der Engine deklarieren und definieren soll. Mache ich das im ersten Frame so wird die Variable immer wieder neu überschrieben. Ich kann mein Programm sozusagen nicht vernünftig Initialisieren. Wenn ich das könnte wäre der Rest kein großes Problem mehr.

viele Grüße
B.
grudge ist offline   Mit Zitat antworten
Alt 14-12-2009, 08:17   #10 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 548
So arbeitet man in der Regel an einem Game oder ähnlichem direkt in der Flash-IDE:

- Die Hauptzeitleiste hat nur einen Frame mit dem Hauptcode. Dieser wird dann auch nur einmal ausgeführt. Alternativ schreibt man eine Hauptklasse (welche von MovieClip erbt) in eine as-Datei und verweist im Eigenschaften-Tab des Films bei "Dokumentklasse" auf diese.
- Code, der in jedem Frame ausgeführt werden soll (Hauptschleife) gehört ins EnterFrame-Event. Hierzu mal mit dem Event-Listener-System von Flash auseinandersetzen.
- Alle Animationen, Grafiken etc. werden in eigene MovieClips (MCs) gepackt und auf die Bühne gestellt. Am besten erst zur Laufzeit aus der Bibliothek instanziiert (oder nachgeladen), platziert und gestartet.
- jede Klasse bekommt ihre eigene as-Datei. Eine Klasse die im selben Verzeichnis liegt wie die fla ist dieser bekannt. Für weitere Pfade ist das Schlüsselwort "package" am Anfang jeder Klassendatei zuständig, bzw. Grundeinstellungen in Flash für Bibliotheken außerhalb des aktuellen Projekts.
- damit einer Klasse eine andere Klasse bekannt wird, verwendet man das Schlüsselwort "import" vor der Klassendefinition.

Ich würde dir auch zu einer Entwicklungsumgebung raten. "Assets" wie Animationen etc. werden dann einzeln in Flash, Bildbearbeitungs-, Musik- oder anderen Programmen gebastelt und ins Projekt importiert, entweder über die Compiler-Direktive [embed] oder dynamisch zur Laufzeit nachgeladen.

Probier mal dieses kleine Beispiel: kopier den Code in eine neue as-Datei, benenne diese genau nach dem Klassennamen und speichere im selben Verzeichnis eine leere Fla-Datei. In dieser schreibst du im Eigenschaften-Tab bei "Dokumentklasse" den Namen der Klasse.
Beim Start sollte im Ausgabe-Tab dann die Nachricht stehen.

ActionScript:
  1. //Datei: MeineHauptklasse.as
  2. package{
  3.    
  4.     //Klasse importieren, die nicht im Projektverzeichnis liegt
  5.     //(Flash-Klassenpfade findet man alle in der Referenz)
  6.     import flash.display.MovieClip;
  7.    
  8.     //Hauptklasse muss von MovieClip erben
  9.     public class MeineHauptklasse extends MovieClip{
  10.        
  11.         //Konstruktor
  12.         public function MeineHauptklasse(){
  13.             trace("Film gestartet.");//String an Ausgabe-Tab senden
  14.             }
  15.        
  16.         }
  17.    
  18.     }
joeydee ist offline   Mit Zitat antworten
Alt 14-12-2009, 08:19   #11 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Anmerkung: [Embed] bettet ein (kompiliert die Bytes in die SWF) und kann somit die Daten nicht dynamisch laden.
Omega Psi ist offline   Mit Zitat antworten
Alt 10-01-2010, 13:10   #12 (permalink)
Neuer User
 
Registriert seit: Jan 2010
Beiträge: 12
Ich hätte auch einige Fragen und hoffe, dass ich dafür nicht gesteinigt werde.
Auch wenn schon darauf hingewiesen wurde, dass Flash nicht die ideale IDE ist, um Spiele zu programmieren, will ich trotzdem damit einsteigen, um auch AS3 zu lernen. Mir ist klar, dass sich ein Spiel nicht von heute auf morgen entwickeln lässt, also brauche ich dahingehend keine Belehrungen.

Ich würde nur gern mal wissen, ob meine Vorstellungen realitätsnahe sind und der Arbeitsweise entsprechen, wie man Flash-Spiele erstellen kann.
  1. Leveldesign:
    Dafür betrachte ich Flash als hervorragendes Werkzeug, wenn man seine Levels mitsamt Spielobjekten in einzelnen Movieclips kapselt und sie zur Laufzeit lädt.
  2. Character Design:
    Erstmal eine grundlegende Frage dazu: ist es im Hinblick auf den Speicherbedarf sinnvoller Bitmaps für bspw. Animationssequenzen einer Figur zu nutzen wie man es von älteren Spielen kennt oder MC's mit enthaltenen Grafikobjekten und Vektorformen, die mit Flash erstellt wurden?
    Eine Kombination von beidem fänd ich stilistisch weniger schön, zumindest immer dann, wenn man gezwungen ist, Bitmaps zu skalieren/drehen (gerade wenn ich an PNG's mit nicht uniformem Alphakanal denke)
  3. Spielobjekte:
    Ich platziere Movieclip-Objekte in den einzelnen Level-Movieclips, die bspw. die Spielfigur, Gegner, Items und sonstige Objekte repräsentieren, mit denen die Spielfigur interagieren kann. Diese MC's besitzen vordefinierte properties, um auf events wie (Spieler in Reichweite, also angreifen) zu reagieren usw.
    Gleichzeitig sollen bestimmte Instanzen dieser Objekte aber noch anpassbar sein, um bspw. Werte wie Lebenspunkte oder droppable Items zu variieren. Reicht es dazu, die Instanzeigenschaften in der Hauptzeitleiste des Level-MC's auf gewohnte Weise zu verändern? ( EnemyX.Life = 500; )
  4. Speichern, laden:
    Ich nehme an, hier würden sich XML- oder CSV-Dateien ganz gut machen. Doch wie erreiche ich es, dass die Daten zum Speichern verschlüsselt geschrieben werden und zum Laden wieder entschlüsselt werden? Informationen wie <CurrentLevel>2</CurrentLevel> oder <Highscore>1337</Highscore> sind mir da zu offensichlich.
    Oder sollte man solche Daten gleich binär bzw. anderweitig speichern, um das Risiko (erfolgreicher) externer Manipulation zu minimieren?
Abschließend, falls jemand gute Tutorials kennt zur Spieleprogrammierung (mit Adobe Flash CS3/4 + AS3) wäre ich auch sehr dankbar.

Geändert von Dibelius (10-01-2010 um 13:13 Uhr)
Dibelius ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
treemenü aufbau? flozwo ActionScript 2 8 11-03-2007 17:03
Aufbau ExarKun PHP und MySQL 7 06-09-2006 13:06
swf aufbau bubzilla Am Rande 2 20-12-2005 12:14
site aufbau chriss HTML und CSS 3 21-02-2003 15:18
unabhängiger aufbau Schlumpf@online Flash 4 und Flash 5 15 20-02-2003 11:12


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:13 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele