Tag Archives: 게임

[iPhone] 아이폰 게임에 소셜 플랫폼을 도입한다? OpenFeint

사용자 삽입 이미지
[OpenFeint]는 XBOX Live와 같이 혼자 게임을 플레이하는데 그치지 않고 친구들과 함께 협동/경쟁 기타 다양한 재미 요소를 추가하도록 하는 공개 플랫폼 입니다. 예전에 아이폰용 베틀넷 시스템을 만들고 싶다는 생각을 했었는데 적어도 멀티 플레이 서버를 제공하진 않지만 다양한 친구와 함께 할 수 있는 기능들을 제공합니다. OpenFeint가 제공하는 기능은 다음과 같습니다.


사용자 삽입 이미지게임의 커뮤니티를 만들어 줍니다.

OpenFeint는 여러가지 방법으로 플레이어간 직접 연결할 수 있는 경로를 제공합니다. 뉴스레터, 공지, 포럼과 같은 기능을 제공하여 개발자가 만든 게임의 가상 대화 장소를 제공하여 줍니다.

사용자 삽입 이미지심플하고 접근성 좋은 UI를 제공합니다.

하단의 3개의 탭은 사용자가 찾기 원하는 기능을 손쉽게 찾게 하여줍니다. 그리고 모든것들이 OpenFeint  오픈 API를 통하여 커스터마이징 될 수 있습니다.

사용자 삽입 이미지엄청난 교차 프로모션 기능을 제공합니다.

OpenFeint를 채택하고 수많은 어플리케이션간에 교차 광고를 지원합니다. 이는 곧 전세계 1200만 OpenFeint플랫폼 기반 게임을 플레이하는 플레이어에게 홍보를 할 수 있는 매우 강력한 비지니스 툴입니다.

사용자 삽입 이미지무료 어플을 통해 구매가 일어나도록 도와줍니다.

OpenFeint는 매우 간단한 방법으로 당신의 무료 유저들에게 상위 유료 상품을 구매하도록 도와줍니다. 당신의 무료 설치 기반에서 더 많은 게임을 판매하고 교차 프로모션의 장점도 챙기세요.

사용자 삽입 이미지당신의 친구가 온라인되는것을 알려줍니다.

이것은 XBOX Live에서 흔히 볼 수 있는 모습니다. 친구가 로그인하면 왼쪽에서 보다 싶이 알려주게 됩니다. 중요한건 어떤 게임이던지 OpenFeint플랫폼을 채택한 게임/메신져/포럼이기만 하면 알림기능이 활성화 될수 있습니다.

사용자 삽입 이미지네트워크 저장 카드를 제공합니다.

이 기능은 네트웍을 통하여 장치에 상관없이 데이터를 저장할 수 있는 기능을 제공합니다. 내 아이폰에서 게임을 저장하고 동생의 아이폰에서 로드하여 계속 플레이 할 수 있습니다. 기기의 변경시에도 데이터 손실을 걱정안해도 됩니다.

사용자 삽입 이미지지역기반의 점수표를 제공합니다.

보통 오락실에서 게임을 하면 점수별 랭킹이 있는것을 알 수 있죠. 이 기능을 제공합니다. 하지만 추가로 구글맵을 연동하여 지역별로 랭킹을 볼 수 있습니다. 아이폰 2.x 혹은 3.x버젼에서 지원합니다.



가면 알 수 있는데 현재 멀티플레이 기능이 베타 테스트중입니다. 또는 친구와 점수 경쟁을 한다거나 지역뿐만이 아닌 전체 점수 순위를 볼 수 있고 트위터와 페이스북등을 연동할 수도 있습니다. 심지어 어플안에서 트위터와 페이스북 사용자를 검색할 수 있는 기능을 제공합니다. 또한 오프라인 상태에서도 최소한의 기능을 사용하는데 문제가 없으며 게임내에 삽입할 수 있는 다양한 Social API들을 제공합니다.

이 멋진 기능들을 사용하시려면 다음의 링크를 따라가셔서 개발자 등록을 하시면 됩니다.
https://api.openfeint.com/signup

[리눅스 프로그래밍] IPC + MySQL을 이용한 텍스트 기반 머드게임 만들기

이것 역시 학교 과제로 만들었던 프로젝트입니다. IPC(Inter-Process Communication)을 이용하여 다중 접속이 가능한 머드 게임을 만드는 것이었는데요. IPC는 SystemV시절부터 있어왔던 프로세스간 통신 방법입니다.

* 시나리오
서기 2080년 지구의 지상은 인간들의 무분별한 전쟁과 자원 채취로 인간이 살 수 없는 환경이 되어버렸다. 이에 인간들은 우주를 개척하려고 하였으나 아직 인간이 우주에서 살아가기에는 아직 기술적인 문제가 많고 또한 정치적인 문제까지 겹쳐 우주발전이 지연되고 있는 상황이다. 하지만 뛰어난 중력 컨트롤 과학 기술을 이용하여 인간이 살기 힘들 정도로 오염된 지상을 떠나 하늘에서 거주하기 시작하였다. 하늘에는 부유하는 도시가 생겨났고 개인 비행선은 최고의 이동수단이 되었다. 당신은 이제 자신의 비행선을 가지고 무역, 전쟁 또는 도적질을 할 수 있다. 하지만 조심해야 한다. 인간이 하늘로 올라가는 것을 신에 대한 모독이라 여기는 광신교 집단이 무차별적인 공격을 감행하고 있다는 소문이 있다. 또한 환경오염에 따른 괴생물체가 자주 출몰하곤 한다.
당신의 앞날에 행운을 빈다.

위와 같이 나름 멋진 시나리오를 갖추고 멋진 방대한 규모의 설계서를 제출하였습니다. 하지만 역시나 시간상의 압박으로 제대로 구현하지 못하였습니다-_-; 기획의 20%정도만 완성…. 아무튼 결과적으로 A+받았으니 그것으로 만족해야 할것 같네요;;

사용자 삽입 이미지서버를 실행한 모습입니다.

사용자 삽입 이미지클라이언트를 실행하여 아이디와 비번을 입력하고 접속합니다. 계정 관리는 MySQL디비를 활용합니다.

사용자 삽입 이미지users명령어를 이용하여 접속한 사용자들의 리스트를 볼 수 있습니다.

사용자 삽입 이미지stat을 치면 현재 체력을 볼 수 있습니다.

사용자 삽입 이미지map을 치면 현재 위치와 향하고 있는 방향을 알 수 있습니다.

사용자 삽입 이미지특정 사용자에게 메시지를 전송할 수 있습니다.

사용자 삽입 이미지다른 사용자의 입장에서 본 화면입니다. 메시지가 도착했네요.

사용자 삽입 이미지모든 접속자에게 전체 메시지를 보냅니다.

사용자 삽입 이미지미리 구현된 맵을 이동해 다녀봅니다. 막힌 지역으로는 이동할 수가 없으며 다른 사용자를 만날 경우 메시지를 표시해 줍니다.

사용자 삽입 이미지접속을 끊었다가 재 접속하면 최종 로그아웃 했던 위치에서 다시 시작합니다. DB를 활용합니다.

기존적으로 맵의 구현은 다음과 같습니다. 0은 일반 지역 1은 구름이 있어 이동 불가능한 지역입니다.
[code]int Map =
{
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1},
{1,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,0,0,1},
{1,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1},
{1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1},
{1,0,0,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1},
{1,0,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1},
{1,0,0,1,1,1,0,0,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1},
{1,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1},
{1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1},
{1,0,1,1,1,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,0,0,0,1},
{1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1},
{1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
};[/code]

MySQL 데이터 베이스 스키마는 다음과 같습니다. 다음의 테이블을 추가해 둔후에 common.h안의 DB서버 정보를 입력해 주시면 됩니다.

[code lang-sql]CREATE TABLE `USER` (                                 
 `USER_IDX` int(11) NOT NULL auto_increment,         
 `USER_ID` varchar(20) default NULL,                 
 `USER_PW` varchar(20) default NULL,                 
 `USER_NAME` varchar(20) default NULL,               
 `X` int(4) default NULL,                            
 `Y` int(4) default NULL,                            
 PRIMARY KEY  (`USER_IDX`)                           
)


CREATE TABLE `NPC` (                                  
 `NPC_IDX` int(11) NOT NULL auto_increment,          
 `NPC_NAME` varchar(20) default NULL,                
 `ATTACK_DMG` int(4) default NULL,                    // 공격 데미지
 `DEFENSE` int(4) default NULL,                       // 방어력
 `HEALTH` int(4) default NULL,                        // 체력 (공격받을시 데미지 계산 : 현재 체력 – (사용자 공격데미지[10 fix] – NPC방어력))
 PRIMARY KEY  (`NPC_IDX`)                            
)[/code]

컴파일의 경우에는 Makefile을 참고하시면 되며, MySQL 라이브러리 패스를 이곳에서 지정하시면 됩니다.

1364223203.zip