Grafische Karten
gepostet vor 19 Jahre, 9 Monate von SirCotare
Ho!
Grafische Karten sind ja in MMOGs stark im kommen, beschränken sich aber derzeit auf wenige gleichzeitig dargestellte felder. Das hauptproblem stellt hierbei ja der verursachte Traffic dar, nehm ich mal an, da grosse karten eben auch viel mehr speicher beötigen.
ich experimentiere seit einiger zeit mit grafischen karten und habe schon verschiedenste systeme probiert.
1) Karte aus einzelnen elementen zusammenbauen, die mit
div positioniert werden.
FAZIT: unbrauchbar, da der Browser nach ein paar hundert elementen den geist aufgibt.
2) Karte mittels Tabellen aufbauen, damit jedes Feld einzeln mittels bild dargestellt wird. Das hab ich jetzt schon des öfteren wo gesehen, aber nur mit geringer feldanzahl.
FAZIT: unbrauchbar für grössere karten aus dem selben problem wie punkt 1. ausserdem lassen sich auf diese weise keine karten aus hexfeldern darstellen.
3) Karte als Flash.
FAZIT: Ist extrem kompliziert (Destiny Sphere hat sowas) und ist in der dynamik der Grösse arg eingeschränkt. unbrauchbar für karten dynamischer grösse
4) Karte mittels PHP_MING bibliothek.
FAZIT: Funktioniert, hat aber den gewaltigen nachteil der grösse, bei vielen feldern. ansonsten läuft das system. ausserdem muss man PHP_MING erst mal zum laufen bekommen am server
5) Karte per PHP_GD als bild erstellen lassen und als PNG speichern. Die Links auf der karte werden per ImageMaps erstellt, am besten direkt durch ein javascript, da der quelltext sonst sehr gross wird.
FAZIT: es funzt!! ja, so kann man es machen. die grafiken sind relativ klein (unter 200 kb auch bei grossen karten) und man lann sogut wie alles damit darstellen. Ich abe das schon it etwa 200 spielern getestet und ich war recht zufrieden. Der Traffic ist zwar weiterhin ein problem, aber das stört mich auf meinem gratis server ja nicht.
hier mal 2 screenshots:
*www.3025-game.de/index.php?ksw=media&pth=media/pic/promo/starmap_001.png
*www.3025-game.de/index.php?ksw=media&pth=media/pic/promo/starmap_002.png
beide karten sind dynamsich und von unbegrenzter grösse. läuft perfekt - zumindest im alpha testbetrieb. neben dieser Sternenkarte entwickle ich auch noch die gebäudekarte (also mit HEXlandfeldern), aber di eist noch nicht fertig.
so. würde mich ml interessieren, was ihr davon haltet. Dadurch, dass die internetanbindungen der spieler immer schneller werden muss man sich ja nicht mehr soviele gedanke um ladezeiten machen, also denk ich mal, dass grafishce karten die zukunft sein werden. also ich gehe diesen schritt und wir werden ja sehn!
mfg, SirCotare
gepostet vor 19 Jahre, 9 Monate von Mot
ich hab nur 56k Modem und eigendlich kein Problem mit Laden deiner Karte...allerdings wenn ich mit der interagieren sollte seh ich probleme
gepostet vor 19 Jahre, 9 Monate von Mudder
Also für so eine Karte mag dein Bildsystem ja noch funktionieren doch die PHP-Bilder gehen einerseits recht zu lasten des Servers und andererseits sind 200kb alles andere als wenig. 500 Spieler die nur einmal am Tag ne Karte laden dann sinds rund 3GB am Ende des Monats. Und die Zahl dürfte dementsprechend steigen wenn die Karte 10x am Tag mit jedem Aufruf aktuallsiiert werden - wie es viele DSL>1500-User eingestellt haben.
Und auch die Begründung, dass die Browser bei 100 Div-Layern Schlapp machen stimmt nicht. Ich stehe nämlich vor dem selben Problem und arbeite nun mit einer XML-Karte welche per XSL beim User konvertiert wird. Ich habe nun nur bis 30x50 Felder (= 1500 div-Layer) getestet doch es funktionierte wunderbar.
Wie gesagt mein System besteht derzeit aus einer XML-Karte welche mit XSL beim User konvertiert wird. (Hexfeldkarte) Die 30x50er Karte war somit zwar mehrere Bildschirme groß doch komplett mit Grafiken und Co nur 60kb schwer. Alternative mit nem HTML-Dokument wäre min 3-4 so groß und die Berechnung der einzelnen Felder würde auch noch den Server belasten.
Es ist sicher nicht die Lösung die ich mir erwünscht habe doch ich glaube nicht das du solch Karte mittels gd-lib realisierbar wäre - zumal da dann auch noch ne riesige Imagemap hinzukommen würde. Und die würden bei einem Hexfeld besonders viel Leistung ziehen.
gepostet vor 19 Jahre, 9 Monate von MannaZ
Ja - PHP_GD zerrt sehr stark am System.
Ich selbst verwende eine Mischung aus mit GD2 einmal Täglich erstellter gesammtübersichtskarte, Tabellenkarte und dynamischer PHP_GD Karte.
In der groben Ansicht, sieht man das täglich erstellte Übersichtsbild.
Eine Zoomstufe höher eine Tabelle mit 40 * 40 Fehlern.
Die nächste Zoomstufe zeigt ein Bild, das mit PHP_GD bei jeder Änderung erstellt wird.
Alle Karten haben eine Auflößung von 400x400 px.
Die beiden Bilder haben beide ca 350 KB.
ZZ habe ich keine Probleme mit dem Traffic, jedoch macht mir die Systemauslastung probleme, wenn ich die Übersichtskarte neu rechnen lasse.
gepostet vor 19 Jahre, 9 Monate von Crafty-Catcher
Wiesoi brauch man ne Image Map???
Das kann man auch anders lösen und zwar so wie ich
Link gelöscht
einfach bei dem img Tag ISMAP mit angeben
dann liefert das Bild Pixel Koordinaten als GET Variable wenn man noch nen
z.B. dieser
Form:
pirates.php?display=14&zoom=2&pos=?245,214
und da kann man ja eben das beim komma splitten und in was auch immer übergeben um mit PHP zu berechnen wo das jetzt ist, in meinem Fall welches Hexagon das ist.
gepostet vor 19 Jahre, 9 Monate von TimeOut
Original von Mudder
Wie gesagt mein System besteht derzeit aus einer XML-Karte welche mit XSL beim User konvertiert wird. (Hexfeldkarte) Die 30x50er Karte war somit zwar mehrere Bildschirme groß doch komplett mit Grafiken und Co nur 60kb schwer. Alternative mit nem HTML-Dokument wäre min 3-4 so groß und die Berechnung der einzelnen Felder würde auch noch den Server belasten.
Könntest du zu dem Thema insgesamt vielleicht etwas mehr Infos geben? Das wäre echt interessant.
gepostet vor 19 Jahre, 9 Monate von Mudder
Beispielkarte unter: http://www.4games.de/map.xml
Die XML-Datei ansich sieht nun so aus
wiese
wiese
wiese
wiese
wiese
wiese
wiese
...
In der Karte stehen stehen die Felder mit Ihrem Typ (als Beispiel habe ich jetzt nur wiese genommen) und es werden die x und y Position übergeben. Hier könnte ich auch andere Systeme nehmen, doch mit dem manuellen übergeben der Koordinaten wollte ich mir aufwendige XSL-Rechnereien ersparen.
Diese XML-Datei wird nun mit XLS beim User konvertiert.
position: absolute; width: 80px; height: 70px; background-image: url('feld.png'); text-align: center; top: px; left: px;alert(+':'+);:
position: absolute; width: 80px; height: 70px; background-image: url('feld.png'); text-align: center; top: px; left: px;alert(+':'+);:
So nun wirds in dem schmalen Code-Bild sicher ein wenig chaotisch
Im ersten Element verarbeite ich das Grundelemente der XML-Datei (). Hier soll statt dem eine einfache HTML-Grundstruktur ausgegeben werden.
Als nächtes soll das Element verarbeitet werden. Hier werden per for-each-Schleife alle -Element ausgelesen und verarbeitet. Mit Hilfe der Koordinaten errechne ich nun eine Position auf der Karte wie ichs auch bei ner normalen PHP-Berechnung machen würde. Aufgrund der Hexmap-Sturktur kommt es hierbei zu 2 if-Abfragen welche beide seperat arbeiten müssen. Leider kann XSL nur eine IF-Abfrage paralell verarbeiteten.
Per (Ähnlich wie switch() ) wechsel ich nun je nach Elementname die Ausgabe. Hierbei gebe ich ein
-Element aus welches das Feldbild als Hintergrund drin hat und per onClick ansprechbar ist.
Es ist schon einiges an Einarbeitungszeit für XSL nötig bis man kapiert hat wie man welche Dinge umsetzt, doch dann stellt eine XML-Karte zumindest für "große" Landkarten (nicht Übersichtskarte) eine wirkliche Alternative da.
Die Karte ist nun übrigends mit Grafik keine 7kb groß.
gepostet vor 19 Jahre, 9 Monate von SirCotare
interessant dieses XML und XSL.... ich hab da zwar ein buch darüber, aber das is verdammt veraltet und stammt noch aus der zeit wo das alles noch in der entwickling war... kannst du mir ein buch empfehlen?
gepostet vor 19 Jahre, 9 Monate von Mudder
Nein.. ich bin kein Bücherleser und alles was ich brauche such ich mir in Tutorials und Co zusammen.
Alles was ich hierfür gebraucht hab, hab ich z.B. von selfHTML:
http://de.selfhtml.org/xml/index.htm
gepostet vor 19 Jahre, 9 Monate von TimeOut
Aber ich kann dir ein Buch empfehlen:
"XML - Extensible Markup Language von Anfang an", von Helmut Erlenkötter. Recht unterhaltsam geschrieben, gute Referenz und leichter Einstieg. Ausserdem verdammt billig.
Ansonsten ist selfhtml in fast allem die beste Quelle.
EDIT: Link aufgrund von Protesten entfernt. Ich weiss zwar immer noch nicht was ein Amazon-Ref-Link ist wenn man da Bücher sucht, aber naja... Ich halte mich ja an die Forenregeln. %)
gepostet vor 19 Jahre, 9 Monate von SirCotare
thx, werd mir das buch besorgen
ich frage mich jetzt nur, ob die XML karte auch 2200 planeten auf einmal darstellen kann und diese auch dynamisch korrekt positioniert.....
gepostet vor 19 Jahre, 9 Monate von TimeOut
Da das ja nur Divs sind die "erstellt" werden, dürfte das kein Problem sein. Bei mir sind das ähnlich viele Objekte, ich werde das nachher mal testen.
gepostet vor 19 Jahre, 9 Monate von SirCotare
so
ich habe das gestestet, also ich hab Mudders XML genommen und damit 100x66 felder darstellen lassen. das brauchte auf meinem rechner 7 sekunden und auf anderen testrechnern länger wil sie leistungsschwächer waren. Also ist XML wohl auch nciht die geniale alternative, die das problem löst. aber für kleine karten is sie durchaus brauchbar.
gepostet vor 19 Jahre, 9 Monate von Mudder
Naja nur als Alternative erstell mal ein GD-Bild in der selben Kartengröße. (wohlgemerkt mit diesen Hexfeldern)
Für solche Übersichtskarten wo einfach nur Punkte angezeigt werden sollen, ist GD sicher die beste Lösung doch damit kannst du eben keine richtigen "Gelände-Karten" darstellen.
Außerdem würde mich auch mal interessieren, was für eine Leitung du hast.. denn 166x66 dürfte doch auch so 200-250kb groß gewesen sein.
Nichts destotrotz befinden wir uns hier derzeit am Rande des machenbaren, was Browser so hergeben. Die XML-Karten (wie ich sie verwende) ist bereits bei geringer Feldzahlen Bildschirmfüllend. Alle anderen Felder muss man hin und herscrollen. Die Felder (div-Layer) mussten geladen werden obwohl man sie nicht sieht.
Man könnte versuchen nen fliessenden JS-Scroller einzubauen, wo am Maprand automatisch weitergescrollt wird. Hierbei werden aber nur die vorhanden div-Layer ausgetauscht bzw. die Werte ersetzt. Machbar wäre es mit Sicherheit und das Problem mit dem Browserspeicher wär gelöst. Nur eine riesige Karte von 100-250kb verursacht das selbe Problem wie ein riesiges Karten-Bild - es kostet ungemein viel Traffic jedes mal die Dinger zu laden.
gepostet vor 19 Jahre, 9 Monate von SirCotare
ich habe die brechnenungzeit am localhost ausprobiert.. also ohne ladezeit... und ja, es war 220kb gross
die idee mit dem scrollen ist dicher ne überlegung wert, muss man sich aber ansehen
was dann die grösse angeht wirds sicher ne lösung geben
gepostet vor 19 Jahre, 9 Monate von Qmaster
Eine andere Idee wäre, die Daten als Array zu liefern und die HTML-Tabelle per JavaScript aufbauen. Die Tabelle mit ihren tr und tds ist eigentlich das was wehtut. Nur so als Idee, habe es nicht ausprobiert. Meine Weltkarte wird ganz normal in HTML aufgebaut und geschickt. Zur Zeit 450kb Gross bei 50x50 Feldern. Als nichts für Modemuser.
gepostet vor 19 Jahre, 9 Monate von SirCotare
diese technik verwende ich dereit auch für die imagemaps meiner karte. das problem mit deiner HTML karte is, dass das teil genauso wie das XML teil schlapp macht, wenn es um karten grösserer dimension und feldanzahl geht
gepostet vor 19 Jahre, 9 Monate von Moogly
Also ich nehme immer die Lösung, dass ich eine Abfrage der Felder von x>$wert1 bis x<$wert2 und von y>$wert3 und y<$wert4, danach mache ich einen Join(Da hat mir grade jemand bei einer wichtigen Aufgabe geholfen :lol: )
Danach lass ich die results so durchlaufen:
while(list($felder)=mysql_fetch_array($query))
{
//Hier die Tabellenausgabe//
}
Insgesamt läuft diese Lösung sehr gut! Und die Tabellen lassen den Browser nicht in die Knie gehen! west.cul8er.com stellt sogar eine Ganze Weltkarte (200.000 Felder) mittels Tabelle dar! Nur die Ladezeit ist dann halt etwas höher ~2SEC!
Ich finde diese Lösung persönlich am besten! Wenn man dem User noch eine GFX Pack mit den Texturen anbietet! Dann ist der Traffic kein Problem mehr!
MfG Moogly
gepostet vor 19 Jahre, 9 Monate von SirCotare
200 tausend felder? als tabelle? mit einer ladezeit von 2 sekunden?
würd ich sagen ist unmöglich. Du kanns tnicht mal 200.000 einzelne zahlen in der geschwindigkeit darstellen lassen geschweige denn berechnen und darstellen.
wir haben jetzt einen anderen ansatz:
basierend auf der XML karte von Mudder, werden nur noch so 20x30 felder auf einmal dargestellt. dann gibt es eine scroll funktion, die per javascript die felder dann ändert. also das javascript ist fürs scrollen zuständig.
Probleme machen nur noch 2 dinge:
1) Wie bekomm ich die ganzen Felddaten in das JS, ohne dass der quelltext explodiert (grössenmässig)
2) Leider leidet die übersichtlichkeit wieder unter der sache, weil wieder nicht die gesamte karte auf einmal dargestellt wird.
ad 2:
müssten man die user einstellen lassen, wieviele felder ihr PC auf einmal verkraftet, ohne lange für den aufbau zu brauchen.
gepostet vor 19 Jahre, 9 Monate von Moogly
2 Sec. wird unter von der Zeitmessung angezeigt! Insgesamt schätz ich 3-5Sec zum laden!
MfG Moogly
gepostet vor 19 Jahre, 9 Monate von Mudder
Moogly das glaube ich auch nicht.. zeige die Karte bitte mal!
gepostet vor 19 Jahre, 9 Monate von Moogly
Melde dich bei The West an und klicke auf die Weltkarte!
MfG moogly
http://west.cul8er.com
gepostet vor 19 Jahre, 9 Monate von SirCotare
also da muss echt ein wahnsinniger am werk gewesen sein. das ding braucht ja jahre zum aufbauen und sieht dann auch noch etwas.... wie soll ich sagen... bescheiden aus. also sowas is glaub ich echt unbrauchbar!
gepostet vor 19 Jahre, 9 Monate von Moogly
Wieso denn Jahre? Außerdem wird diese Karte nur selten genutzt und ich finde das ganze spiel hat rießiges Potential! Ist gerade in der 1 Betarunde!
Gerade war der Server etwas lahm, wielang braucht es denn bei dir?
MfG Moogly
gepostet vor 19 Jahre, 9 Monate von SirCotare
meine sternenkarte braucht keine 10 sekunden, bis sie da ist. und da sind 2300 planeten verzeichnet.
die geländekarte ist noch in arbeit, aber die zeigt immer nur die felder an, die grad auf den bildschirm passen, also is es egal wieviele felder die hat
was das West spiel angeht, so hab ich mir nur die karte angesehen und muss sagen, das die wohl nicht optimal gelöst ist. und karten sind ja auch da um benutzt zu werden der rest vom spiel kann ja recht gut sein... das weiss ich nicht
gepostet vor 19 Jahre, 9 Monate von Moogly
Welche Karte hast du angeschaut? DIe Weltkarte oder Ausschnittkarte?
MfG Moogly
gepostet vor 19 Jahre, 9 Monate von Sogil
Diese Landkarte in meinem Spiel hat 100x70 Felder und ist 86 kB gross (Quelltext only). Momentan sind darauf 544 Inseln abgebildet, die alle an der richtigen Position und korrekt markiert werden. Die Zeit, wie lange sich das aufbaut gabe ich nicht gemessen, ist aber noch im akzeptablen Rahmen.
http://garia.drownedworld.de/map Die Landkarte aus Tabellen aufgebaut, wobei ich die ganzen Hintergünde der Zellen per css regle. Die Vordergrundbilder sind transparente gifs, die auf die Detailansicht der jeweiligen Insel verlinken. (Im eingeloggten zustand sind das Fähnchen die zb die Position bestimmter Spieler markieren, aber wenn man hier einfach dem Link gefolgt ist, sind das nur durchsichtige bilder. Wenn ich bei diesen Bilder nicht immer noch den Grafikpfad angeben müsste würde die Karte sogar noch weniger Platz benötigen.
Was ich bei dieser Karte vor allem noch verbessern möchte ist:
-weitere Reduzierung des Traffic.
-Einfügen von Tooltips (mit dem alt tag funktioniert das nur beim IE.)
Es gibt von dieser Karte nicht nur die Vollansicht, sondern auch die 30x30 Ausschnittsansicht. Diese ist u.a. von einer Minimap aus zu erreichen. Diese ist ein gewöhnliche gif datei, mit der man mit dem schon von Crafty erwähnten ISMAP Befehl auf eine Bestimmte Stelle der Grossen Karte zentrieren kann.
gepostet vor 19 Jahre, 9 Monate von SirCotare
@Moogli: die weltkarte
@Sogil: die karte scheint gut zu funktionieren, nur blaub ich, das bei mehr inseln die user pcs recht schnell eingehen werden, wenn si enicht rechenstartk sind. also auf meinem alten 400er würd die nicht laufen, aber am 2800er kein problem. die frage is tnur ob es nicht ne bessere lösung gibt
gepostet vor 19 Jahre, 9 Monate von Sogil
Hier an meinem PC ( Pentium II 233 MHz, 160MB RAM) dauert es zwar auch ein paar Sekunden bis die Karte aufgebaut ist, aber da die Karte üblicherweise in einem Extra Fenster geöffnet wird, ist das auch so kein Problem, da das ja nicht so oft gemacht wird. Ob es ne Bessere Lösung gibt, frage ich mich natürlich weiterhin.
gepostet vor 19 Jahre, 9 Monate von schokofreak
@ Mudder: Verfolgst du das mit der XML / XSLT Map noch?
Wenn ja... bist nicht der erste
Schau mal was bei deiner lösung passiert, wenn folgende Szenarien auftreten:
- Die Karte soll oben, unten, links, rechts, wo auch immer irgendwie sonst noch was haben.
=> die Karte ist NICHT in einem eigenen Frame.
Dann wird das schon mal relativ mühsam. Mühsam, aba machbar.
Was passiert, wenn deine Kartenfelder nicht nur aus 1 Bild bestehen, sondern (wie in der Realität) aus so 5 bis 10 durchschnittlich?
=> Grundebene; grundfarbe
=> masserierung für hohe wiese z.B.
=> Gebäude
=> Farb- Tag für Gebäude (rot = feind usw)
=> Bild für Einheit auf dem Kartenfeld (z.B. 1 Ritter da dieser das grösste Potential hat, und der wanderer nicht so interessant ist)
=> Farbe für die Einheit
=> Wetter
=> Fog of War (hell / Dunkel) ist das bild "aktuell" oder nicht.
Das war mal eine exquisite, luxuslösung welche mit ca 8 Bildern rechnet. Ich denke eine "normale" Lösung hat 5 bilder.
Nun nimmst du eine XML / XSLT Map, und versuchst einen Bereich von so 100 x 100 felder a je 5 Bilder zu zeichnen.
=> Ist n interessanter effekt )
Bandbreitenproblem vs. Kompression auf dem Server. XML ist SEHR gross... sprich entweder auf server komprimieren (was jetzt machst) Oder schlechte Bandbreite. Beides nicht perfekt, oda?
Alles oder Nix strategie: Wenn von wie bis jetzt Zeile 1 bis 100 auf einmal 5 bis 105 eingeblendet werden soll... heist das komplette Karte nochmals neu laden, oda?
=> Teilweises Laden & Zusammensetzen von XML nicht möglich.
Aus diesen Punkte frage ich dich nun ernsthaft:
Wieso ned JavaScript? Löst dir sämtliche deiner Probleme, und ist gleich schnell...
Gruss
gepostet vor 19 Jahre, 9 Monate von Mudder
Wenn du so die Erfahrungen hast, dann zeig deine Karte!
gepostet vor 19 Jahre, 9 Monate von Fasi
Also so schlecht ist meine Lösung ja nicht von The West, auch wenn man sie noch etwas optimieren kann. Hier für alle die sich nicht registrieren wollen:
www.the-west.org/west/jsp/worldmap.jsp Server:
Die Karte mit 200'000 Felder zu generieren dauert ca. 1-2 Sekunden.
Client:
Ein 500Mhz Pentium braucht etwa 5-6 Sekunden um die Seite aufzubauen. Ab 2GHz ist die Seite in 2-3 Sekunden da.
Der Trick mit der Karte als Tabelle ist, dass ich für jede Zeile eine neue Tabelle habe, und nicht für alle Felder eine Tabelle.
Die Seite ist etwa 1MB gross, wird aber komprimiert auf ca. 100k.
gepostet vor 19 Jahre, 9 Monate von KoMtuR
naja man könnte auch bei sagen wir 20 zeilen die page immer flushen lassen. so bekommt der user den eindruck, dass die karte sich allmählich aufbaut. Problem bei ner Tabelle ist ja dieses leidige "Alles auf einmal anzeigen-wenn-fertig"-Problem. Aber ich denke um eine gute Karte beim user dastellen zu wollen muss da auf jedenfall nen Grafikpack her. Weil es wird sich einfach nicht rechnen und man bekommt nochmals einen kleinen schub rein.
Ich versuch mal meine karte komplett darzustellen. Wären dann 10k felder. Wenn ich fertig bin zeig ichs euch ma
edit fasi versuch doch mal die Tabellenhintergründe in ne Css zu packen. Somit sparste auch nochmals traffic. Die Css wird zwar dann groß, aber dies ist ja nur einmal, dass der spieler Diese laden muss.
gepostet vor 19 Jahre, 9 Monate von schokofreak
Hmpf...
Gesetern hab ich mich mal wieder tödlich geärgert.
Es gibt n schönes Skriptlein, welches Landschaften generiert.
nach der Generierung landet die Landschaft in ner DB oder File oder Whatever.
Nur: Eigentlich wär mal so ne banale Übersicht noch schön.
Nur geht das nicht:
Es existiert eine Karte mit den Dimensionen ca. 500 x 500. Tabelle mit 1 px breiten farbcodierten zellen zur Darstellung
=> Browser Crashed.
Kennt da wer ne einfache möglichkeit, wie man zum testen sehr schnell solche Karten zeichnenlassen kann?
Geht nur ums testen
Gruss
gepostet vor 19 Jahre, 9 Monate von boeseRaupe
hmmm. Weiß ja ned, was du in der DB genau speicherst. Aber ich hab zum Testen ein Script gebaut, dass mit anstatt der Bilder Zeichen (* # usw.) zeigt. Da kann man alles auf einmal anzeigen, ohne dass was abstürtzt.
Also einfach alle Datensätze nach y geordnet auslesen, dann bei dir 500 Datensätze ausgeben und dann
. So läuft des bei mir.
Hast du das gemeint ?
mfg boeseRAupe
gepostet vor 19 Jahre, 9 Monate von cem0r
Wäre es nicht schneller und auch einfacher das über die GD zu lösen, und eine Grafik zu erzeugen? Jedenfalls für eine simple Übersicht.
gepostet vor 19 Jahre, 9 Monate von schokofreak
Ja, genau sowas hab ich gesucht!
Grml... hätt ich auch selber draufkommen sollen
Mir gehts nur darum zu debuggen, ob die gespeicherten Daten auch sinn machen.
-> Etwa jedes 3., 4. Mal gibt es Umrisse welche leicht "unnatürlich" sind. Da auf einmal n rechten Winkel oda so...
Das ist natürlich nicht gerade das Optimale.
auf soner map seh ich das sicher gleich... gerade mal einbauen.
Gruss
gepostet vor 19 Jahre, 9 Monate von schokofreak
Original von cem0r
Wäre es nicht schneller und auch einfacher das über die GD zu lösen, und eine Grafik zu erzeugen? Jedenfalls für eine simple Übersicht.
angenommen 500 x 500 felder:
dann sind das 250'000 einzelfelder.
Ich glaube, dass man 250000 Einzelfelder in einem GD einfach so mal rasch schnell hinkriegt, da braucht man schon einiges...
Vorallem wird die Kartengrösse in Zukunft auf ca. 2000 x 2000 felder ansteigen.
Fazit: Nein, das will ich mir nicht antun
Gruss
gepostet vor 19 Jahre, 9 Monate von cem0r
Original von schokofreak
Original von cem0r
Wäre es nicht schneller und auch einfacher das über die GD zu lösen, und eine Grafik zu erzeugen? Jedenfalls für eine simple Übersicht.
angenommen 500 x 500 felder:
dann sind das 250'000 einzelfelder.
Ich glaube, dass man 250000 Einzelfelder in einem GD einfach so mal rasch schnell hinkriegt, da braucht man schon einiges...
Vorallem wird die Kartengrösse in Zukunft auf ca. 2000 x 2000 felder ansteigen.
Fazit: Nein, das will ich mir nicht antun
Gruss
Aber ausprobiert hast du es nicht, oder?
gepostet vor 19 Jahre, 9 Monate von KoMtuR
gd nutzen bei ner 2000x2000 karte? Da kann man gleich wieder aufhören mit dem game, wenn es schnell sein soll. GD ist glaub ich das modul in php, was die meisten ressourcen brauch. zumindest meiner meinung nach ^^
gepostet vor 19 Jahre, 9 Monate von cem0r
Der Herr wollte lediglich eine Übersicht über, so wie ich das Verstanden habe, seine gesamte "Spielwelt", welche momentan 500 mal 500 Felder und in Zukunft 2000 mal 2000 Felder umfasst. Für eine einmalige oder gelegentliche Komplettübersicht halte ich die GD für die optimalste Lösung.
gepostet vor 19 Jahre, 9 Monate von schokofreak
Guten Tag...
Hab nun ne simple ASCII Map genommen.
http://ae87.s1.domainkunden.de/map.html Ah ja, ned wundern dass das ganze relativ künstlich wirkt. das ganze ist eine ISO Map.
Die Darstellung des ISOs als ASCII macht einiges an "Ecken".
Zusätzlich wird noch n unkonventionelles Koordinatensystem verwendet.
Sprich: Bitte 1 mal Kopf nach links kippen; und bitte die Breiten / Längenverhältnisse ignorieren
Gruss
gepostet vor 19 Jahre, 8 Monate von Gambler
Also ich denke das was viele hier wollen ist in der Größenordnung gar nicht möglich. Bei 100x100 Feldern ist ja schon Ende.
Da bleibt nur noch die Möglichkeit ein Applet zu schreiben oder gleich nen Client.
gepostet vor 19 Jahre, 8 Monate von schokofreak
right...
schöne grafische Karten bringst in nem Browser nur so 20 x 20 felder hin. wenn überhaupt...
gepostet vor 19 Jahre, 8 Monate von neit
Wir hatten hier doch vor einiger Zeit schonmal eine ähnliche Diskussion in der dynamische nachladende Karten in JavaScript zur Sprache kamen. Ich habe da jetzt schon 1,2 Umsetzungen gesehen und muß sagen das man damit die möglich Größe der Map verfielfacht.
Was alles möglich ist:
http://maps.google.com/ Man kriegt allerdings auch mit sehr viel weniger Arbeit schon erstaunliche Ergebnisse.
gepostet vor 19 Jahre, 8 Monate von schokofreak
Neit: Du vergisst nur eines. Hab das bis jetzt recht stark verschwiegen...
Dynamsich nachladen ist gut und Recht. Aber der RAM Verbrauch ist nicht mehr normal...
Gruss
gepostet vor 19 Jahre, 8 Monate von schokofreak
Hmmm.. google ist Java oder Flash, oder?
gepostet vor 19 Jahre, 8 Monate von neit
Naja Im Vergleich zu ner 100.000ende Felder großen Tabelle ist der Ramverbrauch minimal. Es gibt ein JS-Array mit den Feldinfos und einen festen Satz mit Divs. Dieses Divs werden je nach Scrollrichtung durch die Gegend geschoben und wenn sie aus dem Sichtbereich verschwinden auf der andren Seite wieder angesetzt.
Sollte das JS-Array zu groß werden müßte man das in einen Iframe setzen und bei Bedarf neue Werte vom Server abholen.
gepostet vor 19 Jahre, 8 Monate von Gambler
Also ich hab mir für mich jetzt die Lösung überlegt dass ich das mit XML und Flash machen werde. Leider kann ich kein Flash :p
aber so schwer kann das ja net sein
gepostet vor 19 Jahre, 8 Monate von Spyme
1024x768 grosses Bild erstellen. Raster drüber, ID verlinken und fertig.
Wer viel denkt kommt auf viele Irrwege...
P.S: Ich empfehle mal einige Map Editoren anzuschauen mit denen man Karten für PC Spiele und Handys macht. Dort kannst Du Dir ein paar anregungen holen.
Ich dachte immer die Coder denken Schematischer :>
/Spyme
gepostet vor 19 Jahre, 8 Monate von None
ein beispiel wie man graphische karten loesen kann ist das bg zwischenwelt (auch hier im index)
quellen gibt es unter
http://freshmeat.net/projects/zw jeder user hat immer eine 15x15 map (js + css) man kann sich auch noch eine 50x50 map oeffnen in einem anderen fenster (ist aber recht uebel fuer den rechner auf dem man sich das ansehen will teilweise)
und es gibt ne klickbare pixelmap wo jedes feld der karte durch einen pixel dargestellt wird ... derzeitige weltgroesse (auf den screenshots) ca 2000x1500 felder
gepostet vor 19 Jahre, 6 Monate von Rob-oter
gepostet vor 19 Jahre, 6 Monate von Global
hm die gd benutzer: hat schonmal jemand versucht gd zu umgehen, indem man die erstellung des bildes in ein eigenständiges programm auslagert? das müsste doch mit c++ zb super schnell gehen! man müsste also im hintergrund ständig sämtliche grafiken aktualisieren (natürlich in bereiche zerschnippelt), die ein js programm bei bedarf sich holt. es wird natürlich immer mal wieder auftreten, dass ein spieler sich einen alten kartenteil holt, aber das sind kollateralschäden die immer mal auftreten
gepostet vor 19 Jahre, 6 Monate von Gambler
mh glaub nicht dass das wirklich viel speed bringt. Die GD Lib ist genauso in C geschrieben.
gepostet vor 19 Jahre, 6 Monate von Global
hm aber man hat mehr möglichkeiten bestimmte bilder im arbeitsspeicher zu halten. dann braucht man die nicht immer wieder von der festplatte lesen. das müsste doch schon mal performance geben. dann allgemein der speedunterschied php - c++....
gepostet vor 19 Jahre, 6 Monate von schokofreak
Original von Global
hm aber man hat mehr möglichkeiten bestimmte bilder im arbeitsspeicher zu halten. dann braucht man die nicht immer wieder von der festplatte lesen. das müsste doch schon mal performance geben. dann allgemein der speedunterschied php - c++....
na überleg dir mal wo die rechenleistung verbraucth wird?
Bei der Kompression der Bilder. Grafikformat usw...
Fazit: Eine Auslagerung in C++ gibt dir nur eine vergrosserung der Komplexität; aber keine performancesteigerung.
Gruss
gepostet vor 19 Jahre, 6 Monate von Gambler
Ich find so ne Lösung mit der GD Lib eh nicht besonders sinnig. Da gibts ganz andere Probleme. Ich mein wieviele Grafiken hat son Game schon? Da fertige ich die lieber vor. Ich schätz ma mehr als 100 sind das net. Kommt halt aufs Game an aber bei nem SciFi sind das vl. 20.
Restlichen Kram legt man halt einfach irgendwie drüber.
gepostet vor 19 Jahre, 6 Monate von smf68
Mich beschäftigt derzeit das gleiche Problem... wie löst man das Kartenproblem richtig gut? Eine erste Lösung habe ich schonmal gefunden:
http://erania.islandwars.ch/login nick: Testaccount
pw: test
Für die faulen, die sich nicht einloggen wollen:
http://erania.islandwars.ch/map_beispiel.html (halt nur die Karte A1, auf andere Wechseln und paar Funktionen gehen hier nicht)
Die Karte besteht aus s, die mit style="" positioniert werden. Nicht besonders elegant, aber es funktioniert. Also fast reines CSS.
Habe letztens versucht das ganze mit Java umzusetzen aber bin auf viele Probleme gestossen... mal sehen wies jetzt weitergeht
mfg smf68
gepostet vor 19 Jahre, 6 Monate von Chojin
Also Smf68, das nenn ich mal eine tolle karte!
So etwas in der art hatte ich auch geplant, nur das ich zusätzlich zu den Hexagons noch Punkte über diese Grundstruktur legen wollte und nicht soviele felder gleichzeitig darstellen wollte.
Wird wohl auch etwas schwerer Strassen etc zu erstellen. Ich denke das werden dann wohl zuviele layer werden.
gepostet vor 19 Jahre, 6 Monate von rgb
@Chojin:
Ich habe da jetzt zwar nicht so viel Ahnung von, aber könnte man das nicht mit 2 Layern regeln?
z.b.:
Land
Land+Straße
Land+Stadt
Land+Stadt+Straße
..jetzt nur mal als Beispiel, dass es halt die verschiedenen Arten schon als fertige pictures gibt und dann nur noch anhand irgendwelcher Berechnungen bestimmt wird, welche Art von Feld nun dahinkommt.
gruß rgb
gepostet vor 19 Jahre, 6 Monate von felix
Man kann ziemlich viele Layer aufbauen.
Bei einer Karte von 64*64 Felder dauert das aber schon einige Sekunden, bei ner 24*24 hab ich aber keine Probleme.
Zurzeit teste ich gerade, wieviele Layers sich gleichzeitig bewegen lassen. Ich denk es spielt da ne sehr grosse Rolle wie stark der PC eines Users ist.
gepostet vor 19 Jahre, 6 Monate von rgb
Hi namensvetter :wink: .
Bezweifel ich auch garnicht, dass man sehr viele layer erstellen kann, aber wie du bereits erwähnt hast, dauert das ja anscheinend einige zeit zum aufrufen, wie ist denn das nun mit meiner alternative? Klingt die gut?^^
Dann würde ich aus Fun auch mal so ne karte basteln :wink:
gepostet vor 19 Jahre, 6 Monate von smf68
Original von Chojin
Also Smf68, das nenn ich mal eine tolle karte!
So etwas in der art hatte ich auch geplant, nur das ich zusätzlich zu den Hexagons noch Punkte über diese Grundstruktur legen wollte und nicht soviele felder gleichzeitig darstellen wollte.
Wird wohl auch etwas schwerer Strassen etc zu erstellen. Ich denke das werden dann wohl zuviele layer werden.
Spätestens wenn man noch irgendwelche Sachen wie Punkte oder Linien drüberlegen will, dürfte es schwierig werden ohne GD oder sonst eine Bildgenerierene Methode. Strassen würden denk ich mal gehen, meine Karte bisher besteht ja quasi nur aus den hexagons, also aus teilweise transparenten gifs. da könnte man ja auch noch strassen drüberlegen, css kennt ja das attribut z-index...
Ich bin in Sachen ausbaubarkeit mit meiner Karte auch noch nicht zufrieden. Spätestens wenn ich versuche irgendwelche Schiffsrouten oder was auch immer einzuzeichnen, die sich auch ändern können, würde es kompliziert. Wie schon erwähnt wollte ich das schon mit java umsetzen aber (wohl dank meiner nicht wirklich ausgeprägten java-kenntnisse) das hat noch nicht wirklich so hingehauen, wie ich mir das vorgestellt hatte. Ich hatte es schonmal geschafft genau die gleiche Karte aus dem gleichen "Rohmaterial" von einem Java-Applet zusammenbauen zu lassen, aber ab und zu werden nicht alle Bilder angezeigt oder es wird alles schwarz und so sollte wohl meine paint() methode nochmal ansehen ^^
Extrem erstaunt hat mich die oben gepostete Karte von The West. Ich muss zugeben, ich hätte nicht erwartet dass SO etwas mit SO vielen Bildern per Tabelle möglich ist und sich von der Ladezeit auch noch in Grenzen hält... Hut ab. Die Ascii-Karte ist auch g0il Sieht zwar nicht so toll aus aber hey, da hat sich wer Mühe gegeben.
@rgb: irgendwie versteh ich nicht genau wie du das mit den 2 layern meinst... nochmal genauer erklären?
mfg smf68
gepostet vor 19 Jahre, 6 Monate von rgb
Original von Chojin
Also Smf68, das nenn ich mal eine tolle karte!
So etwas in der art hatte ich auch geplant, nur das ich zusätzlich zu den Hexagons noch Punkte über diese Grundstruktur legen wollte und nicht soviele felder gleichzeitig darstellen wollte.
Wird wohl auch etwas schwerer Strassen etc zu erstellen. Ich denke das werden dann wohl zuviele layer werden.
@smf68:
Vorneweg - ich weis eigentlich garnicht genau, was mit layern gemeint ist, aber ich stelle es mir als mehrere Bilder übereinander vor^^.
Und da meinte ich es z.b. so:
1. Layer - Landschaftsart + Straßen oder so als ein Pic, und nicht extra nochmal die Straße als ein Layer :wink: da gibts dann halt verschiedene kombniationen der Pictures (wüste - gradeaus,kurve,kreuzung, das selbe dann noch mit graßland oder so, nach bedarf halt)
2. Layer - irgendwelche einheiten oder sowas. nach bedarf halt.
gepostet vor 19 Jahre, 6 Monate von smf68
mhhjo... ist warscheinlich weniger das problem der realisierbarkeit, sondern eher das der frage, ob das nicht jeden browser in die knie treibt (bei grossen karten und vielen einheiten)
Wieviel in dieser Richtung möglich ist... schwer zu sagen, müsste man mal ausprobieren
mfg smf68
gepostet vor 19 Jahre, 5 Monate von Drezil
Meine Karte besteht aus s, die per css in divs plaziert werden ..
die bilder liegen im grafikpack und nen javascript ersetzt die url (spart traffic .. so 20-40%)
das ganze kann man sich mal
ansehen zum einloggen könnt ihr meinen acc benutzen ..
user: YzGyR
pw: testpass
die map gibts unter dem punkt "observatorium"
aber nicht meine spieler töten :p
ist eben nen mehrschichtiges system. au der ersten ebene sind wenig details. dann knn man reinzoomen und in dem entsprechenden bereich gibt ess dann natürlich immer mehr details.
ist nicht die eleganteste art und mit ziemlicher sicherheit zu gar nichts konform, läuft aber in allen browsern ganz gut.
gepostet vor 19 Jahre, 5 Monate von Gambler
Find ich nicht schlecht. Außerdem baut die sich in 2 Phasen auf. Erst die Bilder dann die Markierungen. Das macht das Warten irgendwie kürzer. Allerdings hängen die Markierungen der Maus ziemlich nach was störend ist.
gepostet vor 19 Jahre, 5 Monate von alco
http://www.thelastwar.de/karte.jpg um mal mein System vorzustellen:
20x20 Feld
Im Hintergrund die Karte, darüber ne Tabelle (per Schleife). Ist insgesamt schnell aufgebaut.
BTW: komischerweise wird der mauszeiger beim Screenshot nicht anzeigt, also nicht wundern
gepostet vor 19 Jahre, 5 Monate von Bacardi Adi
also wir haben eine flash karte
ist 100 * 100 Felder Groß, und eigentlich ganz Flott, vor allem sind bei uns die Basen drinnen und pro User bis zu 6 Kampftrupps. die genauen User Daten werden dann beim drüberfahren mit der maus nachgeladen.
http://www.p-o-t.at/Images/screen_big_1.gif wie sie genau ist kommt leider beim Screenshot nicht ganz zur Geltung ^^
achja ich selber kenne mich mit flash net aus. Hab sogar ein blocker drinnen weil das leider viel zu oft für irgend welchen mist verwendet wird.
gepostet vor 19 Jahre, 5 Monate von Gambler
Find ich nice die Karte. Könnte man zwar noch hübscher machen aber sowas haben wir auch geplant. Nur leider kann keiner Flash und wir haben noch niemanden gefunden :p
Wie macht ihr den Datenaustausch mit der Karte?
gepostet vor 19 Jahre, 5 Monate von Bacardi Adi
Wie das genau geht weiß ich nicht genau. Das macht ein andrer .
Ich weiß nur so viel das einfach pro Allianz und sektor im Speicher eine karte generiert wird (also x, y, was es ist und ob feind neutral oder verbündet) das zum flash geschickt wird und beim drüber fahren dann der Name, Allianz usw nachgeladen wird.
So verringert sich der Trafic enorm, und der Server hat auch net viel zu tun dabei.
gepostet vor 19 Jahre, 5 Monate von Gambler
Und wie ladet ihr nach? XML?
gepostet vor 19 Jahre, 5 Monate von Bacardi Adi
nö für so was zu viel Ballast, würde das ganze ums x fache aufblasen.
Normale aspx Seite (kann natürlich auch php sein ) mit Strichpunkt (Semikolon) getrennt. Flash verarbeitet das dann weiter.
gepostet vor 19 Jahre, 5 Monate von Eissi
Hallo,
jetzt habe ich die ganze Zeit mitgelesen & möchte jetzt wenigstens auch meine simple Lösung zeigen...
http://www.lehnsherren.de (unter Screenshot)
Gruß
Eissi
gepostet vor 19 Jahre, 5 Monate von Haatschiii
also meine ist sicher nicht die eleganteste Lösung und auch noch nicht fertig! So siehts bisher aus:
http://spiel.tolle-seite.net/sb/maptest2.php
gepostet vor 19 Jahre, 5 Monate von Drezil
@Haatschiii:
Ich würd das nicht so wie du machen. Im nachhinein (war das nu richtig?) müssen doch sehr viel daten übertragen werden, wenn du noch einige andere dinge in die Karte einzeichnen willst.
Ich würde es so machen:
wenn die stene ihre position nicht verändern, dann kannst du das universum.jpg schon vorberechnen. ansonsten plazierst du eben mit divs die punkte auf der karte und wenn du klickst, dann bekommst du gleich $_REQUEST['x'] und $_REQUEST['y'] als x und y Koordinate des Punktes auf dem der user geklickt hat.
sowas wie du hab ich schon "fertig" programmiert. kannst dich ja dran orientieren, wenn du willst. link ist 2 seiten vorher glaub ich..
ansonsten noch viel erfolg bei deiner karte.
gepostet vor 19 Jahre, 5 Monate von TheUndeadable
Habe mal testweise die Karte meines Browsergames veröffentlicht:
Näheres
hier (optimal IE, Opera nur bedingt, FF keine Ahnung)
Im Ernst:
Daran sieht man, was für Karten theoretisch möglich sind und falls ich jemals ein neues Game bauen sollte, wird dieses die Referenz zu meinem Game sein
gepostet vor 19 Jahre, 5 Monate von sYnchron
ff kommt gar nichts^^
also nur ie -.-
diese hq karten sind zwar schön und gut aber ich find simplere auch nicht schlecht
gepostet vor 19 Jahre, 5 Monate von TheUndeadable
Hab's gerade mal mit FF getestet. Bei mir scheint es zu funktionieren, ist nur etwas langsamer, wie mit den anderen Browsern.
Du kannst auch zu ner Straßenansicht umschalten. Diese funktioniert allerdings nur in den USA. Aber ich denke, dieses Projekt kann vor den Augen führen, was alles mit HTML und JS möglich ist. Mich hat es auf jeden Fall sehr erstaunt.
gepostet vor 19 Jahre, 5 Monate von sYnchron
Original von TheUndeadable
Hab's gerade mal mit FF getestet. Bei mir scheint es zu funktionieren, ist nur etwas langsamer, wie mit den anderen Browsern.
Du kannst auch zu ner Straßenansicht umschalten. Diese funktioniert allerdings nur in den USA. Aber ich denke, dieses Projekt kann vor den Augen führen, was alles mit HTML und JS möglich ist. Mich hat es auf jeden Fall sehr erstaunt.
klar ist dies erstaunlich....jedoch siehst du auch, dass die ladezeiten hoch sind (im verlgeiuch zu der leistung sehr gering) dennoch bin ich eher für was simpleres
gepostet vor 19 Jahre, 4 Monate von DarkWanderer
Hi,
also ich habe den gesamten Thread durchgelesen und auch die etlichen gezeigten eigenen Ergebnisse doch mit erstaunen verfolgt. Man sieht, das es unzählige verschiedene Wege gibt, die nach Rom führen, welcher davon der beste ist, darüber lässt sich sicherlich streiten, ich finde auch es kommt dabei auf das jeweilige Projekt im einzelnen an.
Da auch ich eine grafische Karte in meinem Browserspiel Faehnroe habe, kenne ich selbst diese Problematik die ich aber inzwischen, wie ich finde, auf eine recht annehmbare Geschwindigkeit getrimmt habe, was den Aufbau des anzuzeigenden Kartenbereiches angeht.
Hier auch mal was anschauliches das zeigt, wie die Karte in meinem Browserspiel aussieht :
Bogenschütze läuft gemütlich den Weg entlang.
Held überlegt sich das dies ein guter Platz zum Angeln wäre und schaut in's Wasser
Man kann hier also sehen, wie die Spielwelt von Faehnroe grafisch aussieht und was sie dem Auge des Spielers bietet.
Die Spielwelt ist an der Oberfläche genau 3.000.000 Felder groß und stellt eine komplette Spielwelt dar, die aus 11 Inseln und einem Doppelkontinent besteht, die unterirdischen Dungeons u.s.w. sind dabei noch nicht berücksichtigt.
Das es sich hierbei um eine unglaubliche Datenmenge handelt bei dieser gigantischen Spielewelt, dürfte jedem klar sein.
Die Spielwelt ist dabei in einzelne Maps unterteilt wovon jede eine Größe von 50*50 Felder hat, die Spielwelt ist also 30*40 Maps groß.
Durch die unterteilung und indizierung der einzelnen mapbereiche und Felder, spielt die größe bei der Geschwindigkeit nahezu keine Rolle. Die steigende größe bedeutet also keine steigende Ladezeit, da jede Map eine eigene Table in der db hat, was schon aufgrund des komplexen Aufbaus unbedingt notwendig ist.
Wer sich also mit dem Gebiet befasst hat kann sich ausmalen, was für eine Arbeit dahinter steckt, jede Insel hat eigene beschaffenheiten und so kommen wir, wenn alles fertig ist, auf ca. 10.000 verschiedene Mapteile für die Spielewelt, von den Items und Objekten mal garnicht zu reden.
Die Karte wird mit Layern aufgebaut, wobei die Grafiken später per lokalem Grafikpaket von der eigenen Platte gelesen werden, hierdurch also die zu übertragende Datenmenge erheblich gesenkt wird.
Das einzige was wir auf Grund der größe entfernt haben, ist der sogenannte FOW (Fog of War), man stelle sich das für 1000 Spieler bei 3.000.000 Feldern alleine Oberirdisch vor, das stellt eine zu große Datenlast dar, die nicht unbedingt notwendig ist, jedoch ist der FOW per Einkommentieren einer Zeile wieder aktivierbar.
Das Hauptscript welches den zu zeigenden Mapbereich holt, vorbereitet und aufbaut wurde so optimiert, da es von anfänglich 3 Sekunden laufzeit auf 0.2 Sekunen laufzeit verbessert wurde, da man NICHT durch die Spielwelt rennt in Faehnroe, ist das völlig ausreichend und auf Grund der enormen Daten die dabei berechnet werden, auch durchaus akzeptabel, wobei sicher noch verbesserungsfähig.
Auch durch unzählige optimierungen der DB Struktur wurde wieder und wieder mhr Performance herausgeholt.
Lange Rede, kurzer Sinn: Kartenaufbau kann einen schon in den Wahnsinn treiben, ich kann und mag nicht mehr zählen wieviele Tage und Nächte ich mir um die Ohren geschlagen habe, bis die Map so lief wie sie sollte bzw. ich es wollte. Ich glaube ich habe bestimmt 50 mal den grundaufbau überdacht und geändert bis er den Anforderungen entsprach und alles machbar war was wir brauchten.
Layer sind mein Freund und ich fand keine andere Lösung für mein Spiel so brauchbar und gut einsetzbar.
Grüße, DarkWanderer
gepostet vor 19 Jahre, 4 Monate von mow
verstehe ich das richtig das dem clienten jedes mal ein 40*50 grosser block übertragen wird?
wenn der held den rand erreicht, scrollt die karte weiter?
gepostet vor 19 Jahre, 4 Monate von hagish
Ich weiß nicht so genau, ob schon jemand von uns (Zwischenwelt) gepostet hat oder nicht, denn ich hab nicht den kompletten Thread gelesen, aber wir handhaben die graphische Map (sieht aus wie bei Civilisation 1) in 3 Stufen.
Eine große Graphik als Minimap, auf der jedem Pixel ein Feld entspricht.
See ist blau, Wiese grün ... Wenn man dann draufklickt, springt er anhand der Klick Position (Graphischer Button) in der normalen Mapansicht an die gewünschte Stelle. Das Bild wird etwa einmal pro Tag erneuert.
Die normale Map ist ein ca 20x20 Felder Frame bestehend aus einer leeren Tabelle mit CSS. Die CSS Class bestimmt das Hintergrundbild der Felder (die Landschaft). Wenn nun ein Gegenstand oder Armee oder sowas auf einem Feld liegt/steht wird das in das Tabellenfeld gerendert.
Und dann haben wir noch eine größere Version der Normalen Mapansicht, die genau wie die normale Mapansicht ist, nur mit mehr als 20x20 Felden um sich lokal einen Überblick zu verschaffen.
Meistens benutzt man aber die Minimap um irgendwo hinzuspringen und dann Scrollt man ein paar mal in der Normalen Ansicht.
Das ganze ist aber durch die Tabelle recht groß. Ich glaub wir hatten die mal per JavaScript gerendert um den Traffik zu reduzieren, aber warum es nun wieder anders ich weiß ich gerade nicht ^^
gepostet vor 19 Jahre, 4 Monate von OranGe
also wir sind momentan auch gerade dabei unsere Karte zu erstellen.
das Fog-Of-War haben wir ebenfalls (vieleicht nur vorläufig, ka) entfernt.
momentan wird es so sein das die detail-ansicht der karte ebenfalls aus kleinen feldern besteht (20x20). zur zeit entwickeln wir gerade das man in der karte scrollen kann ohne die seite neu laden zu müssen, sprich so in etwa wie bei maps.google.com (benötigten elemente werden dynamisch geladen). zusätzlich wird es möglich sein (wegen der clientseitigen unabhängigkeit), das man auch ohne javascript in der karte scrollen kann (in dem fall wird sie allerdings beim scrollen immer neu geladen).
wie und ob das fog-of-war wieder reinkommt wissen wir zur zeit noch nicht genau, da es eine unheimliche rechenlast dargestellt hat.
gepostet vor 19 Jahre, 4 Monate von mow
(vornweg: wir haben noch keine zeile code)
unser fog-of-war-conzept stellen wir uns so vor, das der browser nicht sagt
"gib mir position x,y"
sondern
"gib mir die umgebung von schiff x"
wenn es x nicht gibt passiert garnichts, anderenfalls werden eben die vom schiff aus sichtabren felder zurückgegeben. dies ist in O(1) berechenbar wenn man die grösse der umgebung als konstant ansieht (max 9 felder)
zusätzlich gibt es eine grosse übersichtskarte mit 1 pixel/feld, dort wird dies eben für alle existierenden flotten berechnet und alles sichtbare(=O(anzahl flotten)) als layer drüber gelegt
gepostet vor 19 Jahre, 4 Monate von felix
Hab bei ner 64*64 Karte irgendwas bei 12KB. Allerdings ohne die weiteren Elemete wie Armeen.
Man kann in Javascript per Document.Write in ner Schlaufe all die Divs für die Kartenfelder angeben, das erspart sehr viel Traffic.
Leider kommt dieses Projekt aus Zeitmangel nich voran:
http://mmbg.net/omap/html/login.php?action=login&loginname=woyo&pwd=123 Achja...Armeen bewegen und erobern geht nich weil die Tickers ned laufen. Wenn jemand will kann ich ja einschalten, wird aber eh schwer rauszufinden wie man die armeen bewegt :roll:
gepostet vor 19 Jahre, 4 Monate von Moogly
Bei mir kommt immer nur: "map is loading"
Gruß
Moogly
gepostet vor 19 Jahre, 4 Monate von HaSkEeR
bei mir auch, jede sekunde ein javascript fenster "map still loading"
gepostet vor 19 Jahre, 4 Monate von felix
Sorry, wenns keiner angucken kann bringts ned viel...
Die Karte funzt eh nur mit I.E. weil da sooo viele Divs und Javascript drin sind.
[/list]
gepostet vor 19 Jahre, 4 Monate von Kallisti
Original von felix
Sorry, wenns keiner angucken kann bringts ned viel...
Die Karte funzt eh nur mit I.E. weil da sooo viele Divs und Javascript drin sind.
Die Begruendung ist ja geil... ich wuerd eher sagen weil du Mist gebaut hast. ^^
gepostet vor 19 Jahre, 4 Monate von Drezil
würd ich auch ..
meine karte nutzt auch sehr viel js, weils traffic spart .. trtzdem läuft es in jedem js-fähigem browser...
gepostet vor 19 Jahre, 4 Monate von TheUndeadable
Kallisti: So laut würde ich nicht lachen. Gerade mit vielen Divs und DOM kann man den FF an seine Grenzen führen. Er wird ab einem bestimmten Punkt furchtbar träge ;-). Dafür hat er ordentliche Events in DOM
Aber ich gebe dir recht: Die Karte sieht nicht so aus, als ob das der Grund für das Scheitern unter dem FF ist. Irgendwie nutzt er halt nur IE-Features, was in einer Entwicklungsphase nicht verwerflich ist (Marktanteil).
gepostet vor 19 Jahre, 4 Monate von felix
Die Entwicklungsplattform is eben mitunter mein Windows-PC. Daher das ganze auf I.E. optimiert. Bevor irgendwelche Browserweichen eingebaut werden, sollt es mal erst in einem Browser funktionieren. Und Browserweichen braucht es nur schon um die genaue Klickposition zu errechnen, als Beispiel.
Das alle Sekunden ein Altert erscheint liegt wohl daran, dass das JS versucht die Kartendaten zu initialisiern, was aber nicht geht weil diese Daten nicht da sind. Der Versucht dann einfach jede Sekunde wieder.
Die Karte "scheitert" ja nicht, es ist einfach ein eingefrorenes Projekt.
Die JS-Schlaufe für das Zeichnen der Karte schaut unhefähr so aus:
for(x=0;x<".$map_x.";x++)
{
for(y=0;y<".$map_x.";y++)
{
document.write('');
}
}