mmofacts.com

Flash Tilebased Game

gepostet vor 16 Jahre, 10 Monate von crafics
Hallo,
ich habe mal angefangen Tilebasiertes Spiel in Flash zu bauen.
Zu sehen gibts die ersten Versuche hier:
dev.dschini.org/lov/
Unten rechts kann man auf Fullscreen schalten. Die Map kann ist DragDrop und die Objekte rechts lassen sich auf der Map plazieren.
Jedes grafische Objekt wird von einem jeweiligen Dataobjekt beliefert (MVC) welche sich automatisch mit dem Server synchronisieren.
[ Flash -> AMF-PHP (Pecl) -> MySQL_Proxy -> MySQL Server (Schedule-Events) ]
Die Datenobjekte dispatchen die Änderungen an den Server sowie andersrum zurück an die grafischen Objekte. Das serverseitige Speichern habe ich in dieser Demo aber abgeschaltet
Dazu kommt noch ein schneller A* Algo der auch mehrere Pfade gleichzeitig finden kann.
Naja, wollte das nur mal so posten und fragen was ihr davon haltet. Mein Account hier wurde ja nun endlich mal freigeschaltet
Cheers
crafics
gepostet vor 16 Jahre, 10 Monate von Nuky
Sieht sehr gut aus, gratuliere dazu.
Was wird das mal für ein Spiel?
gepostet vor 16 Jahre, 10 Monate von crafics
Weiss ich noch gar nicht genau. Ich brauch wohl mal sowas wie nen Spielplan. Bzw. Gebaeude/Featureliste. Es ging mir erstmal um die Entwicklung der Engine die jetzt fertig ist (zumindest mit den Features die ich mir vorstellen kann). Danach wollte ich mir mal Gedanken über weiteres machen wenn das die Zeit zuläßt. Mal sehen.
gepostet vor 16 Jahre, 10 Monate von Tesla2k
Bei mir kommt nur Loading Map... weiter gehts nicht
gepostet vor 16 Jahre, 10 Monate von crafics
Hi, sorry mysql proxy war weg. Jetzt sollte es wieder laufen. Ich startet auch hin und wieder den server neu.
gepostet vor 16 Jahre, 10 Monate von progs
Schaut wirklich sehr gut aus.
Noch eine kleine Verbesserung: Es wäre nicht schelcht, wenn man auch auf Wegen bauen könnte, bzw. die Wege-Wegfindung etwas verbessern werden würde, weil es so leicht passiert, das alles mit Wegen zugebaut ist, aber kaum Gebäude auf der Karte sind.
gepostet vor 16 Jahre, 10 Monate von ThaDafinser
ladet bei mir gerade auch nicht
gepostet vor 16 Jahre, 10 Monate von crafics
@ThaDafinser
passiert hin und wieder mal da ich ab und an am server rumschraube.
@progs
hey danke für das Feedback. Yep darüber habe ich auch schon nachgedacht.
Glücklicherweise ist die engine so flexibel das ich das alles ein und ausschalten kann und würde sagen das gehört zur gamebalance bzw gameplay worüber ich mir noch gedanken machen muss.
Aber ich denke du hast Recht. Das wäre wohl besser. Man könnte die Wege auch komplett ignorieren und nur zur internen Logik benutzen. ZB als Produktionswege und Geschwindigkeit der Produktion. Gibt es einige Möglichkeiten.
ich habe das Flash nochmal aktualisiert. Jetzt werden Objekte die auf der Map plaziert werden in einem Schedule gebaut. beispielsweise dauert ne kornmühle 30 sek (frei definierbar). Serverseitig wird das auch gespeichert und beim reloaden des Movies wird weiter gebaut.
was noch ganz praktisch ist das man die abhängigkeiten auch frei definieren kann und mehrere Abhängikeiten als REQUIRED oder OPTIONAL setzen kann. Das ist dann sinnvoll wenn zB ein Kornfeld gebaut wird aber noch keine Mühle da ist. Dann wäre die Mühle optional für das Kornfeld ab zB ein Kornfeld required für ne Mühle.
Was auch schon existiert ist die koordinatensystem Logik. Es gibt innere Koordinatensysteme und äußere. Zb ist diese Map ein inneres Koordinaten System des Planeten Koordinatensystems welches wiederum ein inneres Koordinatensystem einer Galaxy ist.
gepostet vor 16 Jahre, 10 Monate von None
Nice!
Wenn ich nicht von anderen wüßte, wie sehr Flash stinkt, dann würde ich sowas auch mal versuchen.
Ich bin mal gespannt, was du aus der Technical Demo noch so machst und wie das später in einem Spiel integriert sein wird.
Weiter so!
gepostet vor 16 Jahre, 10 Monate von Kampfhoernchen
Sieht gut aus!
Allerdings, die Wege platzieren sich teilweise doch ziemlich unlogisch.
gepostet vor 16 Jahre, 10 Monate von Fornax
Also ich muss zugeben, dass das nicht sehr flüssig bei mir läuft. Wenn ich nichts mache geht's, aber wenn ich die Karte bewege kommt er sehr stark ins stocken und ich bin bei 3 FPS
gepostet vor 16 Jahre, 10 Monate von crafics
@Kampfhoernchen
der pathfinder funzt schon richtig. das da scheinbar unlogische wege erscheinen liegt daran das die wege, bzw die gebaeudeabhaengigkeiten noch nicht klar definiert sind. das wird sich auch lösen sobald ich vernünftige gebaeude habe
@Fornax
yep das ist noch ein Problem an dem ich grade arbeite. wenn das flashmovie das einzige offene browserfenster ist dann gehts ganz gut. das laesst sich aber loesen indem man langsame scripts über mehrere frames verteilt. da werde ich mich als naechtes drum kuemmern
gepostet vor 16 Jahre, 10 Monate von Fornax
ja, wenn ich es alleine auf hab dann geht's ein bisschen schneller, wobei es immernoch stark ruckelt. Es wird einfach Zeit für einen neuen PC, das ist "nur" ein Pentium 4 mit 2,66 Ghz und 512 Ram
gepostet vor 16 Jahre, 10 Monate von progs
Bei mir ruckelt es beim scrollen auch teilweise extrem. Er springt dann richtig von einem Ende zum anderen und FPS sind bei 3 - 5. Und mein PC ist nicht so Leistungsschwach: Athlon 64 X2 4200+ und 4 GB RAM sollten eigentlich reichen. Da solltest Du noch etwas optimieren. Ich denke, wenn mal sehr viele Gebäude, etc. auf der Karte sind, wir das der Performance auch nicht umbedingt zugute kommen.
gepostet vor 16 Jahre, 10 Monate von Inselpionier
Wow, das sieht wirklich gut aus.
Ich war nie ein großer Fan von Falsh und habe dementsprechend auch nicht wirklich viel Flash Erfahrung.
Von daher meine Frage: Wie Perfomant ist das ganze?
Anzahl an Spielern?
Größe der Map?
gepostet vor 16 Jahre, 10 Monate von Valerion
Also bei mir gings einwandfrei....
Es schaut schon super aus, bis auf das, das ich die FPS nicht so häufig aktualisieren würde (vll. nur 1-2x/sek), da man es sonst nicht "gescheit" lesen kann, da es die ganze Zeit hin und her "springt"
gepostet vor 16 Jahre, 10 Monate von RaydenDD
Also irgendetwas muss ziemlich faul sein .. so langsam wie das beim scrollen ist. Was machst du denn so alles wenn man scrollt?
gepostet vor 16 Jahre, 10 Monate von Valerion
Selten steckt es kurz....
Aber beim zoomen bleibt er immer für eine kurze Zeit hängen
gepostet vor 16 Jahre, 10 Monate von crafics
@RaydenDD
eigentlich gar nichts viel. nur die standardlibrary DragDrop von Flash benutzen um damit 3 Layer zu bewegen. ich weiss deswegen gar nicht wo ich ansetzen soll.
seltsamerweise tritt das scroll-problem auch in einer vereinfachten anwendung auf ohne den ganzen schnick schnack drum herum.
ich benutze opera und was mir noch auffaellt ist das wenn ich dieses forum aufhabe dann stürzt mein browser regelmäßig ab und wenn er nicht abstürzt dann wird jedes andere flashmovie das ich in einem anderen tab aufhabe sehr langsam.
@progs
die vielen gebaeude sind gar nicht das problem. es gibt einen layer für die unterliegenden tiles, einen layer für die gebaeude und einen layer für die wege. und man kann Flash zB sagen das jeder layer "sprite.cacheAsBitmap=true" gespeichert werden soll. das bedeutet das die anzahl der gebaeude egal ist da der gesamte layer ohnehin in ein bitmap umgewandelt wird. falls jedoch die map riesengroß werden würde (1 Million * 1 Million) dann könnte man es noch so umstellen das nur der sichtbare Bereich angezeigt und gescrollt werden soll. tja .. ich bin noch am googlen, aber das muss definitiv besser werden.
@Inselpionier
gibt ein paar Clientseitige Performance Probleme die sich aber lösen werden. Falls du die Diskussion verfolgst. Serverseitig benutze ich MySQL und die neuen zeitgesteuerten Events und davor sitzt noch Jan's MySQL_Proxy welcher DB Connections pooled und mit dem man die Request auch auf mehrere Server verteilen koennte falls es denn jemals soweit kommen würde. Ansonsten wird jede Aktion natürlich auch servereitig gespeichert. Falls nun beispielsweise eine Aktion ausgeführt wird (sagen wir die Erstellung eines neuen Gebaeudes) dann werden 5+ Eigenschaften in verschiedenen Objekten geändert was zum Ergebnis hätte das 5+ Request an den Server geschickt werden müssten. Deshalb gibts hier "ich nenns EventManager" der alle 200 ms alle Aktionen sammelt und als Gesamtpacket zum Server schickt. mit AMFPHP (PECL Variante) und mit gzip enabled. Das ist sehr praktisch. Serverseitig werden die Aktionen in MySQL Events umgewandelt und dann zeitgesteuert ausgeführt. Nunja, wie perfomant das ganze ist kann man nur in der Praxis sehen. Aus vorherigen Spielen kann ich sagen das ich problemlos 20.000 - 40.000 Request täglich auf einem Server verarbeiten kann, wobei die SQL-Request da allerdings um einiges geringer waren. Ansonsten gibts noch die allgemeine Formel das 1 Server wenn er gut ist 1500 Request (imgs,html,...) in der Sekunde verarbeiten muss. Das wären (was weiss ich) 200.000 User am Tag die natürlich niemals linear auftreten.
Schau mal hier, das finde ich sehr gut: talks.php.net/show/oscon06
Die Map Größe ist egal. Kann beliebig groß sein.
@all
es kann gut sein das die DragDrop Routinen von Flash einfach ziemlich langsam sind. aber ich weiss es noch nicht genau. wenn ich keine lösung finde werde ich die art und weise wie man scrollt auf etwas anderes umaendern. mal sehen.
gepostet vor 16 Jahre, 10 Monate von Inselpionier
Das hört sich gut durchdacht an.
Ich hätte Serverseitig mit mehr aufwand gerechnet.
Was ich aber noch nicht verstehe ist die Kartengröße.
Ich bin davon ausgegangen das die Karte geladen werden muss,
das heist große Karte = viel längere Ladezeit.
Oder wird immer nur die aktuell angezeigte Karte geladen?
Wenn ich mich richtig an meine Vorlesung erinere, läd der Flashplayer die kompletten Daten ein.
gepostet vor 16 Jahre, 10 Monate von crafics
Meinst du die Gesamtkarte, also die Karte mit allen Maps von allen Spielern?
In dieser Map-View lädt das Flash lediglich die Map des Users, dabei macht er 4 DB Requests. Tiles (der Untegrund), Buildings, Ways und Schedules. Schedules sind die Objecte die gebaut werden. Die Karte ist momentan 29*29 das sind dann Tiles gesamt 841 wobei in der DB nur integer stehen die auf Constanten gemappt werden. Clientseitig wie serverseitig. In der DB ist eine Map ca 60KB und wenns an den Client geschickt wird mit gzip sind 29KB. Das hält sich in Grenzen.
Die Gesamtweltkarte wäre eine komplett neue View.
Das Flashmovie lädt keine Grafiken oder andere Swfs nach. Aus der DB bekommt es lediglich die information über die Map in Form von Integer Werten. Diese werden dann clientseitig in eine Isometrische map umgewandelt. Also zwischen dem Client und dem Server befindet sich eine API.
Kannst dir hier ansehen was Flash da ansteuert und wie die Daten geliefert werden:
lov.dschini.org/amfphp/browser/
gepostet vor 16 Jahre, 10 Monate von crafics
Das Scrolling habe ich jetzt umgestellt. Links,Rechts,Oben und Unten innerhalb der Map erscheinen Pfeile wenn man sich in diese Region bewegt.
Ausserdem gibts eine AIR Version dieser Demo. Ich wollte einfach mal testen wie schnell diese laeuft.
Dafür muss man AIR installieren. Das werden in Zukunft immer mehr User besitzen.
labs.adobe.com/downloads/air.html
und danach
dev.dschini.org/lov/LiveOnVega.air
Neue Version updaten die alte automatisch. Finde ich sehr komfortabel das ganze und nimmt das Spiel (?) aus der browserumgebung raus, welches dadurch natürlich schneller wird.
gepostet vor 16 Jahre, 10 Monate von Inselpionier
Original von crafics
Meinst du die Gesamtkarte, also die Karte mit allen Maps von allen Spielern?

Da ich das Spielkonzept noch nicht kenne, kann ich wenig dazu sagen. Ich dachte nur das 29*29 Felder für 100 oder mehr Spieler zu klein ist.
Original von crafics

In dieser Map-View lädt das Flash lediglich die Map des Users, dabei macht er 4 DB Requests. Tiles (der Untegrund), Buildings, Ways und Schedules. Schedules sind die Objecte die gebaut werden. Die Karte ist momentan 29*29 das sind dann Tiles gesamt 841 wobei in der DB nur integer stehen die auf Constanten gemappt werden. Clientseitig wie serverseitig. In der DB ist eine Map ca 60KB und wenns an den Client geschickt wird mit gzip sind 29KB. Das hält sich in Grenzen.
Die Gesamtweltkarte wäre eine komplett neue View.
Das ist es was ich meine, ich kann mir das Spielkonzept nicht vorstellen.
Das was du hier gemacht hast finde ich richtig gut und ich werde es bestimmt weiter verfolgen.
Dürfte mal etwas anderes sein als das 0815 Browsergame.
Gruß
Inselpionier

Auf diese Diskussion antworten