Team Reinless : Game maker

Hello JavaTV

April 1st, 2010

이번에는 간단히 에뮬레이터를 돌려서 “Hello JavaTV”를 찍어보도록 하죠.


우선 편리한 사용을 위해 이클립스 외부도구에 Xletview(에뮬레이터)를 등록하겠습니다.

이클립스에서 Run -> External Tools -> External Tools Configurations


클릭하면 그림 커집니다.


iptv_env_1


Location에는 java.exe의 경로를 잡아주시면 됩니다.

Working Directory에는 xletview 디렉토리 경로를 넣어주시면 됩니다.

Arguments에는 -jar xletview.jar로 적어 넣으시면 됩니다.

Run 버튼을 눌러보시면 에뮬레이터가 뜨는것을 볼 수 있습니다.


iptv_env_4

또한 Run -> External Tools 항목 밑으로 Xletview 메뉴가 생긴것을 볼 수 있습니다.


다음으로는 프로젝트를 만들어보겠습니다.

New -> Java Project


iptv_env_2


Project layout 에서는

Use project folder as root for sources and class files를 선택합니다.

Next버튼 누르시고


iptv_env_3


Libraries 탭을 선택하고, Add External JARs… -> mhpstubs.jar를 찾아 등록해줍니다.

Finish버튼 누르세요.

File -> New -> Class 를 선택해서 아래 링크된 소스코드 내용을 코딩합니다.


[ 소스코드 다운로드 ]


이클립스는 Ctrl + S(저장)하면 세이브와 동시에 빌드가 이루어 지는것이 기본 설정입니다.

빌드를 마쳤으면 이제 에뮬레이터를 켭니다. Run -> External Tools -> Xletview

에뮬레이터 메뉴 중 Applications -> Manage applications…을 선택합니다.


iptv_env_5


위 그림과 같이 적어넣고 Save & Close를 누릅니다.

Applications -> HelloJavaTV를 선택합니다.


iptv_env_6


자, 이제 모든 과정을 마쳤습니다.

복잡한 이야기를 하기 전에 Hello world를 찍어보는 것이 더 재미있다고 생각해서

아무것도 설명하지 않고 진행해 봤습니다.

따로 하나하나의 포스팅으로 설명해야할 내용이 참 많네요.

다음부터는 조금 더 자세하고 지루한 얘기가 될지도 모르겠습니다.

그래도 최대한 재미있고 쉽게 설명해볼게요~




쌍방향 데이터방송 개발을 위한 도구

March 24th, 2010

데이터방송 업계에 계신 분이 아니라면

아마도 대부분은 쌍방향 데이터방송 서비스를 하고 있는 곳을

KT의 QookTV나 SK의 브로드앤TV 정도 밖에 모르실 것으로 생각됩니다.


하지만 위 두 IPTV 업체 이외에도 각 지역의 케이블 업체들과 위성방송인 스카이라이프가

쌍방향 데이터방송을 더 일찍부터 하고 있었죠.

그외에 지상파TV들도 쌍방향 데이터방송을 하고 있는 곳이 있습니다.


각각 약간의 차이는 있으나 SK의 브로드앤TV를 제외하고는

모두 비슷한 개발환경을 사용합니다.

KT QookTV, 케이블TV쪽은 Java를,

SK의 브로드앤TV의 경우 Flash를 사용합니다.


저는 KT IPTV와 케이블TV쪽 일만 해봤기 때문에

SK 브로드앤TV쪽의 Flash를 이용한 개발에 대해서는 아는 바가 없어

포스팅 예정이 없습니다.

앞으로의 포스팅은 모두 KT IPTV나 케이블TV쪽에만 해당하는 이야기가 될 것입니다.


그럼 간단히 쌍방향 데이터방송 개발을 위한 도구들을 소개하겠습니다.

KT QookTV에 꼭 필요한 것이 아니더라도 좀 적어볼게요.

===========================================


Java SDK 1.4.x 이하 권장

기본적으로는 데이터 방송환경이 Java 1.1.8 기준으로 +@하여

구현된 상태라고 말씀드릴 수 있는데

이런 부분들이 각 업체간에도 약간씩 차이는 있을 수 있습니다.


ACAP/OCAP/MHP stubs

ACAP/OCAP/MHP는 데이터방송 표준으로

이 부분은 나중에 따로 하나의 포스팅으로 정리해야 할 것 같네요.

[ interactivetvweb.org ]

이곳 하단에서 MHP stub classes(binaries)를 다운받아 컴파일 할 때 사용합니다.


Eclipse

[ eclipse.org ]

많은 자바 개발툴이 있지만 이클립스를 가장 편하게 쓰고 있습니다.


Xletview

[ sourceforge.net ]

GPL라이센스의 TV에뮬레이터입니다.

꽤 많은 업체가 이것을 그대로 쓰거나 약간 변형하여 사용하고 있습니다.


===========================================

여기까지가 에뮬레이터에서 실행해보는 수준에서 필요한 도구들입니다.

===========================================


TMPGEnc

[ tmpgenc.net ]

비트맵을 MPEG2로 인코딩하는 목적으로 사용하는 인코더입니다.

쌍방향 디지털 케이블 방송용 어플리케이션 제작시에는 사용하였으나,

KT IPTV인 QookTV의 경우 MPEG2를 사용하지 않아 필요하지 않습니다.

설명하려고 하면 꽤 길어질 듯 해서 다음 기회를 이용해 볼게요.


RedRat

[ redrat.co.uk ]

어플리케이션의 메모리 누수 테스트를 자동화하기 위한 장치입니다.

리모컨 신호를 등록하고 테스트 시나리오 대로 리모컨을 눌러 시나리오를

등록하면 예약한 시간이나 횟수만큼 시나리오를 반복 테스트합니다.

유사제품에 대한 정보는 제가 알고 있는 것은 없네요.

반드시 필수라고는 할 수 없으나

한 채널에 여러개의 어플리케이션이 송출되는 경우에는

이것이 없으면 굉장히 힘든 점이 있습니다.

하지만 KT QookTV의 경우 없어도 상관 없을 것으로 보입니다.

그 이유에 대해서는 나중에 채널과 송출방식,

메모리 정리에 대한 포스팅을 하면서 다시 얘기하겠습니다.


셋톱박스(Settop box, STB)

실제 어플리케이션이 다운로드되어 실행되는 장치입니다.

국내에서는 삼성과 휴맥스의 셋톱박스가 가장 널리 쓰이고 있고

그 외에 LG가 후발주자 느낌으로, 가온미디어는 해외수출을 많이 한다고 합니다.

기존에는 주로 SD(Standard Definition) 해상도 셋톱박스가 보급되어 있으나

최근에는 HD(High Definition) 해상도 셋톱박스가 보급되고 있습니다.

이 외에도 PVR(Personal Video Recorder) 셋톱박스라고 해서 하드디스크가

달려있어서 녹화가 가능한 셋톱박스도 보급되고 있습니다.

PVR셋톱박스는 CJ Hello vision에서만 보급 중인 것으로 알고 있습니다.

셋톱박스 제조사마다 조금씩 다른 점이 있으므로 가능하다면

모든 셋톱박스에서 테스트해보는 과정이 필요합니다.


TV 또는 모니터와 TV수신카드

셋톱박스로부터 출력되는 영상을 표시하는 장치입니다.


리모컨

너무 당연하니 설명할 필요는 없겠네요.


하이퍼터미널 또는 teraterm 등의 터미널 프로그램

셋톱박스에서 어플리케이션을 기동할 때에 로그를 출력받기 위해 사용합니다.


USB메모리 스틱

편의상 하나쯤 꼭 가지고 다닙니다.


이 외에 방해받지 않고 장시간 테스트하기 위해서

쿠킹호일(?!)이나 노트북 가방(뭔가 철벽!을 치기 좋은 것들),

접착력 좋은 테이프(호일이나 메시지를 붙입니다),

포스트잇(테스트 중이니 손대지 말아주세요ㅠㅠ 등을 적습니다) 등이 필요합니다.

쿠킹호일이나 노트북가방, 테이프는 리모컨신호 간섭을 방지하기 위해 사용합니다.


===========================================

여기까지가 실제 셋톱박스에 올려 테스트 할 때 사용하는 도구들입니다.


아직 완전한 KT Open IPTV의 개발 환경이 공개된 것이 아니므로

100% 확신을 할 수는 없으나 기존 개발환경으로부터 큰 변화는 없지 않을까 생각합니다.

그럼 다음 시간에 만나요~




오픈소스 게임만들기:지구 최후의 날 – 10

March 18th, 2010

안녕하세요.

소스코드는 [여기]서 019버전을 받으세요.


이번에는 점수와 돈을 얻을 수 있게 되었고 지구의 체력이 다 떨어졌을 때

게임오버가 되도록 변경 되었습니다.


우선 게임오버의 구현입니다.

Game클래스에 ST_GAMEOVER 상태를 만들고

이전 버전에서 만들어둔 damageToEarth()에

hpOfTheEarth가 0보다 작거나 같아지는 경우

게임 오버 상태로 변경되도록 만들었습니다.

게임오버 상태에서는 화면에 잠시 GAME OVER 메시지를 표시하고

이후 메인화면으로 이동하도록 만들었습니다.

이 부분은 Game클래스의 run()을 참고하세요.


다음으로는 점수를 얻는 부분입니다.

점수에 대한 기획이 확실히 잡혀있는 건 아니라

나중에 식을 좀 고쳐야겠다고 생각하고 있습니다만 일단은 다음과 같습니다.

운석을 타격했을 경우 10점을 얻습니다.

스테이지를 클리어 하면

남은 지구의 체력 / 10, 남은 돈, 스테이지 X 1000을 더합니다.

이 부분은 Game클래스의 run()에 ST_CLEAR부분과 checkCollision()를 봐주세요.


마지막으로 돈을 얻는 부분입니다.

돈은 부순 운석의 크기대로 얻게 되는데요.

checkCollision()에 추가로 넣어두었습니다.

더 좋은 방법이 있을 듯도 한데 지금 당장은 잘 떠오르지 않네요.


그래서 이렇게!

osp008

돈과 점수가 추가되었습니다~

그럼 다음 시간에!




KT Open IPTV

March 8th, 2010

애플이 아이폰(iPhone)과 앱스토어(App store)를 발표하면서

IT업계에는 많은 변화가 일어나고 있습니다.


아이폰과 앱스토어가 큰 인기를 누리고 있고,

이를 증명하듯 많은 업체들이 애플의 앱스토어와 비슷한 시장을 만들고 있으니까요.

구글(Google)은 ‘안드로이드 마켓(Android market)’을,

MS는 ‘스카이 마켓(Sky market)’을,

노키아(Nokia)는 ‘오비 스토어(Ovi Store)’를

그 외에도 많은 업체들이 이와 비슷한 시장을 열고

개발자들을 끌어들이기 위해 힘쓰고 있습니다.

누구라도 시장의 흐름이 변하고 있다는 느낌을 받을 수 있는 정도의 열기이고 움직임입니다.


최근 KT에서 Open IPTV를 발표했습니다.

KT에서 발표한 Open IPTV는 누구나 TV를 통해 컨텐츠 거래를 할 수 있는 TV앱스토어죠.

(자세한 내용은 [QookTV홈페이지]에서 확인 하실 수 있습니다.)


개인 개발자로서 이런 시장이 생기는 일은 매우 반가운 일이며

바람직한 일이라 생각하고 있습니다.

누구나 정당한 노력으로 그에 합당한 수익을 얻을 수 있는 기회가 될 수 있을 테니까요.


저는 5년 가량을 TV어플리케이션을 만들어 왔습니다.

굉장한 경력이라 할 수는 없겠지만 그 동안 실무의 경험으로

KT 오픈 IPTV의 여러가지 예상 문제점들을 미리 생각해 볼 수 있을 것이고

많은 사람들에게 새로운 기회가 될 TV어플리케이션 개발에 대한 설명도

할 수 있을 것 같습니다.

그러면 앞으로 이 새로운 카테고리에서 IPTV관련 이야기를 계속해 보도록 하겠습니다.




ej01

Twit sum. – 2010/03/04

March 4th, 2010

트위터를 쓰며 관심있는 내용들을 정리해보려 합니다.

오래된 것을 찾아보려니 힘들어서 말이죠.

그래서 당분간은 조금은 시간이 지난 트윗 내용들이 올라갈 것 같습니다.

저희 트위터는 오른쪽의 Contact us를 봐 주세요.




YoungerJo
맥부기 http://cafe.naver.com/mcbugi 의 마닐라보이님의 계산에 의하면
애플 앱스토어 매국시장 1일 판매량 = 15000 * 전체순위^(-0.7) 에 근접한다고 합니다.


xguru
아이폰 사용자분들은
http://pivotisland.com/yasik/
누르시면 바로 OO 하실수 있습니다.


YoungerJo
대륙이 달라보이는 사이트
http://www.moko.cc/


jjuya
온라인 오락실, MS ‘게임룸’ 영상 공개
http://thisisgame.com/board/view.php?id=329932&category=117&subcategory=


YoungerJo
오늘자 슬라임 마멀레이드 포스팅 – 젤리아드, 놀라운 레벨 디자인:
http://slimemarmalade.com/wp/?p=66
#SlimeMarmamalde


sbroh
안드로이드에 관심있으신 분들은 MUST READ 문서.
칸드로이드 저널 창간호 [Beyond Android]
http://sbroh.wordpress.com/2010/01/05/kandroid_journal_1/
안드로이드에 대한 insight를 길러줄 수 있는 주옥 같은 글들. RT 쁠리즈


nemonandes
결국 지상파 MMS를 하려는가보구만..
[전자신문 기사]


zmagnumz
http://en.tackfilm.se/
재밌는 사이트 하나 뿌려요~


marron111
닌텐도 `Zii`상표 등록! 신형 콘솔 등장 예고?
http://www.gamemeca.com/news/news_view.html?seq=43&ymd=20091215&page=1


mixshkorea
믹시[비즈]: 아이폰,아이팟 판매량 성장 국제적으로 폭발하는 중,
통계자료.
http://dreamreader.tistory.com/134


danielgm
트위터상의 인맥 네트워크를 알아볼 수 있다네요.
정작 트위터를 별로 안 쓰는 남친군이 저보다 더 복잡하게 나와서 깜놀..
http://apps.asterisq.com/mentionmap/


heyjinism
어쩐지 제 남친도 아침부터 건프라 타령이더라니……
@golbin 오옷!!! >_< ;; RT @amun83: 오늘 원어데이는 건프라
http://www.oneaday.co.kr/Today/detail.php

aozet
오늘은 고벤처 정기 모임일입니다.
셀런 고회장님이 주최하는 스타트업 웹 벤처 CEO 모임인데, 가끔 게임 회사도 있다는~
다수의 멘토들도 참가하므로 많은 도움이 되는 모임입니다 :)


krucef
창세기전 3 아이폰용 발매..
[루리웹]


chanjin
우리 나라 회사의 비슷한 서비스도 있네요. 트위터의 가치를 돈으로 환산해주네요. ^_^
나의 트위터 가치는 ₩24,653,754
http://twitteryam.com/chanjin


twit_korea
내년 초 출시되는 삼성 구글폰에 ‘정전식을 도입할 계획으로 알려져..
윈도 모바일 6.5.2까지는 펜 입력 UI가 남아 있어서 감압식을 써야 하지만
내년 6.5.3 버전이 나오면 정전식으로 전환가능..
[야후 기사]


YoungerJo
‘돈버는 모바일 아이폰 앱스토어’ – 야마사키 준이치로 저 :
2009년 11월까지의 앱스토어 상황이 담겨있는 인디 개발자들을 위한 펌쁘질 책입니다 ㅋ 추천!


capcold
아이튠즈에 한국가요 17만곡 음원 공급 결정.
[네이버 기사]
/via @ego2sm


조만간 다시 포스팅 하겠습니다.




오픈소스 게임만들기:지구 최후의 날 – 9

March 3rd, 2010

안녕하세요.

소스코드는 [여기]서 018버전을 받으세요.


이번 버전의 수정 및 변경사항 입니다.

지구의 체력을 표시하는 막대가 생겼습니다.

지구의 체력은 기본적으로 1000으로 정했으며 구체적인 수치는

몇 번 테스트를 해보며 정하려 합니다.

또한 운석이 부수어지는 경우 자금이 떨어지도록 변경되었습니다.


지구의 체력 표시는 간단하게 처리했습니다.

340픽셀 정도의 붉은색 긴 막대를 그리고

그 위에 녹색으로 현재 체력만큼의 막대를 그렸습니다.

Game클래스의 paint()안에 //hp of the earth 부분을 보시면 됩니다.

Meteor 클래스의 run()에는 운석이 화면에서 벗어났을 때

자신의 남은 체력만큼 지구에 피해를 주는 부분도 추가 되었습니다.


운석에서 돈이 떨어지는 부분은

운석에 상태에 대한 항목state을 집어넣고 운석의 체력이 다 했을 때 운석의 상태를

COIN상태로 바꾸도록 했습니다.

여러가지로 허접한 부분이 많아서 손을 좀 더 봐야겠지만

일단은 돈으로 바뀌어 잘 떨어지고 있는 듯 하네요.

osp007


이제 10번째 글을 앞두고 있는데요.

그 동안 생각나는대로 되는대로 냅따 프로그램을 짜다보니 엉망이 되고 있는 느낌도 듭니다.

하지만 갈 데까지 가보자는 마음가짐으로(…)

하하하하하!

농담입니다.

Java로 짜고 있는 프로그램은 프로토타입이니까요.

후딱 게임의 요소만 간단히 구현해보고 본론인 아이폰 쪽으로 넘어가보고자 합니다.

그래도 기왕 소스를 공개했으니 어느정도 완성되고 나면 코드에 주석도 좀 더 넣고

적당히 수정도 해야겠다고 생각하고 있어요.


이제 남은 작업은

1. 떨어지는 돈을 먹고 돈이 늘어나도록 구현

2. 지구의 체력이 다 떨어졌을 때 게임오버가 되도록 구현

3. 점수를 계산하고 표시하는 내용

4. 인터미션 화면에 돈을 이용하여 여러가지 업그레이드를 할 수 있도록 구현

5. 업그레이드 중 새로운 무기의 구현

정도가 남아있을 것 같네요.

남은 부분도 후딱! 진행해 보겠습니다.




오픈소스 게임만들기:지구 최후의 날 – 8

February 26th, 2010

안녕하세요.

이번에는 인터미션의 추가와 스테이지 추가가 이루어졌습니다.

소스코드는 [여기]서 017버전을 받으시면 됩니다.


당연히 Intermission 클래스가 추가 되었습니다만 내용은 별 것 없습니다.

한 화면의 단위로 정의한 Page클래스를 상속받았고

화면에 Intermission 이라고 써주고 키 입력을 받으면 다음 스테이지로 넘어가는 동작이 전부 입니다.

나중에는 여기에 각종 업그레이드 관련 내용이 채워지게 되겠지요.


스테이지를 늘리기 위해서

data폴더에 stage1.txt ~ stage4.txt까지를 적당히 만들어 넣었으며

Game 클래스의 start()에 총알, 플레이어, 상태 등의 초기화를 넣고

해당 스테이지의 데이터를 읽어 세팅하도록 해 두었습니다.


osp006

자~ 이제 스테이지 1을 클리어 하면 인터미션이라고 쓰여진 화면이 나오고

버튼을 누르면 다음 스테이지로 진행되어 1 ~ 4 스테이지를 플레이 할 수 있습니다.


꽤 간단한 수정으로 인터미션 화면의 추가와 스테이지 추가가 이루어졌는데요.

다음에는 진도를 좀 뽑아보기 전에 전체적인 정리를 한 번 해봐야겠습니다.




오픈소스 게임만들기:지구 최후의 날 – 7

February 17th, 2010

안녕하세요.

이번엔 일정 데미지를 받으면 운석이 파괴되는 부분과 스테이지 진행에 앞서 각종 상태가 정의 되었습니다.

소스코드는 [여기]서 016버전을 받으시면 됩니다.


우선 운석 부분의 변경사항입니다.

기존의 원으로 그려졌던 운석이 사각형으로 표시되도록 바뀌었습니다.

이번 기회에 사각형을 주제로 디자인을 해야하는가 하는 생각도 해보고 있습니다.


다음으로는 크기에 대한 부분이 정해졌습니다.

기존에는 stage파일에서 픽셀을 적으면 그대로의 크기가 표시되었지만

이제는 1~4의 숫자를 적고 그 숫자는 아래 적혀진 대로 표시되게 됩니다.

public static final int SIZE_1 = 20;
public static final int SIZE_2 = 35;
public static final int SIZE_3 = 45;
public static final int SIZE_4 = 65;

즉, 이제 운석은 20, 35, 45, 65픽셀 크기의 네 종류로 통일 된 것입니다.

여기에 운석의 HP도 정해지게 되어 현재는 픽셀 X 10이 운석의 HP로 되어있습니다.

이후 밸런스를 보고 조정해야 하겠지요.


damage()도 추가되었습니다.

이는 운석이 데미지를 받는 내용이 들어있는 함수(메서드)로 내용은 단순합니다.


Bullet class의 crash()는 패러미터로 Meteor class를 받도록 변경되었고

Game에서 총알이 충돌 후 crash()를 부를때 해당 운석을 넘겨주어

Bullet의 run()에서 운석의 damage()를 부르도록 되어있습니다.

그다지 좋은 방법이라 생각되지는 않지만 좋은 생각이 나면 고쳐보도록 하겠습니다.

현재 총알 한 발의 공격력은 100으로 정해두었습니다.


다음은 Game class의 변경입니다.

상태state가 생기고 아래와 같은 정의가 새로 생겨

public static final int ST_STAGE_INFO = 0;
public static final int ST_STAGE_START = 1;
public static final int ST_GAME = 2;
public static final int ST_CLEAR = 3;

타이틀 화면 -> 스테이지 표시 -> 스테이지 시작 -> 게임 -> 스테이지 클리어

이와 같은 흐름을 갖게 되었습니다.

osp005


다음에는 스테이지 추가와 인터미션 화면의 삽입을 해보겠습니다.




Touch and sum lite is released.

February 17th, 2010

tns15_01


Touch and sum lite is released.

[ You can download at App store for FREE. ]




오픈소스 게임만들기:지구 최후의 날 – 6

February 10th, 2010

안녕하세요.

지난 번의 포스트에서 말씀 드렸던 문제를 해결하고

충돌체크까지 추가된 버전을 올려두었습니다.

소스코드는 [여기]서 015버전을 받으시면 됩니다.


이 소스코드에는 Page로 정의된 component를 만들어 넣으면 화면전환을 할 수 있는 코드가 포함되어 있었습니다.

Engine에 포함되어 있지요.

그런데 이전 버전에서 화면의 전환이 정상적으로 이루어지지 않는 것을 발견하였습니다.

문제는 Page의 영역을 320 X 480으로 잡고 있지 않더군요-_-;


현재는 정상적으로 처리 되어 이렇게

osp005_1

타이틀 화면이 추가되었습니다!


타이틀 화면의 내용은 별 거 없습니다.

글씨 두 줄 출력과 스페이스바 입력을 받으면 게임 화면으로 넘어가는 것이 전부입니다.


게임 쪽에서는 충돌체크에 대한 내용이 구현되었습니다.

아마도 충돌체크에 대한 알고리즘은 많은 방법들이 있을 겁니다.

저는 그 중 가장 단순무식한 방법으로

각각의 총알과 운석을 사각형 영역으로 생각하고

모든 총알 수 만큼 loop를 돌리고 그 안에 모든 운석 수만큼 loop를 돌려서

겹치는 부분이 있는지 체크하는 방식을 사용하였습니다.


코딩 내용은 다음과 같습니다.


Bullet클래스에는 state가 추가 되어

일반 상태STATE_NORMAL와 부수어지는 상태STATE_CRASH를 표시할 수 있게 되었으며

crash메서드(함수)가 추가 되었고

run()내부에 STATE_CRASH에서의 동작이 구현 되었습니다.

paint쪽에는 STATE_CRASH일때 색깔이 붉은 색으로 변할 수 있게 했습니다.


BulletManager와 MeteorGenerator에는 각자 자기가 관리하고 있는 Bullet과 Meteor로의 참조를 받아올 수 있도록 getBullets()와 getMeteors()가 추가되었습니다.


마지막으로 Game클래스 내에 checkCollision()이 추가 되어 충돌체크에 대한 내용이 들어있습니다.

그리고 checkCollision()은 Game의 run()에서 불리고 있죠.


이번에는 실행 동영상을 찍어봤습니다!




다음에는 운석이 일정 이상의 데미지를 받았을 때 부수어지는 내용 등을 추가해 보겠습니다.