간편결제, 신용카드 청구할인
카카오페이 3,000원
(카카오페이 5만원 이상 결제시, 4/1~4/30 기간 중 1회)
우리카드 3천원/7천원/1만 5천원 즉시할인
3만원/5만원/10만원 이상 결제시
삼성카드 6% (38,070원)
(삼성카드 6% 청구할인)
인터파크 롯데카드 5% (38,480원)
(최대할인 10만원 / 전월실적 40만원)
북피니언 롯데카드 30% (28,350원)
(최대할인 3만원 / 3만원 이상 결제)
NH쇼핑&인터파크카드 20% (32,400원)
(최대할인 4만원 / 2만원 이상 결제)
Close

C++를 사용한 언리얼 엔진 4 개발 2/e : 100여 개의 레시피를 통해 배우는 언리얼 4 게임 개발 가이드

원제 : Unreal Engine 4.x Scripting with C++ Cookbook - Second Edition
소득공제

2013년 9월 9일 이후 누적수치입니다.

판매지수 394
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
공유하기
정가

45,000원

  • 40,500 (10%할인)

    2,250P (5%적립)

할인혜택
적립혜택
  • I-Point 적립은 출고완료 후 14일 이내 마이페이지에서 적립받기한 경우만 적립됩니다.
추가혜택
배송정보
주문수량
감소 증가
  • 이벤트/기획전

  • 연관도서(1)

  • 사은품(3)

출판사 서평

★ 요약 ★

클래스 생성부터 블루프린트 편집기, C++ 클래스와 구조체, 메모리 관리, 스마트 포인터, 디버깅, 액터와 컴포넌트, 이벤트와 델리게이트, 입력과 충돌, 클래스와 인터페이스 통신, C++과 언리얼 편집기의 연동 UE4 API 사용 및 멀티플레이어 네트워킹, AI 작성 및 유저 인터페이스까지 100개가 넘는 실전 레시피를 통해 언리얼로 만드는 게임에 네이티브 코드를 통합하고자 하는 게임 개발자에게 필수적인 책이다.

★ 이 책에서 다루는 내용 ★

■ UE4 및 블루프린트 편집기와 잘 통합되는 C++ 클래스 및 구조체 생성
■ 언리얼 엔진에 포함된 다양한 API로 작업하는 방법
■ UE4 프로젝트에서 이벤트, 델리게이트, 인터페이스와 같은 고급 개념 활용
■ C++를 기반으로 캔버스(Canvas)와 UMG를 사용해 사용자 인터페이스 구축하기
■ 커스텀 윈도우와 편집기를 만들어 언리얼 편집기 기능 확장하기
■ C++, 블랙보드(Blackboard), 행동 트리(Behavior Tree)를 사용한 AI 작업 및 서비스 구현
■ 네트워킹 지원을 위한 C++ 코드 작성과 속성 및 함수 복제

★ 이 책의 대상 독자 ★

게임 디자인과 C++의 기본 사항을 이해하고 있으면서 언리얼로 만드는 게임에 네이티브 코드를 통합하고자 하는 게임 개발자를 대상으로 한다. 특히 엔진을 확장하거나, 디자이너를 위한 제어가 쉽고 유연한 레벨 구성 시스템을 제공하려는 프로그래머에게 적합하다.

★ 이 책의 구성 ★

1장. 'UE4 개발 도구'에서는 UE4 게임 개발을 시작하는 데 필요한 기본 레시피와 게임 코드를 작성하는 데 사용하는 기본 도구를 설명한다.
2장. '클래스 생성'에서는 UE4 블루프린트 편집기와 잘 통합되는 C++ 클래스 및 구조체 생성 방법을 다룬다. 이러한 클래스는 UCLASS라고 하는 일반 C++ 클래스의 블루프린트용 버전이다.
3장. '메모리 관리, 스마트 포인터, 디버깅'에서는 세 가지 유형의 포인터를 모두 사용하는 독자를 대상으로 하며, 자동 가지비 컬렉션(automatic garbage collection)과 관련한 몇 가지 일반적인 함정을 다룬다. 또한 크래시(crash)를 분석하거나 기능이 제대로 구현됐는지 확인하고자 비주얼 스튜디오 또는 XCode를 사용하는 방법을 알아본다.
4장. '액터와 컴포넌트'에서는 커스텀 액터와 컴포넌트가 하는 역할, 상호작용 방식 및 생성 방법을 다룬다.
5장. '이벤트와 델리게이트 처리'에서는 델리게이트(delegate), 이벤트(event), 이벤트 처리를 다루며, 자신만의 구현을 생성하는 방법도 설명한다.
6장. '입력과 충돌'에서는 UE4에서 사용자 입력과 C++ 함수를 연결하는 방법을 설명하며 C++로 충돌을 처리하는 방법도 다룬다. 또한 사용자 입력과 충돌 같은 게임 이벤트를 다루는 기본 처리도 제공함으로써 디자이너가 필요에 따라 블루프린트를 사용해 재정의할 수 있도록 한다.
7장. '클래스와 인터페이스 간의 통신: 파트 1'에서는 자신만의 UInterface를 작성하는 방법을 설명하며, C++를 사용해 커플링을 최소화하고 코드를 간결하게 유지하는 방법도 알려준다.
8장. '클래스와 인터페이스 간의 통신: 파트 2'에서는 7장에서 다룬 내용의 연장선으로, 블루프린트를 활용해 UInterface가 작동하도록 만드는 방법을 자세히 다룬다.
9장. 'C++와 언리얼 편집기 연동: 파트 1'에서는 커스텀 블루프린트와 애니메이션 노드를 생성해 편집기를 커스터마이즈하는 방법을 설명한다.
10장. 'C++와 언리얼 편집기 연동: 파트 2'에서는 사용자가 생성한 타입을 검사하기 위해 커스텀 편집기 창과 커스텀 디테일 패널을 구현하는 방법을 설명한다.
11장. 'UE4 API 사용하기'에서는 프로그래머가 엔진에게 무엇을 해야 할지 지시하는 방법인 API를 설명한다. 각 모듈은 API를 제공하며, API를 사용하려면 빌드에서 사용할 모든 API를 ProjectName.Build.cs 파일에 나열해야 한다.
12장. 'UE4에서의 멀티플레이어 네트워킹'에서는 네트워크를 통해 속성과 기능을 복제하는 방법을 설명한다. 또한 서버와 클라이언트를 동시에 테스트하는 방법도 다룬다.
13장. 'NPC 제어를 위한 AI'에서는 간단한 인공지능(AI)을 보유한 NPC 캐릭터를 제어하는 방법을 다룬다.
14장. '사용자 인터페이스 - UI와 UMG'에서는 플레이어에게 피드백을 표시하는 것은 게임 디자인에서 가장 중요한 요소 중 하나이며, 일반적으로 게임 내에서 일종의 HUD 또는 메뉴를 제공한다.

★ 지은이의 말 ★

언리얼 엔진 4(Unreal Engine 4)는 게임 개발자를 위해 게임 개발자가 만든 완전한 게임 개발 도구 모음이다. 실용적인 레시피가 100개가 넘는 이 책은 UE 4.21로 게임을 개발하는 동안 C++ 스크립팅이 갖고 있는 잠재력을 끌어내는 가이드다. 언리얼 편집기 내에서 C++ 클래스를 추가하고 편집하는 방법을 보여주며, (언리얼의 주요 강점 중 하나인) 프로그래머가 개발한 액터(actor)와 컴포넌트(component)를 디자이너가 커스터마이즈(customize)할 수 있는 방법을 알아본다. 또한 이 강력한 게임 엔진에 포함된 많은 도구와 함께 C++를 사용하는 이점을 이해하는 데도 도움이 된다. 객체지향 레시피가 혼합된 이 책은 UE4로 게임용 코드를 작성하고 C++를 사용해 게임 및 개발 환경을 구성하는 방법에 대해 실행 가능한 정보를 제공한다. 책이 끝날 무렵이면, C++를 스크립팅 언어로 사용하는 UE4를 사용해 최고의 개발자가 될 수 있다!

★ 옮긴이의 말 ★

언리얼 엔진은 소개가 필요 없는 세계 최고의 3D 엔진으로, 에픽게임즈(Epic Games)에서 개발했으며, 그래픽 성능과 다양한 옵션, 시장 변화에 빠르게 대응하는 모습 등으로 게임 엔진 산업을 주도하고 있다. PC나 콘솔, 모바일용 기기에서 돌아가는 대작 게임에 주로 활용되던 언리얼 엔진은 이제 그 영역을 가상현실이나 영화, 애니메이션, 건축 설계 등으로 계속 확장해나가고 있다.
1998년 언리얼 엔진 1을 사용한 첫 출시작 <언리얼(Unreal)>은 항상 압도적인 그래픽이라는 수식어를 달고 다니면서 시장에 큰 반향을 일으켰다. 유니티와 같은 경쟁 엔진의 기세가 만만치 않은 지금까지도 최고의 성능이란 수식어는 언제나 언리얼 엔진의 차지가 되고 있다.
게임 산업의 규모는 매년 커지고 있으며, 여기에 여러 가지 사회적인 분위기가 겹치면서 앞으로도 게임 산업은 성장을 거듭할 것으로 기대된다. 예전보다 점점 더 많은 사람이 현실보다는 온라인에서 더 오랜 시간을 함께 보내고 있으며, 게임 세상 안에서 삶의 일부를 공유하는 시간도 점차 길어지고 있다. 또한 게이머와 비게이머의 경계가 점점 사라지고 있으며, 누구나 손안에 게임기를 들고 다니는 세상이 된 지 이미 오래다. 이런 세상을 지탱하는 큰 역할을 언리얼 엔진이 담당하고 있는 것이다.
현재 게임 엔진 시장은 사실상 유니티와 언리얼의 '양강 구도'로 평가된다. 유니티가 개발 편의성에 중점을 두고 있다면, 언리얼은 최고의 그래픽 성능에 중점을 두고 있다. 따라서 어떤 게임을 만드는지에 따라 엔진을 선택하는 분위기다. 캐주얼 성향이 강한 게임은 대체로 유니티 엔진을 사용해 개발 효율을 높이는 전략을 택하고, 그래픽 성능에 중점을 두는 게임은 언리얼 엔진을 사용하는 전략을 택하는 것이 일반적이다.
국내에서는 <리니지2>가 언리얼 엔진 2를 사용하면서 언리얼 엔진이 유명해지기 시작했으며, 이후 웬만한 중대형 게임 개발사들이 마치 경쟁이라도 하듯이 앞다퉈 언리얼 엔진으로 게임을 개발하기 시작했다. 또한 게임을 소개할 때도 언리얼 엔진을 사용했다는 것을 광고할 정도로 언리얼 엔진은 높은 브랜드 파워를 갖고 있으며, 이로써 대작이라는 이미지를 게임에 심어줄 뿐 아니라 그래픽 품질에 대한 신뢰도도 높여준다.
유니티 엔진에 비해 진입 장벽이 높을 것으로 막연히 걱정하는 개발자들도 적지는 않지만, 다양하고 자세한 레시피를 통해 언리얼 엔진의 각 요소를 설명하는 이 책의 내용을 잘 따라온다면 언리얼이 그렇게 어렵기만 한 것은 아니라는 사실을 쉽게 알 수 있다.

목차

1장. UE4 개발 도구
__소개
__기술적 요구 사항
__비주얼 스튜디오 설치
__비주얼 스튜디오로 첫 C++ 프로젝트 만들기
__비주얼 스튜디오에서 코드 폰트와 색상 변경
__익스텐션 - 비주얼 스튜디오의 컬러 테마 변경하기
__코드 포매팅과 자동 완성 설정
__비주얼 스튜디오 단축키
__비주얼 스튜디오에서 마우스 활용
__언리얼 엔진 4 설치
__UE4에서 첫 프로젝트 생성하기
__UE4에서 첫 레벨 생성하기
__UE4 - 핫 리로딩
__UE4 - UE_LOG를 사용해 로그 남기기
__다수의 FString과 다른 변수들로부터 FString 만들기

2장. 클래스 생성
__소개
__기술적 요구 사항
__UCLASS 작성 - UObject에서 파생
__커스텀 UCLASS로부터 블루프린트 생성
__사용자 편집이 가능한 UPROPERTY 생성
__블루프린트에서 UPROPERTY 접근
__UPROPERTY 타입으로 UCLASS 지정
__UObject 파생 클래스 인스턴스화(ConstructObject< >와 NewObject< >)
__UObject 파생 클래스 파괴
__USTRUCT 생성
__UENUM() 생성

3장. 메모리 관리, 스마트 포인터, 디버깅
__소개
__기술적 요구 사항
__관리되지 않는 메모리 - malloc()/free() 사용
__관리되지 않는 메모리 - new/delete 사용
__관리되는 메모리 - NewObject< >와 ConstructObject< > 사용
__관리되는 메모리 - 메모리 해제
__관리되는 메모리 - 오브젝트 추적을 위해 스마트 포인터 사용
__(TSharedPtr, TWeakPtr, TAutoPtr)
__오브젝트 추적을 위해 TScopedPointer 사용
__언리얼의 가비지 컬렉션 시스템과 UPROPERTY()
__가비지 컬렉션 강제 수행
__중단점과 단계별 코드 실행
__버그 탐색과 콜 스택 사용
__핫스팟 식별을 위해 프로파일러 사용

4장. 액터와 컴포넌트
__소개
__기술적 요구 사항
__C++로 커스텀 액터 생성하기
__SpawnActor를 사용해 액터 인스턴스화하기
__UFUNCTION 생성
__Destroy와 Timer를 사용해 액터 삭제
__SetLifeSpan을 사용해 일정 지연 후 액터 삭제하기
__컴포지션을 사용한 액터 기능 구현
__FObjectFinder를 사용해 애셋을 컴포넌트에 불러오기
__상속을 사용한 액터 기능 구현
__계층 생성을 위한 컴포넌트 연결
__커스텀 액터 컴포넌트 생성
__커스텀 씬 컴포넌트 생성
__RPG를 위한 InventoryComponent 생성
__OrbitingMovement 컴포넌트 생성
__유닛을 생산하는 건물 생성

5장. 이벤트와 델리게이트 처리
__소개
__기술적 요구 사항
__가상 함수로 구현된 이벤트 처리
__UFUNCTION에 바인딩된 델리게이트 생성
__델리게이트 등록 해제
__입력 파라미터를 받는 델리게이트 생성
__델리게이트 바인딩으로 페이로드 데이터 전달
__멀티캐스트 델리게이트 생성
__커스텀 이벤트 생성
__시간 핸들러 생성
__FPS 게임을 위한 재소환 픽업 생성

6장. 입력과 충돌
__소개
__기술적 요구 사항
__축 매핑 - FPS 캐릭터 제어를 위한 키보드, 마우스, 게임패드 방향 입력
__축 매핑 - 정규화된 입력
__액션 매핑 - FPS 캐릭터 제어를 위한 원 버튼 응답
__C++로 축과 액션 매핑 추가
__마우스 UI 입력 처리
__UMG 키보드 UI 단축키
__충돌 - Ignore를 사용해 오브젝트 통과시키기
__충돌 - Overlap을 사용해 오브젝트 줍기
__충돌 - Block을 사용해 통과 방지

7장. 클래스와 인터페이스 간의 통신: 파트 1
__소개
__기술적 요구 사항
__UInterface 생성
__오브젝트에 UInterface 구현
__클래스가 UInterface를 구현했는지 검사
__네이티브 코드로 구현된 UInterface로 캐스팅
__C++로 네이티브 UInterface 함수 호출
__서로 UInterface 상속
__C++에서 UInterface 함수 재정의
__UInterface로 간단한 상호작용 시스템 구현

8장. 클래스와 인터페이스 간의 통신: 파트 2
__소개
__기술적 요구 사항
__네이티브 베이스 클래스로부터 블루프린트로 UInterface 메서드 노출
__블루프린트에서 UInterface 함수 구현
__블루프린트에서 재정의할 수 있는 C++ UInterface 함수 구현 생성
__C++에서 블루프린트로 정의한 인터페이스 호출

9장. C++와 언리얼 편집기 연동: 파트 1
__소개
__기술적 요구 사항
__블루프린트 변수로 클래스나 구조체 사용하기
__블루프린트에서 서브클래싱할 수 있는 클래스 또는 구조체 만들기
__블루프린트에서 호출할 수 있는 함수 만들기
__블루프린트에서 구현할 수 있는 이벤트 만들기
__멀티캐스트 델리게이트를 블루프린트에 노출하기
__블루프린트에서 사용할 수 있는 C++ 열거형 만들기
__편집기의 여러 위치에서 클래스 속성 편집하기
__블루프린트 편집기 그래프에서 속성에 접근 가능하게 만들기
__편집기에서 속성 변경 이벤트에 응답하기
__네이티브 코드 생성 스크립트 구현하기

10장. C++와 언리얼 편집기 연동: 파트 2
__소개
__새 편집기 모듈 생성
__새 툴바 버튼 생성
__새 메뉴 항목 생성
__새 편집기 창 생성
__새 애셋 타입 생성
__애셋을 위한 커스텀 컨텍스트 메뉴 항목 생성
__새 콘솔 명령 생성
__블루프린트를 위한 새 그래프 핀 시각화 생성
__커스텀 Details 패널로 타입 분석

11장. UE4 API 사용하기
__소개
__기술적 요구 사항
__Core/Logging API - 커스텀 로그 카테고리 정의
__Core/Logging API - Message Log에 메시지를 쓰는 FMessageLog
__Core/Math API - FRotator를 이용한 회전
__Core/Math API - FQuat를 이용한 회전
__API - 한 오브젝트가 다른 오브젝트를 향하도록 FRotationMatrix를 사용해 회전
__GameplayAbility API - 게임 컨트롤을 사용해 액터의 게임플레이 능력을 트리거링
__GameplayAbility API - AttributeSet으로 통계 구현
__GameplayAbility API - GameplayEffect로 버프 구현
__GameplayTasks API - GameplayTasks로 사건 만들기
__HTTP API - 웹 요청으로 웹 페이지 다운로드
__HTTP API - 다운로드 진행률 표시

12장. UE4에서의 멀티플레이어 네트워킹
__소개
__기술적 요구 사항
__클라이언트와 서버 게임 동시에 테스트하기
__네트워크를 통한 속성 복제
__네트워크를 통한 복제 함수들
__UI 네트워크 이벤트 처리

13장. NPC 제어를 위한 AI
__소개
__기술적 요구 사항
__간단한 따라다니기 행동 구현
__내비게이션 메시 배치
__블랙보드 생성
__행동 트리 생성
__행동 트리를 캐릭터에 연결
__BTService 생성
__BTTask 생성

14장. 사용자 인터페이스 - UI와 UMG
__소개
__기술적 요구 사항
__캔버스를 사용해 그리기
__화면에 슬레이트 위젯 추가
__UI를 위한 화면 크기 인식 스케일링 생성
__게임 내 UMG 요소 시트 표시 및 숨기기
__슬레이트 이벤트에 함수 호출 연결
__언리얼 모션 그래픽과 데이터 바인딩 사용
__스타일을 사용해 위젯 모양 제어
__커스텀 SWidget/UWidget 생성

관련이미지

저자소개

존 도란(John P. Doran) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

일리노이주 피오리아에 거주하는 열정적이고 노련한 테크니컬 게임 디자이너, 소프트웨어 엔지니어, 작가다. 게임 디자이너부터 리드 UI 프로그래머까지 10년 이상 다양한 역할을 맡으며 게임 개발에 관한 광범위하고 전문적인 실무 지식을 쌓았다. 싱가포르, 한국, 미국에서 게임 개발 교육 관련 강의를 해왔으며, 지금까지 게임 개발에 관련된 10권 이상의 책을 썼다. 현재 브래들리 대학교(Bradley University)에서 강사로 일하고 있으며, 이전에는 수상 경력이 있는 비디오 작가였다.

윌리엄 셰리프(William Sherif) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

게임 프로그래밍부터 웹 프로그래밍까지 프로그래밍 세계에서 8년 이상 경험을 쌓은 C++ 프로그래머다. 대학 강사(세션)로 7년간 근무했으며, 아이튠즈 스토어에 ‘스트럼(Strum)’, ‘MARSHALL OF THE ELITE SQUADRON’ 등과 같은 여러 앱을 출시했다. 또한 이해하기 쉬운 방식으로 강의 자료를 제작해 호평을 받기도 했다.

스테판 화이틀(Stephen Whittle) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

10년 가까이 개발한 게임 개발자이자 교육자로, 경력 대부분은 언리얼 엔진 사용에 관한 내용을 다뤘다. 커뮤니티에 공헌하거나, 거의 모든 중요한 엔진 버전에 포함되는 기능이나 버그 수정 사항을 공개적으로 배포한다.

생년월일 -
출생지 -
출간도서 0종
판매수 0권

인프라웨어에서 웹 브라우저 엔진 개발에 참여했으며, 현재는 게임 개발사인 I&V 게임즈에서 신작 개발에 전념하고 있다. 형식에 얽매이기보다는 자유로움 속에서 효율을 찾는 과정에 관심이 많다. 대학 시절부터 다수의 전시회에 출품해왔으며 공모전 입상 경력이 있다. SKT T스토어 제1회 공모전 스마트폰 게임 부문에서 입상하기도 했고, 개인 자격으로 애플 앱스토어에 10개 이상의 앱을 등록해 미국 앱스토어에서 카테고리 1위에 오르는 등 다양한 실험도 해왔다. 국내 최초의 유니티 관련 서적인 『유니티 게임 엔진 한글 메뉴얼』(2010)을 번역했으며, 이후 에이콘

펼쳐보기

컴퓨터/인터넷 분야에서 많은 회원이 구매한 책

    리뷰

    0.0 (총 0건)

    구매 후 리뷰 작성 시, 북피니언 지수 최대 600점

    리뷰쓰기

    기대평

    작성시 유의사항

    평점
    0/200자
    등록하기

    기대평

    0.0

    교환/환불

    교환/환불 방법

    ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청함, 1:1 문의 게시판 또는 고객센터(1577-2555) 이용 가능

    교환/환불 가능 기간

    고객변심은 출고완료 다음날부터 14일 까지만 교환/환불이 가능함

    교환/환불 비용

    고객변심 또는 구매착오의 경우에만 2,500원 택배비를 고객님이 부담함

    교환/환불 불가사유

    반품접수 없이 반송하거나, 우편으로 보낼 경우 상품 확인이 어려워 환불이 불가할 수 있음
    배송된 상품의 분실, 상품포장이 훼손된 경우, 비닐랩핑된 상품의 비닐 개봉시 교환/반품이 불가능함

    소비자 피해보상

    소비자 피해보상의 분쟁처리 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 따라 비해 보상 받을 수 있음
    교환/반품/보증조건 및 품질보증 기준은 소비자기본법에 따른 소비자 분쟁 해결 기준에 따라 피해를 보상 받을 수 있음

    기타

    도매상 및 제작사 사정에 따라 품절/절판 등의 사유로 주문이 취소될 수 있음(이 경우 인터파크도서에서 고객님께 별도로 연락하여 고지함)

    배송안내

    • 인터파크 도서 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다

    • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

    • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능하여, 인터파크 외 타업체 배송상품인 경우 발송되지 않을 수 있습니다.

    • 배송비

    도서(중고도서 포함) 구매

    2,000원 (1만원이상 구매 시 무료배송)

    음반/DVD/잡지/만화 구매

    2,000원 (2만원이상 구매 시 무료배송)

    도서와 음반/DVD/잡지/만화/
    중고직배송상품을 함께 구매

    2,000원 (1만원이상 구매 시 무료배송)

    업체직접배송상품 구매

    업체별 상이한 배송비 적용