ݺߣ

ݺߣShare a Scribd company logo
게임 제작
박준철
게임 제작 트릭
• 게임 오브젝트 관리
• 오브젝트 재사용
• 모션 블러
• 외곽선 문자
• 액션 버튼
게임 오브젝트 관리
• 오브젝트 추가
->
* 사실 대부분 Array클래스에서 이미 지원
게임 오브젝트 관리
• 오브젝트 삭제
case 1 case 2
게임 오브젝트 관리
• dirt
어차피 계속 바뀔 거 뭐하러 매번 계산?
게임 오브젝트 관리
• 트리 구조
- z순서
- 통합 관리
게임 오브젝트 관리
• 트리 컬링
게임 오브젝트 재사용
• Pool
획득/반납의 개념.
책이 10권 있는 책장이 있는데
책장에서 책을 꺼내가고, 다 읽으면 다시 꽃아놓는다.
이 때 누가 뭘 가져가든 다시 꽃아놓던 전체 책의 갯수는 10권
( 가져간 채로 죽지만 않으면 )
이게 바로 pool
게임 오브젝트 재사용
- 죽은 몬스터 오브젝트를 다음에 다시 사용.
- 굳이 매번 new/delete 할 필요가 없음.
- hp만 100 만들어주고, xy좌표만 다시 설정하고 spawn
모션 블러
• 이미지 프로세싱, 세이더 이런거 몰라도 가능
모션 블러
폰트 외곽선 넣기
• 외곽선 색으로 8방향 그리기 -> 원래 위치에 그리기
액션 버튼
• 웹 페이짶
액션 버튼
• 간단한 스케일만으로 버튼 햅틱 액션
블렌딩
+ =
+ =
한글 처리
• 한글 윈도에서 보통 한글은 2바이트로 처리 (cp949)
• 가끔 IME를 직접 구현해야 하거나, TextBox를 구현
해야 할 일이 생긴다.
• n번째 글자가 한글인지 아닌지 구분해야 하는 상황이
옴
한글 처리
• 멀티 플랫폼을 지원하는 프레임워크 (cocos2d, SDL )
등은 utf-8을 사용.
액션
• 서있음 -> 달리기 준비 -> 달리기 -> 멈춤 -> 서있기
• 5초 동안 초당 10의 도트 데미지
• 발차기 : 발 올리기 -> 히트 -> 발 내리기 -> 서있기
• 히트 상태에서 적에게 데미지도 주고 싶음
액션
온라인 게임을 만들 때
• TCP 프로토콜에 대해서
• 서버 접속이 안되요
• 렉이 너무 심해요
• 네트워크 작업 할 때
• 데이터 저장 할 때
TCP 프로토콜에 대해서
• 엄청 많이 쓰이는 프로토콜
• recv(10) 한다고 10 바이트 받아오는거 아님.
• 패킷을 지 멋대로 자르고 붙인다.
• 비트 단위로는 안쪼개니 안심
• 보내고 받는 순서도 보장되니 안심
서버 접속이 안되요
• 방화벽 열었는지
• 포트 포워딩
렉이 걸려요
• 유선 랜 : 8ms
• 무선 공유기 : 8~10ms / 근데 가끔 핑이 팍 올라간다.
• 3G : 100ms~ / 실시간 게임이 힘듬
• LTE : 20ms ~
• EGG : 50~100ms
• 초당 60fps를 렌더할 때 한 프레임당 딜레이는 16ms /
30fps에서는 33ms
렉이 걸려요
• send 한다고 바로 보내지는 것이 아님
• 패킷이 작을 경우 다음번 send한 패킷과 같이 뭉쳐서
가기도 한다.
• 위의 작업 때문에 내가 보낸 패킷이 바로 서버로 안간
다 ->렉이 발생
• nagle 알고리즘을 키워드로 검색
네트워크 작업 할 때
• 절대 메인 스레드에서 네트워크 io하지 마세요
• 네트워크 엄청 느린 io임
• 네트워크 io만 하는 스레드를 따로 생성
• thread-safe한 queue제작 필요
데이터를 저장할 때
• fopen, CreateFile, open 등등 쓰지 마세요
• SQLite3

More Related Content

ㅍᄇơᆯᅭ

  • 2. 게임 제작 트릭 • 게임 오브젝트 관리 • 오브젝트 재사용 • 모션 블러 • 외곽선 문자 • 액션 버튼
  • 3. 게임 오브젝트 관리 • 오브젝트 추가 -> * 사실 대부분 Array클래스에서 이미 지원
  • 4. 게임 오브젝트 관리 • 오브젝트 삭제 case 1 case 2
  • 5. 게임 오브젝트 관리 • dirt 어차피 계속 바뀔 거 뭐하러 매번 계산?
  • 6. 게임 오브젝트 관리 • 트리 구조 - z순서 - 통합 관리
  • 8. 게임 오브젝트 재사용 • Pool 획득/반납의 개념. 책이 10권 있는 책장이 있는데 책장에서 책을 꺼내가고, 다 읽으면 다시 꽃아놓는다. 이 때 누가 뭘 가져가든 다시 꽃아놓던 전체 책의 갯수는 10권 ( 가져간 채로 죽지만 않으면 ) 이게 바로 pool
  • 9. 게임 오브젝트 재사용 - 죽은 몬스터 오브젝트를 다음에 다시 사용. - 굳이 매번 new/delete 할 필요가 없음. - hp만 100 만들어주고, xy좌표만 다시 설정하고 spawn
  • 10. 모션 블러 • 이미지 프로세싱, 세이더 이런거 몰라도 가능
  • 12. 폰트 외곽선 넣기 • 외곽선 색으로 8방향 그리기 -> 원래 위치에 그리기
  • 14. 액션 버튼 • 간단한 스케일만으로 버튼 햅틱 액션
  • 16. 한글 처리 • 한글 윈도에서 보통 한글은 2바이트로 처리 (cp949) • 가끔 IME를 직접 구현해야 하거나, TextBox를 구현 해야 할 일이 생긴다. • n번째 글자가 한글인지 아닌지 구분해야 하는 상황이 옴
  • 17. 한글 처리 • 멀티 플랫폼을 지원하는 프레임워크 (cocos2d, SDL ) 등은 utf-8을 사용.
  • 18. 액션 • 서있음 -> 달리기 준비 -> 달리기 -> 멈춤 -> 서있기 • 5초 동안 초당 10의 도트 데미지 • 발차기 : 발 올리기 -> 히트 -> 발 내리기 -> 서있기 • 히트 상태에서 적에게 데미지도 주고 싶음
  • 20. 온라인 게임을 만들 때 • TCP 프로토콜에 대해서 • 서버 접속이 안되요 • 렉이 너무 심해요 • 네트워크 작업 할 때 • 데이터 저장 할 때
  • 21. TCP 프로토콜에 대해서 • 엄청 많이 쓰이는 프로토콜 • recv(10) 한다고 10 바이트 받아오는거 아님. • 패킷을 지 멋대로 자르고 붙인다. • 비트 단위로는 안쪼개니 안심 • 보내고 받는 순서도 보장되니 안심
  • 22. 서버 접속이 안되요 • 방화벽 열었는지 • 포트 포워딩
  • 23. 렉이 걸려요 • 유선 랜 : 8ms • 무선 공유기 : 8~10ms / 근데 가끔 핑이 팍 올라간다. • 3G : 100ms~ / 실시간 게임이 힘듬 • LTE : 20ms ~ • EGG : 50~100ms • 초당 60fps를 렌더할 때 한 프레임당 딜레이는 16ms / 30fps에서는 33ms
  • 24. 렉이 걸려요 • send 한다고 바로 보내지는 것이 아님 • 패킷이 작을 경우 다음번 send한 패킷과 같이 뭉쳐서 가기도 한다. • 위의 작업 때문에 내가 보낸 패킷이 바로 서버로 안간 다 ->렉이 발생 • nagle 알고리즘을 키워드로 검색
  • 25. 네트워크 작업 할 때 • 절대 메인 스레드에서 네트워크 io하지 마세요 • 네트워크 엄청 느린 io임 • 네트워크 io만 하는 스레드를 따로 생성 • thread-safe한 queue제작 필요
  • 26. 데이터를 저장할 때 • fopen, CreateFile, open 등등 쓰지 마세요 • SQLite3