1)한줄요약 : 유니티와 BFS알고리즘을 활용하여 기존의 지뢰찾기와 길찾기를 접목시킨 2D 게임을 제작

+룰:출발지에서 목적지까지 구멍들을 피해서 가장 적은 이동으로 도착해야한다.

가로,세로축의 트랩 수를 알려주는 등대와 자신  근처의 트랩 수를 알려주는 카운터는 추론의 보조장치가 된다.

게임중 목숨의 수는 줄어들 수 있고 아이템을 활용할 수 있다.

2)본인 역할 : 알고리즘 구현(BFS), 스토리 구성 

+팀원:ㅎㅈㅎ(PL,알고리즘 구현),ㄳㅎ(UI,스토리)

 

3)본인이 사용한 스킬 : C#,Unity

+팀원스킬: Google Map Api, Naver Speech Api,Android,PHP,Mysql

 

4)힘들었던 점: 

+팀원이 구조체에 대한 개념, 반복문으로 PS 하는 방법을 모르는 상태였어서 if~else가 백줄 가까이 작성되있었다. 

분담 후에 서로 진도 확인이나 결과물을 2주 가까이 한번도 점검하지 않았기 때문에 전혀 모르고 있었다. 

이미 열심히 만든 코드를 수정하는게 너무 미안했지만 이런 과정을 통해 알아가는거라고 생각을 다시 잡았다.

객체를 사용하고 이중포문을 이용해(Light House 코드..) 코드를 20줄 가까이로 최적화 시켰다. 

나의 첫 프로젝트였고 이 경험에서 나는 소통의 중요성을 배웠다.

 

5) 코드가 있는 깃허브 주소 (https://github.com/hun2ya9/2017-MARK)

 

 

[UI]

 

 

[오브젝트 소개]

[플레이어의 라이프는 게임실행 내내 반복되는 update함수에서 체크합니다. 마우스 입력을 통해 8방위로 이동가능하고

아이템을 활용하여 게임을 진행합니다.]

 

[ 플레이어 이동은 레이캐스트로 구현,마우스 클릭시 카메라로 부터 가상의 빔을 쏴서 해당 위치가 타일이면 플레이어가 그 위치로 이동방식이다.

이동 후 기존의 타일은 제거하고 새 플에이어 위치에 다시 생성함. 아이템획득은 box collider을 통해 구현함]

 

[길을 막는 경우같은 예외처리가 중요했다. 하지만 아래와 같은 이유들로, 기본적인 예외처리만 하고 길이 없는 경우에 재배치 하는걸로만 만들기로 함]

[동작 순서도]

[게임 시스템 구조-오브젝트 매니저가 게임의 핵심정보를 가지고 있으면 나머지 스크립트에서 그 정보를 활용함.

그리고 오브젝트 매니저는 UI매니저와 연결이 되어있고 UI에선 업적을 확인할때 파일매니저를 통해 참조를 함.]

 

[알고리즘 선택 이유]

최단경로를 찾을 때엔 많은 종류의 기법이 있었지만,

A*나 다익스트라,벨만포드 등은 그래프에 적합하고 우리의 게임은

맵 크기도 작을뿐더러 무엇보다 가중치가 없었기때문에 가장 간단한 BFS로 구현

 

 

[일정]

 

 


그 외의 자료..

[문제의 코드]

 

public void viewlight() //같은 행과 열에 지뢰가 몇 개 있는지

 

{

 

g = GameObject.FindGameObjectWithTag("Canvas").GetComponent<Text>();

 

int mapsize = Mathf.RoundToInt(script.gridWorldSize.x);

 

for (int x = 0; x < mapsize; x++) //등대 설치할 때 일차원배열에 바로 넣어줬으면 좋았으련만 시간이 없으므로 패스

 

for (int y = 0; y < mapsize; y++)

 

if (script.grid[x, y].is_lighthouse == true)

 

{

 

int trap_cnt = 0;

 

for (int i = 0; i < mapsize; i++)

 

{

 

if (script.grid[x, i].is_trap == true)

 

trap_cnt++;

 

if (script.grid[i, y].is_trap == true)

 

trap_cnt++;

 

}

 

g.text = trap_cnt + "";

 

GameObject G = Instantiate(Text);

 

G.transform.position = script.grid[x, y].worldPosition;

 

}

 

 

 

 

 

}

 

 

[유니티 환경. 그래픽 객체에 직접 코드를 연결한다는게 매우 편하고 놀라웠다.]

 

 

 

 

'Project' 카테고리의 다른 글

[툰츄]  (0) 2019.11.06
[부귀영화-영화 추천 서비스]  (0) 2019.10.25
[WaterMelon-음원 사이트]  (0) 2019.10.25
[Hearable App-청각장애인용 스마트 앱]  (3) 2019.10.25
[hearable watch-청각장애인용 스마트 워치]  (0) 2019.10.25

+ Recent posts