Javascript game loader
2013-11-16T23:43:19+01:00
2013-11-18T08:42:40+01:00
2022-07-19T02:47:10+02:00
  • Betöltéshez egy tipp:

    Ha a játék 2D része, menüje mondjuk CANVAS-on fut JavaScript-el, akkor arra nyomnék egy "LOADING.." feliratot.
    JS-ben képek/hangok elérhetőségét beállítanám (kep.src="valami.png"). Az objektum ONLOAD eseményében egy változó értékét 1-re állítanám, ami jelzi, hogy betöltődött a cucc.
    Ha van mondjuk 30 kép, akkor tömbben tárolnám ugye az adatokat.

    A böngésző töltögeti őket, a JS meg fut tovább.
    A "loading" képernyőn meg ellenőrizném, hogy az összes képhez tartozó változóm 1-es értéket kapott e. Ha igen, akkor letöltődött minden, mehet tovább a játék, egyébként marad a töltő képernyő. Esetleg a 0-ák és 1-esek arányának megfelelően megjelenítenék egy csíkot, vagy kiírnék egy százalékot.

    (ui: nem teszteltem a módszert, csak egy tipp.)
    Mutasd a teljes hozzászólást!
  • Akár nyilvánosan, akár csak pár megbízható embernek megadhatod a játék linkjét, hogy néha nézzenek rá.
    Vagy ha feltétlenül több ember kell a játékhoz, akkor megadott időpontra beszervezhetsz embereket hogy teszteljék.

    A program felépítését, kódját te ismered, így kívülállóként nehéz bármit megítélni, hogy az jó lesz vagy sem.

    Amíg a játékosok várnak egymásra, lehet hogy simán letöltődik a játék, már ha akkor már tudod, hogy mit kell tölteni.

    Tapasztalatból annyit azért elmondanék, hogy "első játék" esetén az ember biztos hogy nem tud mindent profin megvalósítani. Remélhetőleg jól sikerül a játék, de gondolj arra, hogy a második, harmadik még jobban fog sikerülni, még akkor is ha ugyanezt a játékot írod újra.
    Így ha marad ebben valami gyenge pont, azt nem olyan vészes, mert ha már használható a játék akkor is lehet javítani. Vagy lehet készíteni egy második részt, profibb kóddal.
    Mutasd a teljes hozzászólást!
  • A játék már játszható 2d-ben, ahol is csúnya megoldással a weblap megnyitásakor töltenek be a képek hangok egy rejtett divben.

    A 3d rész valóban gyerekcipőben (nem használható), eddig csak elkülönített tesztek vannak.

    Ha gondolod, és lesz más részéről is érdeklődés, akkor a héten, de legkésőbb jövő héten egy előre megbeszélt időpontra elérhetővé teszem a játékot.
    Mutasd a teljes hozzászólást!
  • ui: A böngésző nem buta. Amit egyszer már letöltött és újra szükség van rá, azt nem tölti le újra.


    Egy darabig. A cache el jól lehet játszani, ha van saját szerver (VPS) akkor fel lehet tolni az expirest jó magasra. Mellé meg megírni egy kényszerítést is ha adatokat kell cserélni.
    Mutasd a teljes hozzászólást!
  • Szavaidból azt veszem ki, hogy még gyerekcipőben jár a játék.

    Ha még nem tudod betölteni az "egyéb" fájlokat, akkor gondolom megjeleníteni sem tudod, így meg még játék sem nagyon van.

    "utolsó" lehetőségként az is működhet, hogy AJAX-al töltöd az adatokat. JavaScript-ben megkapod a fájl tartalmát mondjuk szövegváltozóba és abból visszaállítod a kívánt adatokat.
    Erre is biztos vannak profi megoldások.

    De ha lesz valami 3D motorod (hozott, vagy saját), ahhoz úgyis adott lesz, hogy milyen adatokat kell betölteni és hová, hogyan.

    ui: A böngésző nem buta. Amit egyszer már letöltött és újra szükség van rá, azt nem tölti le újra.
    De ha első játék, érdemes a kisebb fájlméretre törekedni. (Kis polygonszám, kisebb méretű textúrák, jobban tömörített zenék.)

    Az meg elkerülhetetlen, hogy egyik kliensnek várnia kelljen a másikra valamennyit. Legfeljebb addig inaktív lenne az ő karaktere, vagy gép játszana helyette.
    Mutasd a teljes hozzászólást!
  • Ha minden felhasználóval 20MB-30MB adatokat akarsz letöltetni minden játéknál

    Ezért vetettem fel azt, hogy azt a 20-30mb-ot letöltetem a klienssel, mármint egyszer maradandóan. Azt nem tudom, hogy ez mennyire elfogadott.

    @Mekkelek
    A betöltésre ilyesmi megoldásokat találtam. Ez jó képekre, valamint meg tudom írni hangokhoz is, de egy .obj, .mtl, .dae stb kiterjesztésekre nem hiszem, hogy működik a new Image() vagy a new Audio() .

    Nem első játékom, írtam már jópár kisebbet pl amőbát, de ez lesz az első komolyabb játékom.

    Igazából már szinte kész és játszható, csak szeretném kiegészíteni, hogy ne legyen olyan kis egyszerű. Így jött készítés közben az az ötlet, hogy rakhatnék bele 3d-t. Bevallom, amikor elkezdtem meg sem fordult a fejemben.

    A 2d / 3d előny és hátrányba konkrétan még bele sem gondoltam (leszámítva a játékélményt), köszönöm a hasznos tanácsot
    Mutasd a teljes hozzászólást!
  • hogyan ellenőrzöm, hogy betöltődött-e teljesen egy nem kép / hang fájl.


    Továbbra is az a kérdés, hogy MI és HOGYAN tölti be ezt a fájlt.
    Ha te magad, akkor neked kéne azt tudni, hogy megérkezett e már.
    Ha valami játékmotort használsz, akkor talán az.

    Ha közvetlenül hozzáférsz az adataihoz, akkor ellenőrizheted, hogy ott van e, helyes e ami ott van.

    ui: ha első játékod akkor lehet kicsit egyszerűbb verziót kellene készíteni. Aztán ha az üzembiztosan működik, akkor lehet nagyobb változatban gondolkodni.
    Nézd meg a PSX1-es játékokat, ott kevesebb mint 2MB-os egy-egy pálya, játékrész, és mégis vannak szép dolgok.

    Az 50 MB egy dolog, kérdés, hogy egy "menetre" ebből mennyit kell betöltenie a kliensnek. Mert ha egy játékhoz nem kell csak 1-2 Mega, akkor azt menet közben is töltheti. Ha mind az 50 Mega kell, akkor viszont tényleg sok lesz a töltögetés.
    Érdemes elgondolkodni, hogy ne böngészőben fusson a játék hanem letölthető legyen.
    A több játékot én is úgy értettem, hogy játékon belül "játék" futhat, itt a 2D és 3D megjelenítést is érthetjük külön játéknak.
    2D azért nem annyira gagyi, bár 3D-re biztos jobban harap a közönség. Abba azért belegondoltál, hogy ha többen játszanak -feltételezem egymás ellen- akkor nem élvez e előnyt az, aki 2D-ben, vagy 3D-ben játszik (pl jobban látja a pályát stb).
    Mutasd a teljes hozzászólást!
  • Nekem az nem világos, hogy miért akar mindenki mindent böngészőre megcsinálni!

    Egy ilyen kategóriás dolgot szerintem sokkal jobb desktop alkalmazásként megvalósítani!

    Ha minden felhasználóval 20MB-30MB adatokat akarsz letöltetni minden játéknál, akkor rohadt nagy adatforgalmad lesz már kevés felhasználó mellett is!
    Ha van vas mögötte és a szolgáltató is hagyja, akkor működhet egy darabig, de hogy egy bizonyos határ fölött nagyon nem lesz ez így járható (nem költséghatékony), az biztos!

    Mutasd a teljes hozzászólást!
  • Tudtam, hogy ez lesz...
    Egy társalgótéma, ami ki fog halni, úgy mint az összes többi

    Szóval, erről lenne szó. Amit érdemleges megemlíteni róla még, hogy azóta meggondoltam magam, és mégis nodejs alapú lesz. Maga a vázlat megvan, a függvények megírva, működnek. Most állok neki a kiegészítéseknek.

    a játék indítása előtt a játékosok a "szobában" választanak, hogy mivel szeretnének menni

    Ezt hülyén fogalmaztam. Ugyan azt a játékot fogják játszani, mindenkinek ugyan az fog megjelenni, annyi különbséggel, hogy kinek 2d kinek 3d-ben fog megjelenni. Azt, hogy "mivel mennek", úgy értettem, hogy pl ha valaki ember mágussal, másik pedig ork harcossal játszik, akkor nem fogom letöltetni velük a törpökhöz tartozó hozzávalókat. Vagyis ez egy játék.

    Az például, ha 4-ből 3-an 2d-ben játszanak, egy pedig 3d-ben, akkor három ember vár egyet, mert neki tovább tart betölteni.
    Az előre letöltést azért gondoltam, mert a 3d-s animált modellek mérete becsült számításaim szerint elérheti az 50mb-ot is. Ennél a pontnál erősen elgondolkodtam rajta, hogy mégsem lesz benne 3d lehetőség, de a másik oldalon meg ott van, hogy véleményem szerint a 2d gagyi.



    Ez volt az a rész amit társalgóba szántam, a tudástárba felrakott kérdésem pedig arra irányult, hogy hogyan ellenőrzöm, hogy betöltődött-e teljesen egy nem kép / hang fájl.
    Mutasd a teljes hozzászólást!
  • Ha különböző játékok vannak benne, és az egyes játékokhoz tartozó tartalmat még külön le kell tölteni, akkor lehet gondolkodni, hogy hogy éri meg.

    -Az egész játékot, minden tartalmat letölteni és onnantól gyors a játék, viszont sok fölösleges dolgot is letölt a játékos.
    -Csak annyit letölteni amire éppen szükség van. Így gyorsabban indul a játék, de játékok/pályák között töltöget kicsit.

    A játék méretétől függ szerintem, hogy mit érdemes használni. Ha mondjuk 1MB vagy alatta van, akkor letöltheted egyben. 5-10 MB körül már nem mindenki fogja végigvárni, a fölött meg főleg.

    ui: Szerintem fölösleges % pontosan kijelezni, hogy hol tart a töltés. Bőven elég lehet, ha van mondjuk 12 fájl, akkor egy csíkot felosztasz 12 részre és a letöltött fájlok darabszámát jelzed ott.
    Sok profi játék sem csinál mást, egyik helyen áll a csík aztán hirtelen megszalad. Ez nem feltétlenül rossz. Esetleg fájlméret alapján "súlyozhatod" őket.

    "Egyéb" adatoknál meg az a kérdés, hogy hogyan töltöd be azokat, hiszen abból derül ki, hogy miről értesülsz, az egész fájl betöltéséről, esetleg "minden byte-ról", vagy semmiről.

    Gyakorlott programozó szerintem tud saját eljárást írni ezekre, kár kész megoldásokat keresni.
    Mutasd a teljes hozzászólást!
  • Egy böngészős multiplayer játékon dolgozok, amihez elég sok kép, hang és egyéb társul. Ezeket célszerű lenne közvetlen a játék indulása előtt betölteni, az alábbi okok miatt:
    - mi van akkor, ha a user meggondolja magát és mégsem akar játszani? fölöslegesen töltötte be az anyagot
    - elég rossz benyomást keltene a játék, ha sokáig töltene a weblap
    - a játék indítása előtt a játékosok a "szobában" választanak, hogy mivel szeretnének menni, ezért elég csak az azokhoz tartozó hozzávalókat betölteni

    Továbbá szeretném jelezni, hogy kinek hol tart a töltés. Senki sem szereti ha nem tudja mennyit kell még várni.

    Több helyen utánajártam, és mindig ugyanazt a 2 dolgot találtam:
    - töltsd le az előre megírt loadert (nope)
    - minden betöltendő elemhez fűzz hozzá egy eventlistenert, és vizsgáld, hogy feltöltődött-e

    Szép megoldást sehol sem találtam. A töltés állapotának százalékos kijelzésével már nem is éri meg foglalkozni. Oké, ez így még elmegy, hogy akkor darabra szépen kijelzem, esetleg súlyozással megfűszerezve, de

    választási lehetőség lesz, hogy 2d / 3d-ben szeretne a user játszani. 3d-nél nem csak képek és hangok vannak, arra milyen loadert használjak? Van esetleg olyan megoldás, ami mindegyikre jó?


    Valószínűleg a közeljövőben nyitok egy társalgótémát is ezzel kapcsolatban. Kifejtősebb lenne, hogy mennyire lenne elfogadott az a megoldás, hogy előre letöltetem a "hozzávalókat", és a kliens gépéről azonnal töltene. Csak az a baj, hogy a társalgótémákat senki sem olvassa.
    Mutasd a teljes hozzászólást!
abcd