3월, 2013의 게시물 표시

Unity3D No assets were provided for the asset bundle

이미지
아직 Unity3D 잘 사용할줄도 모르고, 게임을 만드는 것도 아닌 상황에서 바로 애셋번들 작업중에 있네요. 책보고 따라하던중, 책이 제대로 설명을 안해줘서? 생긴 에러를 정리해봅니다.

[MenuItem("Assets/Build AssetBundle From Selection - Track dependencies")] [MenuItem("Assets/Build AssetBundle From Selection - No dependenty tracking")]
 이 두놈으로 메뉴 아이템 생성이 되고 바로 밑에 정의한 함수가 호출이 되는 거 같은데, 책에 설명이 없어서 처음에는 만든 함수 호출할려고 void Start() 안에다가 함수 호출을 해줬더랬죠. 근데 알고 봤더니,
 이렇게 Assets 메뉴 밑에 생성한 메뉴들이 있네요.;;; 초보자를 위해서 좀 제대로 설명을 해주지... 그리고 두개의 기능은 아직 잘 모르는 상태입니다. 그냥 이슈만 정리하는 중이라. 아무튼 둘중에 클릭을 했더니,
No assets were provided for the asset bundle
UnityEditor.BuildPipeline:BuildAssetBundle(Object, Object[], String, BuildAssetBundleOptions)
ExportAssetBundles:ExportResource() (at Assets/ExportAssetBundles.cs:11)

 이런 에러가 나옵니다. 책에는 "Asset/MyTexture/hello.png"를 빌드하는 거라고 하는데 소스 어디에도 그런 문자열을 찾을 수 없고 에러만 날뿐이었죠. Selection이라는 놈이 소스에 보이길래 뭔가를 어디서 선택을 해줘야 하는구나 했는데, 역시나 Project 창에서 선택을 해줘야하네요.

 이렇게 선택을 해줬습니다.

 테스트한다고 여러번 저장해봤네요. 확장자 unity3d인 것들이 애셋번들이죠. 참고로,

Assets include…

Visual Studio 2003 Windows7에서 문제점들 해결하기

이미지
Visual Studio 2012쓰다가 2003을 쓰게되었네요;;; 아무튼 Windows7에서 Visual Studio 2003을 사용하게되면 몇가지 문제점이 발생합니다. 당연하겠죠? 구시대의 유물일테니...뭐 별수 있나요? 회사 프로젝트니 적응해야죠. 해결법을 정리해봅니다.

이 프로그램에는 알려진 호환성 문제가 있습니다.
 설치 후 위 스샷과 같이 '이 프로그램에는 알려진 호환성 문제가 있습니다.' '프로그램 : Visual Studio .NET 2003' 이 뜬다면 관리자 권한으로 실행을 하시면 됩니다.


파일에서 찾기 시 응답없음 문제

 파일에서 찾기 옵션을 사용하게 되면 일단 검색은 되는데 검색 후 Visual Studio가 응답없음으로 먹통이 됩니다. 윈도우 비스타나 7의 Aero와 충동이 발생한다네요. 에어로를 꺼도 되지만 일단 간단한 해결법이 있습니다.

 Visual Studio 2003의 파일 속성 -> 호환성 탭에서 시각 테마 사용 안 함을 체크하고 확인을 하면 됩니다.


LINK : fatal error LNK1201: '\Debug\xxxxx.pdb' 프로그램 데이터베이스를 쓰는 동안 오류가 발생했습니다. 디스크 공간이 부족한지, 경로가 잘못되었는지 또는 권한이 없는지 확인하십시오.

 디버그 종료 후 소스 수정해서 다시 빌드할 때 devenv.exe가 pdb 파일 handle을 잡고 있어서 위와 같은 에러가 발생합니다. 간단히 해결하려면 비쥬얼 스튜디오 2003을 종료 후 다시 실행해서 디버그하면 되지만, 매번 그럴 순 없죠. 다음과 같이 하시면 됩니다.

 먼저 Handle 3.51을 다운로드 합니다. 그리고 Gawk라는 놈을 다운받습니다. 압축을 해제후 두 파일을 원하시는 곳에 같이 위치시켜야하는데 Gawk는 gawk-3.1.6-1-bin 기준으로 gawk-3.1.6-1-bin/bin/awk.exe 를 가져오시면 됩니다.

handle.exe .pdb | awk "/devenv.exe/ …

cocos2d-x Easy to create multi-platform projects on MaxOSX

이미지
얼마전에 cocos2d 시리즈가 3번째 같이 릴리즈를 했었습니다. 그래서 cocos2d-x가 버전이 2.1rc0-x-2.1.2가 되었죠. 자세한 변경사항은 cocos2d-x CHANGELOG를 확인해보시면 될 듯합니다.

 사실 그동안 cocos2d-x는 ios, android, win32등의 프로젝트를 따로따로 만드는 것은 쉘스크립트를 실행해서 만들 수 있었지만 이것을 통합하는데 있어서는 복사를 해줘야 하는 등 여러가지 난관들이 있었죠. 이번 포스팅에서는 새로생긴 project-creator라는 것을 통해  cocos2d-x 멀티플랫폼 프로젝트 생성하는 것을 정리해봅니다. 먼저 집에는 맥만 사용중이라 맥 환경에서 하는 것을 정리해봅니다.

 cocos2d-x-2.1rc0-x-2.1.2를 압축해제 후 tools/project-creator/create_project.py 파이썬 스크립트를 실행해서 프로젝트를 만들면 됩니다.

./create_project.py -project MyHelloWorld -package com.WWForever.Game -language cpp

 저는 일단 위와같이 실행했습니다. 파이썬 스크립트 뒤에 옵션이 있습니다.

-project - 프로젝트 이름-package - 안드로이드 패키지 이름-language - 개발 언어 지정( cpp, lua, javascript )
 그러면 스샷과 같이 proj.ios, android, win32, mac, blackberry, linux, marmalade용 프로젝트가 cocos2d-x/projects/ 하위에 생성이 됩니다.
 이렇게 말이죠. 예전에 비하면 정말 쉬워졌네요. 단 한방에 이렇게 통합 프로젝트를 만들 수 있으니까요. 아 물론 예전처럼 install-templates-xcode.sh를 사용해서 xcode의 템플릿으로도 생성은 가능합니다. 아무튼 계속 발전하는 cocos2d-x 멋지네요!

Mac OSX에서 Synergy Server Init failed

이미지
전에 회사에서 시너지를 가지고 윈도우(서버)와 맥(클라이언트)에 설치해서 사용해봤었습니다. 이번에 집에서 맥(서버)과 우분투(클라이언트) 구성으로 시너지를 설치하는데 시너지 서버인 맥쪽에서 에러가 발생하네요.

NOTE: starting server
NOTE: config file:
NOTE: log level: NOTE
FATAL: Init failed: system setting not enabled: "Enable access for assistive devices"
Try `synergys --help' for more information.
NOTE: stopping synergy desktop process


 시스템 환경설정 -> 손쉬운 사용에 가서 보조 장비에 대한 접근 활성화를 체크를 한 후 시너지 서버 시작을 하면 잘 됩니다.

Ubuntu Screen Capture

이미지
집에서 우분투도 동시에 사용중에 있습니다. 그래서 우분투 사용중 나오는 이슈가 있을 때 정리하려면 스크린샷을 찍어야해서 관련 기능을 정리해봅니다.

 윈도우에서처럼  PrintScreen( 프린트 스크린 ) 키로 스샷을 찍을 수 있네요. PrintScreen - 전체화면 캡쳐Shift + PrintScreen - 영역 지정 캡쳐Alt + PrintScreen - 활성화된 창 캡쳐  이렇습니다. 위 스샷은 파랜드 택틱스 플레이영상 재생중인 것을 찍어봤습니다. 스크린샷 관련 창도 찍어보려고 했는데 이 창은 찍히질 않는군요. 한번에 하나만 되나보네요. 당연한가? ㅎ;
 또는 대시 홈에서 스크린샷을 검색해보시면 위와같은 스크린샷 응용프로그램이 있습니다. 단축키와 같은 기능을 하는 프로그램이네요. 이걸 실행한 상태에서는 단축키로 스샷이 안되서 이것도 어떻게 생겼는지는 찍을 순 없었습니다. 사용법은 간단하니 한번 시도해보시면 될 듯하네요.

cocos2d-x에 쓸만한 JSON c++ lib 뭐가 있을까? rapidjson

이미지
한참 cocos2d-x로 개발하다가 요즘은 서버 개발을 해야해서 node.js를 보고 있는 상황이죠. node.js로 만든 웹서버에 cocos2d-x로 간단한 post 정도를 처리할 수 있는 수준인데요, 잠시 넋두리 했던 것처럼 이제는 JSON이 필요한 시점이네요. 간단하게 JSON 정리부터 cocos2d-x가 c++ 기반이므로 JSON c++ lib 리서치 한 것등에 대한 내용을 정리합니다.


JSON(JavaScript Object Notation)?

 아니 이건 뭐 아직 JavaScript도 모르는데 JSON(JavaScript Object Notation, 제이슨)을 먼저 알아보네요. 물론 예전에 들어보긴 했습니다만, 이게 JavaScript 관련된 것이었다니...

 XML보다 더 인간 친화적?이고 더 가볍게 데이터를 교환해볼까?하는 목적으로 만든어진 데이터 형식? 포맷? 정도로 보면 될 듯합니다. 처음에는 인터넷 데이터 통신을 위해서 만들어진 듯 하지만, 지금은 일반 로컬에도 사용할 정도로 폭 넓게 사용중이죠.

 개발은 자바스크립트에 관련되어 있다고 자바스크립트에서만 사용하는 것은 아닙니다. 프로그래밍 언어와 플랫폼에 독립적이므로 각 언어용 모듈이 있거나 각 SDK등에 있다면 가져다 사용하면 됩니다.

 간단하게 { name : 값 } 형식으로 되어 있고 자세한 것을 위키백과 - JSON를 참고하면 될 듯합니다.


JSON C++ 리서치

 cocoa나 cocoa touch에 오브젝트C로 된 JSON 모듈, Android SDK또는 자바에 JSON 모듈이 있을법도 하지만 이런것들을 사용하면 cocos2d-x에서 jni등을 거쳐 처리해야 하므로 단계가 늘어나게되죠. 어짜피 cocos2d-x 내부에서 c++로 libcurl과 pthread를 가지고 통신이 되므로 JSON도 C/C++로 된 것을 리서치 해봤습니다.

JSON 홈페이지 밑에 각 언어별로 지원하는 모듈들 링크가 쫙 있네요.
C:JSON_checker.YAJL.js0n.LibU.json-c.json-pars…

마흔살 기획자, 프로그래머 되다

이미지
나이 마흔에 기획자에서 프로그래밍에 도전을하신분의 이야기입니다. 앱으로 된 이북인데요, 늦은? 나이에 프로그래밍을 시작하는 분들에게는 한가지 도전 방법을 제시하고 있는 것이죠. 사실 늦은 나이 이런건 상관없을 듯 하고 기획이나 그래픽에서 프로그래밍에 도전하시는 분들은 한번쯤 읽어보시면 도움이 될 듯합니다.

 요즘은 훌륭한 엔진들이 많아서 꼭 로우레벨 c++까지 안 익혀도, 스크립팅 만으로도 게임을 개발할 수 있기 때문에 이런 방식의 도전도 괜찮다고 생각합니다. 책을 한번읽고, 또읽고, 또 읽고,... 만들어보고 또 읽고 이런식으로 정리를 해주셨는데 개인적인 생각에는 너무 과하게 읽으신건 아니신지 ^^;;

 희망사항이 하나 생겼습니다. 이분과 방법은 다를지언정, '마흔살 프로그래머, 그래픽 디자이너 되다'라는 희망사항이요. ㅎㅎ; 1인 개발을 목표로 하다보니 그래픽도 파보고 싶네요.

 아무튼 내용 정리하자면 왕도는 없습니다. 부단히 노력한 자의 땀방울은 언젠가는 보답이 오겠죠?
절실함 앞에 불가능은 없다![인터뷰] 기획자에서 프로그래머로, 마흔살 게임 개발자의 가치있는 도전

Windows7 Telnet 사용하기

이미지
node.js 책으로 R&D중에 간단한 TCP 채팅 서버를 만들어서 테스트 해볼려고 윈도우7에서 telnet을 치니 위와같이 'telnet'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 가 뜨네요. 맥에는 기본으로 설치가 되어 있는데 윈도우는 따로 설치를 해야하네요.

 제어판 -> 프로그램 -> 프로그램 및 기능 -> Windows 기능 사용/사용 안 함 -> 텔넷 클라이언트를 체크하고 확인을 클릭합니다.

 텔넷이 잘 되네요. 흠, 서버에서 받은 한글이 맥의 텔넷에서는 잘 되던데 윈도우 텔넷은 한글이 깨져서 나오는군요.

cocos2d-x node.js 초간단 Http 통신

이미지
cocos2d-x 기반 클라이언트에서 node.js 서버와의 간단한 http 통신하는 것을 정리해봅니다. url을 바탕으로 쿼리 스트링을 파싱해서 id값을 추출 후 'Hello ' + id 정도의 문자열 데이터를 다시 cocos2d-x에 보내주는 간단 허접 웹 서버입니다.

 그런데 사실 node.js 웹 서버라봐야 너무 간단하고, cocos2d-x도 이미 pthread와 semaphore를 사용한 CCHttpClient, CCHttpRequest, CCHttpResponse를 만들어놔서 비동기로 처리할 수 있게 잘 모듈화 해놨네요. 작년에 한참 libcurl로 파일 패치 받는 것 처리할때는 cocos2d-x에 curl 초간단 샘플만 있었는데 말이죠. 추후 제가 만든 패치시스템쪽 curl 사용하는 부분 리팩토링이 필요해보입니다.

 언제나 그렇듯 제 기억력이 그리 좋지 않아 정리하는 것이므로 딱 FM 강좌식이 아닌 이슈 같은 기타 내용도 포함 됩니다. 또한 node.js는 이제 책보고 R&D중이고해서 기능 하나하나 설명식은 아닙니다. 그리고 java script나 기타 웹 관련 지식은 전무한 상태에서 진행됨을 미리 알려드립니다.

허접한 내용이므로 이미 웹 서버 또는 node.js 개발자이신분들은 패스 하셔도 됩니다. 저처럼 클라이언트 개발자였다가 cocos2d-x + node.js 궁합으로 작업하시는 분들을 위해 정리하는 것이니까요. 패스하실분들은 제일 아래 제 넋두리나 보시면 됩니다 ^^; 잡설은 고만하고 시작해봅니다.


1. node.js Http Server
 node.js 웹 서버로 이미 널리고 널린 간단한 서버소스이고하니 설명은 주석으로 대체합니다.



var http = require('http'); var url = require('url'); var server = http.createServer(); server.listen(3000, function(){ console.log('Star…