Grundsätzliche fragen zum Network-Gaming

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Donut

Betreff: Grundsätzliche fragen zum Network-Gaming

BeitragMo, Sep 12, 2011 13:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich habe das erstellen von Multiplayerspielen eigentlich aus BB immer als recht einfach in erinnerung (über eine udp verbindung). Im vergleich hierzu erscheint es mir bei BlitzMax schon fast als eine kleine Katastrophe.
Im Forum habe ich gelesen, dass man liebe BNetEx benutzen sollte, ist dies nur Windows-Kompatibel oder auf allen Plattformen einsetztbar? Und ist es wirklich so kompliziert in BlitzMax eine Verbindung aufzubauen?

Hummelpups

BeitragMo, Sep 12, 2011 15:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, du kannst BNetEx benutzen.

Und ja, es ist Plattform unabhängig.
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus
 

Donut

BeitragMo, Sep 12, 2011 20:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie bekomme ich denn BNetEx in die MaxGui eingebunden?
Wenn ich das Framework und MaxGui einbinde erhalte ich die Meldung

Compile Error: Identifier 'TImage' not found

Code: [AUSKLAPPEN]
Import MaxGUI.Drivers
Framework Vertex.BNetEx

oder

Framework Vertex.BNetEx
Import MaxGUI.Drivers

skey-z

BeitragMo, Sep 12, 2011 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst natürlich alle Module einbinden, die du benötigst
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

PhillipK

BeitragMo, Sep 12, 2011 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Grundsätzlich sei lieber ersteinmal eine runde faul und lade _KEIN_ framework.

Das wird zwar "größere" exen produzieren, aber sei es drum.
Wenn du solangsam alles beisammen hast, was du benötigst, nutzt du den 'Framework Assistant' - google hilft dir hier - und fragst den, welches framework/module du so brauchst =)

Dein fehler, TImage not found, kommt daher, das du "Framework" eingesetzt hast.
Blitzmax kriegt dadurch gesagt, das du alles was du benötigst, per hand zusammenstellst.
Da du aber kein Module importierst, welches TImage bereitstellt, kriegst du den fehler. Welches das nun grade ist, kann ich aber nicht sagen Smile

Ohne framework wird die modulesammlung "pub" komplett importiert. Keinerlei kopfzerbrechen, was du nun brauchst.
Lediglich Bnetex solltest du importen Smile
 

n-Halbleiter

BeitragMo, Sep 12, 2011 22:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine kleine Ergänzung zu deinem Post, PhillipK: Es wird auch die Modulsammlung "BRL" importiert. Und das Modul, das den Type TImage bereitstellt, ist (üblicherweise, wenn man kein anderes Grafikmodul nutzt) BRL.Max2D (bzw. BRL.D3D7Max2D für DirectX7-Grafik, BRL.D3D9Max2D für DX9-Grafik und BRL.GLMax2D für OpenGL-Grafik).
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit
Ploing!
Blog

"Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935)
 

Donut

BeitragMo, Sep 12, 2011 22:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die quallifizierte Antwort! Very Happy

Jolinah

BeitragDi, Sep 13, 2011 11:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Edit: Spinn ich jetzt, oder war da vorher nicht noch ein Post mit der Frage die ich eben beantworten wollte? Very Happy

Eines deiner Programme (Server) benötigt einen fixen Port den du selber auswählen kannst. Das andere Programm (Client) legt in der Regel gar keinen Port fest. Es wird automatisch vom System ein freier Port gewählt.

Der Client verbindet sich dann mit dem fixen Port des Servers.

Falls das alles in einem Programm untergebracht werden soll (Peer to Peer oder sowas), und beide Programme den gleichen Port verwenden sollen, dann kann das lokal nicht funktionieren. Da beim Start des ersten Programms der Port bereits belegt ist und das zweite diesen nicht auch noch nutzen kann. In dem Fall müsste das zweite Programm einen anderen Port nutzen, aber das erste Programm muss das natürlich auch wissen und zum richtigen Port verbinden.
 

Donut

BeitragMi, Sep 14, 2011 9:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein du spinnst nicht, aber ich hatte festgestelt, dass es nur an einem Tippfehler gelegen hat, dass es bei mir nicht funktioniert hat Rolling Eyes und die Frage deshalb zurück gezogen... Trotzdem danke für deine Antwort, zumal ich's glaubich eh vergeigt hab Smile

Gerade bereitet mir die ganze Geschichte echt Kopfzerbrechen, ich habe jetzt zwar mein Programm soweit, dass es mit der 172.0.0.1 bei mir auf dem Rechner zwar läuft, wenn ich es doppelt starte, wenn ich es dann aber übers Internet Teste passiert nichts...

Hier mal ein paar auszüge aus meinem Code:
Code: [AUSKLAPPEN]
Global IP:String = "127.0.0.1"

Global Output_Stream : TUDPStream
Global Input_Stream : TUDPStream

Input_Stream = New TUDPStream
If Not Input_Stream.Init() Then Throw("Can't create socket")

      If ButtonState(Radio1) = 1
         Spieler = "Weiss"
      ElseIf ButtonState(Radio2) = 1
         Spieler = "Schwarz"
      EndIf

If Spieler = "Weiss"
   Input_Stream.SetLocalPort(2201)
   Runde = 1
ElseIf Spieler = "Schwarz"
   Input_Stream.SetLocalPort(2202)
EndIf

'-------------------------------------------------------------------
Try

   If Input_Stream.RecvAvail() Then
      While Input_Stream.RecvMsg() ; Wend

       If Input_Stream.Size() > 0 Then

            Runde = 1
            
            empf_ausgangsposition_x = Input_Stream.ReadLine().toInt()
            empf_ausgangsposition_y = Input_Stream.ReadLine().toInt()
            empf_folgeposition_x = Input_Stream.ReadLine().toInt()
            empf_folgeposition_y = Input_Stream.ReadLine().toInt()

         
            Figuren[empf_folgeposition_x,empf_folgeposition_y] = Figuren[empf_ausgangsposition_x,empf_ausgangsposition_y]
            Figuren[empf_ausgangsposition_x,empf_ausgangsposition_y] = ""
            draw_canvas(1)

      EndIf
   EndIf


Catch Exception:Object
   WriteStdout("Error_Input~n " + Exception.ToString())
End Try
'-------------------------------------------------------------------

                  Try
                  
                  Output_Stream = New TUDPStream
                  If Not Output_Stream.Init() Then Throw("Can't create socket")
                  Output_Stream.SetRemoteIP(TNetwork.IntIP(IP))
                  Output_Stream.SetLocalPort()
                  
                  If Spieler = "Weiss"
                     Output_Stream.SetRemotePort(2202)
                  ElseIf Spieler = "Schwarz"
                     Output_Stream.SetRemotePort(2201)
                  EndIf
                  
                  Output_Stream.WriteLine(ausgangsposition_x)
                  Output_Stream.WriteLine(ausgangsposition_y)
                  Output_Stream.WriteLine(folgeposition_x)
                  Output_Stream.WriteLine(folgeposition_y)
                  
                  Output_Stream.SendMsg()
                  
                  Catch Exception:Object
                     WriteStdout("Error~n " + Exception.ToString())
                  End Try
                  
                  If Output_Stream Then Output_Stream.Close()


Zu meiner schande gebe ich zu, dass es mehr Codeschnipsel-geklebe ist, als eigene Programmierkunst, deswegen warscheinlich auch einwenig Kraut und Rüben, gibts villeicht auch ein paar pauschale Dinge an denen so etwas liegen kann?
 

PhillipK

BeitragMi, Sep 14, 2011 11:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Donut:

Ich gestehe, ich hab wenig ahnung von Netzwerkprogrammierung Very Happy Deshalb kann ich nicht wirklich professionell deinen Code durcharbeiten. Lesen geht, mehr aber auch nicht.
Ich werfe deshalb einfach mal vermutungen in den Raum:

Da es lokal geht, sollte es (wenn mich mein wissen nicht täuscht^^) auch über internet gehen.
Allerdings gibts da immer die schöne sache mit dem Portforwarding Wink
Falls du die möglichkeit hast, versuche doch einmal per Lokalem netzwerk (2ter pc im haus?) das ganze zu testen. Anderfalls über hamachi zb.

Wenn es dann immernoch hinhaut, ist der fehler bei den einstellungen (Router, firewall, etc) zu suchen, nicht im Code. Allerdings kann es auch sein, wenn es im LAN nit klappt, das trotzdem Firewall etc schuld sind - je nach "sicherheitsstufe" der einstellungen Smile

ps:
ich sehe grade, das du die globale ip gesetzt hast. Die darf natürlich nicht so bleiben, wenn du es per inet testest :>
deine "auswertige ip" erfährst du zb über www.wieistmeineip.de - dein gegenüber muss ebenfalls die richitge (server) ip in seinem programm haben!
 

Donut

BeitragMi, Sep 14, 2011 11:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Die globale IP ist nur der default wert, im Programm wird sie natürlich gesetzt Wink, ich habe aus gründen der übersichtlichkeit jetzt aber nur die stellen des Codes rauskopiert die wirklich mit dem Netzwerk zu tun haben.
Danke für deine tipps, ich werde mal schauen was passiert und dir dann erneut bericht erstatten. Smile


Also

1 Computer über die Lokale 172er IP - Funktioniert
2 Computer über die 192er Netwerk-IP - Funktioniert
2 Computer über die "echte" IP - Funktioniert nicht


Ich hoffe das hilft weiter... (die Firewall meldet sich natürlich sobalt ich das Programm starte und ich lasse das Programm dann auch zu)

ZEVS

BeitragMi, Sep 14, 2011 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Über die öffentliche IP zuzugreifen, ist sehr schwierig. Je nach lokalem Netzwerk finden die Verbindungen nur über den Router statt, der dann auch alle Verbindungen nach außen verwaltet. Dann bekommst du lediglich die öffentliche IP deines Routers, da dein Rechner keine hat. Ansonsten ist es aber auch möglich, dass das die Firewall deines Routers unterbindet. Dann bräuchtest du Hole-Punching, was aber nur über Client-Server-Client läuft. Der jetzige Code sieht nach einer anspruchsvollen Client-Client Lösung aus.
Wenn du keine Erfahrung mit UDP hast, möchte ich dir empfehlen, mit TCP und Client-Server-Client zu arbeiten, wobei der Server ein richtiger Server mit eigener, statischer und öffentlicher IP ist. Die Netzwerkgeschwindigkeiten steigen momentan, sodass das performancetechnisch nicht zu schwierig wird (mit 20 MBit/s schaffst du deine 8 Bytes [s.u.] in wenigen Millisekunden). TCP ist wesentlich einfacher.

Da es hier zu den Grundsetzen von Netzwerkprogrammierung geht:
Zitat:
BlitzMax: [AUSKLAPPEN]

empf_ausgangsposition_x = Input_Stream.ReadLine().toInt()
empf_ausgangsposition_y = Input_Stream.ReadLine().toInt()
empf_folgeposition_x = Input_Stream.ReadLine().toInt()
empf_folgeposition_y = Input_Stream.ReadLine().toInt()

Ich weiß zwar nicht sicher, ob es eine ReadInt()-Funktion gibt, das wäre aber gewiss sinvoller. Damit kannst du die Größe der Pakete reduzieren, bzw. die Anzahl der Übertragbaren Parameter erhöhen (UDP kann mit einer Nachricht nur 255 Bytes transportieren). Außerdem ist die Frage, ob nicht Shorts ausreichen würden.

ZEVS
 

Donut

BeitragMi, Sep 14, 2011 17:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für deine Anregungen,
allerdings brauche ich dann ja einen Server der immer Online sein muss, um spielen zu können, und mit der BNetEx macht es glaube ich keinen großen unterschied ob ich udp oder tcp nehme (außer das tcp evtl. funktionieren könnte Wink ) Wie kann ich denn überprüfen woran es liegt, dass meine übertragung nicht zustande kommt?

PS: Shorts würdens auch tun, da hast du recht...

ZEVS

BeitragMi, Sep 14, 2011 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Zum Testen, ob du Internetverbindungen über die Router-IP hast, reicht es, mit zwei verschiedenen Rechnern eines Netzwerkes die IP über eine dieser IP-Seiten zu ermitteln. Sind diese gleich, ist es die Router-IP, die einzige nach außen sichtbare IP. Dann kannst du nur TCP benutzen.

Zum Testen der Firewall kann man einen Hole-Punch probieren: Wenn man von A nach B eine UDP-Nachricht sendet, wird die bei B normalerweise durch die Firewall geblockt und verworfen. In der Firewall von A ist jetzt aber ein "Loch", da die Firewall von A nun UDP-Nachrichten von B als Antwort auf die erste Nachricht erkennt und durchlässt.
Heißt zum Testen: Zwei Rechner, mit denen du untereinander keine UDP-Verbindung aufnehmen kannst, bilden das A und B obiger Vorgehensweise. Dafür schreibst du dir ein Testprogramm, das Nachrichten sendet und empfängt (ohne Kontrolle). Dieses lässt du auf beiden Rechnern laufen. Die erste Nachricht dürfte nicht ankommen, aber ein Loch in die Firewall boren. Die erste Nachricht von B müsste dann ankommen und danach auch alle anderen Nachrichten von A und B. Dann ist die Verbindung da. Wenn das klappt, musst du einen TCP-Server erstellen, zu dem die Clients eine Verbindung aufnehmen. Das ist wichtig, da man zum Hole-Punchen die IP des anderen braucht, die man nur mit Client-Client natürlich nicht bekommt. Der Server gibt einfach die Liste der aktuellen Client-IPs an. Damit kannst du HolePunchen. Stellt sich die Frage, ob du das Spiel gleich über den TCP-Server laufen lässt.
TCP wird von den Firewalls viel eher akzeptiert als UDP. Es ist zwar langamer, aber HolePunching wurde erst mit Skype-Anrufen erfunden, die ja Audiodaten in Echtzeit übertragen müssen. Bei einer solchen Datenmenge und einer solchen Zeitspanne braucht man natürlich Client-Client-UDP. Stellt sich die Frage, ob du das auch brauchst.

ZEVS
 

Donut

BeitragMi, Sep 14, 2011 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay du hast mich überzeugt Wink
Mir fehlt nur noch ein bisschen das verständniss für TCP. Wie genau läuft das mit dem Server? Kann ich jeden server nehmen, muss ich den Server einrichten, muss ich bestimmte ports nehmen,ect...?
Kannst du mir das eventuell in ein zwei Sätzen ein bisschen näher bringen?
(Und danke für deine ausführliche Erklärung)

ZEVS

BeitragMi, Sep 14, 2011 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
TCP läuft über Verbindungen. Das heißt, der Server sagt seiner Firewall "Ich bin ein Server für Port xxxx für TCP, bitte leite alle Verbindungen an mich weiter". Der Client öffnet eine solche Verbindung für die IP des Servers. Hierbei kann also nur noch der Router nerven. Danach besteht ein sog. Socket zwischen Client und Server. Man benutzt es wie einen Dateistrom; was man selbst reinschreibt, kann der andere lesen und umgekehrt. Es besteht keine Längenbegrenzung und alle Nachrichten kommen garantiert an (und in der richtigen Reihenfolge), wenn es nicht zum Timeout kommt. Danach gilt das Socket als "tot" und die Verbindung als gewaltsam beendet. Das muss man vor jeder Read/Write-Aktion prüfen. Außerdem bedeutet das TCP-Timeout von 10sec, dass der Server 10sec lang auf einen toten Client wartet - und alle anderen Verbindungen vernachlässigt. Deshalb sollte man das Timeout beim Server runtersetzen. Alternativ kann man die Abarbeitung eines Clients auf einen eigenen Thread delegieren, dann braucht man sich um nichts mehr zu kümmern.
Zum Server: Dein lokaler Rechner wechselt normalerweise seine IP alle 24 Stunden, damit gespeicherte IPs von besuchten Websites wertlos werden. Deswegen brauchst du einen Server mit statischer, öffentlicher IP (einfach mal beim Provider nachfragen). Außerdem gibt nicht-Server-Hardware gern mal den Geist nach mehreren Monaten nonstop-Online auf.

BMax-Befehle (BRL.Socket): CreateTCPSocket für Server und Client, BindSocket für den Server ("Ich bin ein Server für Port xxxx") sowie SocketListen, ConnectSocket für Client zum Verbundung aufnehmen, SocketAccept zum Verbindung annehmen und SocketConnected zum Überprüfen auf tote Sockets.

Rumschreiben mittels der Read- und Write-Befehle.

Tutorials für TCP gibt es eigentlich massenhaft, vor allem in BB (man muss halt für BMax umdenken).

ZEVS
 

Donut

BeitragDo, Sep 15, 2011 14:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay ich glaube ich stehe gerade ziemlich auf dem Schlauch, was die Server geschichte angeht...
Ich habe mir das Ganze so vorgestellt:
Spieler 1 gibt die IP von spieler 2 ein und umgekehrt, diese werden dann ins Programm eingegeben. Danach wird (irgendwie) eine Verbindung zwischen den beiden Spielern aufgebaut.

Wenn ich das jetzt per TCP realisieren möchte, brauche ich dann einen Webserver oder übernimmt der Computer von einem der beiden Spieler die rolle des Servers?

Wenn ich einen Server brauche: Was muss das für ein Server sein? Bezieungsweise was muss auf den Server damit ich ihn ansprechen kann? In den Beispielen ist immer "www.blitzmax.com" oder "www.example.com" angegeben aber ich kann ja wohl schlecht einfach irgendeine Domain die ich mir(oder jemand anders) eingerichtet habe als Server nehmen.

Ich hoffe es ist jetzt etwas deutlicher geworden, wo es bei mir noch nicht klick gemach hat und danke für die Hilfe,
Donut

ZEVS

BeitragDo, Sep 15, 2011 16:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei Client-Client wirst du schnell mal ungewollte Bekanntschaft mit den Firewalls machen. In solchen Fällen gibt ein Client A den Server und ein anderer B den Client, wenn die Firewall nicht blockt, stellt A sein Spiel auf einen Server-Modus und B gibt die IP von A an. Man hat hier alle Nachteile von UDP-Client-Client, außer, dass TCP von Firewalls lieber gesehen ist. Nach meiner Erfahrung kommt aber keine Verbindung zustande.

Was du mit Server meinst, ist schon ganz richtig. Du brauchst nur keine Domain (denn www.google.de ist nur ein Synonym für 209.85.149.104; siehe http://209.85.149.104/), was heißt, dass du dir die DNS-Geschichte sparen kannst (es seie denn, du möchtest auf dem Server eine Projektwebsite onlinestellen).

Der Server braucht eine sog. statische IP-Adresse, das haben normale PCs nicht. Statische IP-Adressen gibt es beim Provider, einfach mal nachfragen.

Die wesentlich beliebtere Alternative sind sog. Virtual-Server. Über diesen Server hast du normalerweise Zugriff über die Konsole und FTP, sodass du ihn von deinem Zuhause aus verwalten kannst. Damit sparst du dir die ganzen Hardware-Geschichten und die IP-Bürokratie. Ich kann dir hier keine Empfehlungen geben, für Webauftritte empfehle ich Webgo24, aber die VServer kosten hier mindestens 39€, was woanders wesentlich billiger geht (ich lese mir diese *-Texte aber nicht durch).

Auf deinem Server läuft ein spezielles Server-Programm, das Clients entgegennimmt, Clients vermittelt (sodass man nicht die IP des anderen kennen muss, sondern dessen Nickname) und Spieldaten weiterleiten. Die Clients melden sich am Server an, holen sich (regelmäßig) die Liste verfügbarer Gegner, lassen den Benutzer auswählen, steuern dann das Spiel und synchronisieren sich mit dem Server.
Das heißt auch, dass die Client-Executable die IP des Servers wisen muss - deswegen statische IP.
Genauere Daten in meinem letzten Post.

ich hoffe, du weißt jetzt, wovon ich rede.
ZEVS
 

PhillipK

BeitragDo, Sep 15, 2011 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Herrje, ich denke, bevor hier empfehlungen zum Servermieten gestellt werden, sollte ersteinmal geklärt werden, was das Endziel ist.

Möchtest du, das jeder Nutzer mit jedem spielen kann? Dh eine art Spieleliste, wo sich die user ihre Gegnerlisten herholen und welche herausfordern können?

Oder soll man eher im Freundesrahmen miteinander spielen können?

Fürs erstere:
Hier ist _irgendwann_ ein server ratsam.
Bis dahin reicht es, wenn du die Serverarchitektur programmierst und eine händliche Server-ip-eingabe ermöglichst. -> hamachi zum testen.

So brauchst du nicht direkt in die Tasche greifen und geld evtl zum fenster rauswerfen.
Sollte dein Projekt von erfolg gekrönt sein kannst du immernoch über einen Server nachdenken Smile

Fürs 2tere könnte es schon reichen, wenn du Lokales netzwerk unterstützt und mit Hamachi zb auch verbindungen ermöglichst.


Ich bin grundsätzlich der meinung, das jede art von Netzwerkspiel einen LAN modus haben sollte und auch per Hamachi läuft. Ich bin da einfach verwöhnt Smile
 

Donut

BeitragDo, Sep 15, 2011 21:10
Antworten mit Zitat
Benutzer-Profile anzeigen
ZEVS hat Folgendes geschrieben:

Auf deinem Server läuft ein spezielles Server-Programm, das Clients entgegennimmt, Clients vermittelt
ZEVS


Was ist das dne für ein Serverprogramm? Gibts da ein spezielles oder wird das mit der BNetEx mitgeliefert? Und muss es gleich ein ganzer eigener Server sein oder tuts da für Testzwecke auch so ein gratis Webspace von bplaced oder ähnlichen Anbietern?

PhillipK hat Folgendes geschrieben:
Fürs erstere:
Hier ist _irgendwann_ ein server ratsam.
Bis dahin reicht es, wenn du die Serverarchitektur programmierst und eine händliche Server-ip-eingabe ermöglichst. -> hamachi zum testen.


Was heist denn eine Serverarchitektur programmieren? Klingt sehr abenteuerlich und nach nem Master in Technische Informatik Wink

Also was ich eigentlich vorhabe: Ich habe ein kleines Schachprogramm geschrieben (und ja ich weis das es so etwas schon gibt Wink) Am start gibt man die IP des anderen Mitspielers ein, und Seine Farbe an. Dann baut das Programm (bis jetzt über UDP und vondaher nur im eigenen lokalen Netzwerk) eine verbindung auf, und überträgt die Koordinaten der Züge. Ich setzte aber vorraus, das die Beiden Spieler sich vorher absprechen wer welche Farbe spielt, und wer welche IP hat. Ich versuche es also ersteinmal sehr minimalistisch, eine Lobby mit Spielernahmen oder ähnliches wäre fürs erste mit Kanonen auf Spatzen geschossen.

Also danke noch einmal für die ausfühliche Hilfe, wenn dass hier durchgekaut ist schreibe ich mal eine kleine Zusammenfassung bzw Anleitung Wink

Freundliche Grüße
Donut

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group