2013년 12월 31일 화요일

[Book] 게임 매니악스 슈팅 게임 알고리즘(한빛미디어)


[Book]  게임 매니악스 슈팅 게임 알고리즘(한빛미디어)



 프로그래밍 즉 코드는 자료구조와 알고리즘 이 두개로 이루어진다. 그래서, 많은 알고리즘 책과 자료 구조책이 존재한다. 이러한 책을 보면 스택, 큐를 설명하면서 시작한다. 오목 게임, 카드 게임 등 다양한 게임의 알고리즘은 책으로 볼 수 없다. 놀랍게도 이 책은 슈팅 게임의 움직임에 대한 다양한 알고리즘을 정말 정석 대로 설명한다. 정석대로라고 표현한 것은 기본 라이브러리의 api를 이렇게 써라라고 설명한 것이 아닌 정말 하나 하나 각도와 위치를 계산하며 그 내용을 적어 내려갔기 때문이다. 또한, 수학 정석 2가 필요하기도 해서다. ㅋㅋ
너무 수학적인 부분은 검증 없이 믿고 읽게 된다. ㅎ C 코드이긴 하지만 seudo 코드 수준이라서 컴퓨터 언어 능력이 낮아도 충분히 읽을 수 있다.

 실제 게임에서 사용한 알고리즘이라서 그런지 디테일한 부분에 대한 이야기가 있다. 예를 들어, 대각선 이동 같은 경우 속도가 다르게 진행 될 수 있는 거에 대한 해결책 제시는 이 책이 실무에서 사용하고 있다는 믿음을 주었다. 또한 디바이스 마다 입력 범위의 차이를 해결하는 tip(꿍수)도 있어 재미가 있다. 과거 유명했던 게임을 거론하며 거기에 사용되었던 알고리즘을 이야기 할때는 그 게임을 찾아 해 보고 싶은 충동이 든다. 마치 게임의 역사속에서 그 게임의 재미 요소를 듣는 듯 하다. 게임을 만들때 내 맘대로 연사, 움직임 , 버튼 조작의 규칙을 정해도 되지만 과거에 사용했던 익숙한 방법을 익혀 거기에 맞게 만든다면 훨씬 더 사용자들이 쉽게 게임을 즐길 수 있을 것이다. 그 목적을 확실히 해 줄 책이다. 특히, 커맨드 샷 같은 경우는 오락실에서 사용한 파동권, 승룡권 방법도 다시 볼 수 있어서 정말 한 번 게임을 만들어 보고 싶은 욕구가 생기게 된다. 충돌 판정, 화면 밖으로 나갔을시 게임의 기본이 되는 알고리즘도 api 사용 없이 위치 좌표를 가지고 생짜로 짜는 묘미를 알려 준다.

 특히, 모바일 시대에 들어 서면서 IT의 한 축이 되어 버린 게임, 단언컨대 게임이 트랜드가 되었다. 게임 관련된 많은 책이 쏟아 지고 있다. 하지만, 대부분 게임을 만들수 있는 엔진, 툴 설명이 주다. 이렇게 하나 하나 캐릭터를 움직여 보며 과거 우리가 열광했던 게임을 이해해 보는 것도 아주 재미있을 듯 하다. 마치 응답하라 1994 처럼 말이다.

솔직히, 우리나라도 이렇게 오타쿠 적인 장인정신까지 느껴지지만 트랜드를 따르지 않고 좋
아서 하는 다양한 서적이 나왔으면 좋겠다. 다음 시리즈인 게임 매니악스 퍼즐 게임 알고리즘도 기대된다.

2013년 12월 1일 일요일

[Book] 라즈베리 파이 활용백서(비제이퍼블릭)

[Book] 라즈베리 파이 활용백서(비제이퍼블릭)




라즈베리 파이 시작하기(제이펍)라는 책을 읽고 나니 라즈베리 파이로 프로젝트하기에는 너무 소스(자원, 활용할 수 있는 것)가 부족했다. 상상하려면 특히 소프트웨어 쟁이에게는 여러 가능성을 보고 그것을 두고 이것저것 시도할 텐데 시간도 능력도 부족했다.
이 책 "라즈베리 파이 활용백서"(비제이퍼블릭)는 이 욕구를 어느 정도 해결해 준 책이다. 아주 쉽게 프로젝트를 소개 형식으로 작성하였지만, 내용이 부족하지 않다. 라즈베리 파이에 대한 설명도 충분히 되어 있고 정말 다양한 프로젝트가 들어 있다. 이것을 가지고 자유롭게 상상하면 정말 쉽게 시도 해 볼 수 있을 것이다. 저자 두분이 online에서 많은 활동을 하고 있어서 관련 사이트에 들어 가보면 더 많은 도움을 받을 수 있다.
 표윤석 : www.oroca.org, 이재상 : www.rasplay.org

즉, 이 책 한권이면 라즈베리를 시작할 수 있으며(구매, 환경셋팅, 활용) 다양한 시도도 해 볼 수 있다. OS 설치, 웹 서버 ftp 서버, 삼바, 데이터베이스 구축 까지 심지어 워드 프레스 까지 설치해 볼 수 있다. 컴공 학부생이 졸작으로 이용하기 좋은 XBMC 미디어, 네오지오 게임이나 전자 학부생들이 졸작으로 하기 좋은 GPIO제어(gpio, uart, spi, i2c) 기본 적인 내용도 있다. 실제 프로젝트 격인 로봇, RC카, TTS, 카메라 관련 내용도 있다. 과거에 카메라나 로봇을 이야기한 책을 보면 정말 많은 내용이 있고 하지만 정작 만들기 어려웠던게 사실이다. 하지만 지금은 정말 간단하게 설명되어 있으며 사용도 가능하다. 이게 기술의 발전이며 많은 것이 내부에서 해 주게 바뀐 것이다. 그렇기에 이 책을 통해 이것을 빨리 익혀 보고 해볼 수 있는 것이다. 조금 아쉬운 것은, 아니 이 책은 충분히 역할을 다 했다. 라즈베이 파이 관련서로 하나 더 나온다면 소프트웨어 쟁이가 감탄할 수 있는  코드로 이야기하는 내용의 책이 나왔으면 한다. 라즈베리 환경으로 RTOS를 만들거나 포팅하여 다양한 오픈소스를 활용한 이야기가 있었으면 한다. 오픈소스 진영에 참여하여 라즈베리 파이안에서 활동할 수 있는 책이 나왔으면 한다.

[Book] multicore application programming(한빛미디어)

[Book]  multicore application programming(한빛미디어)




 멀티 코어를 고려한 애플리케이션 방법과 실재를 설명해 준 책이다. 하지만, 병렬 프로그램의 빙산의 일각만 보여 주지 않고 물 밑에 깔려 있는 큰 덩어리를 조목 조목 알려 주고 있다.
하드웨어, 소프트웨어를 넘나들고 posix의 X계열에서 윈도우로 소프트웨어 의존적인 부분도 다루고 있다. 과거에 나온 책들은 API 위주이며 표준이 만들어지고 있을 때 작성한 책들이어서 사용법이 깔끔하지 않았다. 이제 어느 정도 정리가 되어 지금 쯤 정리된 책을 보는 것은 모든 내용을 한 큐로 이어 보는 즐거움이 있을 것이다. 하드웨어 스레드인 strands를 설명할때는 참 빠짐 없이 설명하려 했구나, 하지만 참 쉽게 무리 없이 언급하고 있구나 감탄하게 되었다. 병렬 프로그램을 한다는 것은 생명을 하진 여러 프로세스/ 스레드들이 서로 어떻게 데이터를 주고 받고 이 데이터를 순서에 맞게 공유하는 것일 것이다. 이 것을 하기 위한 동기화 장치(뮤텍스, 크리티컬 리전, 스핀 락, 세마포어, 리더즈-라이터 락, 배리어, 아토믹 조작과 락-프리 코드)와 통신 방법(메모리 맵, 시그널, 메시지 큐, 파이프, 네트워크)을 잘 설명하고 있다. 또한 posix 스레드 설명을 예제 별로 쉽게 설명하고 있어서 금방 이해하고 따라 할 수 있다.  거의 모든 컴퓨터 프로그램이 병렬화 프로그램을 만든다. 한 마디로 스레드 사용하는 것이 우습다. 하지만, 알고 제대로 만들어 사용하는 사람은 드물다. 병렬 내용이 계속 변해 왔으며 재대로 정립된지도 오래지 않아서 그럴 것이다. 과거의 프로세스의 IPC 개념으로 접근하여 어느 정도 작동되게 프로그램을 짜는 것일 것이다. 이 책을 읽게 되면 그런 실수할 수 있고 그냥 작동되지만 위험한 코드를 만드는 것을 막을 수 있을 것이다. 내가 올해 읽은 책 중 꼭 한 권만 꼽으라면 난 서슴 없이 이 책을 읽을 것이다. 단, 용어를 한글화 한 부분이 조금 어색한 경우가 있다. 하지만 너무 심하지는 앟다.예를 들어 아토믹이라는 용어를 쓰는 부분이 조금 그렇다. 이 책을 읽으며 감탄을 자아 냈다. 꼭 알아야 할 부분이지만 국내에서는 잘 다루지 않는 분야를 참 쉽게 잘 설명했다는 느낌이었다. 무었보다 많이 알고 있다는 느낌이 들었다. 엄청난 내공이 있어야 이렇게 딱 잘라 설명할 수 있고 이해 시킬 수 있기 때문이다. 컴퓨터 쪽에 종사하는 누구라도 꼭 병렬 프로그램을 다루지 않는 사람이라도 꼭 이 책은 읽기를 바란다. 이렇게 좋은 책이 화자 되지 않고, 나 또한 책에 대해 모니터링 하는데 이 책을 이제야 발견한 것이 조금 아쉽다. 



Multicore Application Programming: For Windows, Linux, and Solaris : http://kangcom.com/sub/view.asp?sku=2010F1107470&mcd=571
Solaris Application Programming : 
멀티코어 애플리케이션 프로그래밍(성능을 100% 끌어내는) : http://kangcom.com/sub/view.asp?sku=201206290006

http://www.hanb.co.kr/book/look.html?isbn=978-89-7914-928-9