project avalon
TRANSCRIPT
ABALONE
"아 발 론" 이라는 보드 게임을 2D로 개발, 일반적인 온라인게임과 같이 대전모드를 제공하여 멀티플레이가 가능한 보드 게임을 제작하였습니다. 프로젝트를 단순한 프로젝트로끝내는 것이 아니라, SNS(Social Network Service) 열풍이전세계를 강타하고 있는 추세에 맞춰 접근이 쉽고 활용 능력이 뛰어난 Facebook을 이용해, SNG(SNS를 기반으로 하는소셜 네트워크 게임)라는 장르로 “아발론”이라는 보드게임을 2D로 개발하였습니다.
(1) 프로젝트 Abalone이란?
ABALONE
IDEEclipse : 전반적인 프로그램 소스코드 작성에 사용Netbeans: UI 제작부분에서 사용
라이브러리restFB, mysql-jdbc-connector, Jackson-JSON,
DBMSMysql 5.16
Back-endJSP(Apache 2.1 + Tomcat 7.0 with Servlet)
ToolSVN (소스코드관리도구): 소스코드 형상관리에 사용
Photoshop:UI Design 용으로 사용.
(2) 프로젝트 개발에 사용된 IDE,라이브러리(lib),Tool
ABALONE
① Facebook과의 연동
이번 프로젝트의 가장 큰 특징은 소셜 네트워크 서비스인 페이스북을 JSP를 통해 연동하고, restFB라는 라이브러리를 이용하여 페이스북의 다양한 API를 사용할 수 있도록 하였습니다. restfb 라이브러리를 이용하여 페이스북에서 친구목록, 담벼락포스팅, 내 정보 등을 쉽게 가져올 수 있도록 하였습니다.프로젝트 시연에서 게임 승패에 따라 페이스북 담벼락에 기록됨을 보실 수 있습니다.
(3) 프로젝트 특징
Web brawser
restFB(lib)
FacebookAvalone client
ABALONE
Client1
Client2
Abalone Server
(Thread) Head:
Body:
② 서버 클라이언트
Avalon Server에 사용자1이 로그인을 하면 Soket을 오픈해줍니다. 사용자2도 Avalon Server에 로그인을 하면 Soket을 오픈해줍니다. Server에서는 계속 Thread를 진행하여사용자간 연결을 해주도록 하였습니다.
Abalone Server
switch(head)
Case CHAT
Head:
Body
Head:
Body:
packet
packet
ABALONE
Abalone Server
switch(head)
Case CHAT
Abalone Server
(Thread)
Client1
Head:
Body:
Head:
Body:
③ 채팅
Avalon Server에 사용자가 연결되면 head와 body를packet으로 묶어 보내주어 head부분에 action을 취해주면그에 따라서 Server에서 분기처리 하여 해당 클라이언트로packet을 다시보내주도록 하였습니다.Serializable 속성을 통해 Packet 클래스는 서버와 동기화시켰으며, 이 부분에서 실제 데이터 부분은 JSON객체로 송수신 하게 하였습니다.
packet
ABALONE
RoomFrame
CirclePanel
④게임부분
RoomFrame부분에 게임을 할 수 있는 보드판을 이중Array List로 구현하고, CirclePanel에 돌의 위치를 Array List로좌표화 하여, 마우스 클릭하는 위치에 따라서 함수를 통해돌의 움직임을 제어합니다.옮기고 싶은 자신의 돌을 클릭하면 돌의 테두리 색이 파란색으로 바뀌며, 갈 수 있는 방향의 테두리가 파란색으로 바뀝니다. 옮길 수 있는 돌은 최대2개이며 테두리가 파란색 인 칸을 택하게 되면 돌들이 옮겨집니다.
중요하게 쓰이는 함수:changeColor(int i, int j)moveStone(int i, int j)OffBStone(int [][] locationOfBStone)printMoveStone(int i,int j)setPossibleMove(int i, int j)unSetPossibleMove()