Eli se mikä on totta en koskaan osaisi tälläistä tehdä, koska en C++ osaa internet yhteyksiä ottaa, mutta jos joku viitsisi antaa oppaita ja kertoa hieman mitä pitäisi tehdä, että saisi updaterin.
Pelini on Alpha Testauksessa ja on erittäin raskasta aina antaa testaajille uudet asennuspaketit, joten olisi paljon helpompaa jos olisi updater jolla sen voisi tehä. Eli olisiko jotain vinkkejä miten voisi toteuttaa? =)
URLDownloadToFile Windows API:lla onnistuu tiedoston lataaminen netistä, ilman että tarvitsee soketteihin perehtyä. Jos pelin on tarkoitus toimia muissakin käyttiksissä, kannattaa tutustua vaikka libcurliin.
Helposti onnistuu myös niin, että laitat pelisi mukaan jonkin paketteja purkavan ohjelman (vaikka bsdtar) ja latausohjelman (vaikka wget) ja teet yksinkertaisen bat-tiedoston, joka näiden avulla lataa ja purkaa uuden version ohjelmasta. Jos mainitut ohjelmat sijaitsevat pelin hakemiston alla esimerkiksi hakemistossa C:\peli\paivitys, päivitys onnistuu tällaisella bat-tiedostolla (joka myös sijaitsee siis samassa hakemistossa):
@echo off REM Siirrytään bat-tiedoston omaan hakemistoon (C:\peli\paivitys\). cd %~dp0 REM Ladataan uusi versio; osoitteen pitää olla aina sama. wget http://sivut/paivitys.tar.bz2 -O paivitys.tar.bz2 REM Puretaan paketti ylempään hakemistoon (eli .. eli C:\peli\). bsdtar -xf paivitys.tar.bz2 -C .. REM Poistetaan paketti; sitä ei tarvita enää. del paivitys.tar.bz2
Tähän bat-tiedostoon voi sitten tehdä ihan normaalisti vaikka pikakuvakkeen työpöydälle.
En ole .bat tiedostoja koskaan tehnyt, mutta nytpä sekin tullut koitettua.. Ohjelma ei kutenkaan toimi ainakaan oikealla tavalla.
@echo off cd %~dp0 wget http://www.pelila.com/tiedostot/World leaders_peli.zip -O World leaders_peli.zip bsdtar -xf World leaders_peli.zip -C .. del World leaders_peli.zip
Eli minulla on kansio:
peli/paivitys
siellä on updateri
sitten on
peli/paivitys/7-zip
Eli minulla oli koneella 7-zip joten ajattelin jospa se toimisi.
sitten on
peli/paivitys/wget
Klikatessani tuplaklikkauksella updater.bat tiedoston päällä konsoli ikkuna välähtää edessä eikä järjestelmä lataa mitään.
Sitten pari muutakin kysymystä. =)
1. Mikä noista -xf ja -c (rivi 4) määrittää, että alemmasta kansiosta haetaan.
2. Miten voin tarkistaa .txt tms tiedostossa oleva teksti (esim versionumero) ja sitten katsoa vaikka .zip paketista pitääkö ladata. Eli esimerkkinä
Käytössä oleva versio 1.0 (tai txt tiedossa se voisi olla 100)
Updater löytää tiedoston: paivitys_102.zip
pitää ladata
E: Pienen järkeilyn jälkeen huomasin, että ei se edes toimisi noin, koska tieto ei päivity käyttäjien tietokoneille, että uusiversio on tämä.
Onko mitään helppokäyttöistä ohjelmointikieltä johon on helppotutustua ja saa internettiin yhteyttä ja ladattua jotain esim python tms?
Järki käteen. Ajattelit käyttää 7-zippiä, joten miksi bat-tiedostossa lukee yhä bsdtar? Muutenkin eri ohjelmat toimivat eri tavalla, ja 7-zip ei varmasti toimi samanlaisilla komennoilla kuin bsdtar. Epäilen, että 7-zipin Windows-versiota ei ehkä edes voi käyttää komentoriviltä.
Toinen yhtä iso virhe on välilyönti tiedostonimessä ja nettiosoitteessa. Älä käytä välilyöntejä, jos ei ole pakko, ja jos on pakko, käytä koko nimen ympärillä lainausmerkkejä. Nettiosoitteessa välilyönnin paikalle kuuluu kirjoittaa "%20".
Voit laittaa bat-tiedoston loppuun rivin "pause
", niin näet, mikä kaikki meni pieleen.
lainaus:
1. Mikä noista -xf ja -c (rivi 4) määrittää, että alemmasta kansiosta haetaan.
Osaatko lukea? Ylempi on eri suunnassa kuin alempi, ja kommentissa lukee, että ylempi on sama kuin .. on sama kuin C:\peli\. Voisit myös lukea bsdtarin ohjeet, joista selviäisi, että parametri -C tarkoittaa, että sitä seuraava parametri kertoo hakemiston, parametri -x tarkoittaa tiedoston purkamista (eXtract) ja parametria -f:ää seuraa purettavan tiedoston nimi. Nämä asiat ovat tietenkin bsdtar-ohjelman omia asetuksia eivätkä takuulla päde esimerkiksi 7-zippiin.
lainaus:
Onko mitään helppokäyttöistä ohjelmointikieltä johon on helppotutustua ja saa internettiin yhteyttä ja ladattua jotain esim python tms?
Montakin, esimerkiksi PHP:llä voisit käyttää suoraan funktioita file_get_contents ja file_put_contents. Monien helppojen kielten ongelmana kuitenkin on, että niiden toimittaminen käyttäjälle on aika hankalaa. PHP:n kohdalla voisit ehkä kokeilla Roadsend PHP:tä. Windows-maailmassa nykyään aika käytännöllisiä vaihtoehtoja ovat myös C# ja VB.Net.
Tai perinteisellä tyylillä laittaa ftp-serverin pystyyn omalle koneelle ja antaa testaajien ladata itse pakettinsa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.