Hoe om Game Data in die Corona SDK te laai en stoor

Hoe om SQLite te gebruik om Game Data en instellings te berg

Een ding byna elke program en speletjie het gemeen dat dit nodig is om data te stoor en te herwin. Selfs die mees eenvoudige speletjie kan SQLite gebruik om die programversieningsnommer te stoor, wat gebruik kan word om versoenbaarheid te verseker wanneer opgraderings uitgevoer word, of eenvoudige instellings soos om die spel se klank aan of af te skakel.

As jy nog nooit veel werk met databasisse gedoen het of die databasisfunksies in die Corona SDK gebruik het nie, moenie bekommerd wees nie. Dit is eintlik 'n redelik eenvoudige proses, te danke aan die krag van LUA en die SQLite-databasis-enjin wat in die Corona SDK gebruik word. Hierdie handleiding sal deur die proses van die maak van 'n instellings tabel en beide die berging en herwinning van inligting van dit. Hoe om iPad-programme te ontwikkel.

Hou ook in gedagte dat hierdie tegniek verder kan gaan as gebruikersgebaseerde instellings gestoor word. Byvoorbeeld, wat as jy 'n speletjie het wat gespeel kan word met verskillende spelmodi soos die "storie" af en "arcade" af. Hierdie instellings tabel kan gebruik word om die huidige modus te stoor. Of enige ander stuk data wat jy wil aanhoudend bly, selfs as die gebruiker uit die spel gaan en dit herlaai.

Stap een: Initialiseer die databasis en skep die instellings tabel

Die eerste ding wat ons moet doen, is om die SQLite-biblioteek te verklaar en ons app te vertel waar die databasislêer moet gevind word. Die beste plek om hierdie kode te plaas, is reg bo-aan die hoof.lua-lêer saam met die ander vereis stellings. Die databasis lêer sal geskep word as daar niks gevind word nie, en ons sal dit stoor in die Dokumente-lêergids sodat ons daarvan kan lees en daaraan skryf.

vereis "sqlite3"
plaaslike data_path = system.pathForFile ("data.db", system.DocumentsDirectory);
db = sqlite3.open (data_path);

Let op hoe die "db" veranderlike nie gelokaliseer word nie. Ons het dit gedoen om seker te maak dat ons die databasis regdeur ons projek kan oopmaak. U kan ook 'n spesifieke .lua-lêer vir alle databasisfunksies skep en die databasis gelokaliseer na daardie lêer.

Vervolgens moet ons die databasis tabel opstel wat ons instellings sal stoor:

local sql = "CREATE TABLE IF NIE EXISTS instellings (naam, waarde);"
db: exec (SQL);

Hierdie stelling skep ons instellings tabel. Dit is goed om dit te hardloop elke keer as die program laai, want as die tabel reeds bestaan, sal hierdie stelling niks doen nie. U kan hierdie stelling reg onder waar ons die databasis of in die funksie wat u program opstel, laat loop. Die belangrikste vereiste is om (1) daardie stellings te doen elke keer wanneer die program geloods word en (2) dit uit te voer voordat enige oproepe instellings laai of stoor.

Stap twee: Stoor instellings na die databasis

funksie stelSetting (naam, waarde)
sql = "WIS VAN instellings WAAR naam = '" .. naam .. "'";
db: exec (sql)

sql = "INSERT IN instellings (naam, waarde) WAARDES ('" ..name .. "'," .. waarde .. ");";
db: exec (sql)
einde

funksie stelSettingString (naam, waarde)
setSetting (naam, "" .. waarde .. "");
einde

Die setSetting-funksie verwyder enige vorige instellings wat aan die tabel gestoor is en voeg ons nuwe waarde in. Dit sal met algetalle en snare werk, maar om 'n snaar te stoor, vereis enkele aanhalingstekens om die waarde, dus het ons die setSettingString-funksie gebruik om daardie ekstra bietjie werk vir ons te doen.

Stap drie: laai instellings van die databasis

funksie getSetting (naam)

plaaslike sql = "SELECT * VAN instellings WAAR naam = '" .. naam .. "'";
plaaslike waarde = -1;

vir ry in db: nrows (sql) doen
waarde = row.value;
einde

terugkeer waarde;
einde

funksie getSettingString (naam)
plaaslike sql = "SELECT * VAN instellings WAAR naam = '" .. naam .. "'";
plaaslike waarde = '';

vir ry in db: nrows (sql) doen
waarde = row.value;
einde

terugkeer waarde;
einde

Soos hierbo het ons die funksies in twee weergawes verbreek: een vir heelgetalle en een vir snare. Die hoofrede waarom ons dit gedoen het, is dat ons dit met spesifieke waardes kan initialiseer as daar nie 'n instelling in die databasis bestaan ​​nie. Die getSetting-funksie sal 'n -1 behaal, wat ons sal laat weet dat die instelling nie gestoor is nie. Die getSettingString sal 'n leë string teruggee.

Die getSettingString funksie is heeltemal opsioneel. Die enigste verskil tussen dit en die normale getSetting-funksie is wat terugbesorg word as niks in die databasis gevind word nie.

Stap vier: Gebruik ons ​​instellings tabel

Noudat ons die harde werk gedoen het, kan ons instellings maklik na 'n gelokaliseerde databasis laai en stoor. Byvoorbeeld, ons kon die geluid stuit met die volgende stelling:

setSetting ( 'sound', vals);

En ons kon die instelling in 'n globale funksie gebruik om geluide te speel:

funksie playSound (soundID)
as (getSetting ('klank')) dan
audio.play (soundID)
einde
einde

Om die klank weer aan te skakel, stel ons eenvoudig die klankinstelling waar:

setSetting ( 'sound', waar);

Die lekker deel oor hierdie funksies is dat jy snare of heelgetalle kan stoor na die instellings tabel en hulle maklik kan ophaal. Dit laat jou toe om iets te doen om 'n speler se naam te red om hul hoë telling te slaan.

Corona SDK: hoe om grafika te laai, grafieke te skuif en grafieke na die voorkant te bring