이름 | 연성의나라 | Kingdom of Yeonsung | Name |
개발자 | AT | Developer | |
개발기간 | 6개월 | 6 Months | Total Elapsed Time |
프로그래밍 언어 | C#(Client), Java(Server) | Written in | |
운영체제 | Windows, Linux | OS |
이 프로젝트는 연성대학교에서 진행한 LINC+ 사회맞춤형 캡스톤디자인 성과전시회 3등 수상작이다.
Unity 엔진을 사용한 게임으로 서버는 JSP 기반의 웹서버를 사용했다.
이 게임은 연성대학교를 2D 게임 안으로 옮겨놓아 실외 뿐 아니라
학생들이 이용하는 모든 건물의 복도와 학과사무실, 역사홍보관 등 실내도 구현되어 있다.
또한 재학생의 학교 계정으로 로그인하여 성적조회, 수강신청조회, 장학금조회, 도서대출조회 등
여러 서비스를 이용할 수 있으며, 학교의 역사나 편의서비스의 정보들을 제공한다.
팀원은 3명으로 맵 제작과 맵 이동 구현을 맡은 1명, 게임 내 UI 인터페이스 구현을 한 1명과 함께
웹 크롤링, 게임 리소스 제작, 서버 구현에 참여하여 팀장을 맡았다.
AT라는 이름은 팀원들 모두 안양에서 어려서부터 살아와서 AT(안양 토박이)라는 뜻이다.
게임은 연성대학교 학생 계정이 있는 사용자는 로그인하여 이용할 수 있으며, 외부인은 게스트 로그인을 통해서 학교를 체험해볼 수 있다. 현재 학교 홈페이지는 하나의 계정으로 로그인할 수 있는 이클래스, 통합포털사이트, CarryGem 등 여러 사이트로 분산되어 있으며 각자의 사이트에서 따로따로 로그인을 해야 하는 번거로움이 있다. 우리는 이러한 불편함을 게임 내에서 로그인 한 번으로 여러 사이트에 있는 정보 조회를 가능하게 했다. 로그인은 학교 홈페이지의 html 소스를 분석하여 쿠키 조작으로 세션을 유지시켰다. 소스 분석 과정에서 사용자의 학번 또는 사번만 알고 있다면 로그인을 할 수 있는 취약점들이 발견해서 학교 내 전자계산소 부서에게 알리고 수정되었다.
로그인 인증은 클라이언트에서 학교 홈페이지로 로그인을 시도하여 성공하면 게임 서버에 성별과 학번을 보낸다. 게임 서버에서는 데이터베이스에 등록된 사용자라면 저장된 위치나 진행사항을 클라이언트에게 보내며 처음 로그인을 한 사용자라면 자동으로 등록해주고 처음 진행사항을 보내게 된다. 클라이언트는 사용자의 위치 값을 계속해서 서버에게 보내며 마지막 종료 시 모든 진행사항을 서버에 전송하여 데이터베이스에 저장한다.
게임은 바람의나라나 포켓몬스터 시리즈로 사용자들에게 친숙한 2D RPG 방식으로 M 키를 누르고 있을 때, 오른쪽 사진처럼 전체 맵을 볼 수 있다. 학교 내 건물 위치나 조형물들 모든 것들을 실제 학교와 유사하게 만들려고 노력했다. 맵은 Tiled라는 툴을 활용해서 제작했으며, 리소스들은 무료로 사용이 가능한 리소스들을 우선적으로 찾고 최대한 활용하고 제작이 필요한 부분은 포토샵으로 제작했다. 실제 학교를 게임으로 옮겨놓은 것으로 게임을 해본 신입생이나 학교를 처음 방문하는 사람이 학교의 지리를 쉽게 파악할 수 있다는 효과가 있다.
게임 내 여러 사용자가 만나는 온라인 환경을 지원한다.
처음 구현계획에 없었던 사항을 추가하면서 개발 기간을 단축하고자 기존의 웹 서버 방식으로 구현하게 되었다.
여러 사용자들의 위치를 실시간으로 데이터베이스에서 반영하는데 java.sql.SQLNonTransientConnectionException이 계속 발생하면서 순간이동 문제가 생겼다. 그래서 데이터베이스를 실시간으로 반영하는 방식에서 서버 구동시 데이터를 로드해서 ArrayList로 관리하다가 서버 종료 시 데이터베이스에 업데이트하는 방식으로 변경하여 문제를 해결하였다.
NPC 대화를 통해서는 학교에서 학생들에게 홍보하는 내용 자연스럽게 학생들이 학습하는 효과를 가진다. 예를 들어 왼쪽 사진은 학교 내 역사홍보관에서 연성대학교 대표 심볼마크에 대해서 설명하고 있다. 또한 학생들이 궁금한 내용도 제공할 수 있다. 예를 들면 오른쪽 사진과 같이 학생 예비군과 관련된 설명을 제공해준다.
학교 계정으로 로그인한 사용자는 자신의 성적조회, 수강신청조회, 장학금조회, 도서대출조회 등
여러 서비스를 게임 내에서 이용이 가능하다.
이러한 조회는 학교 홈페이지의 html 소스 분석을 통해서
각 항목에 해당하는 조회 URL을 찾아서 세션이 유지된 게임 클라이언트에서 받아오도록 했다.
또한 이러한 정보들은 개인정보보호를 위해서 게임 서버에는 저장하지 않는다.
조이스틱 연동과 리눅스를 지원하는 멀티플랫폼으로 개발하여 아케이드 게임 캐비닛 형태의 부스 운영의 가능성도 보여주었다. 캐비닛의 도면은 기존의 네이버 카페 라즈겜동에 올라와 있는 자료로 도면 제작자에게 사용허가를 받고 왼쪽 사진과 같이 수정하여 CNC 가공하였으며 인테리어 시트지로 마감을 하고 조립했다.
Unity 엔진을 사용한 게임으로 서버는 JSP 기반의 웹서버를 사용했다.
이 게임은 연성대학교를 2D 게임 안으로 옮겨놓아 실외 뿐 아니라
학생들이 이용하는 모든 건물의 복도와 학과사무실, 역사홍보관 등 실내도 구현되어 있다.
또한 재학생의 학교 계정으로 로그인하여 성적조회, 수강신청조회, 장학금조회, 도서대출조회 등
여러 서비스를 이용할 수 있으며, 학교의 역사나 편의서비스의 정보들을 제공한다.
팀원은 3명으로 맵 제작과 맵 이동 구현을 맡은 1명, 게임 내 UI 인터페이스 구현을 한 1명과 함께
웹 크롤링, 게임 리소스 제작, 서버 구현에 참여하여 팀장을 맡았다.
AT라는 이름은 팀원들 모두 안양에서 어려서부터 살아와서 AT(안양 토박이)라는 뜻이다.
게임은 연성대학교 학생 계정이 있는 사용자는 로그인하여 이용할 수 있으며, 외부인은 게스트 로그인을 통해서 학교를 체험해볼 수 있다. 현재 학교 홈페이지는 하나의 계정으로 로그인할 수 있는 이클래스, 통합포털사이트, CarryGem 등 여러 사이트로 분산되어 있으며 각자의 사이트에서 따로따로 로그인을 해야 하는 번거로움이 있다. 우리는 이러한 불편함을 게임 내에서 로그인 한 번으로 여러 사이트에 있는 정보 조회를 가능하게 했다. 로그인은 학교 홈페이지의 html 소스를 분석하여 쿠키 조작으로 세션을 유지시켰다. 소스 분석 과정에서 사용자의 학번 또는 사번만 알고 있다면 로그인을 할 수 있는 취약점들이 발견해서 학교 내 전자계산소 부서에게 알리고 수정되었다.
로그인 인증은 클라이언트에서 학교 홈페이지로 로그인을 시도하여 성공하면 게임 서버에 성별과 학번을 보낸다. 게임 서버에서는 데이터베이스에 등록된 사용자라면 저장된 위치나 진행사항을 클라이언트에게 보내며 처음 로그인을 한 사용자라면 자동으로 등록해주고 처음 진행사항을 보내게 된다. 클라이언트는 사용자의 위치 값을 계속해서 서버에게 보내며 마지막 종료 시 모든 진행사항을 서버에 전송하여 데이터베이스에 저장한다.
게임은 바람의나라나 포켓몬스터 시리즈로 사용자들에게 친숙한 2D RPG 방식으로 M 키를 누르고 있을 때, 오른쪽 사진처럼 전체 맵을 볼 수 있다. 학교 내 건물 위치나 조형물들 모든 것들을 실제 학교와 유사하게 만들려고 노력했다. 맵은 Tiled라는 툴을 활용해서 제작했으며, 리소스들은 무료로 사용이 가능한 리소스들을 우선적으로 찾고 최대한 활용하고 제작이 필요한 부분은 포토샵으로 제작했다. 실제 학교를 게임으로 옮겨놓은 것으로 게임을 해본 신입생이나 학교를 처음 방문하는 사람이 학교의 지리를 쉽게 파악할 수 있다는 효과가 있다.
게임 내 여러 사용자가 만나는 온라인 환경을 지원한다.
처음 구현계획에 없었던 사항을 추가하면서 개발 기간을 단축하고자 기존의 웹 서버 방식으로 구현하게 되었다.
여러 사용자들의 위치를 실시간으로 데이터베이스에서 반영하는데 java.sql.SQLNonTransientConnectionException이 계속 발생하면서 순간이동 문제가 생겼다. 그래서 데이터베이스를 실시간으로 반영하는 방식에서 서버 구동시 데이터를 로드해서 ArrayList로 관리하다가 서버 종료 시 데이터베이스에 업데이트하는 방식으로 변경하여 문제를 해결하였다.
NPC 대화를 통해서는 학교에서 학생들에게 홍보하는 내용 자연스럽게 학생들이 학습하는 효과를 가진다. 예를 들어 왼쪽 사진은 학교 내 역사홍보관에서 연성대학교 대표 심볼마크에 대해서 설명하고 있다. 또한 학생들이 궁금한 내용도 제공할 수 있다. 예를 들면 오른쪽 사진과 같이 학생 예비군과 관련된 설명을 제공해준다.
학교 계정으로 로그인한 사용자는 자신의 성적조회, 수강신청조회, 장학금조회, 도서대출조회 등
여러 서비스를 게임 내에서 이용이 가능하다.
이러한 조회는 학교 홈페이지의 html 소스 분석을 통해서
각 항목에 해당하는 조회 URL을 찾아서 세션이 유지된 게임 클라이언트에서 받아오도록 했다.
또한 이러한 정보들은 개인정보보호를 위해서 게임 서버에는 저장하지 않는다.
조이스틱 연동과 리눅스를 지원하는 멀티플랫폼으로 개발하여 아케이드 게임 캐비닛 형태의 부스 운영의 가능성도 보여주었다. 캐비닛의 도면은 기존의 네이버 카페 라즈겜동에 올라와 있는 자료로 도면 제작자에게 사용허가를 받고 왼쪽 사진과 같이 수정하여 CNC 가공하였으며 인테리어 시트지로 마감을 하고 조립했다.