get ressources from server

Jaiel

Jaiel

Dauergast
235
Hi ich möchte ein Spiel machen für android. Die benötigten ressourcen(sprites , sounds, etc) sollen aber nciht auf dem Handy gespeichert werden sondern von einem Server bei Bedarf geladen werden. Ich klenn mich nciht so gut in networking aus und tu mich grad etwas schwer bei der implementierung meiner Idee.
Kann mir jemand einen Ansatz wie man soetwas realisieren könnte verraten?

Ich möchte TCP und FTP benutzen da es ja so wie ich gelesen anders nciht geht bzw. der beste weg ist.

Mir fehlt da irgendwie der Ansatz dafür aber.

Und vllt als extra bonus einen Ansatz wie ich eine gesamte Logik für das jeweilige Spiel rutnerladen und ausführen kann. Der Hintergrund ist dass meine app viele Minigames anbieten kann ohne viel Speicher auf dem Handy zu verbrauchen.
 
kann niemand weiterhelfen der sich mit networking auskenmnt?
 
wie kommst du darauf das TCP und FTP der beste weg ist?

Was ist mit dem guten alten HTTP?

lg.
 
Naja ok stimmt schn aber meinst du HTTP ist besser als FTP?

FTP sagt ja schon der anme dass es spezoiell für files gedacht ist von daher dachte ich nehme ich das außer du sagst mir http ist harder/faster/better/stronger/ :smile::smile:
 
Ich denke das bei HTTP dir die Leute hier im Forum besser helfen können als bei FTP :p
Http ist defakto Standard, aber ich kenne mich mit FTP zu wenig aus um da was sagen genaues sagen zu können...
bis jetzt habe ich immer nur rest services geschrieben... und da benutzt man nunmal http weil es mit fast alles kompatibel ist... nette features bietet... usw..

lg. dagobert
 
Ich mich ja auch nciht aber ich hab einige Vor und NAchteile gefunden:

Irgendwie überwiegen die Vorteile von HTTP denen von FTP auch wenn FTP oft schneller ist als HTTP ist es doch schwerer zu Implementieren gölaub ich da es zwei Verbindungen benötigt und für jeden File eine Neue aufmacht.

https://www.youtube.com/watch?v=KSX6sh7JV6s

aber der Typ sagt etwas sehr überzeugendes für mixch: FTP ist besser wenn man mehrere Files runterladen will oder gar ganze filetrees wo man bei http immer nur ein File senden kann.

Ich bin irgendwie wieder voll durcheinander:wie ist denn das bei http wenn man emhrere Files auf einmal alden will. ist das angenehm zu implementieren?

Der ursprüngliche Beitrag von 22:18 Uhr wurde um 22:27 Uhr ergänzt:

also auch serverseitig: denn ich finde es schon besser dem server zu sagen ald mir jetzt diese filedirectory runter mit allen zugehörigewn files und gut ist :)

ich stell mir fdas grad bei http so vor das ich sagen muss lad mir dieses file danach lad mir dieses file dann dieses und so weiter
 
Irgendwie zaeumst du das Pferd von hinten auf... Dateien irgendwo aus dem Netz nachzuladen sind Javabasics. Viel interessanter ist ja die Frage wie und wo willst du sie ablegen und verarbeiten? Du sprichst in deinem Ausgangspost von,mehreren Spielen die nachgeladen werden sollen - um darauf zuzugreifen musst du sie zwangsläufig zwischenlagern.Niemand spielt ein Spiel welches jedes mal Megabyteweise Daten ins Handy laden muss. Zum Thema Realisierung koennte man zum Beispiel Serverseitig einen Webservice nutzen. Anfrage Spieleliste liefert die vorhanden Spiele zurueck. Anfrage an ein Spiel liefert eine Liste mit den zu ladenden Dateien zurueck - das arbeitest du einfach per Schleife ab, natuerlich musst du hier 1000 Sachen einbauen (pruefsummen um Korrektheit der Dateien sicherzustellen,Netzwerktrennung, unvollstaendige Dateien ect pp.l) naja das ist ganz simple Client Server Kommunikation zb per Json.
 
Jaiel schrieb:
ich stell mir fdas grad bei http so vor das ich sagen muss lad mir dieses file danach lad mir dieses file dann dieses und so weiter

Musst du bei FTP auch ;-) Woher soll dein Programm wissen was du willst wenn du das nicht programmierst ;-)

Unter http://www.example.com/api/getdir/spiela *) liefert dein Server ein XML mit einer Liste der Dateien für Spiel A.
Jeder Eintrag in der Liste enthält eine GUID, ein Verzeichnis und einen Dateinamen.
Und dann gehst du in ner Schleife die Liste durch, lädst http://www.example.com/api/getfile/GUID und Speicherst die im angegebenen Verzeichnis unter dem angegebenen Dateinamen.

Ohne die notwendige Fehlerbehandlung sind das 20 Zeilen einfacher Code.

cu

*) Lese dir mal ne REST Doku durch wie man so was korrekt benennt, bin da jetzt zu faul ;-)
 
rihntrha schrieb:
Musst du bei FTP auch ;-) Woher soll dein Programm wissen was du willst wenn du das nicht programmierst ;-)
Hi dqanke für deine Infos

Also die Applikation selber wird nciht wissen welche Dateien Sie anzufordern hat(klingt irgendwie komisch :p).
Der Server entscheidet welches spiel gespielt werden soll.
Die Infos welches Spiel gespielt werden soll wird dem client mitgeteilt und es werden dann die dazugehörigen ressourcen auch bereitgestellt.

Der Code für das Spiel ist auf dem Client gespecihert.Also weiß er welche ressourcen zu verwenden sind und wo sie gespecihert werden beim downloaden(oder direkt aus temporären variablen ausgelesen falls sowas möglich ist)
 
Mal Butter bei die Fische, über wieviel MB reden wir hier? Du betreibst gerade einen riesigen Aufwand, von dem ich nicht sicher bin ob sich das auszahlt. Wenn neue Spiele hinzukommen muss trotzdem die App geupdatet werden wegen der Spiellogik, also hat es da auch keinen Vorteil.

Ich würde mir lieber mal APK Expansion Files dafür anschauen:
APK Expansion Files | Android Developers
 
Der Code ist ja drauf für die jeweilige spiellogik...nur die ressourcen müssen geladen werden also die bilder und sound dafür. der Code an sich vllt maximal 100 kb und ich dachte so an 1000 spiele also maximal 100 mb und dafür ncoh die ressourcen mit in die apk zu geben würde das wohl in den GB bereich katapultieren:)

und dem user wird die option freigelassen ob er die ressourcen auf dem handy specihern möchte oder nciht um die die möglichkeit zu geben das spiel offline zu spielen und trainieren.

Der ursprüngliche Beitrag von 23:03 Uhr wurde um 23:08 Uhr ergänzt:

ich hab mir für das spiel eine grozugige deadline gesetzt von 6 monaten also es soll schon das nächste große ding werden :)
 
Zuletzt bearbeitet:
Bei 100mb müssetest du sowieso schon mit expansion files arbeiten, das apk limit im Play Store liegt bei 50mb.
Ich würde mir das an deiner Stelle überlegen mit Expansion Files zu arbeiten, dann musst du dir hiermit keinen Stress machen. Außerdem solltest du dir Gedanken machen, was deine Zielgruppe ist. Also wann wird gespielt. Es gibt nichts ärgerlicheres, als ein Spiel (oder eine Spielesammlung) runterzuladen und wenn man es dann unterwegs im Bus spielen will muss die App noch massig Daten über das Telefonnetz laden.

Ansonsten votiere ich auch für http, völlig ausreichend. Du solltest dir auch Gedanken machen wo du die Daten ablegst. Dateileichen auf der SD Karte nach einer Deinstallation deine App nerven auch (gerade in der Menge).

edit: ich weiß nicht ob du das Vollzeit machst und noch Mitstreiter hast, aber 6 Monate sind alles andere als großzügig für "the next big thing" ;) Aber ich bin auf jeden Fall gespannt was das wird.
 
ich werd sie natürlich hier vorstellen sobald sie fertig ist :D

ach vollzeit mach ich nciht und ich bin alleine

du hast auch recht wenn man die ressourcen erst runterladen muss aber ich hoffe es geht relativ zügig da die ressourcen vllt maximal 1 MB groß sind und ich denke das geht in maximal 3-4 sekunden bei normaler verbindung

Der ursprüngliche Beitrag von 23:36 Uhr wurde um 23:39 Uhr ergänzt:

deek schrieb:
Ansonsten votiere ich auch für http, völlig ausreichend. Du solltest dir auch Gedanken machen wo du die Daten ablegst. Dateileichen auf der SD Karte nach einer Deinstallation deine App nerven auch (gerade in der Menge).


die werden doch gelöscht ich möchte ja natürlich mysql oder sqllite oder wie das heißt benutzen das wird es doch bei deinstalation automatisch mit gelöscht oder ist das anders wenn man es auf der SD karte specihert?
 
Ein klares "kommt drauf an" ;)

Wenn du (gerade bei älteren Android Versionen noch möglich) direkt auf den Mount point /mnt/sdcard schreibst, weiß das System nichts davon und die Daten bleiben liegen. Benutzt du die passenden Apis (ich glaube Environment.getExternalFilesDir oder so ähnlich) dann werden die bei der Deinstallation vom System abgeräumt.
 

Ähnliche Themen

Jansenwilson
Antworten
1
Aufrufe
747
swa00
swa00
M
  • maksimilian
Antworten
4
Aufrufe
986
maksimilian
M
R
  • RacingSystems
Antworten
12
Aufrufe
978
jogimuc
J
Zurück
Oben Unten