[Unity3D] 헥사게임 만들기 첫 번째 - 리소스 준비하기 및 캔버스 크기 설정.

※ 소스 출처 : 네이버 카페 > 유니티 허브 > 햐얀바람님.



0. 리소스 준비하기.


1). 배경 이미지.

2). 블럭보드의 배경 이미지.

3). UI테두리 이미지.

4). 블럭 이미지.



1. 캔버스 크기 설정하기.

- 게임뷰어 및 캔버스 크기 설정.



2.  블럭보드 만들기.

1). 블럭 프리팹 만들기.

2). 배경 이미지 깔기.
3). 블럭배경 이미지 깔기.
4). 스크립트로 블럭 만들기.


3.  블럭 처리.
1). 가로 및 세로 체크 함수 만들기.
2). 매치된 블럭이 있는지 없는지 체크하는 함수 만들기.
3). 블럭 삭제 함수 만들기.
4). 떨어지는 블럭 함수 만들기.


4.  마우스 처리.
1). 마우스 클릭처리 함수 만들기.
2). 마우스 방향에 따른 블럭 가져오는 함수 만들기.
3). 선택된 블럭을 마우스가 이동한 방향에 있는 블럭과 교환(이동)시키는 함수 만들기.
4). 선택된 블럭과 이동 방향에 존재하는 블럭의 위치 교환 및 타입교환하는 함수 만들기.
5). 블럭 교환 후 매치된 블럭이 없을 때 다시 교환 시켜주는 함수 만들기.


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



0. 리소스 준비하기.



- 배경이미지 (출처 : 구글링)


- 블럭보드의 배경이미지 (출처 : 포토샾으로 만듬)




- UI의 테두리 (하얀바람님 프로젝트 내장 리소스)


- 블럭 이미지 (하얀바람님 프로젝트 내장 리소스)

- 크기 : 가로 세로 : 100픽셀.


(출처 : 언더테일 구글링)








1. 캔버스 크기 설정하기.


1).


게임 뷰어를 720 x 1280으로 설정.



2).


마찬가지로  캔버스의 Canvas Scaler 컴포넌트의 UI Cale Mode를 Scale With Screen Size로 설정하고,

Reference Resolution을 게임뷰어와 같이 720 x 1280으로 설정한다.







덱(Deque)


덱(Deque)

데이터를 앞으로도 뒤로도 넣을 수 있고,

앞으로도 뒤로도 뺄 수 있는 자료구조이다.


양반향 연결 리스트 기반으로 '덱' 구현.



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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include <stdio.h>
 
#define FIRST        0
#define LAST         1
 
typedef struct Node
{
    int Data;
    struct Node* pNext;
    struct Node* pUnder;
}NODE;
 
typedef struct DeQue
{
    int Count;
    NODE* pHead;
    NODE* pTail;
}DQ;
 
void InitDQ(DQ* _dq)
{
    _dq->Count = 0;
    _dq->pHead = NULL;
    _dq->pTail = NULL;
}
 
bool isEmpty(DQ* _dq)
{
    if(_dq->pHead == NULL)
        return false;
    return true;
}
 
void push(DQ* _dq, int Data, int start = LAST)
{
    NODE* NewNode = new NODE;
    NewNode->Data = Data;
    NewNode->pNext = NULL;
    NewNode->pUnder = NULL;
 
    if(_dq->pHead == NULL)
    {
        _dq->pHead = NewNode;
        _dq->pTail = NewNode;
    }
    else
    {
        if(start == FIRST)
        {
            NewNode->pNext = _dq->pHead;
            _dq->pHead->pUnder = NewNode;
            _dq->pHead = NewNode;
        }
        else
        {
            _dq->pTail->pNext = NewNode;
            NewNode->pUnder = _dq->pTail;
            _dq->pTail = NewNode;
        }
    }
}
 
int peek(DQ * _dq, int start = LAST)
{
    if(_dq->pHead == NULL || _dq->pTail == NULL)
        return -1;
 
    if(start == FIRST)
        return _dq->pHead->Data;
    return _dq->pTail->Data;
}
 
void pop(DQ * _dq, int start = LAST)
{
    if(_dq->pHead == NULL || _dq->pTail == NULL)
        return;
 
    NODE* pRemove;
    if(start == FIRST)
    {
        pRemove = _dq->pHead;
        _dq->pHead = _dq->pHead->pNext;
        _dq->pHead->pUnder = NULL;
    }
    else
    {
        pRemove = _dq->pTail;
        _dq->pTail = _dq->pTail->pUnder;
        _dq->pTail->pNext = NULL;
    }
    delete pRemove;
}
 
void DisPlay(DQ* _dq, int start = FIRST)
{
    if(_dq->pHead == NULL || _dq->pTail == NULL)
    {
        printf("출력할 데이터가 없슴돠 \n");
        return;
    }
 
    if(start == FIRST)
    {
        NODE* pNode = _dq->pHead;
        while(pNode != NULL)
        {
            printf("%d ", pNode->Data);
            pNode = pNode->pNext;
        }
    }
    else
    {
        NODE* pNode = _dq->pTail;
        while(pNode != NULL)
        {
            printf("%d ", pNode->Data);
            pNode = pNode->pUnder;
        }
    }
 
    printf("\n");
}
 
void main()
{
    DQ* dq = new DQ[sizeof(DQ)];
    InitDQ(dq);
 
    for(int i = 0; i < 5; i++)
        push(dq, i);
    DisPlay(dq);
}
cs


'자료구조' 카테고리의 다른 글

단방향 연결리스트 반대로 뒤집기.  (0) 2017.04.11
해시 테이블 (Hash Table)  (0) 2017.01.08
큐(Queue)  (0) 2017.01.07
스택(Stack)  (0) 2017.01.07
단방향 연결 리스트(Linked List)  (0) 2017.01.06

서드파티 네트워크 게임 엔진.


P2P 방식이 아닌 온라인 게임을 개발하려면 물리적인 서버와 네트워크 게임 서버가 필요하다.

네트워크 게임 서버를 자체적으로 개발하기 위해서는 오랜 시간과 개발 경험, 실력있는 개발자가 필요하다.


서버를 직접 개발하는 것이 현실적으로 어려울 때는 이미 검증된 네트워크 게임 엔진을 도입하는 것도 좋은 방법이다.


※ 유니티를 지원하는 대표적인 게임 엔진 목록.

 제품명

홈페이지 

 Photon 

 http://www.photonengine.com

 Muchefferent 

 http://www.muchdifferent.co.kr

 ElectroServer 

 http://www.electrotank.com

 SmartFox 

 http://www.smartfoxserver.com

 프라우드넷 

 http://www.nettention.co


포톤 네트워크 게임 엔진은 현재 유니티에서 가장 많이 사용하는 엔진 중 하나다.

또한 포톤 PUN(Photon Unity NetWorking)의 경우 20명의 동시 접속 사용자(CCU, ConcurrentUser)까지는 무료로 사용할 수 있다.


포톤 관련 제품은 다양하지만 크게 포톤 서버와 포톤 PUN으로 분류할 수 있다.

포톤 PUN은 포톤 클라우드와 동일하며, 이름만 포톤 PUN으로 바뀌었다.




포톤서버? 포톤 클라우드?


포톤 서버 : 물리적으로 서버를 운영하는 것.

포톤 클라우드 : 서버를 임대해 사용하는 것.


포톤 서버를 운영하려면 서버의 보안, 로드 밸런싱, 백업 및 네트워크 트래픽을 관리할 수 있는 전문 인력이 필요하다.

하지만, 포톤 클라우드는 이러한 문제를 전혀 신경쓰지 않아도 된다.

SaaS(Software as a Service)의 개념으로 소프트웨어를 임대해 사용하는 방식이다. 



 

포톤 서버 

포톤 클라우드 

서버 운영 및 관리 

 필요

 불필요 

확장성(로드밸런싱) 

 직접 관리 

 관리 없음 

서버 사이드 게임 로직 

 커스터마이징 가능 

 불가능 

라이선스 

 서버당 과금 체계

 동시 접속 사용자별 과금 체계 

※ 포톤 서버와 클라우드 비교



포톤 쿨라우드 서버스를 이용하려면 먼저 회원가입을 해야한다.

www.photonengine.com에 접속한 후 신규 가입 메뉴를 선택하면 회원가입 페이지가 나온다.


'Unity3D > NetWork' 카테고리의 다른 글

네트워크 (NetWork)  (0) 2017.05.08
prev 1 2 3 4 5 6 ··· 29 next