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

NDOORS
NDOORSNDOORS
게임 개발을 위한
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
1 sur 55

Recommandé

대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014 par
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014NDOORS
11.6K vues44 diapositives
게임 프로그래밍 기초 공부법 par
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법Chris Ohk
60.3K vues61 diapositives
유나이트2015서울 - 큰규모의 MMORPG - 주세영 par
유나이트2015서울 - 큰규모의 MMORPG - 주세영유나이트2015서울 - 큰규모의 MMORPG - 주세영
유나이트2015서울 - 큰규모의 MMORPG - 주세영Jaeyoung Han
1.9K vues26 diapositives
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기 par
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기MinGeun Park
14.2K vues32 diapositives
[데브루키] 이벤트 드리븐 아키텍쳐 par
[데브루키] 이벤트 드리븐 아키텍쳐[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐MinGeun Park
2K vues27 diapositives
Wecanmakeengine par
WecanmakeengineWecanmakeengine
Wecanmakeenginechangehee lee
1K vues32 diapositives

Contenu connexe

Tendances

게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013 par
게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013
게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013영욱 오
2.6K vues79 diapositives
[RAPA/C++] 1. 수업 내용 및 진행 방법 par
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법MinGeun Park
1.6K vues32 diapositives
C#과 유니티를 통한 게임개발 입문. par
C#과 유니티를 통한 게임개발 입문.C#과 유니티를 통한 게임개발 입문.
C#과 유니티를 통한 게임개발 입문.해근 조
3.6K vues11 diapositives
프로그래머가 되고 싶으세요 par
프로그래머가 되고 싶으세요프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요Chris Ohk
6K vues25 diapositives
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템 par
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우
966 vues86 diapositives
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들 par
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들MinGeun Park
16.6K vues59 diapositives

Tendances(20)

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

En vedette

브릿지 Unity3D 기초 스터디 1회 par
브릿지 Unity3D 기초 스터디 1회브릿지 Unity3D 기초 스터디 1회
브릿지 Unity3D 기초 스터디 1회BridgeGames
2K vues29 diapositives
코끼리를 냉장고에 넣는 법 - 최부호, NDC2013 par
코끼리를 냉장고에 넣는 법 - 최부호, NDC2013코끼리를 냉장고에 넣는 법 - 최부호, NDC2013
코끼리를 냉장고에 넣는 법 - 최부호, NDC2013NDOORS
2.5K vues131 diapositives
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리 par
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
93.3K vues41 diapositives
Windows 메시지 프로그래밍 par
Windows 메시지 프로그래밍Windows 메시지 프로그래밍
Windows 메시지 프로그래밍MinGeun Park
1.6K vues15 diapositives
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들 par
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들Young Keun Choe
10.1K vues87 diapositives
1.자료구조와 알고리즘(강의자료) par
1.자료구조와 알고리즘(강의자료)1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)fmbvbfhs
10.7K vues32 diapositives

En vedette(20)

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

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

ant로 안드로이드 앱을 자동으로 빌드하자 par
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자Sewon Ann
19K vues39 diapositives
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천) par
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)Sang Don Kim
1.9K vues79 diapositives
[NDC17] 왓 스튜디오 서비스파트 par
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트Chanwoong Kim
4.6K vues186 diapositives
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~ par
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~YEONG-CHEON YOU
7.4K vues79 diapositives
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발 par
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
2.8K vues98 diapositives
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발 par
DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발YEONG-CHEON YOU
2.3K vues52 diapositives

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

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

(게임개발을위한) 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