[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인승명 양NDC14에서 발표한 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인 발표 슬라이드의 공개용 버전입니다.
현장에서는 시간 관계상 진행하지 못한 QnA를 대신하여, 실시간 QnA 페이지에 올라왔던 몇 가지 질문에 대한 답변을 슬라이드 맨 끝에 추가했습니다.
진선웅 유저수만큼다양한섬을만들자 공개용Sunwung Jin[NDC 2014] 유저 수만큼 다양한 섬을 만들자
<야생의>의 절차적인 섬 생성 기법
발표장에서 시간이 없어서 답변드리지 못했던 Q&A 내용들을 뒷 부분에 추가하였습니다.
GIF 가 포함된 부분은 잘 나오지 않으므로 궁금하시면 직접 다운로드 받아서 보시기 바랍니다. - http://goo.gl/UUKmjL
iOS7 Sprite Kit을 이용한 게임 개발Changwon National University이 자료는 2013년 11월 스마트 앱 개발자 포럼 세미나 발표자료 입니다.
애플사에서 iOS 7용 API로 추가한 Sprite Kit은 주로 게임 개발을 위하여 사용되는 스프라이트 API로 단순한 코딩으로 애니메이션을 쉽게 구현할 수 있습니다.
단 iOS에서 주로 사용되는 UIView 객체에는 적용할 수 없습니다. UIView 객체란 iOS의 UIImage, UIButton 등과 같은 기본 UI 객체입니다. Sprite Kit을 사용하게 되면 파티클 효과, 물리 효과, 스프라이트의 애니메이션 효과를 매우 쉽게 구현할 수 있습니다.
이 자료는 Sprite Kit의 특징과 간단한 샘플 코드를 통해 Sprite Kit을 이해할 수 있도록 하였습니다.
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템Young Soo KimProtocol:hyperspace Diver 개발 포스트모템
IGC2017에서 발표한 세션의 자료를 공유합니다.
이전 NDC17에서 발표한 내용과는 초점을 조금 다르게 잡고 새롭게 구성한 것입니다.
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우본 세션에서는 Protocol:hyperspace Diver의 개발 과정 전반에 대한 포스트 모템을 수행하며 기획적인 부분을 바탕으로 제기된 요구사항에 대응하기 위한 기술적인 이슈에 어떻게 대응하였는지를 살펴볼 예정입니다. 게임을 기획하며 게임에 어떤 기능들이 요구되었으며, 엔진 레벨에서부터 모바일 게임을 개발하는 과정에서 이런 요구사항들에 어떻게 대응하였는지를 살펴봅니다. 게임을 위한 전체적인 설계 및 문제 해결 전략과 각각의 문제 해결 과정에서 세부 내용에 대한 기술적 노하우를 공유합니다.
Vmsoft clairview NVR, VMS, IVSDaniel ParkVmsoft / Video surveillance
clairview NVR, VMS, IVS, IP camera
People counting, VA
64ch F-HD NVR
nine@vmsoft.co.kr
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for UnrealKyu-sung Choi강력한 시각화와 몰입도 높은 가상세계 표현을 위해, 게임엔진은 측량기반의 콘텐츠를 필요로 하고 공간정보 3D 플랫폼은 강력한 프리미엄급 클라이언트를 필요로 하는데, Cesium for Unreal은 이런 수요를 만족하는 솔루션입니다. 이 발표자료는 공간정보 3D 콘텐츠가 어떻게 게임엔진 안으로 들어가서 국가 또는 지구 범위로 확장성을 발휘하는지, 그 기능구현을 진입단계 수준으로 소개하고 있습니다.
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발MinGeun Park스마트벤처 창업학교(대구)에서 스타트업 창업자분들을 대상으로 발표한 유니티 개발 자료입니다.
새로운 내용은 아니고..
기존에 발표 했던 유니티 관련 자료들을 하나로 모은, 총합편입니다.
ps. Unity 2D 소개와 PlayMaker 소개에는 동영상이 포함되어 있는데, 아마 슬라이드셰어에서 재생은 되지 않을듯 합니다. 다운로드 받으시면, 동영상도 보실수 있습니다.
1. 유니티 소개
2. 개발과 출시, 경험에 대한 이야기 (서형석)
3. Unity 2D 살펴 보기
4. 유니티가 당신에게 알려주지 않는 진실 (이득우) - 링크
5. 유니티와 PlayMaker를 이용한 쉽고 빠른 게임 개발
Improve CSS IR & Sprites Image Techniques for Accessibilityyamoo9[12.09] 제10회 2014 정보접근성 동향 세미나 발표 자료
Windows High Contrast Mode 감지 및 CSS 활성화 Images 비활성화 상태 체크 감지 스크립트, ImproveIR.js를 활용한 IR 테크닉 접근성 향상
코드 소스 다운로드
https://github.com/yamoo9/Improve-IR-Accessible-Tech
안드로이드의 다양성과 UI 레이아웃mosaicnet<p><font>[데브멘토 동영상] 안드로이드의 다양한 Screen Device를 위한 UI 처리 1부(총 3부)</font></p><div><font>박성서 안드로이드펍 운영자</font></div><div><font>DIP란, 장치별 리소스 관리, 다양한 장치에서의 Bitmap과 레이아웃</font></div><div></div><div><font>2010 공개SW 개발자 대회 2차 기술세미나</font></div>
다양한 모바일에서의 호환성 보장과 사이즈 지원 방법mosaicnet<p><font>[데브멘토 동영상]안드로이드의 다양한 Screen Device를 위한 UI 처리 2부(총 3부)</font></p><div><font>박성서 안드로이드펍 운영자</font></div><div><font>DIP란, 장치별 리소스 관리, 다양한 장치에서의 Bitmap과 레이아웃</font></div><p><span>2010 </span><span>공개 SW 개발자 대회 2차 기술세미나</span></p>
NDC17 장창완(최종)창완 장<마비노기 영웅전>의 사례에 기반하여 다음의 내용을 설명합니다.
1. 국내 및 해외에서 라이브 서비스 중에 발생하는 작업장 이슈에 대응하기 위해서 실시간 로그 수집 프로세스를 구축하면서 고민하였던 내용과
2. 수집한 로그 데이터를 활용하여 온라인 액션 게임에서 캐릭터 애니메이션 패턴간의 유사도(TF-IDF, Cosine Similarity)를 분석하여 현업 실무의 어뷰징 탐지에 활용한 사례를 공유합니다.
라이브 서비스 환경에서 국내 및 해외의 실시간 로그 수집에 대해서 고민하시는 개발자나 온라인 게임에서의 봇탐지에 관심있는 분석가들에게 유용한 사례를 소개해드릴 수 있을 것으로 생각합니다.
iOS7 Sprite Kit을 이용한 게임 개발Changwon National University이 자료는 2013년 11월 스마트 앱 개발자 포럼 세미나 발표자료 입니다.
애플사에서 iOS 7용 API로 추가한 Sprite Kit은 주로 게임 개발을 위하여 사용되는 스프라이트 API로 단순한 코딩으로 애니메이션을 쉽게 구현할 수 있습니다.
단 iOS에서 주로 사용되는 UIView 객체에는 적용할 수 없습니다. UIView 객체란 iOS의 UIImage, UIButton 등과 같은 기본 UI 객체입니다. Sprite Kit을 사용하게 되면 파티클 효과, 물리 효과, 스프라이트의 애니메이션 효과를 매우 쉽게 구현할 수 있습니다.
이 자료는 Sprite Kit의 특징과 간단한 샘플 코드를 통해 Sprite Kit을 이해할 수 있도록 하였습니다.
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템Young Soo KimProtocol:hyperspace Diver 개발 포스트모템
IGC2017에서 발표한 세션의 자료를 공유합니다.
이전 NDC17에서 발표한 내용과는 초점을 조금 다르게 잡고 새롭게 구성한 것입니다.
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우본 세션에서는 Protocol:hyperspace Diver의 개발 과정 전반에 대한 포스트 모템을 수행하며 기획적인 부분을 바탕으로 제기된 요구사항에 대응하기 위한 기술적인 이슈에 어떻게 대응하였는지를 살펴볼 예정입니다. 게임을 기획하며 게임에 어떤 기능들이 요구되었으며, 엔진 레벨에서부터 모바일 게임을 개발하는 과정에서 이런 요구사항들에 어떻게 대응하였는지를 살펴봅니다. 게임을 위한 전체적인 설계 및 문제 해결 전략과 각각의 문제 해결 과정에서 세부 내용에 대한 기술적 노하우를 공유합니다.
Vmsoft clairview NVR, VMS, IVSDaniel ParkVmsoft / Video surveillance
clairview NVR, VMS, IVS, IP camera
People counting, VA
64ch F-HD NVR
nine@vmsoft.co.kr
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for UnrealKyu-sung Choi강력한 시각화와 몰입도 높은 가상세계 표현을 위해, 게임엔진은 측량기반의 콘텐츠를 필요로 하고 공간정보 3D 플랫폼은 강력한 프리미엄급 클라이언트를 필요로 하는데, Cesium for Unreal은 이런 수요를 만족하는 솔루션입니다. 이 발표자료는 공간정보 3D 콘텐츠가 어떻게 게임엔진 안으로 들어가서 국가 또는 지구 범위로 확장성을 발휘하는지, 그 기능구현을 진입단계 수준으로 소개하고 있습니다.
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발MinGeun Park스마트벤처 창업학교(대구)에서 스타트업 창업자분들을 대상으로 발표한 유니티 개발 자료입니다.
새로운 내용은 아니고..
기존에 발표 했던 유니티 관련 자료들을 하나로 모은, 총합편입니다.
ps. Unity 2D 소개와 PlayMaker 소개에는 동영상이 포함되어 있는데, 아마 슬라이드셰어에서 재생은 되지 않을듯 합니다. 다운로드 받으시면, 동영상도 보실수 있습니다.
1. 유니티 소개
2. 개발과 출시, 경험에 대한 이야기 (서형석)
3. Unity 2D 살펴 보기
4. 유니티가 당신에게 알려주지 않는 진실 (이득우) - 링크
5. 유니티와 PlayMaker를 이용한 쉽고 빠른 게임 개발
Improve CSS IR & Sprites Image Techniques for Accessibilityyamoo9[12.09] 제10회 2014 정보접근성 동향 세미나 발표 자료
Windows High Contrast Mode 감지 및 CSS 활성화 Images 비활성화 상태 체크 감지 스크립트, ImproveIR.js를 활용한 IR 테크닉 접근성 향상
코드 소스 다운로드
https://github.com/yamoo9/Improve-IR-Accessible-Tech
안드로이드의 다양성과 UI 레이아웃mosaicnet<p><font>[데브멘토 동영상] 안드로이드의 다양한 Screen Device를 위한 UI 처리 1부(총 3부)</font></p><div><font>박성서 안드로이드펍 운영자</font></div><div><font>DIP란, 장치별 리소스 관리, 다양한 장치에서의 Bitmap과 레이아웃</font></div><div></div><div><font>2010 공개SW 개발자 대회 2차 기술세미나</font></div>
다양한 모바일에서의 호환성 보장과 사이즈 지원 방법mosaicnet<p><font>[데브멘토 동영상]안드로이드의 다양한 Screen Device를 위한 UI 처리 2부(총 3부)</font></p><div><font>박성서 안드로이드펍 운영자</font></div><div><font>DIP란, 장치별 리소스 관리, 다양한 장치에서의 Bitmap과 레이아웃</font></div><p><span>2010 </span><span>공개 SW 개발자 대회 2차 기술세미나</span></p>
NDC17 장창완(최종)창완 장<마비노기 영웅전>의 사례에 기반하여 다음의 내용을 설명합니다.
1. 국내 및 해외에서 라이브 서비스 중에 발생하는 작업장 이슈에 대응하기 위해서 실시간 로그 수집 프로세스를 구축하면서 고민하였던 내용과
2. 수집한 로그 데이터를 활용하여 온라인 액션 게임에서 캐릭터 애니메이션 패턴간의 유사도(TF-IDF, Cosine Similarity)를 분석하여 현업 실무의 어뷰징 탐지에 활용한 사례를 공유합니다.
라이브 서비스 환경에서 국내 및 해외의 실시간 로그 수집에 대해서 고민하시는 개발자나 온라인 게임에서의 봇탐지에 관심있는 분석가들에게 유용한 사례를 소개해드릴 수 있을 것으로 생각합니다.
3. 왜 HTML5 게임인가?
• 게임은 플랫폼 확보가 최우선
• PlayStation / XBOX / Nintendo…
• 웹 브라우저가 깔려있지 않은 기기는 더 이상 없다
• 자연스럽게 모바일로 확산
• One Source Multi Use
• N-screen
• 개발 생산성 향상
4. HTML5 Features for Game
• Graphics
• Canvas
• WebGL
• SVG
• Audio / Video
• <audio> / AudioContext
• <video>
• ETC
• FullScreen API
• Pointer Lock API
26. HTML5 게임엔진의 필요기능
• 그래픽 제어
• Animation 재생
• Resource Loader
• BGM / 효과음 재생
• 사용자 입력 제어
27. HTML5 게임엔진의 필요기능
• 그래픽 제어 > Canvas 2D 그래픽
• Animation 재생 > Sprite Animation
• Resource Loader > <img> / <audio> / XHR
• BGM / 효과음 재생 > <audio> / AudioContext
• 사용자 입력 제어 > Touch event 처리
28. Canvas 제어
• Raster 이미지, Immediate mode
• 그려낼 객체의 관리가 핵심
• Canvas Drawing 성능이 웹 게임 성능의 키
• requestAnimationFrame을 이용한 Renderer 작성
32. Scene / Board / Entity
• Entity
• 화면에 표시될 최소 단위 객체
• 주로 스프라이트 애니메이션이나 static 이미지, 혹은 canvas.context
로 그려냄
• Board
• Entity들을 리스트로 가지는 레이어
• Scene
• 게임내 장면전환을 위해 Board들의 단위로 장면을 구성
37. Static Object Pool
• JavaScript의 Garbage Collection중에 브라우저는
다른 어떤 동작도 할 수 없음
• Canvas에 그려낼 객체 중 반복해서 생성/삭제 되는
객체(Entity, Board)를 GC의 대상이 되지 않도록
Static Object Pool로 관리
38. Canvas Dimension
• 단말별 화면의 CSS 크기가 다름
• 게임 디자인 해상도와 화면 해상도간의 변환로직 필요
• canvas.width / height
• 화면의 크기에 맞게 canvas내부의 모든 entitiy의
width / height 좌표들을 조절
• canvas.style.width / height
• 단순하게 canvas.style 크기만 변경
45. 충돌 감지 방법
• 바운딩 박스 (collision box)
• 하나의 바운딩 박스로만 감지
• 여러개의 박스로 맵을 만들어 순회하여 감지
• 다각형 (Polygon 내부의 점)
• 미리 다각형의 맵을 작성해두고 폴리곤 내부의 점인지 판단가능
• Pixel Perfect Collision Detection
• 화면에 보이지 않는 canvas에 두 객체를 그려보고
달라진 픽셀이 있는지 순회하여 검사 (성능 이슈)
46. Frame Skip
• 60 FPS를 그려내지 못하는 단말에서는 16~7ms 내에
renderer loop가 돌아오지 않음.
• Frame Skip or Slow Animation?
47. Frame Skip시 문제점
• 저사양 단말에서 비행기가 총알을 뚫고 지나가는 현상
• Interpolation 혹은 다른 보정 로직 필요
48. HiDPI 지원
• 일명 레티나 디스플레이
• CSS 해상도와 물리적인 해상도가 상이
• devicePixelRatio
• canvas.context.backingStorePixelRatio
53. 디자인 해상도 설정 문제
• 지원할 최고 해상도로 게임을 디자인
• 1080 x 1350
• 720 x 900 (x 2/3)
• 360 x 450 (x 1/3)
• 지원할 최저 해상도로 게임을 디자인
• 360 x 450
• 720 x 900 (x 2)
• 1080 x 1350 (x 3)
54. 객체의 크기가 45 x 45 인 경우
(최고 해상도 기준)
• 지원할 최고 해상도로 게임을 디자인
• 45 x 45
• 30 x 30 (x 2/3)
• 15 x 15 (x 1/3)
• 지원할 최저 해상도로 게임을 디자인
• 15 x 15
• 30 x 30 (x 2)
• 45 x 45 (x 3)
55. 객체의 크기가 50 x 50 인 경우
(최고 해상도 기준)
• 지원할 최고 해상도로 게임을 디자인
• 50 x 50
• 33 x 33 (x 2/3)
• 17 x 17 (x 1/3)
• 지원할 최저 해상도로 게임을 디자인
• 17 x 17
• 34 x 34 (x 2)
• 51 x 51 (x 3)
56. 디자인 해상도 Best Practice
• 지원할 최고 해상도로 게임을 디자인
• 가로기준 720px 설정
• 이미지는 360px, 720px 기준 총 2벌 구성
• 가로기준 1080px 설정
• 이미지는 360px, 720px, 1080px 기준 총 3벌 구성
• 360px 배수인 이유는 국내 안드로이드 단말 이용자수가
가장 많기 때문
63. 터치 좌표 계산
• 개발시 지정한 디자인 해상도를 기준으로
Canvas 크기조정값, viewport 설정값등을 토대로 계산
• 터치 좌표에 가상의 1x1 박스를 만들고
충돌하는 Entity를 탐색
64. Resource Loader
• 게임중 끊김현상을 방지하려면 필요한 리소스들을 미리 로딩해두어야함
• image
• <img> 태그 이용
• <img> 태그의 src지정. onload 이벤트 사용
• sound
• <audio> 태그 이용 (주로 배경음악)
• <audio> 태그의 src지정. oncanplay / oncanplaythough 이벤트 사용
• AudioContext 이용 (주로 효과음)
• XHR을 이용
65. Sound 재생
• <audio>
• 리소스 로딩이 완료되지 않아도 바로 재생가능
• 동시에 2개의 <audio> 재생불가
• AudioContext
• XHR arraybuffer 타입으로 로딩
• 로딩 완료후에 재생가능
• 여러 효과음 동시재생 가능
• 지원 커버리지가 넓지 않음 (현재 iOS 6+만 제대로 지원)
66. iOS의 audio 재생 정책
• 사용자의 액션(터치나 클릭) 없이는
어떤 소리도 재생되지 않음
• 심지어 <audio>는 src를 지정해도 로딩조차 하지 않음.
67. iOS의 audio 재생 정책
• 사용자의 액션(터치나 클릭) 없이는
어떤 소리도 재생되지 않음
• 심지어 <audio>는 src를 지정해도 로딩조차 하지 않음.
시작버튼을 만들어 lock을 해제시켜주어야함
68. iOS의 audio 재생 정책
• 사용자의 액션(터치나 클릭) 없이는
어떤 소리도 재생되지 않음
• 심지어 <audio>는 src를 지정해도 로딩조차 하지 않음.
시작버튼을 만들어 lock을 해제시켜주어야함
iOS에서는 AudioContext만 사용해서 preloading
69. 디폴트 브라우저 문제
• 단말별 디폴트 브라우저의 특수기능
• iOS 좌우 스와이핑시 네비게이션 이동
• 멀티 터치시 확대/축소
70. 디폴트 브라우저 문제
• 단말별 디폴트 브라우저의 특수기능
• iOS 좌우 스와이핑시 네비게이션 이동
• 멀티 터치시 확대/축소
WebView나 <iframe>으로 Wrapping 해야만 해결 가능