블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2797)
Unity3D (853)
Programming (479)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (61)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday
이번에 감사하게도 페이스북 데브코리아 페이지의 이벤트에 담첨되어, 유나이트 코리아에 무료로 참석하게 되었습니다.

많은 인파가 몰려서 약간 정신 없기도 했었던 컨퍼런스 였지만 유익한 정보를 많이 얻어갈 수 있어서 참 기분이 좋았습니다.

유니티 5.0에서 추가되는 기능들에 대한 설명을 들을 수 있었구요.

뉴비 프로그래머인 저에게 도움이 되는 기술적인 테크닉을 알려주는 세션도 있었습니다.

이 좋은 내용들을 어떻게 나눌까 고민하다가 

즉흥적으로 메모했던 부분들을 첨부할까 합니다. 

좀 내용이 일관적이지 않고 앞뒤가 맞지 않지만 키워드 정도는 참고 가능하실지도 모를까 싶어 올립니다.

다음에도 이런 좋은 이벤트가 많이 열려서 데브코리아에 항상 상주하시는 개발자 분들과의 소통이 많이 되었으면 좋겠습니다. 

감사합니다!

ps1. 첫째날 세션4 유니티를 이용한 아키텍쳐 강의 프로젝트 파일을 다운받을수 있는 주소와
둘쨋날 세션4 더욱 강력한 C# 활용 강의 프로젝트 파일 주소를 받을 수 있었는데
혹시 몰라서 댓글 달아주시는 분께 비밀댓글로 알려드리도록 하겠습니다.


Day1 
세션 1.
메가님 그리고 그 이상을 뛰어넘어.
유니티 Pierre Paul Giroux


엔트리, 엑셉트 노드 추가.
스테이트 머신의 전환이 심플하게 가능해짐

idle이 여러게일 경우 많은 상태가 필요해 꼬이기 마련.
이걸 해결할수 있는 방안.

디시즌 노드를 FSM에 추가함.

아이들 머신이 자급자족이 가능.. (여러게의 아이들)

스테이스 모델들끼리 공유가 가능.
에셋스토어에서 판매가능

스테이트머신 비헤이비어 추가.

onStateEnter
엔트리에 들어갈때

onStateUpdate
엔트리 업데이트.
모든 프레임에서 이루어짐

onStateExit
끝날때

OnStateMove

onStateIK

스테이트머신이 자립.

애니메이션 연동해 이팩트 호완 가능..

이팩트 또한 연동작업이 가능.

메카님 코드를 완전히 공게

네비게이션 빌더.

프리뷰 화면 줌아웃 페이드 인 가능.

블랜드 쉐이프

캐릭터 표정 원프레임 애니메이션을 활용.

다이렉트 블랜드 트리 추가됨 5.0
(웃으면서 눈깜밖임, 입 벌리며 웃기)

5.0추가 되는 기능  정리..

스테이트 머신 전환 
간단하게 스테이트머신 로직 활용.

스테이트머신 비헤이비어
코드 로직을 스테이트 내에 바로 넣을수 있게 해줌.
idle, 트레일 렌더러 추가.

루트모션 애니메이션
2d게임에서 애니메이션 활용.
2d 네비게이션.

디렉트블랜드 트리
애니메이션 가중치를 직접적으로 연결.

루트 애니메이션 이슈..

Question..

애니메이션이 많아질 경우.. 메모리 문제 발생..

애니메이터는 프로그램 시작시 모두 로드가 됨.

애니메이션 옵티멀 기능을 꼭 사용해봐라.

예를 들어서 굉장히 괜 애니메이션이라도. 애니메이션이 1메가라면..

옵티멀 압축모드 사용해봤는지?

2.0 ~ 3.0시절의 애니메이션 기능이 사라진 경우에 대한 질문

애니메이터에서 연결되어서 사용되야 함.

애니메이터 사용시 메모리 할당이 많이 되어서 문제다..

레거시 모드... -> 중장기 적으로는 없애는 기능..


세션2.
유니티로 멀티플레이 게임 만들기, UNET
유니티 Erik Juhl

멀티 플레이 파운데이션 

피드백 받으려고 함

MMO까지 가능한 파운데이션을 제공해주려 함.

멀티 플레이 파운데이션은 뭔가?

전문가 적인 인프라 툴

로우레벨 api 소켓처럼 인터페이스가 됨

하이레벨 api 도 제공함.

네트워크 엔지니어 아니더라도 개발을 하려면 하이레벨이 정답.

메치 메이커. 

비전

phase 1
multiplayer foundation
not in 5.0 but releaed in unity 5.x

phase 2
server authoritative gameplay
being re

phase 3
..

why create the multiplayer foundation.
하이레벨로 먼저 개발해서 제공.. 네트워크 개발자들이 불만.. (레거시 시스템)

빠른 숙도가 요구되는 게임은 UDP 

MMO 동자원 문제.

이벤트 드리븐 IO

하이레벨 스크립트 api

서버와 클라이언트 하이레벨에섯 지원

네트워크 메시지를 주고 받을수 있고

클라이언트 서버모델이 기본적으로 설치되어 있음

클라이언트에서 서버로 바로 메시징

서버에서 클라이언트로 이동

클라이언트들끼리의 통신은 없음.
(로우레벨을 사용하여야 함)

Engine and ediotr integration

세션3
Asset Store 등록과 절차 소개
유니티 조현태

1. 에셋스토어 소개
2. 에셋스토어 활용법
3. 에셋 스토어 등록방법

에셋 스토어란 ?

장난감 상점..

에셋 = 장난감 = 리소스
게임을 제작할 때 필요한 모든 리소스
아트, 프로그래밍, 사운드, 템플렛

에셋 + 게임 제작 병행
- 에셋 스토어의 판매수익을 바탕을 게임 제작
제작한 게임 내의 자체 제작한 에셋을 에셋 스토어에서 판매.



에셋 스토어 활용.
다양한 애니메이션 셋
Mixamo <- 유명한 애니메이션 에셋.
수백게의 모델과 수천게의 애니메이션 제공

Particle Playground <- 파티클 에셋.

게임사운드 

Retro sound fx, 
효과음, 
배경음악, 각족 오디오 툴, 보이스 바니(캐릭터 대사를 글로 작성해 보내면 녹음해서 보내줌)

효율적인 프로그래밍

스크립팅 툴
플레이 메이커, uscript, nodify

쉐이더 프로그래밍 툴
shader forge
strumpy shader editor
shader fusion

AI스크립팅 툴
Befave 2 for unity
plyGAme
plyBlox

에셋 스토어 등록

1. 한번 올린 에셋은 영구적으로 판매가능
2. 서포트는 판매자가 직접 제공
3. 수익은 판매자와 유니티가 7:3으로 배분
2주에 한번씩 송금.

에셋 스토어 계정 만들기 - > 퍼블리셔 셋팅 -> 팩키지 올리기 -> 등록완료 검수를 기다림.


1. 가입하기

E-mail
password, 
repeat password, 
firstname, lastname, 
organization or company, 
address1, 
address 2, 
zip or postal code, 
city, 
country, 
phone number, 
vat number

2. 퍼블리셔 셋팅

퍼블리셔 유얼 에셋 버튼 클릭 -> 다운로드.

Asset Store Tools

publisher account

unity3d.com 홈페이지 가서 에셋 스토어의 publisher login 

paypal 페이팔 가입해서 2주에 한번 송금받는 방법. 
wire  한번 송금에 20 달러 250이하는 안됨


Asset Store Tools 에서
에셋스토어 등록.


세션4
유니티를 이용한 아키텍쳐
유니티 Rustum Scammell
Architecting GAmes in Unity
Common pattern.

Broken Windows
fix the windows
int new tork city, albuquerque and the netherlands, improving the physical appearance of a beighbourhood has been shown to reducecrime and increase quality life
people are influenced by their environment
social norms and conformity
routine monitoring

에셋 리스트 폴더관리.

good architecture = good standardss
use c#
Naming conventions.

switch-case 복잡함.

delegates 런타임 메모리가 항당되어 별로.....

delegates[] 사용!


Implementing Gameplay

싱글턴,

Pool Based Object.

bast-Practices

use c#
naming conventions
logical folder structure
zero-toler

Day2
기조연설 2
SquareEnix 드래곤 퀘스트의 모바일 개발과 전개

hatakeis@square-enix.com

스퀘어닉스 그룹.


모바일 사업 
- ios app 120 titles
- android os 80 titles

장점.

Single DL Contents(Premium)
싱글다운로드가 장점이다.

Free to Play Contents(Freemium)

드래곤 퀘스트

28년전 처음 출시.

국민적인 RPG.

드래곤 퀘스트 8 출시. 
유니티로 개발.

드래곤퀘스트  포탈
DQ overall information site
Platform Application of DQ1~ 3 treated as In-app purchse
DQ liaison page for smart phone

DL Status of DQ portal

over 4,000,000 for only 3 month

배경으로는 드래콘 퀘스트 1을 기간한정 무료 프로모션을 함.

드래곤 퀘스트 1의 무료 배포의 의미는..

드래곤퀘스트 1의 다운로드가 아닌 드래곤퀘스트 포탈의 다운로드...

드래곤 퀘스트 포탈에서 다운로드 받음... 인앱결제도 여기서..

400만명에게 다양한 프로모션이 가능해짐.

가장 마케팅적으로 좋은 솔루션은 푸쉬...

푸쉬 알림을 함으로서 스토어에 구입하려는 사람이 많음(구체적인 숫자는 노코멘트)



What's the titles with using Unity... 

스퀘어 에닉스 테크니컬 메니저(발표자 바뀜)

드래콘 퀘스트 8 포팅하는데 있어 유니티와 어떻게 활용을 했는지

모바일 개발을 위해서 모바일 개발의 트렌드에 대해 얘기를 한다.



1. 모바일 게임업계의 현제와 미래
2. 유저인터페이스와 게임디자인 (드래곤 퀘스트 8 에서 인터페이스와 디자인)
3. 스퀘어 에닉스와 유니티의 관계 스퀘어 에닉스가 유니티에서 포팅한 게임의 겟수.


먼저 모바일 게임의 현재와 미래..

진화하는 속도가 빨라지고 있다.

지금 현재와 미래의 전망.

현재 휴대폰 사양
cpu 32bit, 64bit,
gpu multi-core
graphics api
opengl es 1.1, 2.0 , 3.0
ram 1.0GB 
storage
64GB

콘솔과 같은 형태로 개발이 가능해지고 있다.

대용량 디바이스의 등장.. 과 우리가 어떤 타이틀을 만들것인가?


드래콘 퀘스트 8 포팅...

콘솔 타이틀을 손바닥 크기로.. 프레임 안정적.

콘트롤러의 수요..가 있고 대응하고 있음.... 

폰에서 피씨로 포팅... 그러기 위해서는 컨트롤러 대응 해야됨.


일본 스마트폰 시장 50% 점유율

역포팅 작업중.. pc 플스 엑박.. 닌텐도

유저 인터페이스 디자인.


세로 화면을 기준으로 개발..
플레이어가 편하게 실행 

전철에서 게임을 플레이 하는것을 타겟으로..

게임의 메인 유아이를.. 잘쓰는 손에 맞춰서 변경할 수 있도록 함.

이런부분을 세세하게 케어 해줘서 플레이를 손쉽게 즐길수 있또록 함.


게임 데이터.

스마트폰을 사용할때는 보통 멀티테스킹 작업.. (메일, 웹, etc)

어플리케이션을 많이 기동할수록 램이 부족해짐..

램이 부족해지면 백그라운드 프로그램 종료..

그래서

오토세이브를 생각했다.

자동으로 종료가 되면 자동저장이 된다.

자동저장이 없을때 많은 불만사항들이 생겼지만..

구현해서 적용 후 많은 호평을 받았음.



스퀘어 에닉스와 유니티의 관계..


유니티를 이용한 타이틀 9개
성검전설, 드퀘8, 데드맨즈 크로즈, 

왜 유니티를 사용하는 기회가 늘어났는지

유니티가 왜 활용하기 쉬운지..

많은 사용자로 인해 쉬운 대응이 가능.

커스텀마이징이 뛰어남.(?)

개발환경의 원 페키지 화.

소스를 재활용 해서 사용이 가능.


세션 1
유니티에서 웹개발의 미래
유니티 Jonas Echterhoff

아시아 시장이 사용량이 가장 많다.

HTML5 로 오면서 플러그인이 필요가 없어졌다.
(플러그인이 내장되어 있다.)

왜?

보안, 통제권 떄문에 브라우저 회사는 플러그인을 좋아하지 않는다.

플러그인은 점점 통제권이 사라지고 있다.

Web GL을 발표했다.

하드웨어 가속을 할수 있는 라이브러리.. (브라우저 내에서)

브라우저에 빌트인 되어 있기 때문에 플러그인이 필요 없다.

자바 스크립트를 사용하는 플러그인

유니티에 내장된 opengl api를 거의 수정하지 않음.

open web standard

파피어 폭스, 크롬, 인터넷익스플러러, 오페라 에서 가지고 있다.

사파리 같은 경우는 기본값이  disable 되어있어 제외.

유니티 솔루션을 구현하는 가장 좋은 솔루션이다. 

언어적 플러그인적 장벽이 없다..

항상 이 기능을 가지고 싶어 했다.

2년 전부터 구현하려고 함 HackWeek에서 시도를 시작

HackWeek란 2년에 한번씩 코펜하겐에 모여 새로운 아이디어 프로젝트 실험.

일주일 동안 테스트를 함.

데드 트리거 2 를 webGL로 구현.. 

와우... 잘 돌아감..


기술적으로 어떻게 되느냐?


유니티에서 웹 지엘을 사용하기 위해서는..?

웹 지엘은 자바 스크립트 api 이다.


유니티 엔진 코드는 C/ C++ 작성되어 있음.

c#이나 유니티 스크립트를 자바스크립트로 바꿔야 함.

Emscripten 크로스 컴파일러.

크랭 컴파일러를 이용해서 C++ 코드를 LLVM bitcode로 바꿔줌.

c 코드를 webgl로 바꾸는데 도움.. 서칭이 필요.


asm.js

자바 스크립트는 다이나믹 해서 코드 최적화가 어려움.

자바 스크립트의 서브 셋.

자바 스크립트를 AOT complie를 할수 있도록 함.

자바 스크립트의 빠른 실행을 하게 해줌.

자바스크립트의 서브셋 이기 때문에 완벽한 호완이 가능.

브라우저의 지원 여부에 상관없이 실행 가능.(webGL만 된다면..)

모질라에서 개발한 기술.

파이어폭시에서도 지원 가능.



지금은 파이어폭스에서만 지원함.




유저코드는 어떻게 해야하나?

C#을 어떻게 자바스크립트로 바꿔야 하나?


IL2CPP

C# -> C++로 만들어줌.

이코드를 asm.js를 사용

종합.
c# 스크립터를 웹에서 자바 스크립트로 변환이 가능..



C# -> .net 바이트 코드로 변환됨. 
이 닷넷 바이트 코드를 IL2CPP를 통해 C++코드로 변경.-> asm.js 를 활용해 자바스크립트로 변경.

|0 <- asm.js 에서 인티져로 사용하도록 함.


-> 최적화 패스를 함.


unity webgl 유니티 5.0에서 web gl을 어떻게 지원할 것인가?

초기 버전을 unity 5.0에서 구매 가능할거임.

처음에는 제약사항들이 많은거임.

데스크탑 버전과 파이어 폭스만 지원할 예정. -> 계속 늘어감.


5.0에서 제한되는 기능

video

runtime substance generation

networking ( www class is supported, but no .NET sockets)

마이크, 웹켐

스크립팅 디버깅



퍼포먼스는?

네이티브 코드만큼 빠를수가 없음.

얼마나 퍼포먼스가 떨어지는가?

브라우저에 따라 다름.(브라우저 마다 자바 스크립트 엔진이 다름)

asm.js를 지원하기 위한 움직임이 있어 확장할 가능이 있음.

멀티 쓰레딩을 사용하면 느려짐


최소한 네이티브 보다 50% 이상의 퍼포먼스를 보여준다.

데스크탑 pc의 50% 퍼포먼스는 그나마 많은것을 할 수 있다.

gpu 완전 지원이 되기 떄문에 고차원적인 렌더링을 많이 할 수 있따.

계속해서 발전이 될것이다.

유니티 프로파일러 100% 지원가능..


웹지엘 플러그인을 지원함.

unity 5.x 에서 기능적인 제약들을 없앨수 있도록 노력할것이다.

앞으로 더 많은 브라우저들이 webgl들을 지원해줄수 있을것으로 본다.

유니티 웹 플레이어는?

아직까지 가장 강력한 가장 광범위하게 지원되고 잇는 플러그인 이다.

두 기술을 동시에 지원할 계획 

유니티 웹 플레이어는 언젠가는 지원이 되지 않을 것인가?

마소는 웹지엘 작업중
애플도 지금 현재 웹 지엘 수정중

올해는 웹지엘 2.0이 나올텐데.

멀티쓰레딩 지원에 대해서는...? 브라우저 벤더들이 지원을 하려고 하고 있다는 얘기를 들었다.

지원이 되면 네이트브와의 퍼포먼스 차이를 줄임.

세션 2

유니티짱 한국에 상륙.
유니티 짱에 대한 이야기..

케릭터가 귀여우면 텐션이 올라간다?!

2년전에 유니티짱 프로토 타입 만들었지만 문제가..

캐릭터가 성공하지 못함..

일단 그리기가 어려움..

와닫는 부분이 없다. 제작이 힘든 부분. 임팩트가 없음..

유니티짱 프로토 타입 실패를 보고.. 2가지 요소를 생각..

그리기 쉬운 캐릭터, 그리기 어려운 캐릭터 

그리기 쉬우면 팬의 엑티비티가 높아진다..



셋팅 에셋. (표정, 움직임)

shared world


setting asset makes her live 

디자인을 100% 의도하고 만들었다..


액션 게임에서도 활용가능한 에셋을 제작하고 했음.

움직임을 보였을때 즐겁게 움직임을 보였으면 좋겠다.

배색도 중요.. 배색만 보고도 유니티 짱인지 알게 만드는것?


유니티 짱에 포함된 에셋

character model
shaders
animations

4 5 voices
locomotions
facial control sample

유니티 짱 라이센스.

전년도 수익 천만에 이하의 아래

금액을 넘게 되면 상의를 해달라..


2차 조작.. 동호인 활동 허가

기술적인 데모 아카데미 데모에서 사용 가능.




수익 상한선을 넘었을때 상의 바람.
야한거 안됨...;;

정치적인 메시지 전달 안됨


케릭터 개조할경우 라이센스를 숨겨야 함.

기술적인 언급은 없었음... 



세션 3

Unity Test Tools
유니티 tomek paszek
이시간은 살짝 졸았내요;;

tomek paszek toolsmith
테스트 인프라 개발 관리.


테스트의 개괄적인 내용.

테스트를 자동화 시켜야 하는 이유?

테스트의 목적인 리그레이션을 찾기 위함임.

테스트 자동화는 퀄리티 계약을 하는것과 같다..

코드를 납품하는 회사의 퀄리티 계약 'ㅅ'.




테스트를 자동화 하기 때문에 더많은 테스트를 할수 있다.

개발의 막바지에 갈수록 비용이 많이 든다.



Unity Test Tools goals

fill out the gap in the industry
evanglize testability
버그 레포트를 제출하는 세로운 방법.


자동화 피라미드

UI
Integration
Unit

유니티 테스트 툴

유닛 테스트 러너

어세션컴포넌트

인테그레션 테스트 러너



Unit Test Runner 사용 방법

  
코드를 리컴파일 할때마다 테스트 하도록 셋팅.


세션 4

더욱 강력한 C# 스크립트 활용
정해종


유니티 허브 프리데브로 활동중.


큐어스노우대표 + 게임개발자



Big Script -> Small Script


Master 클래스..


모노 비헤이비어 상속 -> 모노 비헤이비어를 상속 받는 마스터 클래스.


All round variable
로컬 변수

all round variable - local sharing
로컬 공유



Class RabitAttack : 모노 -> RabitAttack : Master


마스터 클래스에서 공용변수를 공유

vars.setBool(), vars.getBool() api 를 제작하여 활용.


전역 공유

varAll.




오브젝트 변수들을 저장하고 싶은 경우에는?

파일 입출력 할 경우.

var.setFloat("speed", 1.of);
var.setString("name", '홍길동");
var.


아웃풋된 파일을 로드해서 적용.
var.LoadFile("경로/파일명.txt");
var.getInt("monsterCount");

데이터베이스를 따로 구축하지 않고 파일입출력을 활요해서 적용.



데이터를 데이터베이스로 보내는 기능도 있음
var.SetString("id","test");
var.SetString("password"","1234");
var.SendHttp("주소");

http 응답을 기다려야함..

변수의 값이 바뀌었는지 확인.


Master Find - catched find 만능 변수 객체
var.FInd

한번만 찾고 변수가 바뀌지 않는 이상 비용이 크게 들지 않음.

MasterName 

NGUI 클래스에 마스터 클래스 넣고 이름 설정해서 찾기하면 비용이 적게 든다.

All round Variable - modify detection
만능 변수 객체 - 변수 수정감지

OnVariableChange(string name)
{
}

만능 변수 객체 - 문자열을 이용한 변수 설정.
all round Variable - set by string

var.FromString("int a = 1; int b = 2; string = "ttttt";);
마스터 클래스에서 변수가 설정됨.




애니메이터 사용하기


다중 오디오 사용하기.


타이머 설정
코루틴 몰라도 사용 가능.

암호화 되는 playerPrefs 사용.



출처 : http://devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=45126&page=0&sca=&sfl=&stx=&spt=0&page=0&currentId=44#c_45143

반응형
Posted by blueasa
, |