팀으로써 만들기는 3번째 게임이고요. 출시로는 첫 번째 게임이네요.

만들 때마다 조금씩 나아지고는 있지만 코드의 양이 점점 많아지고 기능을 이것저것 추가하다 보면 구조적으로 부족하단 것을 많이 느낍니다. 여전히 공부를 많이 해야겠네요.

앞서 게임의 흐름도에 대해 글을 올렸지요. 그 흐름대로 코드를 띄어 설명을 하고 싶지만 스크립트 1~3개를 왔다 갔다 하며 보는 게 지저분할 것 같아 하나씩 올리고 설명하려 합니다.

 

 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    private void Start()
    {
        GameInit();
 
        uiManager.StartInit();
        uiManager.LanguageSetting(PlayerPrefs.GetInt("lg"));
    }
 
    private void Update()
    {
        if (spawnTime && count > 0)
            StartCoroutine(SpawnCoroutine()); //적 스폰
        if (catTalk)
            CatScript();
    }
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
 

 

Start입니다. 이 전에 XML에서 읽어와 게임에 필요한 요소들을 PlayerPlayerPrefs에 값을 저장했습니다. 

기본적인 초기화 과정을 진행하고 있습니다.

Update에서는 2가지 일을 하는데 하나는 냥냥이의 대사를 몇 초마다 주기적으로 뿌려주는 메서드와

코 루틴으로 적의 스폰을 제어합니다.

 

 


UIManager 연동은 게임에 필요한 요소들을 UIManager 스크립트로 보내 즉각적으로 UI가 보이게 해 줍니다.

UIManager에 Start(), Update를 쓰지 않으려고 하니 시간과 관련 있는 부분은 GameManager에서 관리할 수밖에 없었습니다.

실시간으로 보이는 Text입니다.

 

 

 

 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
IEnumerator SpawnCoroutine() // 적 스폰 선택
    {
        spawnTime = false//연속 코루틴 방지
        float deley = 0;   //5라운드 전용 딜레이
 
        if (bgm)
        {
            GameObject.Find("Main Camera").GetComponent<BGM>().NomalStage();
            bgm = !bgm;
        }
 
        if (stageLv % 100 == 0)
        {
            spManager.bStage = false;
            spManager.hStage = false;
            spManager.nStage = false;
            spManager.lbStage = true;
            GameObject.Find("Main Camera").GetComponent<BGM>().BossStage();
            bgm = !bgm;
            count = 10;
        }
        else if (stageLv % 10 == 0//보스 스폰
        {
            spManager.bStage = true;
            spManager.hStage = false;
            spManager.nStage = false;
            spManager.lbStage = false;
            GameObject.Find("Main Camera").GetComponent<BGM>().BossStage(); //BGM 변경
            bgm = !bgm;
            count = 1;
        }
        else if (stageLv % 10 == 5//매 5라운드 스폰
        {
            spManager.bStage = false;
            spManager.hStage = true;
            spManager.nStage = false;
            spManager.lbStage = false;
            deley = 1;
            count /= 2;
        }
        else //일반 스테이지
        {
            spManager.bStage = false;
            spManager.hStage = false;
            spManager.nStage = true;
            spManager.lbStage = false;
        }
 
        yield return new WaitForSeconds(loadingTime); //스테이지 전환 후 딜레이
        while (count > 0)
        {
            spManager.EnemySpawn();
            if (stageLv % 10 == 5)
                yield return new WaitForSeconds(3f / (count * 2)); //스폰 딜레이
            else if(stageLv % 100 == 0)
                yield return new WaitForSeconds(2f); //스폰 딜레이
            else
                yield return new WaitForSeconds(0.3f - GetStageLv() / 300f); //스폰 딜레이
            count--;
        }
        yield return new WaitForSeconds(deley);
        spawnTime = true;
    }
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
 

 

코루틴 내부입니다. 여기서는 spManager에게 현재 라운드에 맞는 적을 뽑게 제어하고 적이 스폰 시간을 제어합니다.

코루틴 안에서 분기문이 많아서 코드가 길어졌습니다. 코루틴 안에서 해야 할 일이 아닌 것은 밖으로 빼는 것이 중요했다고 생각하네요. 12줄부터 47줄 까지도 더 좋은 방법이 있을 텐데 하는 아쉬움이 있습니다.

 

 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    public void NextStage()
    {
        if (!spawnTime)
            return;
        if (GetStageLv() == 100)
            uiManager.GameClear();
        SetStageLv();
        count = unitCount + * (stageLv / );
    }
 
    private void GameInit()
    {
        spawnTime =;
        stageLv = ;
        playerGold = ;
        life = ;
        unitCount = ;
        count = ;
 
        loadingTime = ;
 
        enemyGold = PlayerPrefs.GetInt($"Gold");
        uiManager.Possession();
        uiManager.LifeSet();
        uiManager.StageSet();
    }
 
    public void GameOver()
    {
        SceneManager.LoadScene("playScene");
    }
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
 

 

게임 로직입니다. 게임 로직이라는 거창 한 건 아니지만 처음 유저에게 주어지는 정보와 다음 스테이지로 넘어가는 것,   유닛 추가는 언제 되는 것이고 게임이 끝나면 무엇을 부르는지 를 보여줍니다.

실제 난이도 관련해서 변경 사항이 생기는 곳은 이곳입니다.

----------------------------------------------------------------------------------------------------------------------------------

'Spiral Defense > 코드, 공부, 기록' 카테고리의 다른 글

Spiral Defense 기본 흐름도  (0) 2020.01.27

 

 

 

 

 

 

'Spiral Defense > 코드, 공부, 기록' 카테고리의 다른 글

Spiral Defense - GameManager  (0) 2020.01.27

구글 스토어에 올라온 사진, https://play.google.com/store/apps/details?id=com.JGame.SpiralDefense

스토어에 올라온 모습 입니다. 

 

출시가 4일정도 걸려서 바로 버전 갱신

 

 

2020-01-23일에 앱을 등록하고 26일에 출시가 되었네요.

등록하고 나서 출시되기까지 시간으로 코드를 수정해 랙을 좀 줄였습니다.

스토어에 바로 버전 갱신!

 

가족 정책 위반으로 앱 등록 거부

처음에 바로 등록될 줄 알았는데 정책위반으로 등록을 거부 당했었습니다.

13-15세를 포함해서 안 됬었는데 체크 해제를 하니까 바로 올라가더라고요.

무엇이 문제였는지는 안 읽어봐서...

첫 출시! 감사합니다.

('https://tjhjyj.tistory.com/'이하 'Dr.J game 블로그')은(는) 개인정보보호법에 따라 이용자의 개인정보 보호 및 권익을 보호하고 개인정보와 관련한 이용자의 고충을 원활하게 처리할 수 있도록 다음과 같은 처리방침을 두고 있습니다.

('Dr.J game 블로그') 은(는) 회사는 개인정보처리방침을 개정하는 경우 웹사이트 공지사항(또는 개별공지)을 통하여 공지할 것입니다.

○ 본 방침은부터 2020년 1월 23일부터 시행됩니다.

 

1. 개인정보의 처리 목적 ('https://tjhjyj.tistory.com/'이하 'Dr.J game 블로그')은(는) 개인정보를 다음의 목적을 위해 처리합니다. 처리한 개인정보는 다음의 목적이외의 용도로는 사용되지 않으며 이용 목적이 변경될 시에는 사전동의를 구할 예정입니다.

가. 홈페이지 회원가입 및 관리

회원 가입의사 확인, 회원제 서비스 제공에 따른 본인 식별·인증, 회원자격 유지·관리 등을 목적으로 개인정보를 처리합니다.




2. 개인정보 파일 현황
('https://tjhjyj.tistory.com/'이하 'Dr.J game 블로그')가 개인정보 보호법 제32조에 따라 등록․공개하는 개인정보파일의 처리목적은 다음과 같습니다.


※ 기타('https://tjhjyj.tistory.com/'이하 'Dr.J game 블로그')의 개인정보파일 등록사항 공개는 행정안전부 개인정보보호 종합지원 포털(www.privacy.go.kr) → 개인정보민원 → 개인정보열람등 요구 → 개인정보파일 목록검색 메뉴를 활용해주시기 바랍니다.

3. 개인정보의 처리 및 보유 기간

 ('Dr.J game 블로그')은(는) 법령에 따른 개인정보 보유·이용기간 또는 정보주체로부터 개인정보를 수집시에 동의 받은 개인정보 보유,이용기간 내에서 개인정보를 처리,보유합니다.

② 각각의 개인정보 처리 및 보유 기간은 다음과 같습니다.

4. 정보주체와 법정대리인의 권리·의무 및 그 행사방법 이용자는 개인정보주체로써 다음과 같은 권리를 행사할 수 있습니다.

① 정보주체는 Dr.J game에 대해 언제든지 개인정보 열람,정정,삭제,처리정지 요구 등의 권리를 행사할 수 있습니다.
② 제1항에 따른 권리 행사는Dr.J game에 대해 개인정보 보호법 시행령 제41조제1항에 따라 서면, 전자우편, 모사전송(FAX) 등을 통하여 하실 수 있으며 Dr.J game은(는) 이에 대해 지체 없이 조치하겠습니다.
③ 제1항에 따른 권리 행사는 정보주체의 법정대리인이나 위임을 받은 자 등 대리인을 통하여 하실 수 있습니다. 이 경우 개인정보 보호법 시행규칙 별지 제11호 서식에 따른 위임장을 제출하셔야 합니다.
④ 개인정보 열람 및 처리정지 요구는 개인정보보호법 제35조 제5항, 제37조 제2항에 의하여 정보주체의 권리가 제한 될 수 있습니다.
⑤ 개인정보의 정정 및 삭제 요구는 다른 법령에서 그 개인정보가 수집 대상으로 명시되어 있는 경우에는 그 삭제를 요구할 수 없습니다.
⑥ Dr.J game은(는) 정보주체 권리에 따른 열람의 요구, 정정·삭제의 요구, 처리정지의 요구 시 열람 등 요구를 한 자가 본인이거나 정당한 대리인인지를 확인합니다.



5. 처리하는 개인정보의 항목 작성

 ('https://tjhjyj.tistory.com/'이하 'Dr.J game 블로그')은(는) 다음의 개인정보 항목을 처리하고 있습니다.



6. 개인정보의 파기('Dr.J game 블로그')은(는) 원칙적으로 개인정보 처리목적이 달성된 경우에는 지체없이 해당 개인정보를 파기합니다. 파기의 절차, 기한 및 방법은 다음과 같습니다.

-파기절차
이용자가 입력한 정보는 목적 달성 후 별도의 DB에 옮겨져(종이의 경우 별도의 서류) 내부 방침 및 기타 관련 법령에 따라 일정기간 저장된 후 혹은 즉시 파기됩니다. 이 때, DB로 옮겨진 개인정보는 법률에 의한 경우가 아니고서는 다른 목적으로 이용되지 않습니다.

-파기기한
이용자의 개인정보는 개인정보의 보유기간이 경과된 경우에는 보유기간의 종료일로부터 5일 이내에, 개인정보의 처리 목적 달성, 해당 서비스의 폐지, 사업의 종료 등 그 개인정보가 불필요하게 되었을 때에는 개인정보의 처리가 불필요한 것으로 인정되는 날로부터 5일 이내에 그 개인정보를 파기합니다.

-파기방법
전자적 파일 형태의 정보는 기록을 재생할 수 없는 기술적 방법을 사용합니다.
종이에 출력된 개인정보는 분쇄기로 분쇄하거나 소각을 통하여 파기합니다.



7. 개인정보 자동 수집 장치의 설치•운영 및 거부에 관한 사항

Dr.J game 은 정보주체의 이용정보를 저장하고 수시로 불러오는 ‘쿠키’를 사용하지 않습니다.

8. 개인정보 보호책임자 작성


① Dr.J game(‘https://tjhjyj.tistory.com/’이하 ‘Dr.J game 블로그) 은(는) 개인정보 처리에 관한 업무를 총괄해서 책임지고, 개인정보 처리와 관련한 정보주체의 불만처리 및 피해구제 등을 위하여 아래와 같이 개인정보 보호책임자를 지정하고 있습니다.


▶ 개인정보 보호책임자
성명 : 황현중
직책 : Manager
직급 : 임원
연락처 : mearyaere@gmail.com,
※ 개인정보 보호 담당부서로 연결됩니다.

▶ 개인정보 보호 담당부서
부서명 : 게임랩
담당자 : 황유진
연락처 :, yujiningning@gmail.com
② 정보주체께서는 Dr.J game(‘https://tjhjyj.tistory.com/’이하 ‘Dr.J game 블로그) 의 서비스(또는 사업)을 이용하시면서 발생한 모든 개인정보 보호 관련 문의, 불만처리, 피해구제 등에 관한 사항을 개인정보 보호책임자 및 담당부서로 문의하실 수 있습니다. Dr.J game(‘https://tjhjyj.tistory.com/’이하 ‘Dr.J game 블로그) 은(는) 정보주체의 문의에 대해 지체 없이 답변 및 처리해드릴 것입니다.



9. 개인정보 처리방침 변경

①이 개인정보처리방침은 시행일로부터 적용되며, 법령 및 방침에 따른 변경내용의 추가, 삭제 및 정정이 있는 경우에는 변경사항의 시행 7일 전부터 공지사항을 통하여 고지할 것입니다.



10. 개인정보의 안전성 확보 조치 ('Dr.J game 블로그')은(는) 개인정보보호법 제29조에 따라 다음과 같이 안전성 확보에 필요한 기술적/관리적 및 물리적 조치를 하고 있습니다.

1. 정기적인 자체 감사 실시
개인정보 취급 관련 안정성 확보를 위해 정기적(분기 1회)으로 자체 감사를 실시하고 있습니다.

2. 개인정보 취급 직원의 최소화 및 교육
개인정보를 취급하는 직원을 지정하고 담당자에 한정시켜 최소화 하여 개인정보를 관리하는 대책을 시행하고 있습니다.

3. 내부관리계획의 수립 및 시행
개인정보의 안전한 처리를 위하여 내부관리계획을 수립하고 시행하고 있습니다.

4. 해킹 등에 대비한 기술적 대책
<Dr.J game>('Dr.J game 블로그')은 해킹이나 컴퓨터 바이러스 등에 의한 개인정보 유출 및 훼손을 막기 위하여 보안프로그램을 설치하고 주기적인 갱신·점검을 하며 외부로부터 접근이 통제된 구역에 시스템을 설치하고 기술적/물리적으로 감시 및 차단하고 있습니다.

5. 개인정보의 암호화
이용자의 개인정보는 비밀번호는 암호화 되어 저장 및 관리되고 있어, 본인만이 알 수 있으며 중요한 데이터는 파일 및 전송 데이터를 암호화 하거나 파일 잠금 기능을 사용하는 등의 별도 보안기능을 사용하고 있습니다.

6. 접속기록의 보관 및 위변조 방지
개인정보처리시스템에 접속한 기록을 최소 6개월 이상 보관, 관리하고 있으며, 접속 기록이 위변조 및 도난, 분실되지 않도록 보안기능 사용하고 있습니다.

7. 개인정보에 대한 접근 제한
개인정보를 처리하는 데이터베이스시스템에 대한 접근권한의 부여,변경,말소를 통하여 개인정보에 대한 접근통제를 위하여 필요한 조치를 하고 있으며 침입차단시스템을 이용하여 외부로부터의 무단 접근을 통제하고 있습니다.

8. 문서보안을 위한 잠금장치 사용
개인정보가 포함된 서류, 보조저장매체 등을 잠금장치가 있는 안전한 장소에 보관하고 있습니다.

9. 비인가자에 대한 출입 통제
개인정보를 보관하고 있는 물리적 보관 장소를 별도로 두고 이에 대해 출입통제 절차를 수립, 운영하고 있습니다.

'Dr.JGame > 공지' 카테고리의 다른 글

개인정보의 보호 및 사용 동의 (필수)  (0) 2020.11.05
Dr.J Games 이용약관 동의 (필수)  (0) 2020.11.05

Dr.J game


2020-01-23 블로그 오픈합니다.


Spiral Defense 출시를 앞에 두고 있습니다.


유니티 활동

게임 출시 활동

게임 업데이트 활동과 그에 필요한 자료들을 올릴 예정입니다.

+ Recent posts