2. 시작하기에 앞서…
• 새로운 기술에 대한 내용이 아닙니다.
• 잊혀질 수 있는 기본에 대한 이야기입니다.
– (실제, 잊혀지는 상황이기도 합니다.)
• 최신 트렌드만으로는 <빙산의 일각> 만을 볼 수 있습니다.
• 입문자 및 현업개발자 모두 나름의 의미를 가지고
청강해주시기 바랍니다.
• 강연자
• 이승헌 – 엔도어즈 기술지원팀장
- 언젠가, 범국민 교육 게임을 만들고 싶은, 7년차 <게임 개발자> 이자,
- 의료계와 같은 산학연계 구조를 IT계에 실현시키고 싶은 10년차 <소프트웨어 엔지니어> 입니다.
3. 주제 선정의 고민, Console (CLI)?
• 개발을 하면서 있었던 많은 이야기들 중…?
프롤로그
>모든 프로젝트를 아우르는 콘솔_
4. 발표 목차
• 프롤로그
• 콘솔은 기본이자 상급이다
• 대행되는 콘솔
• 이미 우리는 콘솔 프로그램을 사용하고 있다
– Visual Studio, TortoiseSvn, Eclipse, Unity …
• 콘솔 프로그램 규칙
– ErrorLevel, Help, Arguments, Text Type Output
• 콘솔 사용하기1 – 개발 및 운용
• 콘솔 사용하기2 – 자동화
• 콘솔 사용하기3 – 그 외
• 정리
방법에 대한
이야기
B
Beginner
부분 실습 형식
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 서비스 운용
개발 자동화 (빌드, 패치)
모듈 단위 테스트
29. 알아두어야 할 운용을 위한 콘솔 명령어
• 운용에서는, 네트워크 관련 콘솔 명령 사용 빈도가 높다
– ipconfig
– ping
– telnet (Windows telnet client)
• 네트워크 연결 터미널 : 네트워크 연결 확인 (포트 지정 연결)
– systeminfo
• 명령 실행한 PC의 시스템 정보(운영체제 구성 정보…)를 표시
– 개발자 및 게임유저의 시스템 정보를 추적하기 위한 용도
– netstat
• 명령 실행한 PC의 프로토콜 통계와 TCP/IP 네트워크 연결을 표시
– 네트워크를 이용한 게임 개발 시에 활용
– netsh
• 네트워크 쉘 유틸리티
콘솔 사용하기1 – 개발 및 운용
30. PING
• 사용법: Ping target_name
• 네트워크 연결 터미널 : 네트워크 연결 확인 (포트 지정 연결)
콘솔 사용하기1 – 개발 및 운용
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 - 자동화
47. 자동화를 위해 자체 제작하여 사용
• OS 또는 외부시스템으로부터 제공되지 않는 것은 자체 제작하자
• 단순 반복 노동 및 실수를 줄이자.
• NFtp.exe
• NPatchList.exe
• NUpdateSvn.exe
• NUnityBuilder.exe
• …….
콘솔 사용하기2 - 자동화
55. -끝-
게임 개발을 위한
printf(“Hello World!”);
그 이상의 콘솔 프로그래밍
• 이승헌
beargene@ndoors.net,
http://www.facebook.com/beargene
• 엔도어즈 / NLABS
tech-dev@ndoors.net,
http://www.slideshare.net/ndoors