Upload
hakhyunharry-kim
View
132
Download
7
Embed Size (px)
Citation preview
언리얼 4 와 비주얼 프로그래밍
블루프린트
시작하기 전에 비주얼 프로그래밍 전에 어떻게 프로그래밍
했지 ?
2001 년쯤 C++ 만 배웠는데 , 게임은 C 라니
요 !!! 콘솔들은 아직…(GP32???)
If 와 if,,, 그리고 for 문
함수포인터가 뭔가요 ?
2005 년 드디어 C++
안다고 생각했지만 모르네 ? 객체는 왜 쓰나요 ? 디자인 패턴
MVC 싱글톤 Interface Factory
2005 년쯤 스크립트 ? Lua? Python? Visual Studio 에서 디버깅이 안되요…
컴파일이 필요 없음 Lua 인터페이스는 ? LuaBind? LuaTinker
동적 로드 ?( 잘 되나요 ?) 기획자용 ?( 디버깅은 누가 하나요 ?) 근데 되는 디버깅 되는 경우도 (Havok Lua?) 요즘은 디버깅이 더 좋아졌다 ‘카더라’
2008 년쯤 Entity? Component? 상용엔진들도 Component? 정말 우리는 게임 중간에 날아다니는 고블린을
만들기 쉬었는지 ?
그리고 디버깅 , 코딩 복잡도… 코드 읽는게 어려워요
Gamebryo Component Entity? Component? 그럭저럭 Component Tick 관리가 어려움 Scenegraph 구조와 Component?
Gamebryo Lightspeed Entity? Component? Property 는 데이터만
PropertyGrid, 타입없는 변수 기능은 Lua 에서
모든 Component 는 Async Load + Asynic Tick
우와 멋진데 ? 디버깅 디버깅 디버깅
프로그래밍 언어들쉬어가기
Programming Languages Python
Why Python is so popular PTVS 좋아요 현재는 웹도 , 클라이언트도 , 모바일도 잘 됨 ?
C# Unity3D 를 쓴다면
JS 웹으로 뭔가 해보고 싶다면 Java 와는 다른 언어
Visual Language 는 언제쯤 ?
Visual Programming2D 게임 프로그래밍에선 이미 제법 많이 쓰이는 ,
Scratch
Gamesalad
Visual programming 단점
Mental Model? 기존 프로그래밍
소스코드 , 프로그래머 장점
직관성 사용성 확장성 그래프 형 데이터 표현
** 2D 게임쪽에 많이 사용
Visual Programming 의 징검다리 Visual Shdaer
이쯤에서 생각해보는 Visual Shader
Shader 세상에서는 Node 기반이 최고 ? 디자이너가 쉽게 조작 가능 결과 예측이 쉬움 (Preview 도 되요 )
단점 수 많은 Visual Shader 에 있는 Copy &
Paste 최적화 ?
대략 요런 느낌 ?
Visual Shader 프로그래머는 불편해했지만
나머지는 ? 노드와 인터페이스 만드는 게 어려웠음
언리얼에서는 ? 대부분의 3D 게임 엔진에서 지원
Unreal Unity Vision
Graph?Visual Shader 로 익숙해진 프로그래머와 디자이너의 다양한 시도 !!
Visual Shader 이후 다양한 시도
NDC 08 의 실시간 비주얼 그래프 편집 참고 http://www.slideshare.net/noerror/
ndc08
블루프린트부연 설명이 길었습니다만 , 이제 본론입니다 .
블루프린트 ?
블루프린트 쓸만한가요 ? Node 구조가 복잡해질텐데 ? 그리기 귀찮지 않나요 ?
직접 노드 구현 C++ – 쉽진 않지만
매크로 라이브러리 여러 노드를 한꺼번에
C++ Node Spawn 괜찮은 툴의 도움으로 할만하다는 느낌 ?
브레이크 포인트 실체 디버깅 하고 싶은 객체 선택 가능 ?
블루프린트 디버깅여기서 디버깅 객체 설정
여기서 값도 보여요 !!
블루프린트 커스토마이징 우리는 그래도 C++ 에서 노드를 만들고 싶다 하나의 노드가 여러 기능을 하도록
노드 확장 UK2Node 를 상속 받아서 시작ExpandNode – 이 함수에서 실제 다양한 중간 노드를 만들어서 기능을 추가 참고 )
UK2Node_SpawnActorFromClass::ExpandNode CompilerContext.SpawnIntermediateNode
중간노드 만들기 CompilerContext.MovePinLinksToIntermedi-
ate 연결된 핀 링크 옮기기
그래서 쓸만한가요 ? 전 스크립트보다 좋아요
잘 준비된 툴 Component 기반의 문제점 ?
툴로 해결됨 코드 읽기가 쉬워졌어요
이것도 툴로 해결 .
스크립트 언어와 비교하면 ? Coroutine? Closure?
그럼 Scalable 한가요 ? 리팩토링
익숙한 Visual Studio + Visual Assist 처럼은 안됨
한 땀 한 땀 Diff, Merge, 동시작업 ?
Diff 는 제법 좋아요 ? Merge 는 안될꺼에요 Text 방식이 좋은데 ,,,
블루프린트 Diff
그럼 좋은 가요 ? 새로운 방식으로 생각하는 재미
노드 단위로 설계하고 , 코딩하고
C++ 를 아직 놓지 않아요 C++ 와 다양한 연동 방식 그리고 소스가 공개 되어 있으니 , 다양한 테크닉 보
는 / 쓰는 재미 C++ 언어적 한계를 어떻게 넘을 지 ?
컴파일러도 공부 ?
질문 ?