NHN NEXT 2014년도 게임트랙 소개
Upcoming SlideShare
Loading in...5
×
 

NHN NEXT 2014년도 게임트랙 소개

on

  • 1,455 views

NHN NEXT Bootcamp 2014

NHN NEXT Bootcamp 2014
게임 전공 소개

Statistics

Views

Total Views
1,455
Views on SlideShare
1,330
Embed Views
125

Actions

Likes
2
Downloads
15
Comments
0

3 Embeds 125

https://twitter.com 122
http://nigayo.com 2
http://www.slideee.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    NHN NEXT 2014년도 게임트랙 소개 NHN NEXT 2014년도 게임트랙 소개 Presentation Transcript

    • NHN NEXT 게임 전공 소개 2014. 2. 5.
    • 목차 • 게임 전공 소개 • 게임 클라이언트와 서버 – 게임의 동작 구조 – 전공 과목 • 게임 개발자의 자세 – 인재상
    • DISCLAIMER 본 내용은 이해하기 어려울 수 있는 내용을 담고 있습니다. 게임 트랙 으로 관심을 두지 않는다면 이해하지 못해도 상관 없습니다. 실제로 게 임 관련 전공 수업의 내용은 훨씬 더 어려워서 이해 못할 확률이 높기 때문에, 미리 그 느낌(?)을 맛보는 것도 괜찮습니다. 언제든 내 길이 아 니다 싶으면 다른 길로 갈 수 있는 용기만 있으면 됩니다. 그래서 여기 에 계신 모든 분들에게 본 내용을 이해시킬 의무가 없음을 알립니다.
    • 게임 전공 • 게임 개발 그 자체가 본질 – 특정 플랫폼의 특징을 배우는 것은 아님 – 그럼에도, PC 온라인 게임 환경 위에서… • PC 게임 플랫폼 – 게임 개발 자체를 가장 잘 배울 수 있는 플랫폼 • 가장 복잡하지만 표현할 수 있는 것이 많기 때문 • 온라인 게임 – 네트워크로 연결되지 않는 게임은 거의 없음 (멀티 플레이어) • 다수의 사람들이 서버에 접속하여 가상 공간상에서 플레이 – FPS, RPG, RTS, AOS, SPORTS, …
    • 그러면, 콘솔 / 웹 / 모바일 게임은? • 콘솔 게임 – PlayStation, XBOX – PC 환경과 개발 방식 및 개발 환경이 거의 비슷 • PS4 및 XBOX ONE: 사실상 PC 플랫폼 • 모바일/웹 게임을 만들고자 하는 경우 – 메인을 어디로 두느냐에 따라 결정 – 가끔 게임을 만들어 볼 수도 있겠다?  모바일/웹 전공 • 이 경우, 게임전공에서 도움 줄 수 있는 과목이 있음 – 게임만 만들건데, 모바일/웹용으로 만들 수도?  게임 전공 • [참고] 복수전공 이슈 – 게임 트랙을 밟는다고 한다면: • 게임 클라이언트 + 게임 서버 추천 – 웹UI/웹서버/모바일 트랙중 하나라도 포함될 경우 • 공통 과목이 별로 없어서 졸업이 (당연히) 늦어지게 됨
    • 모바일 / 웹 게임의 기술적인 측면 (모바일) 게임 클라이언트  모바일 전공 (웹) 게임 클라이언트  웹UI 전공 (공통) 게임 서버  웹서버 전공
    • 게임 클라이언트와 서버 (게임의 동작 구조)
    • 게임의 처리 과정 • 싱글 플레이어 게임 – client-only game events timer Inputs Simulate States Render Wait State State State Time
    • 서버가 있는 게임의 처리 과정 • 멀티 플레이어 게임 – 서버가 게임 로직 처리(Simulate) 및 상태 관리 Clients Server events Inputs Simulate Render States state info Wait ……
    • 게임 전공 과목들 클라이언트 게임 미들웨어 (Unity3D 등) Windows 게임 프로그래밍 컴퓨터 그래픽스 Advanced 서버 선형대수, 물리학 확률과 통계 게임 제작 개론 프로그래밍 언어 C++ 자료구조&알고리즘 운영체제 컴퓨터 시스템 아키텍처 컴퓨터 그래픽스 컴퓨터 네트워크 게임서버 아키텍처 게임 서버 프로그래밍 데이터베이스
    • 공통 기초 과목 • 선형대수 – 게임의 상당수 로직은 매트릭스로 시작해서 매트릭스로 끝남 • 3차원 공간 계산에 강해야 함  이것 못하면 게임 트랙 비추 • 확률과 통계 – 게임 밸런싱, 유저 데이터 분석 • 게임은 알고 보면 확률 기반의 놀이 기구 • 물리학 – 게임 내 물리 현상 시뮬레이션을 위해 쓰임 • 운동(Kinetic) 법칙, 유체(Fluid) 역학  물리 엔진 • 자료구조 & 알고리즘 – 게임 로직 최적화, AI (길찾기 등), … – 꼼꼼하게 잘 만들지 못하면 출시 자체가 불가능한 경우가 많음 • 수만 명의 유저 대상으로 𝑛 log 𝑛과 𝑛2 의 차이는 아주 크다
    • 공통 전공 과목 • 게임 제작 개론 – 게임 그 자체(기획)에 대한 이해 – 게임 제작 과정(프로세스)에 대한 이해 – 프로그램 구현을 제외한 부분에 대해 학습  타 직군에 대한 이해 • 프로그래밍 언어 in C++ – 성능과 높은 추상화를 동시에 제공하는 유일한 언어 – 프로그래밍 언어 자체에 대한 개념이 있어야 각종 문제 해결 가능 • 운영체제 (Windows) – PC뿐만 아니라 XBOX ONE 및 PS4도 PC 기반 • 윈도우 프로그래밍과 매우 흡사 • 컴퓨터 시스템 아키텍처 – 게임은 하드웨어 성능의 뽕을 뽑는 소프트웨어 • 성능 최적화 및 메모리 덤프 디버깅을 위해서
    • 컴퓨터 그래픽스 • 더 이상의 설명은 생략한다  게임 클라이언트에 가까운 과목이지만 게임 서버 전공을 하더라도 기본적인 것은 알아야 됨
    • 컴퓨터 네트워크 • 네트워크로 연결되지 않는 게임은 거의 없음 – 게임 서버 프로그래머는 이 분야의 숙련자 • 서버는 수많은 클라이언트와 연결되어 통신 – 게임 클라이언트 프로그래머도 기본적인 것은 알아야 됨 • 기본적인 소켓 프로그래밍을 통해 서버와 연결 • P2P 게임의 경우 클라이언트간 네트워크로 연결 Peer Peer Peer Peer
    • 게임 클라이언트 전공 과목 • 그래픽스 Advanced – 컴퓨터 그래픽스 심화 과정 • 게임에서는 그래픽스의 거의 모든 기술을 활용함 – 각종 광원(빛), 물리 효과, 재질 처리 등의 고급기술 학습 • Windows 게임 프로그래밍 – Windows 기반의 프로그래밍 – .NET 프로그래밍 (C#) • 게임 제작을 위한 각종 도구(tool)도 만들 수 있어야 하기 때문 • 게임 미들웨어 – 상용 게임 엔진을 이용하여 게임을 만들어 보는 과정 – 실제 게임 회사 대부분은 그래픽스 라이브러리와 각통 툴을 처 음부터 만들지 않고, 잘 만들어진 게임 엔진을 최대한 활용
    • Unity3D 엔진
    • 서버 전공 과목 • 게임 서버 프로그래밍 – 대규모 플레이어 처리에 대한 학습 • 멀티쓰레드 프로그래밍 및 비동기 프로그래밍 • 하드웨어 최적화: CPU, 메모리, 네트워크 • 데이터베이스 – 대규모 플레이어 데이터에 대한 체계적이고 효율적인 관리 • (예) 수많은 캐릭터, 아이템 데이터 관리 • 게임 서버 아키텍처 – 게임의 장르나 특징에 따른 효율적인 서버 구성은? DB Proxy Broadcaster Client World Server Realm
    • 게임 개발자의 자세 (게임을 좋아한다는 이유만으로 개발자를 꿈꾸지 말아라)
    • 게임 개발자? • 크게 3가지의 길 – 게임디자이너 • 게임 기획, 시나리오 작가, 레벨 디자인, … – 아티스트 • 애니메이터, 캐릭터/배경 원화, 모델러, 월드 제작, 사운드, … – 프로그래머 • 서버, 클라이언트, 툴, 플랫폼, … • 최종적으로 실제 소프트웨어를 만드는 사람 – 프로그래머
    • 게임 프로그래머 • 게임 프로그램을 개발 – 소프트웨어 개발 중 최고의 난이도에 속함 – 진짜 실력을 키울 수 있음 • 게임 프로그래머로서 인정을 받으면 자부심을 가져도 됨 • 끝없는 자기 계발 – 가장 빨리 변하는 분야 • 자기주도적으로 (꽂혀서) 계속 공부하고 적응해야 살 수 있음 • 게임 기술에 대한 오덕력(?)이 어느 정도 필요함 • 궁금하면 못 참고(?) 끝까지 추적해서 배우고자 하는 자세 • 변화에 대응을 잘 하기 위해서는 – 학과 전공 기초에 충실 • 기초가 튼튼할수록 새로운 환경에 적응을 잘 하기 때문 – 어설픈(?) 테크닉보다 전공 기초 과목 이해도가 높아야 함
    • 더 중요한 것 • 인간성(?)이 좋아야 함 – 성격이 좋아야 함 • 자신의 실력이 아무리 좋아도, 성격이 더러우면(?) 협업이 곤란 • 게임은 혼자서 만들 수 있는 물건이 아니기 때문 – 혼자서 만들 수 있는 게임은 거의 없음 (최소3 ~ 최대300) – 원만한 대인관계 • 정말 다양한 사람들이 모여서 일하기 때문 • 사고 방식이 상당히 다른 아티스트, 게임 디자이너와 잘 통해야 함 – 핵심 비법은? • 경청을 우선으로 긍정적으로 협력하려는 자세 • 아무리 실력이 좋아도 – 협업 능력에 문제 있다면 (레알 진심으로) 오지 말기를 추천
    • One More Thing • 게임에 대한 애정 어린(?) 관심 – 기술은 단지, 그 분야(도메인)를 받쳐주는 장치일 뿐 • 프로그래밍을 아무리 잘해도 게임에 대한 관심이 없으면… • 시키는 것만 딱 하고 “난 몰라라~”하는 사람은 환영 받지 못함 • 자신의 잉여력을 알아서 투입(?)하는 열정적인 자세 – “이렇게 바꿔보면 좀 더 재미 있지 않을까?” – 화제작이나 이슈가 되는 게임을 찾아가며 플레이 해보려고 노력 • 개발자 입장에서 생각해보기: “왜 이렇게 만들었을까?”
    • 자세와 적성 클라이언트 호기심 섬세함 감각적 적응력 임기응변 (재치) 플랫폼에 영향 많음 Breadth (잡기에 능함) 일단 만들고 보자 서버 Interpersonal Skills 소통과 협업 계획적 Continuous Improvement 끝없는 자기 계발 추론에 능함 Passion for Games 게임에 대한 열정 끈기 직관력 정면돌파 (정공법) 플랫폼에 영향 적음 Depth (난 한놈만 패) 치밀하게 설계하자
    • 그럼에도 불구하고, • 이 길을 가고자 한다면, 꼭 확인 할 것 – 그냥 재미있을 것 같아서 게임을 만들려고 하는 것이 아닌지? – 이거 아니면 안될 것 같은가? • 진정 게임을 만들고 싶은 자만 환영 받음 • 이왕 게임 개발을 업으로 삼는다고 하면 – 본인이 반드시 잘 되어서 후배들의 롤 모델이 될 수 있어야 함 “게임 업계 선배들은 연봉 많이 받고, 잘사는 모습을 후배들에게 보여 줘야 하는 의무가 있다. 오래된 선배들이 가난에 허덕이고 맨날 야근만 하는 모습을 보여준다면, 누가 이 업계에 미래가 있다는 희망을 품을 것인가?”
    • 감사합니다! 게임 전공 소개 시간에 겁줬다고 해서… 쫄지마~ 끝.