본문 바로가기
유니티5 독학 & 게임 제작

유니티5 독학하기 그 20번째 걸음-게임서버 작업하기 part2

by 인터넷떠돌이 2017. 7. 1.
반응형

안녕하세요?


지난번 포스팅에서 userinfo.php를 시작하기 직전에 끊었는데, 아무튼 이번 포스팅에서는 그 부분부터 시작해 보도록 하겠습니다. 먼저 노트패드++를 열도록 합니다.



먼저 위와 같이 코딩을 하여서, 데이터 베이스에 접속하고, 사용자의 정보가 있는지를 확인하는 코드입니다. 이어서 비어있는 else다음의 {}안에다가 아래와 같이 코딩을 해 줍니다.



여기서 if구문으로 접속에 에러가 있으면 에러 메세지를 출력하고, 아닐 경우를 이제 코딩하는 것인데, sprintf()는 문자열을 만들어 주는 함수라고 합니다. 즉 SQL쿼리를 통해서 select로 검색작업을 하는데, 이걸 php상에서 해준다고 보시면 됩니다. 즉


$query=sprintf("select*from userinfo where account ='%s'",$account);


이 구문을 이용해서 페이스북에서 받은 아이디를 가지고서 검색을 하라는 명령어가 됩니다. 이어지는 구문은 다음과 같은 의미를 지니고 있습니다.


$db->query($query); 


이 명령어로 아까 위에서 만들어준 검색어를 실행하라는 의미가 됩니다. 그리고 이어지는 if구문에서는 검색결과가 있으면 당연 0을 초과하는 값이 나올 것이기에 다음과 같은 코딩을 하여서 데이터 베이스로 부터 저장된 값을 가지고 오게 됩니다.



이렇게 해서 계정이면 계정, 그외 각종 게임에 관련된 데이터면 데이터를 데이터베이스에서 해당되는 필드로 가지고 오라는 명령이 됩니다. 그럼 검색된 결과가 0이라서 없으면?



insert라는 명령어를 써서, 여기 없는 데이터를 저장하라는 명령어를 코딩하였고, 이 명령어가 실행이 되도록 하였습니다. 그리고 이어서 close()라는 명령어를 통해서 모두 닫아주도록 명령어를 내렸습니다. 



마지막으로 userinfo.php가 제대로 동작이 되었다면, 여기서 echo라는 명령어를 통해서 json형식의 데이터를 제대로 화면상에서 출력하라는 명령어가 됩니다. 이제 이게 제대로 작동하는 지를 알아보기 위해서는 우선 FTP상에 올려둘 필요가 있습니다.



알FTP를 이용해서 먼저 제 계정에다가 올려두도록 해 봅니다.



1차 시도는 오류가 발생하였습니다. 아무래도 7번 라인에 무언가 이상이 발생한 것 같습니다. 다시금 노트패드++를 실행시켜서 확인해 보도록 하겠습니다.



7번 라인에 오타로 인해서 에러가 발생한 것이였습니다. 이제 오타를 수정했으니, 한번 더 알FTP로 업로드 시킨다음 다시 인터넷 익스플로러로 접속해서 시도를 해 보았습니다.



이번에야 발로 제대로 된 메세지가 뜨는 것을 확인할 수 있었습니다. 그럼 이제는 제 계정이 있는 호스팅어 계정으로 직접 데이터 베이스 안으로 들어가, 제대로 된 유저 정보가 생성이 되었는지 여부를 살펴 보겠습니다.



이전에는 없던 유저의 정보가 생성된 것을 확인할 수 있었습니다. 이것으로 어떻게 해당하는 작업이 끝나기는 했고, 다음은 유니티5에서 빌드한 게임에서 접속하였을 때, 제대로 된 작업이 되는 지 여부를 알아보고자 합니다.



우선 이전에 있던 TitlePlay.cs를 위와 같이 코딩을 하였는데, WWWForm 부터 새로 추가된 구문입니다. 그런데 저 위 스크린샷에 보이는 url이 어떻게 처리할 방법이 없어서, 계속 에러가 뜬 상태로 놔두어야 했는데......



나중에 알고보니, 이 부분은 TitlePlay.cs가 아니라 PalyerData.cs라는 스크립트 안에서, PlayerData라는 클래스 안에서 정의를 내려야 한다는 것이었습니다.

아무나 접근을 할 수 있도록 public이라고 타입을 설정해 두도록 하고, 다음에는 static을 항상 홈페이지 주소에는 붙여야 합니다. 이런 과정까지 끝내고 나서야 url에 있는 에러를 아래와 같이 없앨 수 있었습니다.



이제 url에 있던 에러도 사라진 것을 볼 수 있었습니다. 그럼 다음으로 가서 Bloolagoon Json이라는 에셋을 다운로드 해야 합니다.



이 에셋은 무료이며, JSON데이터를 파싱하기 위해서 설치하는 에셋입니다. 일단 설치하는 단계는 정말로 쉬웠습니다. 



TitlePlay.cs에다가 새로 들여온 에셋을 활용하기 위해서 위와 같이 맨 위에다가 타이핑을 하도록 해 줍니다. 



다음 MyData()안에다가 위 스크린샷에 붉은색 박스를 친 안쪽의 내용을 코딩하기 시작합니다. 일단 위 스크린샷을 찍은 시점에서는 에러가 있는 것으로 보여지지만, 이게 적용되는 데 시간이 걸려서 이런 것인지, 지금은 에러가 된 상태로 이렇게 있습니다만, 다음 스크린샷에서 제대로 대문자로 고치고 에러도 지웠습니다.



아무튼 새 에셋이 적용되는데 시간이 걸려서 이러는 것인지 모르겠지만, 일단 조금은 시간이 걸려서 여려번 입력하고 나서야 이렇게 에러가 없는 상태로 코딩이 되는 데 성공했습니다. 여기서는 서버에서 전송된 www.text라는 값을 가지고 와서, 그 안에서 error라는 키를 얻어 오라는 의미가 됩니다.



다음은 위에서 없었던 LoadUserInfo()라는 메서드의 내용을 코딩한 것입니다. 여기서는 당연 서버로 부터 저장된 값을 불러오라는 명령어가 됩니다. 물론 처음으로 등록이 된 것이라면 이 값을 등록하라는 명령어도 겸하고 있다고 합니다. 아무튼 간에 여기까지 코딩을 하였으니, 다음 단계로 들어가 보도록 하겠습니다.



일단 안드로이드 앱으로 빌드할 것인데, 실행을 용이하게 하기 위해서 블루스택도 미리미리 틀어 놓도록 합니다.



그런데 위와 같은 에러가 떴습니다. 에러의 내용인즉, Unable to sigh application; please provide passwords! 라고 떴습니다. 이 에러의 내용은 PlayerSettings안에 들어가서 Keystore의 내용이 제대로 되지 않았다는 말입니다.



일단 Add Open Scenes를 눌러서, 제가 이전에 만들어 둔 Rank라는 씬을 띄워서, 이걸 만들도록 하고, 다음으로는 아래에 있는 Player Settings를 누르도록 합니다.



위 스크린샷에 나와 있는 것처럼, Keystore에 있는 암호를 입력해야 하며, 여기다가 Key의 패스워드도 지정을 해야만 합니다. 이런 작업을 끝냈다면, 안드로이드 앱으로 빌드할 수 있습니다.



일단 블루스택 내에서 제대로 실행이 된 것을 볼 수 있었습니다. 아직까지는 뭘 특별하게 입력한 것이 없기 때문에, 뭐하나 뜬느 것이 없는 것을 볼 수 있는데, 일단 실행은 하였습니다. 이제 제대로 데이터 베이스에 계정이 만들어 진 것은 맞는지 알아보기 위해서, 호스팅어로 접속해서 데이터 베이스 안으로 들어가 보겠습니다.


 

이전에는 없던 유저가 데이터 베이스에 추가된 것을 볼 수 있었습니다. 이것으로 어떻게 해서 랭크씬을 만들어서 실행하면, 웹 서버를 이용해서 유저의 데이터를 등록하는 것 까지 해보았습니다. 하지만 아직 배워야 할 것이 많다는 생각이 들길에, 다음 포스팅에서는 챕터9를 실습하고 그 내용을 포스팅 해 보겠습니다.

반응형