SlideShare 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

PDF
유니티 - 스크립트(Scripting) 기초
PDF
MMOG Server-Side 충돌 및 이동처리 설계와 구현
PDF
이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014
PDF
테라로 살펴본 MMORPG의 논타겟팅 시스템
PPTX
게임분석 기획A 박현우
PDF
LockFree Algorithm
PDF
빠른 렌더링을 위한 오브젝트 제외 기술
PDF
나만의 엔진 개발하기
유니티 - 스크립트(Scripting) 기초
MMOG Server-Side 충돌 및 이동처리 설계와 구현
이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014
테라로 살펴본 MMORPG의 논타겟팅 시스템
게임분석 기획A 박현우
LockFree Algorithm
빠른 렌더링을 위한 오브젝트 제외 기술
나만의 엔진 개발하기

What's hot (11)

PDF
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
PDF
안드로이드 멀티스레딩 입문 송형주
PPTX
Hierachical z Map Occlusion Culling
PDF
함수형 프로그래밍
PDF
Concurrency in action - chapter 7
PDF
임태현, 서버점검 제로에의 도전, NDC2011
PPTX
리플렉션과 가비지 컬렉션
PDF
Concurrency in action - chapter 5
PDF
[ETHCon Korea 2019] Yun sungjun 윤성준
PPT
프레임레이트 향상을 위한 공간분할 및 오브젝트 컬링 기법
PDF
Voxel based game_optimazation_relelase
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
안드로이드 멀티스레딩 입문 송형주
Hierachical z Map Occlusion Culling
함수형 프로그래밍
Concurrency in action - chapter 7
임태현, 서버점검 제로에의 도전, NDC2011
리플렉션과 가비지 컬렉션
Concurrency in action - chapter 5
[ETHCon Korea 2019] Yun sungjun 윤성준
프레임레이트 향상을 위한 공간분할 및 오브젝트 컬링 기법
Voxel based game_optimazation_relelase
Ad

Similar to ㅍ발표 (20)

PDF
임태현, MMO 서버 개발 포스트 모템, NDC2012
PDF
Game programming patterns 2
PDF
임태현, 게임 서버 디자인 가이드, NDC2013
PDF
06_게임엔진구성
PPTX
What is Game Server ?
PDF
M5 6 1
PPTX
스마트폰 온라인 게임에서 고려해야 할 것들
PDF
NDC12_Lockless게임서버설계와구현
PDF
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
PDF
Mineral
PPTX
Ndc2013 정리(upload버전)
PDF
Network programming report
PDF
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
PDF
실시간 게임 서버 최적화 전략
PDF
Game programming patterns
PPTX
프로젝트를 어떻게 진행하지
PPTX
서버와 클라이언트 같은 엔진 사용하기
PPTX
[Gpg1권 박민근] 1.0 1.4 요약 정리
PDF
Case Studies - The Role of Computer Graphics (CG) in Movie Post-production.pdf
PDF
2D RPG 개발 이론 + 티뮤리티 개발 포스트모템
임태현, MMO 서버 개발 포스트 모템, NDC2012
Game programming patterns 2
임태현, 게임 서버 디자인 가이드, NDC2013
06_게임엔진구성
What is Game Server ?
M5 6 1
스마트폰 온라인 게임에서 고려해야 할 것들
NDC12_Lockless게임서버설계와구현
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
Mineral
Ndc2013 정리(upload버전)
Network programming report
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
실시간 게임 서버 최적화 전략
Game programming patterns
프로젝트를 어떻게 진행하지
서버와 클라이언트 같은 엔진 사용하기
[Gpg1권 박민근] 1.0 1.4 요약 정리
Case Studies - The Role of Computer Graphics (CG) in Movie Post-production.pdf
2D RPG 개발 이론 + 티뮤리티 개발 포스트모템
Ad

ㅍ발표

  • 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