Lua Academy · Oppitunti

Tietopohjainen määritys ja hot reload

Ladatkaa pelitietoja Lua-tiedostoista ja ladatkaa skriptit uudelleen ajon aikana.

Oppitunti 4/413 vaihetta

Tietopohjainen määritys ja hot reload on ilmainen Lua Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Lua Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Lua Academy-kurssilla on yhteensä 4 oppituntia.

Mitä dataohjautuva suunnittelu on?

Dataohjautuvassa suunnittelussa erotetaan mitä tehdään, eli data kuten tilastot, tasot ja asettelut, siitä miten se tehdään, eli koodista ja pelilogiikasta. Datan muuttaminen ei edellytä uudelleenkääntämistä.

Määritysten lataaminen Lua-tiedostosta

Määritystiedosto on Lua-skripti, joka palauttaa taulukon. Lataa se komennolla dofile tai yhdistelmällä loadfile + pcall.

-- config.lua
return {
  playerSpeed = 200,
  gravity     = 980,
  maxEnemies  = 10,
}

Määritysten lukeminen

Isänt skriptissä lataa määritystaulukko ja käytä sitä.

local config = dofile("config.lua")
print(config.playerSpeed)  -- 200

Määritysten lataaminen hiekkalaatikossa

Turvallisuuden vuoksi lataa määritykset rajoitetussa ympäristössä, jotta haitallinen koodi ei voi kutsua funktiota os.execute tai muita vaarallisia funktioita.

local function loadConfig(filename)
  local chunk, err = loadfile(filename)
  if not chunk then error(err) end
  local env = {math = math, table = table}
  setfenv and setfenv(chunk, env) or _ENV  -- 5.1 vs 5.2+
  return chunk()
end

Hot-reloadin yleiskatsaus

Hot-reload mahdollistaa datan tai koodin muuttamisen pelin ollessa käynnissä. Tämä nopeuttaa kehityskierrosta huomattavasti: muuttakaa arvoa ja nähkää tulos heti ilman uudelleenkäynnistystä.

Tiedostomuutosten havaitseminen

Käytä komentoa os.difftime(os.time(), lastModified) tai tarkkaile tiedoston muokkausaikaa C-laajennuksella tai I/O-kikalla havaitaksesi määritystiedoston muuttumisen.

Määritysten uudelleenlataaminen

Kun muutoksia havaitaan, lataa tiedosto uudelleen ja päivitä käytössä oleva määritystaulukko paikallaan, jotta kaikki taulukkoon viittaavat näkevät uudet arvot.

local function hotReload(config, filename)
  local ok, newCfg = pcall(dofile, filename)
  if ok and type(newCfg) == "table" then
    for k, v in pairs(newCfg) do config[k] = v end
    print("Config reloaded")
  else
    print("Reload error:", newCfg)
  end
end

Lua-moduulien uudelleenlataaminen

Poista moduuli taulukosta package.loaded ennen kuin kutsut require-komentoa uudelleen pakottaaksesi uuden latauksen.

package.loaded["mymodule"] = nil
local mymodule = require("mymodule")

Kenttädata Luasta

Määritä tasot Lua-taulukkoina: huoneiden asettelut, vihollisten sijoittelut ja laukaisualueet. Lataa ne ajon aikana komennolla dofile nopeaa kehityskierrosta varten.

-- level1.lua
return {
  name = "Forest",
  enemies = {
    {type="goblin", x=100, y=200},
    {type="troll",  x=300, y=150},
  },
  music = "forest_theme.ogg",
}

Validointi

Kun määritykset on ladattu, validoi vaaditut kentät ja tyypit. Anna selkeät virheilmoitukset puuttuvista tai virheellisesti muodostetuista tiedoista.

Versiotunnisteet

Lisää määritystiedostoihin version-kenttä. Hylkää yhteensopimattoman version sisältävät tiedostot, jotta vanhentunut data ei aiheuta huomaamattomia virheitä.

Hot-reloadia koskeva kysymys

Miten pakotat Luan lataamaan välimuistissa olevan moduulin uudelleen?

Kertaus: dataohjautuvat määritykset ja hot-reload

Lataa pelidata Lua-tiedostoista komennoilla dofile/loadfile. Käytä hiekkalaatikkoympäristöjä epäluotettaville määrityksille. Toteuta hot-reload tarkkailemalla tiedostojen muokkausaikoja ja tyhjentämällä package.loaded moduulien uudelleenlatausta varten.

Aloita maksutta

Opi Lua tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
40
Oppitunnit
159

Usein kysytyt kysymykset

Onko oppitunti ”Tietopohjainen määritys ja hot reload” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Lua Academy-oppimispolun 3 oppituntia, myös oppitunnin “Tietopohjainen määritys ja hot reload”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Lua Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Tietopohjainen määritys ja hot reload”?

Ladatkaa pelitietoja Lua-tiedostoista ja ladatkaa skriptit uudelleen ajon aikana. Harjoittelet Lua Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Lua Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Lua Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Tietopohjainen määritys ja hot reload”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Lua Academy-oppitunnilla?

Kyllä. Jokainen Lua Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Tapahtumajärjestelmät Luassa
  2. Komponenttipohjainen skriptaus
  3. Tekoälyn käyttäytyminen tilakoneilla
  4. Tietopohjainen määritys ja hot reload
← Takaisin: Lua Academy