[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로'강 민우Construct2 이후 Scrria에서는 Construct3를 준비하였습니다. Construct3는 기존의 Construct2의 HTML5 + Java Script 기반의 게임 엔진을 Web Browser에서 활용할 수 있도록 개발되었습니다. 크롬이 설치되어 있다면 이제 모바일, PC 플랫폼 상관없이 게임을 개발할 수 있으며, 클라우드 시스템으로 세이브 데이터를 언제 어디서든 불러와 개발을 지속적으로 할 수 있습니다. 이러한 개발 환경을 바탕으로 간단한 미니게임 제작을 보여주면서 Construct3를 분석하는 시간을 가질 것입니다.
모두의 클라우드 딥러닝NAVER Engineering딥러닝 서비스를 만드는 스타트업 개발자, 개인 개발자로서 가장 신경을 쓰는 부분은 딥러닝 모델을 훈련시키고 러닝하는 과정을 효율적으로 만드는 것입니다. 스타트업에서 Devops 개발자로 일한 경험을 살려 모두가 알아두면 좋을 AWS가 제공하는 GPU 인스턴스를 활용하는 방법과 에이전트 기반 지표 수집, 그리고 스팟 인스턴스를 사용하여 비용을 줄이면서 안정된 서비스를 운영하는 방법 등을 공유합니다.
[IGC 2017] 오토데스크 박준석 - 3ds Max 2018과 Shotgun을 이용한 게임 제작 Pipeline 소개강 민우3ds Max 2018의 새로운 기능 소개 및 3ds Max 2018의 기본 랜더로 탑재된 Arnold Render를 이용한 Game Asset 제작하는 방법에 대해 소개합니다. 그동안 3ds Max에서 사용되어온 방법 이외에 새로운 기능을 이용한 Game Asset 제작 과정으로 보다 효율적인 Workflow에 대해서 설명합니다. 그리고, 3ds Max에 포함된 Shotgun Plug-in을 사용해 실제 게임 제작공정과 작업 시간효율 극대화를 위한 방법 및 파이프라인 관리 툴인 Shotgun의 Game Pipeline 적용을 위한 사용법에 대해 설명합니다.
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발YEONG-CHEON YOU유니버셜앱 프로젝트를 사용하면 동일한 코드로 Windows Store App과 Windows Phone을 지원할 수 있습니다.
DIrectX와 C++ 를 이용해서 유니버셜앱 게임을 개발하는 팁을 설명합니다.
Porting direct x 11 desktop game to uwp appYEONG-CHEON YOUDirectX 11 Desktop 게임을 UWP App으로 포팅하는 방법에 대해서 간략하게 설명합니다.
channel9에서 발표 영상을 보실 수 있습니다.
https://channel9.msdn.com/Blogs/MVPKorea/win32DirectXUWP
iFunEngine: 30분 만에 게임 서버 만들기iFunFactory Inc.Unity3d 기반의 간단한 멀티플레이어 게임을 만들고,
이를 위한 서버를 작성하면서
필요한 기능 확인
간단한 구현 보여주기
코드: https://github.com/iFunFactory/demo-kgc-2015/
유니티, 언리얼4 교육 전문기관 스킬트리랩 소개서용호 김게임엔진 전문 교육 기관 스킬트리랩 소개 자료입니다. 유니티, 언리얼4, 게임 샐러드 등 다양한 교육을 진행합니다. 또한 세미나, 부트캠프, 인큐베이팅 등 개발자들에게 도움되는 행사를 진행중입니다. cafe.naver.com/skilltreelab 에서 최신 정보를 얻기 바랍니다.
[IGC 2016] Photon 운영사무국 - 실시간 게임의 빠른 개발을 위한 솔루션 「Photon」강 민우전세계적으로 폭넓게 사용되고 있는 네트워크엔진 「Photon」은 Unity와 완벽하게 구현되므로 정말 간편하게 사용할 수 있습니다. 멀티플레이를 가장 빠르고 간단하게 구현하는 방법! 국내 및 해외 사례도 함께 소개합니다.
Introduction to DirectX 12 Programming , Ver 1.5YEONG-CHEON YOUIntroduction to DirectX 12 Programming , Ver 1.5
for youtube live
https://youtu.be/Z9veGJv7nPE
PiStage를 활용한 리얼타임 렌더링 워크플로우 (with RTX)YOUNGJO CHOFi 초대 100인을 통해 진행된 실시간 애니메이션에 날개를 달아주는 PiStage 3부 <PiStage를 활용한 리얼타임 렌더링 워크플로우 with RTX> 세미나 자료입니다. PiStage에 관심이 있는 분들께 작게나마 도움이 되길 바랍니다.
[IGC 2017] 넷마블게임즈 한승진 - 게임서비스를 위한 프라이빗 클라우드강 민우대형 게임사 역시 클라우드 서버를 사용하곤 합니다. 개중에는 보안상의 이유로 프라이빗 클라우드를 사용하는 경우도 있죠. 퍼블릭 클라우드와 프라이빗 클라우드의 차이점은 뭘까요. 그리고 넷마블이 그중에서 프라이빗 클라우드를 사용한 이유는? 이번 강연을 통해 자세히 소개합니다.
[IGC 2016] 에픽게임스코리아 신광섭 - 언리얼 엔진4, VR과 AR강 민우오큘러스, HTC Vive, 기어 VR, PS VR, 안드로이드 Daydream 등 모든 최신 VR을 지원하고 있는 언리얼 엔진 4를 사용한 대표적인 VR 타이들과 개발 사례를 알아봅니다. 또한 VR을 좀 더 쉽고 편리하게 개발할 수 있는 언리얼 엔진4만의 기능들을 살펴보고, 향후 업데이트 계획을 공유합니다. VR 외에 언리얼 엔진4 AR 개발에 대해서도 살펴볼 예정입니다.
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발YEONG-CHEON YOU유니버셜앱 프로젝트를 사용하면 동일한 코드로 Windows Store App과 Windows Phone을 지원할 수 있습니다.
DIrectX와 C++ 를 이용해서 유니버셜앱 게임을 개발하는 팁을 설명합니다.
Porting direct x 11 desktop game to uwp appYEONG-CHEON YOUDirectX 11 Desktop 게임을 UWP App으로 포팅하는 방법에 대해서 간략하게 설명합니다.
channel9에서 발표 영상을 보실 수 있습니다.
https://channel9.msdn.com/Blogs/MVPKorea/win32DirectXUWP
iFunEngine: 30분 만에 게임 서버 만들기iFunFactory Inc.Unity3d 기반의 간단한 멀티플레이어 게임을 만들고,
이를 위한 서버를 작성하면서
필요한 기능 확인
간단한 구현 보여주기
코드: https://github.com/iFunFactory/demo-kgc-2015/
유니티, 언리얼4 교육 전문기관 스킬트리랩 소개서용호 김게임엔진 전문 교육 기관 스킬트리랩 소개 자료입니다. 유니티, 언리얼4, 게임 샐러드 등 다양한 교육을 진행합니다. 또한 세미나, 부트캠프, 인큐베이팅 등 개발자들에게 도움되는 행사를 진행중입니다. cafe.naver.com/skilltreelab 에서 최신 정보를 얻기 바랍니다.
[IGC 2016] Photon 운영사무국 - 실시간 게임의 빠른 개발을 위한 솔루션 「Photon」강 민우전세계적으로 폭넓게 사용되고 있는 네트워크엔진 「Photon」은 Unity와 완벽하게 구현되므로 정말 간편하게 사용할 수 있습니다. 멀티플레이를 가장 빠르고 간단하게 구현하는 방법! 국내 및 해외 사례도 함께 소개합니다.
Introduction to DirectX 12 Programming , Ver 1.5YEONG-CHEON YOUIntroduction to DirectX 12 Programming , Ver 1.5
for youtube live
https://youtu.be/Z9veGJv7nPE
PiStage를 활용한 리얼타임 렌더링 워크플로우 (with RTX)YOUNGJO CHOFi 초대 100인을 통해 진행된 실시간 애니메이션에 날개를 달아주는 PiStage 3부 <PiStage를 활용한 리얼타임 렌더링 워크플로우 with RTX> 세미나 자료입니다. PiStage에 관심이 있는 분들께 작게나마 도움이 되길 바랍니다.
[IGC 2017] 넷마블게임즈 한승진 - 게임서비스를 위한 프라이빗 클라우드강 민우대형 게임사 역시 클라우드 서버를 사용하곤 합니다. 개중에는 보안상의 이유로 프라이빗 클라우드를 사용하는 경우도 있죠. 퍼블릭 클라우드와 프라이빗 클라우드의 차이점은 뭘까요. 그리고 넷마블이 그중에서 프라이빗 클라우드를 사용한 이유는? 이번 강연을 통해 자세히 소개합니다.
[IGC 2016] 에픽게임스코리아 신광섭 - 언리얼 엔진4, VR과 AR강 민우오큘러스, HTC Vive, 기어 VR, PS VR, 안드로이드 Daydream 등 모든 최신 VR을 지원하고 있는 언리얼 엔진 4를 사용한 대표적인 VR 타이들과 개발 사례를 알아봅니다. 또한 VR을 좀 더 쉽고 편리하게 개발할 수 있는 언리얼 엔진4만의 기능들을 살펴보고, 향후 업데이트 계획을 공유합니다. VR 외에 언리얼 엔진4 AR 개발에 대해서도 살펴볼 예정입니다.
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여Dong Chan ShinMake Entity
Orbit Camera Setting
Picking
with Havok Project Anarchy in Visual Studio
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례EG Lim"메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례" 강연 슬라이드의 한글 번역입니다.
원문:
/EpicGamesJapan/ue4-festeast2019-dxm
영상:
https://www.youtube.com/watch?v=jykrWtBQEz0
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰승민 백NDC 2016 발표 자료입니다
아래는 공개된 세션의 소개입니다
------------------------------------------------------------
게임을 개발하다 보면 액션, RPG를 비롯한 많은 장르에서 캐릭터의 스킬을 만들어야 하는 때가 옵니다.
다양한 스킬의 기획을 제한하지 않으면서도, 빠르게 개발한다는 두 가지 목표를 달성하기 위해서는 어떻게 개발해야 하는지 고민하고 프로젝트에 적용한 결과를 공유하는 세션입니다.
다음과 같은 세 가지 개발 방법을 보여드리고, 각각의 장단점을 비교하는 형태로 진행됩니다.
1. 고전적인 하드 코딩 방식
2. 한 달에 하나씩의 캐릭터 업데이트를 단행했던 <최강의>에서 사용했던 스킬 툴 방식 (온라인 액션RPG, 언리얼3 기반)
3. 현재 개발 중인 모바일 프로젝트 <건파이트>에서 시도하고 있는 언리얼4 블루프린트 기반 방식
React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다.병대 손리액트를 하다보면 누구나 비슷한 경험을 하게 됩니다.
오래 할수록 더 많은 경험을 쌓게 되고 더 좋은 해결책들을 찾게 되죠.
하지만 혼자서 이 모든 것을을 이해하기엔 시간이 참 오래 걸립니다.
모쪼록 이 슬라이드가 시간의 간극을 메꿔줬으면 좋겠네요.
열공하세요.
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례SangYun Yi20160305 부산 정보산업 진흥원 주최
부산 문화 컴플렉스(Busan Culture Complex) 컨퍼런스 발표 자료
Unity 3D를 통한 게임 환경 분석 및 개발 사례 공유
1. Creating Game Tool
With Project Anarchy
- Vision Engine을 이용한 Game Tool 만들기 Part 2-
분 류 NHN NEXT 1기 실전프로젝트 산출물
실습 업체 블루홀 스튜디오
프로젝트 팀명 그랜드부다페스트(문진상/신동찬)
작성자 문진상
Created Date 2015-1-03
2. 지난 줄거리
• 이렇게 생긴 툴을 만들어 볼 것입니다
Wrapper
Vision Engine
Client
Tool
게임 툴
클라이언트
Wrapper
3. 지난 줄거리
• Run() 함수 안에서 일어나는 일들은 엔진이 알아서 한다!
• 하지만 아무것도 안 해도 된다는 뜻은 아니다!
• 아무것도 안 하면 그냥 까만 화면만 나올 뿐…
• 그렇다면 화면을 채울 Entity를 만들어보자
4. Entity
Vision:: 네임스페이스를 이용해 별도의 선언 없이 Entity를 만드는 것이 가능
만드는 김에 조명도 하나 달아주면?
잘 나온다
Wrapper
참고로 이 함수들은 만들어진 Entity의 포인터를
리턴하기 때문에 Scale, Position 등을 바꿀 때
사용할 수 있다.
5. Tool에서 Entity가 왜 중요한가?
• Tool 에서 오브젝트를 배치하는 기능은 결국 Entity를 생성하는
기능이다
• 대부분의 게임 프로젝트에서 특성에 맞는 GameObject를 생성
하게 되는데 이때 VisBaseEntity_cl을 상속받아서 구현하는 것이
좋다
• 엔진이 지원하는 기능을 충분히 사용하려면 엔진에서 제공하는 클래스
를 쓰는 것이 좋다.
6. 몬스터와 자원을 배치해보자
• 이제 Entity를 만들 수 있으니 맵에 Entity를 놓을 수 있습니다
• 단, 일을 수월하게 하려면 picking 기능이 필요합니다.
• picking 은 마우스로 화면을 클릭했을 때 어떤 객체를 클릭했고 좌표는
어디인지를 알아내는 기능입니다.
Wrapper
EntityPicking() 함수가 Picking 시도
Picking으로 뭔가를 선택하는 데 성공
해당 좌표에 엔티티 생성
7. 몬스터와 자원을 배치해보자
1. Mouse Mode 메뉴에서 CreateEntity
2. Create Entity 페이지에서 Type을 지정
3. 화면을 클릭하면 생성 시도
순서로 진행하도록 만들었습니다.
8. 몬스터와 자원을 배치해보자
Tool
위 코드는 “좌클릭 이벤트가 발생하고”, “CreateEntity 라디오 버튼이 체크되어 있으면”
RayTraceAndCreateEntity 함수를 호출해서 선택된 타입의 Object를 생성하도록 되어 있다
11. 여기서 잠깐
Tool
Wrapper(EntityEditor)
Wrapper(GameObjectForTool)
코드의 재사용성을 높이려면, 보통 엔티티 생성 같이 Client와 Tool
모두 사용하는 코드는 Client에 두는 것이 좋습니다.
Tool
Wrapper(EntityEditor)
Client(GameObjectManager)이런 식으로…
왜냐하면 어차피 클라이언트는 C++로 되어 있고, Wrapper가
클라이언트에서 C++로 구현한 기능을 이름 그대로 감싸기만 하면
C#에서도 그대로 쓸 수 있기 때문입니다.
사실 그러려고 Wrapper를 만든 것인데…
13. 여기서 잠깐
• 문제는 Calling Convention
• Client는 ProjectAnarchy에서 기본 제공하는 빈 프로젝트에서
만들기 시작
• 각종 세팅이 기본으로 잡혀있는 반면
• /clr 옵션을 준 Wrapper에서 Client 코드를 불러다 쓰면 에러 발생
• MSDN에 의하면 이 문제를 해결할 수 있긴 한데… 해결책도 만만하지
않습니다
14. 여기서 잠깐
그래서 복사했습니다… 제 의지로….
Client(GameObjectManager)
Tool
Wrapper(EntityEditor)
Wrapper(GameObjectForTool)
Copy & Paste
이러면 Calling Convention 문제가 발생하지 않지만
1. 하지만 코드가 중복되고
2. Wrapper 안에 또 Wrapper가 있어서 수정이 어려워짐
15. 지형은 어떻게 만드나
• ProjectAnarchy 에서 지형과 관련된 클래스는 상당히 많음
• 하지만 대부분 게임 엔진들이 그렇듯이 자체적으로 제공하는
vForge툴로 지형을 생성하는 것을 권장한다
• 당연하지 이게 훨씬 편하니까요
• 코드로 지형을 직접 만드는 예제가 부족하다
• 삽질 끝에 static mesh 를 사용하기로 결정
• 사실 코드로 만들어서 되는 방법을… 아직 이거밖에…
17. 지형은 어떻게 만드나
• 큰 흐름은 이렇습니다
• 사용자 정의 Vertex 구조체를 만든다
• 사용자 정의 Vertex 구조체가 어떻게 생겼는지 전달해주는 버텍스 기
술자를 만든다.
• MeshBuffer 를 만든다
• MeshBuffer를 이용해서 StaticMesh를 만든다
• StaticMesh를 이용해서 StaticMeshInstance를 만든다
18. 왜 이렇게 단계가 많지?
• 엔진을 썼으면 엔진 법을 따라야(…)
• 화면에 렌더링 되는 부분을 엔진이 관리해주고
• 마우스 포인터로 Picking 했을 때 확인이 되고
• 메모리 관리까지 해줌
• 사실 MeshBuffer만 있어도 렌더링은 할 수 있다!
• DirectX 예제를 떠올리면 됩니다
• 하지만 내부에 숨어있는 RenderingLoop에 손을 대야 하고
• 제일 큰 문제는 마우스로 picking 했을 때 없는 물체 취급
19. 지형 관련 중요 클래스 생성 흐름
이 단순한 구조체가 지형에 사용할 Vertex입니다
hkvVec3 는 3차원 벡터, hkvVec2는 2차원 벡터입니다
Vertex의 위치와 노말 벡터의 방향, 텍스처의 uv 값을
표현하기 위한 최소한의 멤버만 들고 있습니다
Vertex의 형식은 고정된 것이 아니므로 게임 엔진에게
내가 만든 Vertex 형식을 알려주는 과정이 필요합니다
Vertex 기술자에게 Vertex의 사이즈,
Position 변수가 무엇인지 등등을
알려줘야 합니다
Wrapper
20. 지형 관련 중요 클래스 생성 흐름
MeshBuffer를 만들어 줍니다.
옵션은 INDEXED_TRILIST
MeshBuffer에 락을 잡고
Vertex에 값을 넣어줍니다.
옆의 코드는 평평한 정사각형
Wrapper
21. 지형 관련 중요 클래스 생성 흐름
Static Mesh를 만들고
조금 전에 만든 MeshBuffer를
옵션으로 넣어줍니다
Texture 달기
없어도 동작은 하지만 지형이
하얀 사각형으로 보입니다
Wrapper
22. 지형 관련 중요 클래스 생성 흐름
StaticMesh 에서
Submesh 설정
대망의 StaticMeshInstance. 사실 이 클래스를 만들기 위해 지금까지의 과정이 필요한 것입니다
AssignToVisibilityZones()를 통해 렌더링을 맡길 수 있고 Picking까지 지원됩니다
Wrapper
23. 지형 올리고 내리기
• Picking이 되므로 해당 좌표의 vertex 주변을 같이 올리고 내려
주면 된다
잘 된다. 잘 되는데…
24. 지형 올리고 내리기
• 버그가 있다
• Picking을 할 때 StaticMesh가 가리키고 있는 MeshBuffer가 아
니라 CollisionMesh를 기준으로 계산
• CollisionMesh는 눈에 보이지 않음
• 눈에 보이게 그릴수도 있는데 Debug용 함수라 매 프레임 호출하도록
RenderingLoop를 손대야 함
• 지형을 올리고 내리기 위해 MeshBuffer의 Vertex만 조작하도록
했는데 CollisionMesh는 변화가 없다!
• 아무리 산과 계곡을 만들어도 Picking은 평면만 찍힘
25. 지형 올리고 내리기
• Entity를 만들 때 Picking을 기반으로 하므로 Entity가 산에 파묻
히거나 계곡 위에 떠 있음
• Entity를 만들기 전에 MeshBuffer에 변화가 있으면
CollisionMesh를 재계산 하는 코드를 넣어서 해결(느리다)
Collision Mesh
Picking
Hit!
?
이상한 곳에 맞는다 Mesh Buffer
26. File I/O
• 지형의 MeshBuffer 및 몬스터, 자원 등 모든 객체의 정보는 메
모리에 올라가 있다
• 이걸 파일에 쭉 쓴 다음 다시 읽어 들여 초기화하는 데 사용하
면 데이터를 저장할 수도 있고 Tool에서 만든 파일을 Client에서
사용할 수도 있음
• 물론 I/O 규약을 정해서 지켜야 함
• 지형처럼 매우 큰 데이터도 주고받을 수 있다
27. 부록 C++/CLI Beginning
Native C++
관리 클래스
위의 클래스는 C#에서는 보이지 않는다.
아래 클래스는 관리 클래스로 C#에서도 불러서 쓸 수 있다.
관리 클래스로 비관리 클래스를 감싸서 C#과 C++사이의 다리가 되는 것이 Wrapper의 역할
28. 부록 C++/CLI Beginning
ref 클래스의 ^는 비관리 클래스의 *에 해당한다.
용법이 포인터와 비슷하다. (엄밀히 말하면 ^는 핸들이다)
만약 new를 쓸 일이 있으면
CommonVector3^ vec3 = gcnew CommonVector3;
하면 마치 C#에서 new 쓰듯 메모리를 관리해준다
C++ 참조자(&)에 해당하는 것은 %이다.