포토로그 마이가든

이야기

polomerria.egloos.com


I hear and I forget. I see and I remember. I do and I understand. - Confucius
by Polomerria


Monad에 대한 좋은 tutorial 문서 기타

Yet another monad tutorial


해석본이 있는지는 잘 모르겠습니다.

유일한 국문 서적인 하스켈로 배우는 프로그래밍을 보면서 Monad가 대체 왜 있는지,

왜 이런 쓸때없어 보이는 것을 만들었는지 궁금증을 가지게 되었는데,

이 문서는 "왜"에 중점을 두고 매우 자세하게 적어나가고 있습니다.

wxHaskell 설치 정리

구글링 결과 찾아낸 문서가 약간 혼란스러운 순서로 작성되어 있어서 기록하기 위하여 남깁니다.

SkyTreeBirds의 안내문을 기반으로 설치하였습니다.

필요한 것
1. wxConfig
2. wxPack


1. wxConfig
다음 주소에서 받을 수 있습니다.

설치 필요없는 단순 exe파일일 뿐입니다. path가 걸린 경로에 넣거나, 집어넣은 경로에 path를 걸어주면 됩니다.

2. wxPack
다음 주소에서 받을 수 있습니다.


wxPack을 가이드에 맞춰서 gcc 라이브러리만 설치하지 않아도 됩니다. vc용까지 설치하였는데 문제 없었습니다.
설치에 시간이 좀 걸립니다.

원래 가이드에 언급된 것 중 필요했던 것은
1. wxConfig의 path 설정
2. WXCFG 변수 설정
3. 설치된 wxWidgets source path설정
4. haskell platform에 포함되어 있는 MinGW/lib path 설정
이었습니다. WXWIN은 wxPack 설치 시 알아서 설정합니다.


wxHaskell 설치는 cabal install wx로 가능합니다.

GHCi로 실행하면 원래 가이드의 언급처럼 에러납니다.
그냥 ghc -package wx hello.hs -o hello로 command line에서 컴파일하고 실행되는 것을 확인했습니다.

기획의 패배? - 테라에 대하여. 기타

그 흔한 스샷도 없는 테라 소감입니다.

요약 1. 석줄입니다. 귀찮으시면 요것만.
1. 게임 기본 구성요소 자체는 매우 잘 만들어져 있습니다.
2. 하지만 세상은 냉혹하죠. 이제 시작하는 게임도 이미 완성된 게임과 동일 선상에서 경쟁합니다.
3. 이 게임은 기획에 시간과 노력을 더 부었다면, 이 이상의 성과를 거둘 수 있었을겁니다.

요약 2. 차례라고 해도 되겠네요.
1. 게임 기본 구성요소 자체는 매우 잘 만들어져 있습니다.

그래픽 - 미려합니다. 최적화도 잘 되어있죠.
서버 상태 - 대단합니다. 아주 안정적이에요.
레벨디자인 - 적절합니다.
UI - 기본적인 사항에 대한 구현은 전부 잘 이루어졌습니다.
게임성 - 괜찮은 액션 게임. 하지만 액션만으로 신나게 한 던파정도는 안되네요.

2. 하지만 세상은 냉혹하죠. 이제 시작하는 게임도 이미 완성된 게임과
동일 선상에서 경쟁합니다.

퀘스트 세부사항 링크 - 만들어놓고 왜이리 불편하게 했을까요?
가독성이 떨어지는 텍스트 및 기본 UI 크기 - 아주 쉬운 일 같은데..
부실한 퀘스트 - 오락가락하는데다 맨날 같은걸 하는 퀘스트. 왜 이렇게?

3. 이 게임은 기획에 시간과 노력을 더 부었다면, 이 이상의 성과를 거둘 수
있었을겁니다.

UI/UX를 게임에 맞춥시다. 다른 게임에 있는걸 가져온다고 해서 익숙함 이상의
효과는 없어요.

본문: 깁니다. 스샷도 없어요.
1. 게임 기본 구성요소 자체는 매우 잘 만들어져 있습니다.

그래픽 - 미려합니다. 최적화도 잘 되어있죠.

누가 뭐래도 이제 3D게임 그래픽은 일본이나 미국 등에 절대 밀리지 않습니다.
온라인 게임쪽은 한국이 월등하죠. 전 제 pc사양이 그리 좋지 않음에도 불구하고
별다른 문제 없이 돌아가는데 정말 감탄했습니다. 클라이언트 프로그래머와
아트팀에게 경의를.


서버 상태 - 대단합니다. 아주 안정적이에요.

오픈베타 게임이 이정도로 안정적이라는건 정말 노력 많이 했다는거죠. 이 게임
기술적인 부분은 정말 잘 되어있다고 생각합니다. 서버건, 클라이언트건요.


레벨디자인 - 적절합니다.

캐릭터가 강해지는 정도에 따라서 몬스터도 적당히 강해집니다. 최소한 11까지는,
게임 주 컨텐츠인 전투에서 어려움이나 불편함, 어색함은 전혀 느끼지 못했습니다.


UI - 기본적인 사항에 대한 구현은 전부 잘 이루어졌습니다.

파티찾기 링크 가능하다는건 정말 훌륭한 점이라고 생각했습니다. 몹 위치를
맵에 표시하거나, 퀘스트 완료 npc를 표시하는 등 기본적인 지원은 다 됩니다.
다른 게임에서 지원하는 기본적인 UI를 어느정도 이상 다 지원해줍니다.

가장 중요한건 신경쓰지 않아도 불편하지 않아야 한다는 것이고, 불편하다면
쉽게 찾을 수 있어야 한다는 것이겠죠. 이런 측면에서는 좀 감점인데, 이런
부분은 다음에 이야기하겠습니다.

게임성 - 괜찮은 액션 게임. 하지만 액션만으로 신나게 한 던파정도는 안되네요.

전 창기사를 해봤는데, 솔로플레이가 생각보다 어렵지 않고 쾌적하게 진행되었습니다.
드래곤네스트를 해본 일이 있어서 게임 조작에 쉽게 익숙해질 수 있었습니다. 하지만
이 게임 장르는 액션에 무게중심을 두고 있다고 생각하는데, 그런 게임에서 기대할 수
있는 액션성이라고 보기엔 좀 떨어집니다.

액션은 조작에 반응이 중요하다고 보거든요. 그런데 공격행동이나 방어행동을 취하기
위해서 선택할만한 적당한 단서가 부족하다는 생각이 들었습니다. 게다가 속도감도
잘 안 살고요.


2. 하지만 세상은 냉혹하죠. 이제 시작하는 게임도 이미 완성된 게임과 동일 선상에서
경쟁합니다.

문제는 저런 기초적인 구성요소를 엮어내는 방법이 너무 후졌다는겁니다.
아이온보다 못한 퀘스트 세부사항 링크, 가독성이 떨어지는 텍스트, 너무 작은
기본 UI크기, 부실한 퀘스트 동선 및 경험... 앞선 게임이 이미 다 제시한 것들을
단순이 엮는 것 만 해도 쉬운 일은 아니라는것 잘 알고 있습니다. 하지만 잘 만든
구성요소들을 엮는 일이 이렇게 부실해서야 원..

UI/UX같은것에 대한 고려가 부족한데, 이는 기술적인 부분과 그래픽에 많은 투자를 한데
비하여 게임 기획이나 전반적인 컨텐츠 기획에는 별로 투자하지 않았다는 말이 됩니다.
말만 늘어놓으면 근거없이 비난하는 것이 되니까, 간단히 지적해봅시다.


퀘스트 세부사항 링크 - 만들어놓고 왜이리 불편하게 했을까요?

어디서 어떤 몹을 잡아야 합니다. 그럼 그걸 그냥 맵에 표시해주면 되죠. 텍스트로 쓴걸
맵에 그냥 찍어주면 안된다는 법은 없지 않을까요? 그나마도 꼭 퀘스트 로그를 놀러서
거기서 몹 이름을 클릭해야 맵에 표시됩니다. 기술적으로 매우 쉬운 일이지만, 사용자에게
실제로 주는 불편은 상당히 크다고 봅니다.

가독성이 떨어지는 텍스트 및 기본 UI 크기 - 아주 쉬운 일 같은데..

기본 UI크기도 너무 작고, 정말 텍스트읽는걸 좋아하는 제가 퀘스트 내용을 대충 보지도
않고 넘겼습니다. 퀘스트에서 플레이어에게 플레이의 기초를 가르치는 경우에는 결국 이걸
읽는다고 생각해야 하는데, 사실 이거 읽으라고 준건지 모르겠습니다.

아주 쉽게, 그냥 쓰는 모니터 놓고 테라 기본옵션으로 설치해보면 이게 큰지 작은지,
좀 읽을만한지 지옥인지, 대충 알 수 있지 않을까요. 그냥 쉽게,

모니터 크기를 추정한다. 다나와만 가도 됩니다. 잘 팔리는 것 크기 보면 되죠.
이거 뭐 통계 필요한가요?

관찰거리. 보통 모니터 보는 거리는 다 비슷하죠? 약 50cm내외일겁니다. 이상하면
줄자로 재 보면 되죠.

그 상태에서 기본 UI의 글자크기와 가독성을 테스트하는건 그냥 한시간이면 최종 크기
보고서까지 다 쓸 수 있을겁니다. 어렵지 않죠.


부실한 퀘스트 - 오락가락하는데다 맨날 같은걸 하는 퀘스트. 왜 이렇게?

11까지 키워보시면 아시겠지만 오락가락합니다. 퀘스트 내용은 다 같아요.
패고 채취하고 찾아라. 그냥 너 다음에 갈만한데가 어디냐..라는데 대한 답인데요.
좋습니다. 게임 자체에 자신이 있다면, 즉 사용자가 사냥/채취만 하는걸로 우리가
제공하는 경험이 충분하다고 생각한다면요.

 근데 그럴거면 퀘스트 시스템을 전통적인 RPG처럼 두지 말고, 자동 네비게이션처럼
만들면 되는게 아닐까요? 마을 들어가서 npc들이나 게시판 등의 위치가 표시된다거나,
다양한 방법으로 만들수 있지 않을까요. 던파의 에픽 퀘스트처럼 자동 업데이트하거나요.


3. 이 게임은 기획에 시간과 노력을 더 부었다면, 이 이상의 성과를 거둘 수 있었을겁니다.

목적을 명확하게 하고 수단을 결정하는 것이 중요하지, 남들이 이런 수단으로 목적을
달성했다고 그 수단을 따라해서는 아무런 발전도 없습니다. 

제가 생각하는 테라의 가장 큰 단점은 바로 구성요소 하나하나는 매우 잘 만들어졌는데
그 구성요소를 하나로 엮어내는데 너무 안일했다는겁니다. 아이온급 그래픽, 액션성,
와우 UI요소 흡수, 안정적인 서버상태..같은건 그냥 각 게임의 장점만 취합했다는건데요.


좀 더 액션성을 살리고 싶었다면 액션에 어울리는 UI/UX를 고민했어야 합니다.
사용자가 주의를 기울일 수 있는 범위는 제한적인데, hp/mp바를 캐릭터 주변에 두면
좋지 않을까요?
스킬 쿨타임이 다 되면 알림으로 스킬 아이콘같은걸 팝업하게 하면 편하지 않을까요?

파티찾기를 하도록 유도하는데 비해서, 파티찾기는 만만찮았습니다.
그냥 퀘스트에 "이 퀘스트 파티 찾기"같은거 만들면 좋지 않을까요? 파티에 퀘스트 link
하나 두고 던전link도 만들 수 있겠죠) 그걸로 대기열 검색하거나 없으면 만들어지게 하면
되죠. 파티장이라는게 반드시 필요한것도 아니고요.

적이 공격받으면 반응하고, 공격한다는걸 좀 쉽게 알 수 있었으면 합니다. 드래곤
네스트 하면서 느낀건데, 액션게임으로 놓고 보면 참 좋았는데, 게임이 너무 반복된다는
느낌에 하다 말았거든요. 튜토리얼 지역이라면 게임 시스템을 쉽게 알 수 있게 하는게
중요하다고 봅니다. 퀘스트 잘 읽어지지도 않잖아요. 그걸로는 참..

택틱스 오우거, 운명의 수레바퀴 간단 소감 기타

택틱스 오우거는 무시무시한 난이도와 훌륭한 완성도를 가진 게임 시스템, 
현실감과 무게감을 가진 시나리오로 유명한 게임입니다. 개인적으로 해 본 
일본 RPG 게임 중 가장 훌륭한 게임이라고 생각합니다.

리메이크 소식을 듣고 좀 고민되더라구요. 원작이 워낙 훌륭해서 리메이크하다
망치는거 아닌가 하는 생각을 꽤 했었습니다. 그래서 예약은 안 했죠. 발매 후에
소감 좀 읽어보고 그냥 바로 psp+게임 구입했습니다.

게임 시스템 측면에서 원작의 장점은 전략성이었죠. 다만 명령이나 효과가
게임의 맥을 끊어 생각이 종종 끊어지게 만드는 문제가 있었습니다.
예를 들면, 기본 설정으로 하면 명령 선택할 때마다 한번 더 물어보고,
마법 사용 시간이 너무 길었으며, wt시스템은 반격과 성장체계때문에
좀 기형적인 플레이를 유도했죠. 게다가 이름 있는 캐릭터들이 너무 세서
오래 키우던 캐릭터들도 후반 가면 별 볼 일 없는 경우가 많아졌습니다.

리메이크에서 가장 잘 해 준 부분이 바로 이런 문제를 해결한 점입니다.
전략 자체에 집중하도록 하기 위하여 아군 전체가 직업 레벨을 공유하고,
성장시킨 캐릭터들의 수준을 스킬로 유지하여 캐릭터 하나하나가 성장한
만큼 강해집니다. 주력이 아닌 아쳐가 필요하다면 언제든지 쓸 수 있죠.

게다가 게임 진행이 정말 빠릅니다. 귀찮은거 안 물어보고 진행 확확
할 수 있죠. 그리고 기본 반격이 없다는 것 역시 괜찮은 변경점이라고
봅니다. 마법 효과도 시원시원하고요. 속도감과 타격감을 꽤 잘 살렸습니다.

그리고 원작의 극악 난이도를 꽤 끌어내린 시스템은 상당히 마음에 들었습니다.
부상 시스템으로 다운되도 바로 죽지 않고, 지난 턴을 되돌릴 수 있는 등 게임
플레이에서 무엇이 문제였는지 잘 파악하고 있었다는 이야기가 되겠죠. 이제는
아무에게나 추천해줄 수 있습니다.

하지만, 역시 언어가 문제가 됩니다. 일어를 못하니 두배 까다로워진게, 
스킬이나 마법, 필살기 등을 확실하게 알 수 있으려면 읽을 수 있어야 합니다.
워낙 읽을것이  많은 게임이기도 하고요. 개인적으로는 어떻게든 일본어판으로
버티다가 영문판이 나오면 그걸 구매할 생각입니다. 플레이하면서 내용을
읽는다는 것은 시나리오를 중시하는 게임 플레이에서 정말 중요한 일이죠.
재미있는건 오프닝에서는 영문 음성이 깔리더군요.

초반에만 조금 적응하면 난이도도 적당하고, 크게 어려움 없이 진행할 수
있을 것 같습니다. 공략 나와서 일본어 문제가 어느정도 해결되거나 일본어를
읽을 수 있다면 추천합니다. 전 가나만 읽는 솜씨에 원작을 여러번 해 봐서
그냥 시나리오 기억하고 있는걸로 진행중인데도 괜찮네요.


하스켈로 프로그래밍하기 기타

아마추어 프로그래머가 가지는 가장 큰 한계는 역시 갈 길을
가르쳐주는 사람이 없다는 점입니다. 다양한 분야의 책을
스스로 읽어가면서 자기 길을 잡아야 하는데, 이게 만만한 일이 아니죠.

독학하는 입장에서 OOP같은 패러다임을 이해하기 어려운 것은 하위 개념의
필요성과 상호작용, 그리고 그에 대한 맥락을 잘 모르기 때문입니다.

결국 학습의 문제로 환원할 수 있겠죠.

실험 프로그래밍이나 취미로 하는 프로그래밍 툴로 하스켈을 사용하면서
가장 도움받은 부분이 이런 개념 학습에 대한 틀을 얻어가고 있는 것이라고
봅니다.

프로그램을 작성하기 위해서 문제를 구성하는 일에 대한 훈련을 필요로
하는 언어라서 프로그래밍을 자연스럽게 하기 위해서 많은 노력이 필요합니다.
대충 만들어서 돌리면 오히려 java같은 언어보다 복잡해져서 재사용성같은건
아예 사라져 버립니다.

하지만 좀 더 haskell다운 프로그램을 만들기 위해서 공부해가면서 작업을
묘사하고, 그 묘사한 문장이 함축하는 바를 분석하여 각 단어가 가리키는
술어와 주어, 목적어를 각각 함수와 자료구조로 대응시키고 이를 좀 더
근본적인(primitive) 구성요소로 환원하는 방법을 자연스럽게 습득해가는데
많은 도움이 되고 있습니다. 

물론 아직 언어에서 지원하는 기본적인 요소도 다 공부 못 했으니, c나 
lisp을 해볼 날은 아직 멀었네요. c는 문법만 알아서 도움이 안 되고, lisp는
그냥 그런게 있고 어떤 언어인지 듣기만 한 수준이니.. 공부할 것은 많습니다.

1 2 3