2012. 2. 19.

image

  • 2인 플레이 방식을 버리고 1인용으로만 처리. 멀리 플레이는 추후 랭킹 시스템으로 대신할 예정이고, 혹시나 대전을 한다 해도 TCP 통신을 할 예정.
  • DXUT에서 제공하던 타이머 코드를 추가. QueryPerformanceCounter를 사용하는 정교한 시간처리 가능.
  • 블럭 버퍼링 기능(?) 추가. 한게임이나 원조 테트리스 보면 제공하는 기능. R-shift키를 누르면 현재 떨어지던 블럭이 버퍼에 저장된다. 필요할 때 꺼내 쓸 수 있다.
  • 다음 블럭, 버퍼 블럭의 표시위치 및 방식 변경. 지정된 영역(Rect)의 중앙에 위치하도록 중점 계산하고 좌표 장난치는 코드 추가.

2012. 1. 21.

  • 레벨(스테이지) 개념 추가. 레벨이 오를 수록 블럭 떨어지는 속도가 빨라짐. 레벨이 오를 수록 게임필드 배경색상이 붉게 변한다. 게임필드 배경에 현재 스테이지 번호를 렌더링하고, 필드 오른쪽에는 다음 레벨까지 얼마나 남아 있는지 표시해주는 세로방향 미터기를 달았다.
  • 블럭에 음영처리 : 포토샵에서 레이어 필터효과로 간단히 처리. 밋밋할 때보단 보기 좋아 보임.
  • 사라지는 줄의 애니메이션 처리 : 당장은 알파가 서서히 사라지는 연출만 넣어두었다. 파티클 시스템이나 혹은 다른 이펙트 시스템을 만들고 나면 추가로 연출할 생각. 지금 연출만 하더라도 아무것도 없을 때 보다는 훨씬 보기 좋음.

2인용을 포기하고 1인용으로 바꿔야겠다. 화면을 넓게 쓴 다음에 점수 시스템, 콤보 시스템, 통계(?) 시스템, 랭킹 시스템 같은 걸 넣어서 빈 화면을 채우는게 낫겠어.


2012. 1. 20.

  • 코드 리팩토링 : State Design Pattern 도입. 로직을 본격적으로 확장하기 전에 미리 정리해두는 게 좋을 것 같아 대폭 수정.
  • 배경 이미지 변경 : 이건 그냥 jpg 리소스 바꾸는 거니까.. 한게임 테트리스 포스터 무단도용(…) 나중에는 일정 시간이 지나면 부드러운 애니메이션으로 화면전환하는 기능을 해봐야겠다.
  • 고스트 블럭 출력 : 떨어지는 블록의 예상 위치를 반투명하게 미리 표시. 로직이 정리되어서 쉽게 가능했다.

다음엔 다 채운 줄이 지워질 때 이펙트를 넣어야겠다. 사실 그걸 하려고 FSM을 넣었음.

드디어 좀 더 화려한 작업을 할 수 있겠군 :)

Posted by leafbird 트랙백 0 : 댓글 0

댓글을 달아 주세요

… 이렇게 생긴 녀석을 작년에 만들어서 가지고 있었는데, 오늘 갑자기 무슨 바람이 불어서인지 이 코드를 다시 열고 한참 가지고 놀았음. 어제 아꿈사 시작발표에서 승훈 행님이 ‘사람이나 소프트웨어나 옷을 잘 입는게 중요하다’고 그랬는데, 나도 옷을 한 번 갈아 입혀 보았음 ㅎ

원색에 가까운 저 블럭들 색상도 어떻게 만져보고 싶지만 그건 다음에 하자.

D2D 테스리스는 Direct2D를 손에 익히려고 한 번 짜보고 관둘 생각이었는데, 생각을 바꾸었음... 계속 살을 붙여나갈 생각이다. 간단한 2D 게임이라고 해도 제대로 짜려고 하면 나름대로 구조나 설계도 필요하고 여러가지 유틸리티 클래스 (로그, 스크립트, 프로파일(?), HUD/UI 등등…)가 필요한데, 회사에서 만드는 코드 외에 완전한 내 소유의 코드를 쌓아간다는 기분으로 이런 것들을 차근차근 만들어둘 생각. 그래서 나중엔 간단하게나마 필요한 기능은 다 갖춘 2D 게임 엔진을 모두 만들어 가지는 것이 최종 목표다.

머리속으로 생각은 참 많다. Box2D 같은 물리 엔진을 붙여보고 싶기도 하고, 욕심같아서는 3D나 네트웍도 붙여보고 싶긴 한데… 욕심내지 말고 찬찬히 쌓아가야지. 그리고 간간히 스샷을 블로그에 남겨두면서 나중에 제작 과정을 되새겨 볼 수 있게 해야겠다.

 

Posted by leafbird 트랙백 0 : 댓글 2

댓글을 달아 주세요

  1. addr | edit/del | reply Favicon of http://www.mint64os.pe.kr BlogIcon kkamagui 2012.01.09 00:07

    우왓~!!

    테트리스 디자인 멋져부러~ >ㅁ<)-b
    여기 좋은 자료가 많구나~ ㅎㅎ 많이 배우고 갈께 ㅎㅎ

    고맙다 ^^)/~

    • addr | edit/del Favicon of https://devnote.tistory.com BlogIcon leafbird 2012.01.09 10:32 신고

      아이구 행님이 여기서 배울게 뭐 있을라고요 ㅎ
      이거 조금 만져서 민트OS에 게임어플 하나 헌정할까 생각도 잠깐 했었으나 나능 시그윈이 시러요 ;ㅁ;)...

만들어서 와이프랑 이걸로 같이 게임 했다 ㅋㅋㅋ

공격모드를 넣어야겠다.

Posted by leafbird 트랙백 0 : 댓글 0

댓글을 달아 주세요

일요일 ~ 월요일 연휴기간에 이거 만들면서 놀았다.

이틀 작업하긴 했지만 일요일 아침엔 Direct2D 문서 좀 찾아보고 다른 거 만들다가 후반부에 시작했으니 하루 반 정도 만든 셈.

기본적인 게임 플레이는 어느 정도 만들었으나 아직 Direct2D를 제대로 활용하고 있지 못하다. 이제 앞으로 좀 더 다듬어 가면서 이미지 파일도 쌔끈한걸로 바꾸고 파티클 이펙트 시스템도 구현하고 애니메이션도 구현하면서 본격적으로다가 Direct2D 여러가지 기능들을 한 번 써볼 참이다.

재미있다 우히히 :)

Posted by leafbird 트랙백 0 : 댓글 5

댓글을 달아 주세요

  1. addr | edit/del | reply Favicon of http://soomong.net BlogIcon soomong 2011.06.08 10:26 신고

    역시 개발자! ^^

    • addr | edit/del Favicon of https://devnote.tistory.com BlogIcon leafbird 2011.06.10 10:41 신고

      ㅎㅎ
      수몽님 결혼 축하드립니다 ~ ^^*
      신부님 너무 예쁘세요 +0+)/

  2. addr | edit/del | reply Favicon of http://progrator.tistory.com BlogIcon Warning 2012.09.10 17:57 신고

    D2D에서 비트맵의 특정색상을 지우는건 어떻게 하나요 .. ㅠㅠ;;
    예를 들면.. TransparentBlt 함수나, GDI+ 에서의 imageattributes의 SetColorKey 라던지..

    • addr | edit/del Favicon of https://devnote.tistory.com BlogIcon leafbird 2012.09.10 18:22 신고

      컬러키를 지정하는 방식은 제공을 안 하는 것 같아요.
      대신에 별도의 마스크 이미지를 씌워서 알파를 적용하는 방법이 있고,
      아예 bitmap을 24비트로 알파채널을 존재한 채로 만들어서 읽으면 바로 적용된다고 알고 있습니다. (tga파일 사용하는 것 처럼요)

    • addr | edit/del Favicon of http://progrator.tistory.com BlogIcon Warning 2012.09.10 19:03 신고

      오 감사합니다 ㅠㅠ..