Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

12.01.2013, 19:20

FlashDevelop (Onlinespiele entwerfen)

Hallo zusammen,

ich wollte mich gern mal in den Bereich der Online-Spielewelt wagen und wollte das naheliegend
mit Flash (unter anderen?!) realisieren.
Zuletzt habe ich ende des letzten Jahrhunderts mal was mit Macromedia Flash versucht zu bastelt und seither mich nicht weiter mit beschäftigt.

Nun, Google spuckt mir zum Thema zwar sehr viel aus, jedoch alles recht unübersichtlich.

Ich habe mich nun erst einmal für 'FlashDevelop' entschieden und ein erstes Beispiel ausprobiert:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package 
{
    import flash.display.Sprite;
    import flash.events.Event;

    /**
     * ...
     * @author EternalPain
     */
    
    
    [Frame(factoryClass="Preloader")]
    public class Main extends Sprite 
    {

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // entry point
            trace("Hallo?");
            var circle1:Sprite = new Sprite();
            circle1.graphics.beginFill(0xFFCC00);
            circle1.graphics.drawCircle(40, 40, 10);
            circle1.buttonMode = false;
            // circle1.addEventListener(MouseEvent.CLICK, clicked);
            addChild(circle1);          
            
        }

    }

}

Das funktioniert soweit zwar, aber ist alles andere als nützlich und verstehe leider auch noch nicht alle Einbindungen und Befehle.

Desweiteren frage ich mich wie später eine Datenbankanbindung möglich ist? direkt über AS3 oder über PHP?
Kann ich aus einem PHP Script heraus mit der SWF 'interagieren'?

Wäre schön wenn mir jemand ein paar hilfreiche Links zu Tutorials und Referenzen zukommen lassen könnte...

Danke schon mal im voraus.

Noctarius

Treue Seele

Beiträge: 120

Wohnort: Düsseldorf

Beruf: Manager of Developer Relations at Hazelcast, Inc. & Consultant for Scaleable Gameserver Systems

  • Private Nachricht senden

2

12.01.2013, 20:07

Du kannst deinen Gameserver in PHP, Java, C# und einigen anderen Sprachen schreiben. Zur Interaktion nimmt man (wenn es einfach sein soll) direkt AMF (Adobe Action Message Format) für welches es Frameworks für viele Programmiersprachen gibt (z.B. GraniteDS für Java) dann kann man mit Klassen / Objekten arbeiten oder man nimmt pure Sockets (z.B. TCP), dann muss man aber ein eigenes Protokoll entwickeln.

3

12.01.2013, 20:55

Danke, hätte ich eigentlich auch von selbst drauf kommen können wenn ich mal kurz darüber nachgedacht hätte.
Die SWF ist hier also wie bei anderen Online-Spielen, unabhängig der Programmiersprache, einfach die Client-Applikation.

Die Sprache an sich ähnelt Python sehr, so denke ich das nach etwas Einarbeit sicher gut damit arbeiten lässt.

Gibt es irgendwo ein paar Befehlsreferenzen die mir erst einmal die Befehlsgrundlagen besser erklären könnten?
Dazu natürlich auch für die gängigen 'Imports' (wozu sind sie da, was kann ich damit machen... ect.)

zB. frage ich mich bei dem Beispiel oben, warum die Struktur so aufgebaut ist:

Quellcode

1
public class Main extends Sprite 

Warum wird hier die Sprite um Main erweitert?

würde es nicht auch so funktionieren?

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package 
{
    import flash.display.Sprite;
    import flash.events.Event;

    /**
     * ...
     * @author EternalPain
     */
    
    

    public function Main():void
        {
            // entry point
            trace("Hallo?");
            var circle1:Sprite = new Sprite();
            circle1.graphics.beginFill(0xFFCC00);
            circle1.graphics.drawCircle(40, 40, 10);
            circle1.buttonMode = false;
            addChild(circle1);          
            
        }

}


Interessieren würde mich noch:

Die sicht/spielfeld-größe scheint bis jetzt über den ganzen 'screen' zu gehen kann man diese auch 'beschränken'?

Wie kann ich Grafiken 'laden'? (vermutlich mit der Sprite Klasse?!)

wie man sieht, bin ich hier noch kompletter Anfänger.

Powerpaule

Treue Seele

Beiträge: 162

Wohnort: Berlin

Beruf: Softwareentwickler

  • Private Nachricht senden

4

12.01.2013, 21:24

Die Sprache an sich ähnelt Python sehr, so denke ich das nach etwas Einarbeit sicher gut damit arbeiten lässt.
Na ja, Python ist doch ziemlich anders, AS3 ähnelt viel mehr Java.
Warum wird hier die Sprite um Main erweitert?
Weil die Main-Klasse immer ein darstellbares Objekt sein muss (was auf dem Screen, bzw. im Flash-Jargon "Bühne", dargestellt werden kann). Daher muss es von Sprite oder MovieClip erben.
Wie kann ich Grafiken 'laden'? (vermutlich mit der Sprite Klasse?!)
Google "actionscript 3 load image" bringt bspw. sowas: http://blog.728media.com/2009/03/11/how-…ctionscript-30/

Sowieso findest du ansonsten dazu genug im Internet, mit Beispielen etc.
Eine genaue API-Beschreibung mit allen Paketen und Klassen gibt es hier: http://help.adobe.com/de_DE/FlashPlatfor…pt/3/index.html

Reine Socket-Verbindungen sind mit Flash wegen Sicherheitsgründen nicht so ohne Weiteres machbar. Wenn du einfach nur irgendwelche Daten aus einer DB lesen willst, kannst du einfach mit Flash eine Webseite aufrufen, wo dein PHP-Skript wartet und einfach den Inhalt der Datenbank Zeile für Zeile ausgibt. Du musst den Inhalt dann nur noch mit AS3 parsen und entsprechend in Deine Datenstrukturen umwandeln. Zwar nicht sehr professionell, aber für kleine Sachen ausreichend und man muss sich nicht mit viel Netzwerkkram rumschlagen.

5

13.01.2013, 13:21

(edit: hab eben mist geschrieben)
Man muss beim Kompilieren dem Compiler mitteilen welche Datei die Anwendung repräsentiert. Das kann eine mxml-Datei (mit Application-Tag) oder eine AS-Datei (mit einer Klasse die von Sprite erbt) sein. Der Name der Datei/Klasse ist dabei egal.

Ähnlicher finde ich JavaScript.

Grafiken werden i.d.R. direkt in die SWF-Datei eingebettet:

Quellcode

1
2
3
4
5
6
    [Embed (source="sprite.png")]
    private static const SPRITE_CLASS: Class;
    //...
    var sprite:Bitmap=new SPRITE_CLASS();   
    //...
    addChild(sprite);


Die Referenz findest Du hier: http://www.adobe.com/go/AS3LR

Für reine Socket-Verbindungen muss der Server auf Anfrage eine Policy-File zurückgeben. Dabei gibt es noch ein paar Besonderheiten, die Du am besten selbst rausfindest.

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »Chromanoid« (13.01.2013, 13:40)


Werbeanzeige