실시간 게임이라 하더라도, 내부적으로는 모든 게임의 구성은 턴으로 구성하는 것이 좋다. (실제 초당 n프레임 같은 개념에서 각 프레임은 턴과 같은 개념이기 때문이다.) 이 턴의 동작 주기를 입력, 렌더, 로직 등을 잘 구분지어 처리하는 것이 좋다. 예를 들면, 입력은 1초에 5번, 렌더는 1초에 30번, 로직은 1초에 5번 등의 턴 기준을 명확히 정해 쪼개 놓는 것이 좋다. 그래야 네트워크 동기화, AI 구현 등의 처리 규정을 명확히 세울 수 있다. 로직을 1초에 5번으로 규정을 짓는다면, 한턴은 200ms이고, 200ms동안 이루어진 로직의 변화는 묶어서 다른 클라이언트로 전송하고, 내 변화도 묶어두었다가, 다른 유저의 정보를 수신한 다음턴이 돌아올 때 처리하는 식으로 구성하면 된다. LOL의 경우에도..
최근 레거시 코드 활용 전략이라는 책을 읽고 있다. 업계에서 흔히 레거시 코드라 불리는 코드를 많이 만져보게 되죠. 굳이 라이브팀이 아니더라도, 자주 만나게 된다. 제 주변에서도 흔히 사용하는 용어로써의 레거시 코드는 복잡한 코드, 결합도 높은 코드, 제약이 많은 코드, 너무 긴 메소드 등을 통칭하는 용도로 쓰인다 대략 외국에서도 낡은 코드, 유효하지 않게 된 코드 등을 지칭할 때도 쓰는 거 보면, 레거시 코드의 개념이 부정적인 것은 확실한 가보다. 저도 그렇게 좋지 않은 코드에 대한 통칭으로 레거시 코드라는 용어를 사용해오던 찰나에 레거시 코드 활용 전략 (Working Effectively with LEGACY CODE) 라는 책을 읽게 되었다. 이 책에서의 레거시 코드에 대한 정의는 저에게 큰 공감..
꽤 지난 소식이지만, VS2013의 Community version이 무료로 공개되었습니다. Free Dev Tools VS2013 Communityhttp://www.visualstudio.com/en-us/products/visual-studio-community-vs Unity, Node.js 등 다양한 언어의 개발환경으로도 자주 선택되는 VS2013의 무료 버전이 공개되었습니다. 개인적으로도, Visual Studio 5.0 시절부터 단연 최고의 개발 도구라 여겨왔었는데, 이제는 무료 버전과 함께, 그리고 다양한 플러그인과 디바이스를 지원해줌으로써 훨씬 강력한 IDE로 등극하지 않았나 싶습니다. 저도 집에서 VS2013을 쓰는데요, MFC까지 지원되는 버전인만큼 기존 C++ IDE로써 사용하시던 ..
Features Highlights: Open Source! GPLv3, no hidden costs. Cross-platform. Runs on Linux, Mac, Windows (uses wxWidgets). Written in C++. No interpreted languages or proprietary libs needed. Extensible through plugins Compiler: Multiple compiler support: GCC (MingW / GNU GCC) MSVC++ clang Digital Mars Borland C++ 5.5 Open Watcom ...and more Very fast custom build system (no makefiles needed) Suppo..
개발 목표 자동으로 파일로 남겨져 있는 로그를 분석해, 시스템에 영향을 주는 작업을 알려주기 위해 개발 됐다. 파일로 남겨져 있는 log를 db으로 밀어 넣는 작업은 log_shipper가 담당한다. db에 있는 데이터를 조건에 맞게 검색해서 보여주는 역할을 하는 web_server를 만들고자 의도했다. -> 실제 쿼리 작성 비용과 web_server의 API 개발 비용이 크게 차이 나지 않음을 느낄 수 있다. 서비스 중에도 볼 수 있도록, REST API 서버로서의 기능도 수행한다. -> 관련된 기능은 개발용으로 put method를 만들어둔 것을 이용하면 된다. 최종 목표 통지 기능 서비스에 문제가 있었는지를, 유저 보고가 오지 않더라도 알 수 있게끔 한다. base line 설정 기능. major ..
유닛 테스트를 내가 접한 지도 어언 10년이 다 되간다. 그간 내가 거쳐온 많은 회사에서 사용되기도, 무시되기도, 우선 순위에 밀리기도 하더라. 이 과정에서 제안도 여러 번 해보고, 설득 과정에서 자주 나왔던 질문이 있었다. 유닛 테스트하면 뭐가 좋은가요? 처음 이 질문을 받았을 당시, 내 답변은 테스트야 하면 당연히 좋은 거다 라고 답변했었다. 사실 누구나 테스트의 중요성은 배운다. 그래서 아주 작은 팀이고 여력이 부족하다면, 개발팀 내 테스트라도 소화하려고들 하는 것은 사실이긴 하다. 하지만 많은 사람들에게 테스트란 재미없고, 지루하지만 해야만 하는 교리 같은 것에 불과하다는 것이 문제다. 듣는 사람도 고개는 끄덕였지만, 막상 실천으로 이끌어 들이는 데에는 실패했다. 결과적으로 동기부여에 실패했다. ..
제가 프로그래밍을 처음 배울 때의 CLI 프로그래밍과 WIN32 프로그래밍으로 넘어왔을 때 큰 괴리를 느꼈습니다.그 이유는 바로 EVENT-DRIVEN(message based)프로그래밍 때문이었죠.현재는 reactor라는 패턴이란 이름으로 더 알려진 이 메시지 기반 프로그래밍은, DOS 시절의 동기 프로그래밍에 익숙한 많은 프로그래머를 괴롭게 했습니다. message라는걸 왜 굳이 만들어 처리하는가….에 대해 저는 그 당시 이해하기 어려웠습니다.당시만해도, 윈도우 메시지를 굳이 처리하지 않고도 여러 작업이 가능했기 때문이죠. 예를 들어 GetAsyncKeyState (http://msdn.microsoft.com/ko-kr/library/windows/desktop/ms646293(v=vs.85).as..
클럭도 물론 중요하지만, 코어가 몇갠지 부터 보는 일이 자연스러워진지도 몇년. 다들 병렬 프로그래밍 잘 하고 계시나요? 서버 프로그래밍을 시작한 2006년부터 지금까지... 멀티 스레드를 다뤄오며, 느낀 것에 대해 이야기해보고자 한다. lock 말그대로 잠금. 이 데이터 unlock 될때 까지 쓰지말라는 거다. - non-blocking non-blocking이 뭐냐고? 대기하는 상황(blocking) 없이 코드가 수행되는 것을 말한다. - lock is blocking. lock이라는 것 자체가 blocking을 위한 녀석이다. 멀티스레드에 적합한 녀석 일리 없다. - lock-free container나 데이터에 접근할 때에 lock 객체에 대한 고민없이 사용해도 되는 자료구조나 스레드 모델을 loc..
- Total
- Today
- Yesterday
- EzShortcut
- 게임데브포에버
- 루비 온 레일즈
- TDD
- ftp
- svn
- CppSQLite
- 리버스 엔지니어링
- perfmon
- RoR
- 바로가기 프로그램
- 임백준
- TraceRoute
- 디자인 패턴
- NDC2013
- SQLite Spy
- MS-SQL
- c언어
- ruby
- 게임개발포에버
- 좋은 프로그래머
- Rails
- 조엘 온 소프트웨어
- 디버깅
- 엘키
- 루비
- EasyExec
- SDL
- 멀티스레드
- Ruby on Rails
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |