Game Dev 150

UTF-8 파일 만들기

rapidjson으로 File Serializing을 하다가 일부 경우에 파일이 깨지는 문제가 있었다. 원인은 Ascii 파일에 대해 여러 Encoding으로 내용을 쓰다보니 생긴 문제였다. "A.txt" 파일에 Ascii 문자로만 내용을 씀 (BOM 없음)다시 "A.txt" 파일에 WideChar 내용을 씀 2에서 쓴 글자가 깨짐 rapidjson에서는 파일을 저장할 때 FileStream을 쓰는데 FileStream의 생성인자로 FILE*를 넘겨줘야 한다. 이 FILE*를 강제로 UTF-8 BOM을 추가해서 열어주면 될 것 같아서 검색을 해보니, fopen에 "css" 인자를 넣어줄 수 있다고 하더라... fopen(&fp, "newfile.txt", "w, ccs= encoding "); // 단 ..

Game Dev/Work Log 2014.11.05

x64와 x86에서의 float 연산

간단하게... QA에서만 재현되는 버그가 있었음Debug/Release 모드 차이인 줄 알았었는데 아님확인 결과 x64(=개발환경), x86(=배포환경) 차이문제가 된 부분의 로직은 페이지를 계산하는 것int page = std::ceil(input / (float)10);다음과 같은 시도 중 하나를 통해서 해결 가능ceil을 사용하지 않는 로직으로 변경#pragma optimize("", off)로 로직을 감쌈 (이유는 모르겠음)로직 전후로 Log를 찍음 (이유는 모르겠음)(float)10을 (double)10으로 변경하지만 문제는 4-1이었음http://stackoverflow.com/questions/22710272/difference-in-floating-point-arithmetics-betwe..

Game Dev/Article 2014.10.30

VS2013에서 .props 파일을 이용해서 프로젝트 관리하기

진행 중인 개인 프로젝트에서 Multi-thread Rendering을 해보기로 결정했다. 그런데 DX9 기반이라서 그런지 MT Rendering을 위해서는 많은 많은... 암초들이 있었다. (Buffer lock 등) 그래서 지금은 Engine DLL 프로젝트만 있던 것을 "RendererDx9 + Others"로 분리하기로 했다. (Device도 Render Thread에서만 생성하는 등 완전히 분리하기 위해)막상 새 프로젝트를 만들자니 속성 세팅하는 것이 귀찮아졌다..props를 적용하기로 했는데 방법을 잘 몰라서 검색하였다. 짜잔!http://www.dorodnic.com/blog/2014/03/20/visual-studio-macros/그림도 자세하고, 이보다 더 자세히 설명하기는 힘들듯...

Game Dev/Work Log 2014.08.22

VS2013에 TortiseGitBlame 연결하기

VS2013에 MACRO Manager가 사라졌기 때문에 기존에 사용했던 Blame Macro를 사용할 수 없게 되었는데 이를 해결하기 위해 External Tool을 사용하는 방법을 정리한다. Tools > External Tools 이동Blame 관련 Command 추가하기Arguments : "/command:blame /path:"$(ItemPath)" /line:$(CurLine) /startrev:1 /endrev:-1"추가된 Command가 몇 번째 위치인지 확인하기Tools > Options > Envirionment > Keyboard 이동"Tools.ExternalCommand" 검색3번에서 확인한 번호의 ExternalCommand에 원하는 키 매핑 참고http://msdn.micro..

Game Dev/Article 2014.07.09

No files were found to look in. Find was stopped in progress.

가끔 VisualStudio 2010에서 Ctrl+Shift+F로 파일 전체 찾기를 진행하면 "Find was stopped in progress." 이런 거지 같은 메세지가 나오면서 검색이 중지되곤 한다. VisualStudio 버그라고 하는데 "Ctrl+Scrolllock"을 누르면 대부분 풀리곤 했다. (즉 정상적으로 서치가 가능하게 고쳐짐) 그런데 오늘은 수십번 누르고, 화상키보드로 눌러봐도 아예 고쳐지지 않는 것이 아닌가?! 구글링을 조금 더 해봤더니 2008 버전에서는 "Alt+Break"를 누르란다. 나는 2010을 쓰지만 눌러봤는데... 정말 고쳐졌다. ㅠㅠ http://edmundlong.com/edsBlog/visual-studio-no-files-were-found-to-look-in..

Game Dev/Scrap 2013.05.24

에밀레종을 만들지 말자.

종소리가 나지 않아, 갓난 아이를 쇳물에 넣었다는 에밀레종 전설. 불행인지 다행인지 아이를 시주한 뒤 종은 완성되었다. 그것도 아주 아름다운 소리를 내는 종으로 오늘날까지 보존되고 있다. 하지만 이와 같은 방식으로 제2, 제3의 에밀레종을 계속 만들 수 있었을까? 요새 우리 프로젝트가 에밀레종 전설을 따라가고 있지는 않은지 걱정된다. "Epic 결과물"을 내기 위해서는 이러한 희생이 당연한 것인가? 사실 조금은 아리송하다. 철저히 계획적이고, 관리된, 이상적인 프로젝트 성공사례를 잘 알지 못하기에... 만약 내가 아닌 다른 사람이 희생하여 프로젝트가 성공한다면 나는 모른척 그 성공을 즐길 것인가? 이것도 잘 모르겠다. 나도 이기적인 인간 중 하나이기에... 하지만 확실한건 옆에 사람이 괴로워하는 과정을 ..

Game Dev/Article 2013.03.26

Gwen Library 설치

개인 프로젝트에 사용할 GUI 라이브러리를 찾고 있었다. http://gamedev.stackexchange.com/questions/3617/good-gui-for-openglhttp://gamedev.stackexchange.com/questions/8749/gui-for-directx 위의 링크들을 보고 우선 아래의 4개 라이브러리들을 다운 받았다. - CEGUI : http://www.cegui.org.uk/wiki/index.php/Main_Page- GWEN : http://code.google.com/p/gwen/- AntTweakBar : http://www.antisphere.com/Wiki/tools:anttweakbar- MyGUI : http://mygui.info/ 이 중 MyGU..

Game Dev/Work Log 2012.12.08

간단한 Python 문법 정리 (XML 파싱 기준)

준비물 Python Install : http://www.python.org/download/ 나는 3.2.2 버전을 설치했다. Loop 아래 예제의 첫번째 방법은 C++의 foreach 구문과 비슷하고, 두번째 방법은 for 구문과 비슷하다. 루프나 비교문 내부는 C++의 { } 대신 띄어쓰기로 구분을 하므로 주의해야 한다. list = ['A', 'B', 'C'] for i in list: print(i) count = len(list) for i in range(count): print(str(i) + ':' + list[i]) 함수 선언 함수는 def 키워드로 선언을 한다. 함수 내부 정의 역시 띄어쓰기로 구분을 한다. def Func(param): print(param) 전역 변수 전역 변수는 ..

Game Dev/Article 2011.09.29