비빵빵빵빵빵빵빵

b0000000.egloos.com

포토로그




파이널 라이브 뷰잉 후기..

3월 31일로 돌아가고싶다.ㅠㅠㅠㅠㅠㅠㅠㅠ

MMR 개발 포스트모텀.

동방화귀전 이후로 1년만의 포스트 모텀인듯(....)

게임출시는 못했지만 어쨋든 2012년에도 회사일 말고 뭔가 하나 완성하긴 했네영....orz...

nod씨의 졸작에 헬퍼로 발만 살짝 담궈도 되겠지 했다가 그냥 몽땅다 구현했습니다...

외요전,화귀전, 지금 만드는 게임할때는 제가 기획겸 프로그래머니까 하고싶은거 위주로 하고 귀찮은건

왠만하면 쳐내고 이런게 자유로웠는데 남의 기획을 받아서 할려니까

멘탈관리가 장난아니게 힘들었습니다.(-_- )y-~ 왜 힘들었는지는 포스트 모텀 쓰면서 나올듯.. ㅋ


일단 대충의 기획은 이겁니다.

1.체중계위에 사람이 올라가면 그 사람의 체중에 따라 화면의 블록수가 다르게 떨어짐
  (체중이 많이나가면 많이 적게나가면 적게)

2.몸을 씐나게 움직이면 화면의 블럭이 하나 하나 위로 올라감.

3.제한시간내 블럭을 전부 위로 보내면 게임 클리어

4.전부 못 올리면 게임 오버.


기획자체는 굉장히 심플하고 블록 떨구고 올리고 게임 클리어, 게임오버야 뭐

게임 하루이틀 만드는것도 아니고 완전간단한데 문제는


1. 체중에 따라 떨어지는 블럭수 조절

2. 몸을 씐나게 움직이는거 체크

이 두개를 어떻게 구현할건지가 문제.


하지만 우리의 마소형님께서 단돈 10여만원에 출시해주신 키넥트라는 좋은게 세상에 있슴미다.

댄스센트럴 할라고 사놨다가 먼지만 쳐먹고있던 키넥트쨩이 드디어 할일이 생김.. 우왕ㅋ굳ㅋ

일단 키넥트 SDK 를 다운받아서 뒤적뒤적 해봤습니다.

SkeletalViewer 라는  예제가 있었는데 그냥 실행해보니

뭐 셋팅이고 없이 아주 실행 잘되고 모션도 아주 잘 잡아서 보여줍니다.

코드를 좀더 뜯어보니 15개짜리 배열에 모션데이터를 매 프레임마다 넣어서 갱신해줌.

그냥 뭐 더 뜯어볼것도 없이 이 배열안에 걍 값이 있음.. 짱임...

그래서 모션데이터가 들어있던 배열값을 뭐.. beforeMotion 이런 배열에다가 옮겨놓고

매 프레임마다 새로 들어온  모션값이랑 비교해서 달라진 수치를 다 더해버림...

그랬더니 보통 격렬히 움직이면 300~1000 정도의 값이 나왓던듯??

이걸 제 라이브러리에 붙일까 했는데...

코드 더 분석하기도 귀찮고 이미 값은 구했는데 이 값만 그냥 넣어주면 되지 않을까 해서...

블럭처리를 하는 프로그램을 서버로... 키넥트 데이터를 읽어오는

SkeletalViewr 뜯어고친 프로그램을 클라이언트로 해서 키넥트에서 매 프레임마다 구해지는 모션값을

패킷으로 쏴버렸습니다... 그러니까 내가 나한테 패킷 쏨. ㅋ



그러게 해서 프로그램이 잘 돌아갔냐 하면.. 존나 잘됏슴미다. 우왕ㅋ굳ㅋ



키넥트 정보가 제대로 날라오는지 확인하기 위한 예제 영상입니다. 

움직임에 따라서 블럭 색이 마구 바뀝니다.

전 사실 키넥트 정도만 활용하고 움직임에 따라서 블럭 올리고.. 게임 클리어 까지만 구현할가 했는데

그게 그렇게 안되더라그영.. 무슨일이 있어도 체중에 따른 블럭낙하를 구현해야 된다고(....)

아... 지금 생각해도 빡친다(....)





어쨋든 그다음에 움직이면 블럭이 올라가는 작업까지 했습니다.



이제 전자체중계를 만들어야 되는데 막막하더근영...

뭐 회로야 대학때 전공이니까 걍 하면 된다고 치는데  압력에따라 전류를 다르게 내주는

로드셀 이었나? 하여튼 그런게 있었는데 그걸 사람이 올라가는 체중계 레벨로

만들려면 돈도 돈인데 기자재고 뭐고 아무것도 없었거든요........

오실로스코프는 고사하고 테스터기도 없었는데(...)


체중계는 진짜 대책없고.. 내가 체중을 입력해서 블럭쪽으로 전송하는 모바일 앱을 만들어주겠다

그걸로 무게 체크하면 안되나요 했는데....

뭐 결론만 말하자면 체중계를 만들었습니다...( -_-)y-~


진짜 로드셀 써서 만드는 체중계가 아니라 기계식 체중계를 어케어케 하면 되지 않을까 해서 기계식 체중계로

전자체중계 개발을 시작했습니다. 교수도 그렇게 하라고 했다네영... 기계식 써서 해보라고...

어쨋든... 전자체중계를 만들어야 하니..

아두이노 스타트 킷을 주문했습니다.

학교에서는 atmega128 썻었는데

아두이노가 개발환경셋팅이랑 프로세싱 지원해서 코드도 심플하다고 해서 일단 주문했습니다..

128할때는 모듈있어도 개발환경 셋팅하는게 또 일이었거등요...


아두이노 모듈 긔엽긔...


제 첫번째 계획은 기계식 체중계 그 숫자 써있는 동그란 판에

작은 자석을 5 kg 나 10 kg 단위로 붙여놓고 사람이 올라가면 그 동그란 판이

돌때 자기센서로 자석이 몇개 지나갔는지 체크해서 대략적인 무게를 구하도록 하자!!!!

였습니다.


마그네틱 센서 구입!

빵판에 간단히 회로부 구현


자석을 대어보면 LED 에 불들어옴.. 아주 잘 돌아감.. 우왕ㅋ굳ㅋ



그리고 이제 실전으로 기계식 체중계에 껍데기를 제거하고

원판에 작은 자석을 하나하나 달기 시작했습니다.

0kg 5kg 10kg 세군데 자석을 딱 붙이고 테스트를 위해 체중계에 올라가는 순간....


네..

저는 왜 생각하지 못할걸까요...

기계식 체중계 프레임이 철이라는걸(.....)


체중계에 올라가는 순간 원판 돌다가 자석이 프레임 밑으로 들어가는순간

쩍!! 하고 프레임에 원판이 붙어버리더근영(...)

.................... 그래서 첫번째 해결책으로 원판 뒤쪽에 붙여봤습니다.

그래도 쩍!!!!

......................잠시 생각하다가 마트가서 과학상자를 사왔습니다...

원판을 뜯어내고 과학상자로 작게 원 모양 판데기 만들어서 체중계에 부착.. 그리고 자석 달고

올라가는 순간

쩍!!!!!!!!!!

붙어버림....

멘붕의 현장....


마음을 한번더 진정시키고 이번엔 가변저항으로 해보자 했습니다.

마침 기계식 체중계에 스프링을 움직이는 톱니가 있더근영...

가변저항의 움직임에따라 전류값 얻는 회로랑 코드를 짠후 가변저항을 체중계에 달아보기로 함

이쁘게 달아봐야징~~





될리가 없음...

저 병신같이 연약한 스프링과 톱니로 가변저항 돌리기에는 택도 없었음.(-_- )


페르소나3 라스트 보스 한대만 치면 되는데 갑자기 풀 회복한뒤 한대맞고

주인공 죽었을때 패드 던진이후로 진짜 빡쳐서 물건 던져본게 몇년만인지(....)


상황을 설명하고 결국 청계천 갔습니다. 메카닉의 장인들이 아직도 살고 있다는 그 청계천....

기계식 체중계에 제발 가변저항 하나만 달아주십셔!!!

딱 일주일 만에 만들어 주시더근영....... 아 그냥 처음부터 맡길껄( -_-)y-~

어쨋든 그 메카닉 아자씨도 일반 가변저항으론 안되고 뭔가 외국부품을 공수했다고 부서져서

다시만들려면 부품 주문해야 되니까 왠만하면 부수지 말라고 하시더근영..

어쨋든 감사합니다. 아저씨 ㅠ

그리고

"아 그거 5v 에 대충 저항 1k 짜리 물리면 무게랑 비슷하게 값 뽑힐꺼임 ㅇㅋ?"
"아 넵 ㅇㅋ"

그래서 집에서 회로 테스트 했는데 진짜 1k 물리니까 무게랑 비슷한 전류값 뽑아줌.. 우왕ㅋ굳ㅋ

빵판에 테스트 회로 만들고 처음으로 기계식 체중계와 키넥트를 연동해서 프로그램을 돌려봤습니다.



영상 보시면 체중계에 올라가고 회로에 연결된 led 가 반짝거리면서 데이터가 들어가는게 보이실겁니다.

체중데이터가 입력되면 블럭이 쫘악 내려가고 키넥트에서 모션을 체크해서 블럭을 위로 올립니다. ㅎ


체중계랑 회로쪽 구조는 대충

체중계에 올라가면 가변저항 통해서 출력된 전류값이 아두이노로 들어가고 측정된 절류값을 아두이노의

시리얼 통신을 통해서 pc 로 들어갑니다. 아두이노는 기본적으로 프로세싱과 호환 및 연동을 지원합니다.

프로세싱쪽으로 시리얼을 통해 값이 들어가고 프로세싱으로 짜여진 프로그램이

블록게임쪽으로 위의 키넥트처럼 패킷을 날립니다.

대략적인 시스템 구조.

구조는 간단한데 전자회로랑 키넥트랑 이것저것 묶여있어서 게임 시퀀스 자체는 좀 복잡합니다.(-_- );

항상 값을 읽어오고 있으면 전시물 목적이라서 회로랑 키넥트에 무리 갈거 같아서 필요할때마다 활성화하고

그런게 좀 귀찮았음....


전시물이기 때문에 그냥 허연 빵판에다가 회로를 구성할순 없었습니다. 막 건들여서 선빠질 위험도 있고..
 
저처럼 외도하지 않고  전자전공을 살린 후배들에게 연락해서 인두랑 납이랑 기판이랑 빌려왔습니다.

이자리를 빌어 감사함... 고맙다 얘들아 ㅠ

이게 얼마만에 하는 납땜이여(...)



근데 회로자체는 존나 간단해서 뭐 딱히 하고말건 없....


그리고 드디어 완성해서 전시 시작 했습니다.





뭐 예상대로 목요일쯤 전자 체중계가 돌아가셨다고 하더근영... 체중계 위에서 방방뛰는 사람들이

많았다고(.....) 역시 사람들은 메뉴얼을 안 읽...........



이걸로 길었던 프로젝트 하나 완료입니다....

제 대학교때 졸작보다 더 쩔어주게 만들었네요(-_- )y-~

졸업하고 하드웨어 건드릴일 없을줄 알았는데 나름 재미도 있었습니다.
 
그런데 그 체중계... 기구부 때문에 스트레스가 너무 심했었던 프로젝트 였네요.

게임 프로그래밍, 회로설계, 회로구성, 네트워크,... 제가 알고있는건 다 끄집어내서

만들었던 프로젝트 였습니다. ㅋㅋㅋ 생각해보니까 20대의 마지막 프로젝트네요.... 흨.ㅠ

그리고 님들 아두이노 쓰세요 아두이노 존나 간편하고 짱임...



이제 열심히 게임 만들어야지

사슴농장 신작은 빠르면 2013년 초에 나올겁니다.. 심플한 게임이에요...ㅎ

내년에도 열심히 합니다..

1