Skip to main content

코로나 SDK (LUA / SQLite)에 게임 데이터를로드하고 저장하는 방법

The future of gaming at Google (유월 2025)

The future of gaming at Google (유월 2025)
Anonim

거의 모든 앱과 게임에서 공통점이있는 한 가지는 데이터를 저장하고 검색해야한다는 것입니다. 가장 간단한 게임 일지라도 SQLite를 사용하여 앱 버전 번호를 저장할 수 있습니다. 앱 버전 번호는 업그레이드를 수행 할 때 호환성을 보장하거나 게임 소리 켜기 / 끄기와 같은 간단한 설정을 저장할 수 있습니다.

데이터베이스로 많은 일을 해본 적이 없거나 Corona SDK의 데이터베이스 기능을 사용한 적이 있다면 걱정하지 마십시오. LUA와 Corona SDK에 사용 된 SQLite 데이터베이스 엔진의 성능 덕분에 실제로는 비교적 간단한 프로세스였습니다. 이 튜토리얼은 설정 테이블을 만들고 그 테이블에서 정보를 저장하고 검색하는 과정을 안내합니다.

이 기술은 사용자 기반 설정을 저장하는 것 이상의 기능을 할 수 있습니다. 예를 들어, "스토리"모드 및 "아케이드"모드와 같은 다른 게임 모드를 사용하여 재생할 수있는 게임을 가지고 있다면 어떻게 될까요? 이 설정 테이블은 현재 모드를 저장하는 데 사용할 수 있습니다. 사용자가 게임을 종료하고 다시 시작하더라도 영구적으로 유지하려는 다른 데이터 조각.

데이터베이스 초기화 및 설정 테이블 작성.

우리가해야 할 첫 번째 일은 SQLite 라이브러리를 선언하고 응용 프로그램에 데이터베이스 파일을 찾을 위치를 알려주는 것입니다. 이 코드를 넣는 가장 좋은 장소는 다른 require 문과 함께 main.lua 파일의 맨 위에 있습니다. 아무 것도 발견되지 않으면 데이터베이스 파일이 생성되고 문서 폴더에서 해당 파일을 읽고 쓸 수 있습니다.

"sqlite3"이 필요합니다. data_path = system.pathForFile ( "data.db", system.DocumentsDirectory); db = sqlite3.open (data_path);

"db"변수가 어떻게 현지화되지 않았는지 확인하십시오. 우리는 프로젝트 전반에 걸쳐 데이터베이스에 액세스 할 수 있도록하기 위해이 작업을 수행했습니다. 또한 모든 데이터베이스 기능에 대한 특정 .lua 파일을 작성하고 데이터베이스를 해당 파일에 대해 로컬화할 수 있습니다.

다음으로 설정을 저장할 데이터베이스 테이블을 만들어야합니다.

local sql = "CREATE TABLE가 존재하지 않으면 설정 (이름, 값);"db : exec (sql);

이 문은 설정 테이블을 생성합니다. 테이블이 이미 존재하면이 명령문은 아무 것도하지 않기 때문에 앱이로드 될 때마다 실행해도됩니다. 이 선언문은 데이터베이스를 선언 한 위치 또는 앱을 실행하는 함수에서 실행할 수 있습니다. 주요 요구 사항은 (1) 앱이 실행될 때마다 해당 명령문을 실행하고 (2) 설정을로드하거나 저장하기 전에 호출을 실행해야합니다.

설정을 데이터베이스에 저장합니다.

함수 setSetting (name, value) sql = "DELETE FROM 설정 WHERE name = '".. name .. "'"; db : exec (sql) sql = "INSERT INTO 설정 (이름, 값) VALUES ( '"..name .. "',".. value .. ");"; db : exec (sql) end

함수 setSettingString (name, value) setSetting (name, " '".. value .. "'")); end

설정 기능은 테이블에 저장된 이전 설정을 삭제하고 새 값을 삽입합니다. 정수와 문자열 모두에서 작동하지만 문자열을 저장하면 값 주위에 작은 따옴표가 필요하므로 setSettingString 함수를 사용하여 우리를 위해 추가 작업을 수행했습니다.

데이터베이스에서 설정로드.

함수 getSetting (name)

로컬 sql = "선택 * FROM 설정 이름 = '".. 이름 .. "'"; 국부 값 = -1;

db의 행 : nrows (sql) do value = row.value; 종료

반환 값; 끝

function getSettingString (name) local sql = "SELECT * FROM 설정 이름 = '".. 이름 .. "'"; 지역 값 = '';

db의 행 : nrows (sql) do value = row.value; 종료

반환 값; 끝

위와 같이 함수를 두 개의 버전으로 나누었습니다. 하나는 정수이고 다른 하나는 문자열입니다. 우리가 해본 주된 이유는 데이터베이스에 설정이 없으면 특정 값으로 초기화 할 수 있기 때문입니다. getSetting 함수는 -1이 반환되어 설정이 저장되지 않았다는 것을 알려줍니다. getSettingString은 빈 문자열을 반환합니다.

getSettingString 함수는 완전히 선택 사항입니다. 일반적인 getSetting 함수와 유일한 차이점은 데이터베이스에서 아무것도 발견되지 않으면 반환되는 값입니다.

설정 테이블 사용.

이제 우리는 열심히 작업 했으므로 로컬 데이터베이스에 설정을 쉽게로드하고 저장할 수 있습니다. 예를 들어 다음 문으로 사운드를 음소거 할 수 있습니다.

setSetting ( '소리', 거짓);

그리고 우리는 사운드를 재생하는 전역 함수에서 설정을 활용할 수 있습니다.

function playSound (soundID) if (getSetting ( 'sound')) then audio.play (soundID) endend

사운드를 다시 켜려면 단순히 사운드 설정을 true로 설정하면됩니다.

setSetting ( '사운드', true);

이 함수들에 대한 좋은 점은 문자열이나 정수를 설정 테이블에 저장하고 쉽게 검색 할 수 있다는 것입니다. 이렇게하면 플레이어의 이름을 저장하는 것부터 높은 점수를 저장하는 것까지 할 수 있습니다.