SlideShare a Scribd company logo
게임 개발을 위한
printf(“Hello World!”);
그 이상의 콘솔 프로그래밍
이승헌
NLABS / 엔도어즈
B
Beginner
시작하기에 앞서…
• 새로운 기술에 대한 내용이 아닙니다.
• 잊혀질 수 있는 기본에 대한 이야기입니다.
– (실제, 잊혀지는 상황이기도 합니다.)
• 최신 트렌드만으로는 <빙산의 일각> 만을 볼 수 있습니다.
• 입문자 및 현업개발자 모두 나름의 의미를 가지고
청강해주시기 바랍니다.
• 강연자
• 이승헌 – 엔도어즈 기술지원팀장
- 언젠가, 범국민 교육 게임을 만들고 싶은, 7년차 <게임 개발자> 이자,
- 의료계와 같은 산학연계 구조를 IT계에 실현시키고 싶은 10년차 <소프트웨어 엔지니어> 입니다.
주제 선정의 고민, Console (CLI)?
• 개발을 하면서 있었던 많은 이야기들 중…?
프롤로그
>모든 프로젝트를 아우르는 콘솔_
발표 목차
• 프롤로그
• 콘솔은 기본이자 상급이다
• 대행되는 콘솔
• 이미 우리는 콘솔 프로그램을 사용하고 있다
– Visual Studio, TortoiseSvn, Eclipse, Unity …
• 콘솔 프로그램 규칙
– ErrorLevel, Help, Arguments, Text Type Output
• 콘솔 사용하기1 – 개발 및 운용
• 콘솔 사용하기2 – 자동화
• 콘솔 사용하기3 – 그 외
• 정리
방법에 대한
이야기
B
Beginner
부분 실습 형식
프롤로그
Console 은 기본인 동시에 <고급>이다.
프로그래밍 언어 입문 - Hello World!
• C/C++ 입문  Console Application Program 프로젝트
• 프로그래밍 문법을 익히는 공간
프롤로그
입문에서의 콘솔의 역할  * 그리기
• 기본 개념, 분기문/반복문, 데이터의 입출력을 학습
프롤로그
콘솔로 게임을 만들어 보기도 했다
• 그리기(Draw)에 대한 기본 구조 이해
• 그래픽 요소를 최소화하여 프로그래밍 학습에 적합
프롤로그
하지만, 막 입문한 초급 플머에게 콘솔이란?
프롤로그
진짜
안생겨요?
구글신
Ctrl + C,V
서버
vs 클라?
대략 이쯤…??
링크에러
컴파일에러
리팩토링
유니티
언리얼엔진
Windows Linux Mac OS
GUI형 OS의 보급은 CLI를 멀리하게 했다
• GUI 을 전면에 내세운 Mac 과 Windows
– (그럼에도 불구하고, Terminal 과 Cmd 는 빠질 수 없는 개발 도구)
• 하지만 Linux 는 Console 이 더 친숙하다
– 개발자 중심적이기 때문, GUI가 부록의 느낌
프롤로그
개발도구의 GUI & IDE 화로 인한…
• 도구의 GUI(Graphic User Interface) = Visual 화
• 도구의 IDE(Integrated development environment) 화
• 콘솔(CLI)의 은닉
– 콘솔 직접 사용 빈도 축소
프롤로그
Visual Studio Eclipse Unity Unreal Engine 4
And… 비주얼 프로그래밍의 시대 도래
• 텍스트 기반 프로그래밍에서 GUI 프로그래밍으로의 전환
– (사견: 아직은 입문 수준의 프로그래밍)
프롤로그
Scratch
https://code.google.com/p/blockly/
Blockly
https://code.google.com/p/blockly/
MODKIT
http://www.modkit.com/
Unity
(VIZIO Plugin)
Unreal Engine 4
Blueprints
CLI(Command Line Interface)
• 중요한 프로그래밍 개념!
• != Common Language Infrastructure (C#) (이거아님!!)
– http://ko.wikipedia.org/wiki/명령줄인터페이스/
• 사용편리, 모듈화 용이  유연성/범용성  생산성 향상
– 빠른 결과 확인
– 자동화 가능
• 당연, 게임 개발에서도 콘솔 프로그래밍 사용!
프롤로그
결론적으로,
• 콘솔 프로그래밍은 오래된(과거의) 프로그램 방식이지만,
• 콘솔 프로그래밍은 기본이자, 고급 레벨이다.
프롤로그
음악에 비유한다면?
http://www.youtube.com/watch?v=GDM6xt7SZeA (1:20~2:23)
(21살인데 어떻게 어셈블리어를 알죠? 같은 느낌…!!)
게임에서의 콘솔 프로그램의 주요 사용 패턴
프롤로그
(IDE 에서의) 콘솔 대행 사용
개발 및 Live 서비스 운용
개발 자동화 (빌드, 패치)
모듈 단위 테스트
대행되는 콘솔
우리는 이미 콘솔을 사용하고 있다.
우리는 이미 콘솔 프로그램을 사용하고 있다
대행되는 콘솔
act as a proxy
대행[代行]
...
Visual Studio 에서의 대행
• C:Program Files (x86)Microsoft Visual Studio 12.0VCbin
– Visual Studio 설치된 위치의 VCBin
• Cl.exe
– Microsoft C/C++ 컴파일러 및 링커 제어 도구
– http://msdn.microsoft.com/ko-kr/library/9s7c9wdw.aspx
• Link.exe
– COFF(Common Object File Format) 개체 파일과 라이브러리를 링크하여 실행 파일(.exe)이나
DLL(동적 연결 라이브러리)을 만드는 도구
– http://msdn.microsoft.com/ko-kr/library/y0zzbyt4.aspx
• Dumpbin.exe
• MSTest.exe
• …
대행되는 콘솔
TortoiseSVN 에서의 대행
• 버전 컨트롤에 필수적인 도구
• Svn.exe
– svn checkout URL[@REV]… [PATH]
– svn update
• Svnadmin.exe
• 유사 도구 : Git, Mercurial, …
대행되는 콘솔
TortoiseSVN 에서의 대행
• CLI 사용에 대한 방법을 찾아보자.
– Help 문서에 자세히 나와 있다
– Help 문서 보는 습관!
대행되는 콘솔
Unity 에서의 대행
• IDE 화된 게임 엔진 Unity
– C# 스크립트의 컴파일
• Mono.exe
– Java 스크립트의 컴파일
• Javac.exe
– Android 플랫폼으로의 빌드
• Adb.exe (Android Debug Bridge)
대행되는 콘솔
대행 도구로 아닌, 직접 사용
• 콘솔 대행의 원리를 알면,
• 직접 콘솔 프로그래밍을 사용하여
• 빠르게 작업을 할 수가 있다.  자동화 등
대행되는 콘솔
콘솔 프로그래밍의 규칙
규칙을 따르라!
Error Level
• 콘솔 프로그램 리턴 값 : (ErrorLevel=0)  에러없음
– 0 이 FALSE, 1 이 TRUE 인 Boolean 과 혼동하지 말라!
콘솔 프로그래밍의 규칙
int main()
{
int errorlevel = 0; // 0 이면 에러 없음!!
return errorlevel;
}
Help
• 명령어 /? 또는 명령어 help
• Help 구성요소
– 사용법 구문
– 필수 파라미터
– 옵션 파라미터 []
– Or 의미 - | (파이프)
– …
– 명령어마다 다양
콘솔 프로그래밍의 규칙
+ cmd [Enter]
• Windows Command interpreter
• cmd /? 도움말 보기!
• Tab 키의 기능 (&SHIFT + Tab)
– 파일명 자동 완성
• 명령어 > output.txt
– 출력 파이프를 output.txt 파일로 설정
콘솔 프로그래밍의 규칙
Text Type Output
• 파싱되는 Output Text
– 대행될 수 있는 것을 염두하여 출력 하라
• 파이프를 이용한 자동화
콘솔 프로그래밍의 규칙
콘솔 사용하기1 – 개발 및 운용
알아두어야 할 운용을 위한 콘솔 명령어
알아두어야 할 운용을 위한 콘솔 명령어
• 운용에서는, 네트워크 관련 콘솔 명령 사용 빈도가 높다
– ipconfig
– ping
– telnet (Windows telnet client)
• 네트워크 연결 터미널 : 네트워크 연결 확인 (포트 지정 연결)
– systeminfo
• 명령 실행한 PC의 시스템 정보(운영체제 구성 정보…)를 표시
– 개발자 및 게임유저의 시스템 정보를 추적하기 위한 용도
– netstat
• 명령 실행한 PC의 프로토콜 통계와 TCP/IP 네트워크 연결을 표시
– 네트워크를 이용한 게임 개발 시에 활용
– netsh
• 네트워크 쉘 유틸리티
콘솔 사용하기1 – 개발 및 운용
PING
• 사용법: Ping target_name
• 네트워크 연결 터미널 : 네트워크 연결 확인 (포트 지정 연결)
콘솔 사용하기1 – 개발 및 운용
Microsoft TELNET Client
• 사용법: telnet
– 네트워크 연결 터미널 : 네트워크 연결 확인 (포트 지정 연결)
콘솔 사용하기1 – 개발 및 운용
netstat
• 사용법: netstat [옵션]
– 프로토콜 통계와 현재 TCP/IP 네트워크 연결을 표시
– 개발, Live 서버 운용 등에 서버의 통신 상태를 확인할 때 사용
콘솔 사용하기1 – 개발 및 운용
net
• 사용법: net 하위명령 [옵션]
– Live 서버 운용 시, 네트워크 패스워드 일괄 변환 (net use)
콘솔 사용하기1 – 개발 및 운용
systeminfo
• 사용법: systeminfo [옵션]
– 로컬 또는 원격 컴퓨터의 운영 체제 구성 정보를 표시
– 유저의 플레이 환경을 수집하거나, 개발 환경 정보를 참조할 때 사용
콘솔 사용하기1 – 개발 및 운용
물론 더 좋은 GUI 도구도 있다
• 네트워크 관련 추적/프로파일링을 위한 도구 – WireShark
– https://www.wireshark.org/
콘솔 사용하기1 – 개발 및 운용
콘솔 사용하기2 - 자동화
Unity 프로젝트도 당연히 자동화가 가능하다.
제2의 동료, 빌드서버
• 빌드 서버에게 Console(CLI)를 만나게 해주자.
콘솔 사용하기2 - 자동화
Build
Server
DEPLO
Y
BUILD
SOURCE
UPDATE
No
LostTime!
자동화가 필요한 이유
• 서버 70 여대, 서버 App 200 여개, 5개 군의 Database
– [영웅의군단] Live
– 응급 상황에서의 빠른 조치가 필요!
콘솔 사용하기2 - 자동화
CruiseControl.NET
• 자동화 구축 솔루션
– Xml 형식의 스크립트 명령을 통해
자동화 구축
콘솔 사용하기2 - 자동화
배치파일 .bat / .cmd
• cmd /? 확인하기
• 모든 배치 파일 작성에 대한 설명
• 내장명령어 /? 확인하기
• Set /? : 배치파일에서도 변수를 사용할 수 있다.
• If /? : 배치파일에서도 분기문을 작성할 수 있다.
• For /? : 배치파일에서도 반복문을 작성할 수 있다.
• 배치파일에서도 함수형태로 작성할 수 있다.
• 과유불급
– 복잡해지면, 콘솔 프로그램을 작성하라.
콘솔 사용하기2 - 자동화
Visual Studio 자동화
• Devenv.com 이용
– Tip: devenv.exe 와 devenv.com 은 다르다
콘솔 사용하기2 - 자동화
SVN 리비전을 얻어 활용하기
• TortoiseSVN의 SubWCRev.exe
– 프로젝트의 SVN 리비전 정보를 소스에 활용할 수 있다
•  자동화 및 디버깅 정보로 활용
– http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-
subwcrev.html
콘솔 사용하기2 - 자동화
Unity Batch Mode 로 자동화하기
• Unity도 자동화 가능한가?  Unity.exe Batch Mode
• https://docs.unity3d.com/Documentation/Manual/CommandLineArguments.html
• 활용 유형
– .APK / .IPA 빌드
– Assetbundle 변환 빌드
• 리소스의 외부 경로화
– 리소스 검사 자동화
콘솔 사용하기2 - 자동화
Unity Batch Mode 로 자동화하기
• Unity.exe Batch Mode TIP
– 1) 빌드 서버 필수 옵션
: -nographics
– 2) Unity.exe 프로세스 중복 실행
: -logfile
– 3) BatchMode 코드 작성시, 실행 실패 처리
: EditorApplication.Exit(에러레벨)
– 4) Windows 에서 iPhone 플랫폼 빌드하기
: x-code 빌드를 iOS 에 맡긴다
콘솔 사용하기2 - 자동화
AWS(Amazon Web Service) 자동화
• AWS 에서 CLI 제공
– http://aws.amazon.com/ko/cli/
• 활용
– 패치 파일 업로드
– AWS 운용
콘솔 사용하기2 - 자동화
그 외 CLI 제공하는 것들 무수히 많다
• 찾아보기!
콘솔 사용하기2 - 자동화
자동화를 위해 자체 제작하여 사용
• OS 또는 외부시스템으로부터 제공되지 않는 것은 자체 제작하자
• 단순 반복 노동 및 실수를 줄이자.
• NFtp.exe
• NPatchList.exe
• NUpdateSvn.exe
• NUnityBuilder.exe
• …….
콘솔 사용하기2 - 자동화
콘솔 사용하기3 – 그 외
콘솔을 직접 대행하자.
텍스트 파일 비교 도구 WinMerge
• http://www.winmerge.org
– 역시 Command Line 제공
콘솔 사용하기3 – 그 외
텍스트 파일 비교 도구 WinMerge
• 게임 텍스트 파일 비교 시 활용 (자체 개발 도구)
– 레지스트리에서 WinMerge 설치 여부, 설치위치 확인
콘솔 사용하기3 – 그 외
모듈 단위 테스트
• 모듈 테스트 코드를 작성하라.
• 무거운 Game Project 에서 모듈을 개발하지 말라.
콘솔 사용하기3 – 그 외
정리
콘솔은 간결하고 강력하다.
경험(Experience)은 통한다
• 서적과 컬럼을 통해 재확인한 CLI의 중요성
– [서적] 실용주의 프로그래머 中
• 조개 놀이(?) : Shell Games
– “Shell, 이것들은 강력하고 간결하다.”
– [컬럼] 프로그래밍의 미래에 대한 12가지 예언 中
• “명령줄(CLI)은 계속된다”
– http://www.itworld.co.kr/tags/51683/74670/89568?slide=9
• 공통되게 이야기되는 콘솔 프로그래밍
정리
잘 이어가기!
• 역사는 중요하다!
• 거슬러 올라가면서 습득하라!
정리
-끝-
게임 개발을 위한
printf(“Hello World!”);
그 이상의 콘솔 프로그래밍
• 이승헌
beargene@ndoors.net,
http://www.facebook.com/beargene
• 엔도어즈 / NLABS
tech-dev@ndoors.net,
http://www.slideshare.net/ndoors

More Related Content

What's hot

게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013
게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013
게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013
영욱 오
 
[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법
MinGeun Park
 
C#과 유니티를 통한 게임개발 입문.
C#과 유니티를 통한 게임개발 입문.C#과 유니티를 통한 게임개발 입문.
C#과 유니티를 통한 게임개발 입문.
해근 조
 
프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요
Chris Ohk
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
강 민우
 
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
MinGeun Park
 
[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로'
[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로'[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로'
[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로'
강 민우
 
유니티로 해보는 게임 프로토타이핑
유니티로 해보는 게임 프로토타이핑유니티로 해보는 게임 프로토타이핑
유니티로 해보는 게임 프로토타이핑
Kiyoung Moon
 
[IGC 2017] 넷마블게임즈 한승진 - 게임서비스를 위한 프라이빗 클라우드
[IGC 2017] 넷마블게임즈 한승진 - 게임서비스를 위한 프라이빗 클라우드[IGC 2017] 넷마블게임즈 한승진 - 게임서비스를 위한 프라이빗 클라우드
[IGC 2017] 넷마블게임즈 한승진 - 게임서비스를 위한 프라이빗 클라우드
강 민우
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
Young Soo Kim
 
엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트
Kalito Viscra
 
유니티 고급 과정 -1-
유니티 고급 과정 -1-유니티 고급 과정 -1-
유니티 고급 과정 -1-
Kiyoung Moon
 
[KASA] Game Engine???
[KASA] Game Engine???[KASA] Game Engine???
[KASA] Game Engine???
changehee lee
 
Unreal4 박재완
Unreal4 박재완Unreal4 박재완
Unreal4 박재완
재완 박
 
[1127 박민근] 일 잘하는 게임프로그래머 되기
[1127 박민근] 일 잘하는 게임프로그래머 되기[1127 박민근] 일 잘하는 게임프로그래머 되기
[1127 박민근] 일 잘하는 게임프로그래머 되기
MinGeun Park
 
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
MinGeun Park
 
Re:Zero부터 시작하지 않는 오픈소스 개발
Re:Zero부터 시작하지 않는 오픈소스 개발Re:Zero부터 시작하지 않는 오픈소스 개발
Re:Zero부터 시작하지 않는 오픈소스 개발
Chris Ohk
 
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
devCAT Studio, NEXON
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
영욱 오
 
[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템
Young Soo Kim
 

What's hot (20)

게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013
게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013
게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013
 
[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법
 
C#과 유니티를 통한 게임개발 입문.
C#과 유니티를 통한 게임개발 입문.C#과 유니티를 통한 게임개발 입문.
C#과 유니티를 통한 게임개발 입문.
 
프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
 
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
 
[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로'
[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로'[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로'
[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로'
 
유니티로 해보는 게임 프로토타이핑
유니티로 해보는 게임 프로토타이핑유니티로 해보는 게임 프로토타이핑
유니티로 해보는 게임 프로토타이핑
 
[IGC 2017] 넷마블게임즈 한승진 - 게임서비스를 위한 프라이빗 클라우드
[IGC 2017] 넷마블게임즈 한승진 - 게임서비스를 위한 프라이빗 클라우드[IGC 2017] 넷마블게임즈 한승진 - 게임서비스를 위한 프라이빗 클라우드
[IGC 2017] 넷마블게임즈 한승진 - 게임서비스를 위한 프라이빗 클라우드
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
 
엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트
 
유니티 고급 과정 -1-
유니티 고급 과정 -1-유니티 고급 과정 -1-
유니티 고급 과정 -1-
 
[KASA] Game Engine???
[KASA] Game Engine???[KASA] Game Engine???
[KASA] Game Engine???
 
Unreal4 박재완
Unreal4 박재완Unreal4 박재완
Unreal4 박재완
 
[1127 박민근] 일 잘하는 게임프로그래머 되기
[1127 박민근] 일 잘하는 게임프로그래머 되기[1127 박민근] 일 잘하는 게임프로그래머 되기
[1127 박민근] 일 잘하는 게임프로그래머 되기
 
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
 
Re:Zero부터 시작하지 않는 오픈소스 개발
Re:Zero부터 시작하지 않는 오픈소스 개발Re:Zero부터 시작하지 않는 오픈소스 개발
Re:Zero부터 시작하지 않는 오픈소스 개발
 
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
 
[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템
 

Viewers also liked

브릿지 Unity3D 기초 스터디 1회
브릿지 Unity3D 기초 스터디 1회브릿지 Unity3D 기초 스터디 1회
브릿지 Unity3D 기초 스터디 1회
BridgeGames
 
코끼리를 냉장고에 넣는 법 - 최부호, NDC2013
코끼리를 냉장고에 넣는 법 - 최부호, NDC2013코끼리를 냉장고에 넣는 법 - 최부호, NDC2013
코끼리를 냉장고에 넣는 법 - 최부호, NDC2013
NDOORS
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
MinGeun Park
 
Windows 메시지 프로그래밍
Windows 메시지 프로그래밍Windows 메시지 프로그래밍
Windows 메시지 프로그래밍
MinGeun Park
 
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들
Young Keun Choe
 
1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)
fmbvbfhs
 
언리얼4 플레이어 컨트롤러의 이해.
언리얼4 플레이어 컨트롤러의 이해.언리얼4 플레이어 컨트롤러의 이해.
언리얼4 플레이어 컨트롤러의 이해.
Wuwon Yu
 
뇌자T 1.네트워크와 tcpip
뇌자T   1.네트워크와 tcpip뇌자T   1.네트워크와 tcpip
뇌자T 1.네트워크와 tcpip
sj k
 
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
AWSKRUG - AWS한국사용자모임
 
[한국의SNS 컨퍼런스]N스크린 기반 스마트UX
[한국의SNS 컨퍼런스]N스크린 기반 스마트UX[한국의SNS 컨퍼런스]N스크린 기반 스마트UX
[한국의SNS 컨퍼런스]N스크린 기반 스마트UX
Bosnag-Kim
 
제안서N School(영상교육영상회의)[1]
제안서N School(영상교육영상회의)[1]제안서N School(영상교육영상회의)[1]
제안서N School(영상교육영상회의)[1]
kisu kim
 
S블로거가 본 스마트tv
S블로거가 본 스마트tvS블로거가 본 스마트tv
S블로거가 본 스마트tv
Taehyun Brad Kim
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
Jeongsang Baek
 
RAD Studio XE8을 소개합니다.
RAD Studio XE8을 소개합니다.RAD Studio XE8을 소개합니다.
RAD Studio XE8을 소개합니다.
Devgear
 
비즈니스 Application 솔루션 구조 기술 진화 모델 ②
비즈니스 Application 솔루션 구조 기술 진화 모델 ②비즈니스 Application 솔루션 구조 기술 진화 모델 ②
비즈니스 Application 솔루션 구조 기술 진화 모델 ②
Yongkyoo Park
 
스마트폰 팁 #3: 스마트폰 해제패턴 풀기!
스마트폰 팁 #3: 스마트폰 해제패턴 풀기!스마트폰 팁 #3: 스마트폰 해제패턴 풀기!
스마트폰 팁 #3: 스마트폰 해제패턴 풀기!
Seho Yoon
 
Smart TV UX
Smart TV UXSmart TV UX
Smart TV UX
Billy Choi
 
20150303 RAD스튜디오로 사물인터넷(IoT) 구현하기
20150303 RAD스튜디오로 사물인터넷(IoT) 구현하기20150303 RAD스튜디오로 사물인터넷(IoT) 구현하기
20150303 RAD스튜디오로 사물인터넷(IoT) 구현하기
Devgear
 
리눅스 보안 모듈을 이용한 안드로이드 장치 제어
리눅스 보안 모듈을 이용한 안드로이드 장치 제어리눅스 보안 모듈을 이용한 안드로이드 장치 제어
리눅스 보안 모듈을 이용한 안드로이드 장치 제어
Jea-Min Lim 임재민
 

Viewers also liked (20)

브릿지 Unity3D 기초 스터디 1회
브릿지 Unity3D 기초 스터디 1회브릿지 Unity3D 기초 스터디 1회
브릿지 Unity3D 기초 스터디 1회
 
코끼리를 냉장고에 넣는 법 - 최부호, NDC2013
코끼리를 냉장고에 넣는 법 - 최부호, NDC2013코끼리를 냉장고에 넣는 법 - 최부호, NDC2013
코끼리를 냉장고에 넣는 법 - 최부호, NDC2013
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
 
Windows 메시지 프로그래밍
Windows 메시지 프로그래밍Windows 메시지 프로그래밍
Windows 메시지 프로그래밍
 
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들
 
1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)
 
언리얼4 플레이어 컨트롤러의 이해.
언리얼4 플레이어 컨트롤러의 이해.언리얼4 플레이어 컨트롤러의 이해.
언리얼4 플레이어 컨트롤러의 이해.
 
뇌자T 1.네트워크와 tcpip
뇌자T   1.네트워크와 tcpip뇌자T   1.네트워크와 tcpip
뇌자T 1.네트워크와 tcpip
 
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
 
[한국의SNS 컨퍼런스]N스크린 기반 스마트UX
[한국의SNS 컨퍼런스]N스크린 기반 스마트UX[한국의SNS 컨퍼런스]N스크린 기반 스마트UX
[한국의SNS 컨퍼런스]N스크린 기반 스마트UX
 
제안서N School(영상교육영상회의)[1]
제안서N School(영상교육영상회의)[1]제안서N School(영상교육영상회의)[1]
제안서N School(영상교육영상회의)[1]
 
영화정보기술
영화정보기술영화정보기술
영화정보기술
 
S블로거가 본 스마트tv
S블로거가 본 스마트tvS블로거가 본 스마트tv
S블로거가 본 스마트tv
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
 
RAD Studio XE8을 소개합니다.
RAD Studio XE8을 소개합니다.RAD Studio XE8을 소개합니다.
RAD Studio XE8을 소개합니다.
 
비즈니스 Application 솔루션 구조 기술 진화 모델 ②
비즈니스 Application 솔루션 구조 기술 진화 모델 ②비즈니스 Application 솔루션 구조 기술 진화 모델 ②
비즈니스 Application 솔루션 구조 기술 진화 모델 ②
 
스마트폰 팁 #3: 스마트폰 해제패턴 풀기!
스마트폰 팁 #3: 스마트폰 해제패턴 풀기!스마트폰 팁 #3: 스마트폰 해제패턴 풀기!
스마트폰 팁 #3: 스마트폰 해제패턴 풀기!
 
Smart TV UX
Smart TV UXSmart TV UX
Smart TV UX
 
20150303 RAD스튜디오로 사물인터넷(IoT) 구현하기
20150303 RAD스튜디오로 사물인터넷(IoT) 구현하기20150303 RAD스튜디오로 사물인터넷(IoT) 구현하기
20150303 RAD스튜디오로 사물인터넷(IoT) 구현하기
 
리눅스 보안 모듈을 이용한 안드로이드 장치 제어
리눅스 보안 모듈을 이용한 안드로이드 장치 제어리눅스 보안 모듈을 이용한 안드로이드 장치 제어
리눅스 보안 모듈을 이용한 안드로이드 장치 제어
 

Similar to (게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍

ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
Sewon Ann
 
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
Sang Don Kim
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
Chanwoong Kim
 
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
YEONG-CHEON YOU
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
Jeongkyu Shin
 
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발
YEONG-CHEON YOU
 
cross compile
cross compilecross compile
cross compile
he4722
 
강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계
chcbaram
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellij
Sewon Ann
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
OnGameServer
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
iFunFactory Inc.
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
funmeate
 
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
Ubuntu Korea Community
 
PHPStorm - tool for php
PHPStorm - tool for phpPHPStorm - tool for php
PHPStorm - tool for php
Sungbum Hong
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
Chris Ohk
 
임베디드시스템개발 Part2
임베디드시스템개발 Part2임베디드시스템개발 Part2
임베디드시스템개발 Part2
Minsuk Lee
 
회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기
Dexter Jung
 
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
Daniel Juyung Seo
 
개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술
중선 곽
 
XDK없이 XBOX게임 개발하기(UWP on XBOX)
XDK없이 XBOX게임 개발하기(UWP on XBOX)XDK없이 XBOX게임 개발하기(UWP on XBOX)
XDK없이 XBOX게임 개발하기(UWP on XBOX)
YEONG-CHEON YOU
 

Similar to (게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍 (20)

ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
 
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
 
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발
 
cross compile
cross compilecross compile
cross compile
 
강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellij
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
 
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
 
PHPStorm - tool for php
PHPStorm - tool for phpPHPStorm - tool for php
PHPStorm - tool for php
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
 
임베디드시스템개발 Part2
임베디드시스템개발 Part2임베디드시스템개발 Part2
임베디드시스템개발 Part2
 
회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기
 
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
 
개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술
 
XDK없이 XBOX게임 개발하기(UWP on XBOX)
XDK없이 XBOX게임 개발하기(UWP on XBOX)XDK없이 XBOX게임 개발하기(UWP on XBOX)
XDK없이 XBOX게임 개발하기(UWP on XBOX)
 

(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍

  • 1. 게임 개발을 위한 printf(“Hello World!”); 그 이상의 콘솔 프로그래밍 이승헌 NLABS / 엔도어즈 B Beginner
  • 2. 시작하기에 앞서… • 새로운 기술에 대한 내용이 아닙니다. • 잊혀질 수 있는 기본에 대한 이야기입니다. – (실제, 잊혀지는 상황이기도 합니다.) • 최신 트렌드만으로는 <빙산의 일각> 만을 볼 수 있습니다. • 입문자 및 현업개발자 모두 나름의 의미를 가지고 청강해주시기 바랍니다. • 강연자 • 이승헌 – 엔도어즈 기술지원팀장 - 언젠가, 범국민 교육 게임을 만들고 싶은, 7년차 <게임 개발자> 이자, - 의료계와 같은 산학연계 구조를 IT계에 실현시키고 싶은 10년차 <소프트웨어 엔지니어> 입니다.
  • 3. 주제 선정의 고민, Console (CLI)? • 개발을 하면서 있었던 많은 이야기들 중…? 프롤로그 >모든 프로젝트를 아우르는 콘솔_
  • 4. 발표 목차 • 프롤로그 • 콘솔은 기본이자 상급이다 • 대행되는 콘솔 • 이미 우리는 콘솔 프로그램을 사용하고 있다 – Visual Studio, TortoiseSvn, Eclipse, Unity … • 콘솔 프로그램 규칙 – ErrorLevel, Help, Arguments, Text Type Output • 콘솔 사용하기1 – 개발 및 운용 • 콘솔 사용하기2 – 자동화 • 콘솔 사용하기3 – 그 외 • 정리 방법에 대한 이야기 B Beginner 부분 실습 형식
  • 5. 프롤로그 Console 은 기본인 동시에 <고급>이다.
  • 6. 프로그래밍 언어 입문 - Hello World! • C/C++ 입문  Console Application Program 프로젝트 • 프로그래밍 문법을 익히는 공간 프롤로그
  • 7. 입문에서의 콘솔의 역할  * 그리기 • 기본 개념, 분기문/반복문, 데이터의 입출력을 학습 프롤로그
  • 8. 콘솔로 게임을 만들어 보기도 했다 • 그리기(Draw)에 대한 기본 구조 이해 • 그래픽 요소를 최소화하여 프로그래밍 학습에 적합 프롤로그
  • 9. 하지만, 막 입문한 초급 플머에게 콘솔이란? 프롤로그 진짜 안생겨요? 구글신 Ctrl + C,V 서버 vs 클라? 대략 이쯤…?? 링크에러 컴파일에러 리팩토링 유니티 언리얼엔진
  • 10. Windows Linux Mac OS GUI형 OS의 보급은 CLI를 멀리하게 했다 • GUI 을 전면에 내세운 Mac 과 Windows – (그럼에도 불구하고, Terminal 과 Cmd 는 빠질 수 없는 개발 도구) • 하지만 Linux 는 Console 이 더 친숙하다 – 개발자 중심적이기 때문, GUI가 부록의 느낌 프롤로그
  • 11. 개발도구의 GUI & IDE 화로 인한… • 도구의 GUI(Graphic User Interface) = Visual 화 • 도구의 IDE(Integrated development environment) 화 • 콘솔(CLI)의 은닉 – 콘솔 직접 사용 빈도 축소 프롤로그 Visual Studio Eclipse Unity Unreal Engine 4
  • 12. And… 비주얼 프로그래밍의 시대 도래 • 텍스트 기반 프로그래밍에서 GUI 프로그래밍으로의 전환 – (사견: 아직은 입문 수준의 프로그래밍) 프롤로그 Scratch https://code.google.com/p/blockly/ Blockly https://code.google.com/p/blockly/ MODKIT http://www.modkit.com/ Unity (VIZIO Plugin) Unreal Engine 4 Blueprints
  • 13. CLI(Command Line Interface) • 중요한 프로그래밍 개념! • != Common Language Infrastructure (C#) (이거아님!!) – http://ko.wikipedia.org/wiki/명령줄인터페이스/ • 사용편리, 모듈화 용이  유연성/범용성  생산성 향상 – 빠른 결과 확인 – 자동화 가능 • 당연, 게임 개발에서도 콘솔 프로그래밍 사용! 프롤로그
  • 14. 결론적으로, • 콘솔 프로그래밍은 오래된(과거의) 프로그램 방식이지만, • 콘솔 프로그래밍은 기본이자, 고급 레벨이다. 프롤로그 음악에 비유한다면? http://www.youtube.com/watch?v=GDM6xt7SZeA (1:20~2:23) (21살인데 어떻게 어셈블리어를 알죠? 같은 느낌…!!)
  • 15. 게임에서의 콘솔 프로그램의 주요 사용 패턴 프롤로그 (IDE 에서의) 콘솔 대행 사용 개발 및 Live 서비스 운용 개발 자동화 (빌드, 패치) 모듈 단위 테스트
  • 16. 대행되는 콘솔 우리는 이미 콘솔을 사용하고 있다.
  • 17. 우리는 이미 콘솔 프로그램을 사용하고 있다 대행되는 콘솔 act as a proxy 대행[代行] ...
  • 18. Visual Studio 에서의 대행 • C:Program Files (x86)Microsoft Visual Studio 12.0VCbin – Visual Studio 설치된 위치의 VCBin • Cl.exe – Microsoft C/C++ 컴파일러 및 링커 제어 도구 – http://msdn.microsoft.com/ko-kr/library/9s7c9wdw.aspx • Link.exe – COFF(Common Object File Format) 개체 파일과 라이브러리를 링크하여 실행 파일(.exe)이나 DLL(동적 연결 라이브러리)을 만드는 도구 – http://msdn.microsoft.com/ko-kr/library/y0zzbyt4.aspx • Dumpbin.exe • MSTest.exe • … 대행되는 콘솔
  • 19. TortoiseSVN 에서의 대행 • 버전 컨트롤에 필수적인 도구 • Svn.exe – svn checkout URL[@REV]… [PATH] – svn update • Svnadmin.exe • 유사 도구 : Git, Mercurial, … 대행되는 콘솔
  • 20. TortoiseSVN 에서의 대행 • CLI 사용에 대한 방법을 찾아보자. – Help 문서에 자세히 나와 있다 – Help 문서 보는 습관! 대행되는 콘솔
  • 21. Unity 에서의 대행 • IDE 화된 게임 엔진 Unity – C# 스크립트의 컴파일 • Mono.exe – Java 스크립트의 컴파일 • Javac.exe – Android 플랫폼으로의 빌드 • Adb.exe (Android Debug Bridge) 대행되는 콘솔
  • 22. 대행 도구로 아닌, 직접 사용 • 콘솔 대행의 원리를 알면, • 직접 콘솔 프로그래밍을 사용하여 • 빠르게 작업을 할 수가 있다.  자동화 등 대행되는 콘솔
  • 24. Error Level • 콘솔 프로그램 리턴 값 : (ErrorLevel=0)  에러없음 – 0 이 FALSE, 1 이 TRUE 인 Boolean 과 혼동하지 말라! 콘솔 프로그래밍의 규칙 int main() { int errorlevel = 0; // 0 이면 에러 없음!! return errorlevel; }
  • 25. Help • 명령어 /? 또는 명령어 help • Help 구성요소 – 사용법 구문 – 필수 파라미터 – 옵션 파라미터 [] – Or 의미 - | (파이프) – … – 명령어마다 다양 콘솔 프로그래밍의 규칙
  • 26. + cmd [Enter] • Windows Command interpreter • cmd /? 도움말 보기! • Tab 키의 기능 (&SHIFT + Tab) – 파일명 자동 완성 • 명령어 > output.txt – 출력 파이프를 output.txt 파일로 설정 콘솔 프로그래밍의 규칙
  • 27. Text Type Output • 파싱되는 Output Text – 대행될 수 있는 것을 염두하여 출력 하라 • 파이프를 이용한 자동화 콘솔 프로그래밍의 규칙
  • 28. 콘솔 사용하기1 – 개발 및 운용 알아두어야 할 운용을 위한 콘솔 명령어
  • 29. 알아두어야 할 운용을 위한 콘솔 명령어 • 운용에서는, 네트워크 관련 콘솔 명령 사용 빈도가 높다 – ipconfig – ping – telnet (Windows telnet client) • 네트워크 연결 터미널 : 네트워크 연결 확인 (포트 지정 연결) – systeminfo • 명령 실행한 PC의 시스템 정보(운영체제 구성 정보…)를 표시 – 개발자 및 게임유저의 시스템 정보를 추적하기 위한 용도 – netstat • 명령 실행한 PC의 프로토콜 통계와 TCP/IP 네트워크 연결을 표시 – 네트워크를 이용한 게임 개발 시에 활용 – netsh • 네트워크 쉘 유틸리티 콘솔 사용하기1 – 개발 및 운용
  • 30. PING • 사용법: Ping target_name • 네트워크 연결 터미널 : 네트워크 연결 확인 (포트 지정 연결) 콘솔 사용하기1 – 개발 및 운용
  • 31. Microsoft TELNET Client • 사용법: telnet – 네트워크 연결 터미널 : 네트워크 연결 확인 (포트 지정 연결) 콘솔 사용하기1 – 개발 및 운용
  • 32. netstat • 사용법: netstat [옵션] – 프로토콜 통계와 현재 TCP/IP 네트워크 연결을 표시 – 개발, Live 서버 운용 등에 서버의 통신 상태를 확인할 때 사용 콘솔 사용하기1 – 개발 및 운용
  • 33. net • 사용법: net 하위명령 [옵션] – Live 서버 운용 시, 네트워크 패스워드 일괄 변환 (net use) 콘솔 사용하기1 – 개발 및 운용
  • 34. systeminfo • 사용법: systeminfo [옵션] – 로컬 또는 원격 컴퓨터의 운영 체제 구성 정보를 표시 – 유저의 플레이 환경을 수집하거나, 개발 환경 정보를 참조할 때 사용 콘솔 사용하기1 – 개발 및 운용
  • 35. 물론 더 좋은 GUI 도구도 있다 • 네트워크 관련 추적/프로파일링을 위한 도구 – WireShark – https://www.wireshark.org/ 콘솔 사용하기1 – 개발 및 운용
  • 36. 콘솔 사용하기2 - 자동화 Unity 프로젝트도 당연히 자동화가 가능하다.
  • 37. 제2의 동료, 빌드서버 • 빌드 서버에게 Console(CLI)를 만나게 해주자. 콘솔 사용하기2 - 자동화 Build Server DEPLO Y BUILD SOURCE UPDATE No LostTime!
  • 38. 자동화가 필요한 이유 • 서버 70 여대, 서버 App 200 여개, 5개 군의 Database – [영웅의군단] Live – 응급 상황에서의 빠른 조치가 필요! 콘솔 사용하기2 - 자동화
  • 39. CruiseControl.NET • 자동화 구축 솔루션 – Xml 형식의 스크립트 명령을 통해 자동화 구축 콘솔 사용하기2 - 자동화
  • 40. 배치파일 .bat / .cmd • cmd /? 확인하기 • 모든 배치 파일 작성에 대한 설명 • 내장명령어 /? 확인하기 • Set /? : 배치파일에서도 변수를 사용할 수 있다. • If /? : 배치파일에서도 분기문을 작성할 수 있다. • For /? : 배치파일에서도 반복문을 작성할 수 있다. • 배치파일에서도 함수형태로 작성할 수 있다. • 과유불급 – 복잡해지면, 콘솔 프로그램을 작성하라. 콘솔 사용하기2 - 자동화
  • 41. Visual Studio 자동화 • Devenv.com 이용 – Tip: devenv.exe 와 devenv.com 은 다르다 콘솔 사용하기2 - 자동화
  • 42. SVN 리비전을 얻어 활용하기 • TortoiseSVN의 SubWCRev.exe – 프로젝트의 SVN 리비전 정보를 소스에 활용할 수 있다 •  자동화 및 디버깅 정보로 활용 – http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn- subwcrev.html 콘솔 사용하기2 - 자동화
  • 43. Unity Batch Mode 로 자동화하기 • Unity도 자동화 가능한가?  Unity.exe Batch Mode • https://docs.unity3d.com/Documentation/Manual/CommandLineArguments.html • 활용 유형 – .APK / .IPA 빌드 – Assetbundle 변환 빌드 • 리소스의 외부 경로화 – 리소스 검사 자동화 콘솔 사용하기2 - 자동화
  • 44. Unity Batch Mode 로 자동화하기 • Unity.exe Batch Mode TIP – 1) 빌드 서버 필수 옵션 : -nographics – 2) Unity.exe 프로세스 중복 실행 : -logfile – 3) BatchMode 코드 작성시, 실행 실패 처리 : EditorApplication.Exit(에러레벨) – 4) Windows 에서 iPhone 플랫폼 빌드하기 : x-code 빌드를 iOS 에 맡긴다 콘솔 사용하기2 - 자동화
  • 45. AWS(Amazon Web Service) 자동화 • AWS 에서 CLI 제공 – http://aws.amazon.com/ko/cli/ • 활용 – 패치 파일 업로드 – AWS 운용 콘솔 사용하기2 - 자동화
  • 46. 그 외 CLI 제공하는 것들 무수히 많다 • 찾아보기! 콘솔 사용하기2 - 자동화
  • 47. 자동화를 위해 자체 제작하여 사용 • OS 또는 외부시스템으로부터 제공되지 않는 것은 자체 제작하자 • 단순 반복 노동 및 실수를 줄이자. • NFtp.exe • NPatchList.exe • NUpdateSvn.exe • NUnityBuilder.exe • ……. 콘솔 사용하기2 - 자동화
  • 48. 콘솔 사용하기3 – 그 외 콘솔을 직접 대행하자.
  • 49. 텍스트 파일 비교 도구 WinMerge • http://www.winmerge.org – 역시 Command Line 제공 콘솔 사용하기3 – 그 외
  • 50. 텍스트 파일 비교 도구 WinMerge • 게임 텍스트 파일 비교 시 활용 (자체 개발 도구) – 레지스트리에서 WinMerge 설치 여부, 설치위치 확인 콘솔 사용하기3 – 그 외
  • 51. 모듈 단위 테스트 • 모듈 테스트 코드를 작성하라. • 무거운 Game Project 에서 모듈을 개발하지 말라. 콘솔 사용하기3 – 그 외
  • 53. 경험(Experience)은 통한다 • 서적과 컬럼을 통해 재확인한 CLI의 중요성 – [서적] 실용주의 프로그래머 中 • 조개 놀이(?) : Shell Games – “Shell, 이것들은 강력하고 간결하다.” – [컬럼] 프로그래밍의 미래에 대한 12가지 예언 中 • “명령줄(CLI)은 계속된다” – http://www.itworld.co.kr/tags/51683/74670/89568?slide=9 • 공통되게 이야기되는 콘솔 프로그래밍 정리
  • 54. 잘 이어가기! • 역사는 중요하다! • 거슬러 올라가면서 습득하라! 정리
  • 55. -끝- 게임 개발을 위한 printf(“Hello World!”); 그 이상의 콘솔 프로그래밍 • 이승헌 beargene@ndoors.net, http://www.facebook.com/beargene • 엔도어즈 / NLABS tech-dev@ndoors.net, http://www.slideshare.net/ndoors