영웅 전설 섬의 궤적 (ps3) 리뷰

PS3 버전으로 구매해서 플레이했고, 총 플레이 타임은 85시간 가량. 공략 위키 작업을 같이 하면서 플레이했기에 실제로는 좀 더 많은 시간을 투자했다.

아래는 분야별 리뷰.

스토리 3.5/5

  • 전반적으로 궤적 시리즈의 스토리 구성에서 크게 벗어나지 않았다. 6장까지 다소 물흐르듯 약간 지루하게 흘러가고, 마지막 종장의 큰 반전. 다만 천공의 궤적 FC과 같이 남겨져 있는 떡밥들이 많고, 본 작품에서 해결된 것은 아무것도 없다보니 반드시 후속작을 플레이해야 한다는 것이 단점이다. 엔딩은 흡사 미드를 보는 듯한 절단 신공. 이게 뭐야!
  • 궤적 시리즈는 캐릭터 게임의 요소가 강하게 들어가 있지만, 아직까지 캐릭터들이 겉도는 느낌이 완전히 사라진 것은 아니다. 벽의 궤적에서 캐릭터들의 갈등이 자세히 그려지지 않았다는 평을 수용해서인지, 갈등을 통한 긴장을 유도하긴 했다. (린 <-> 알리사, 마키아스 <-> 유시스, 라우라 <-> 피)
  • 하지만 캐릭터의 깊이가 너무 얇다는 것이 문제다. 즉 각 캐릭터들이 안고 있는 외적 갈등 (캐릭터들과의 갈등)과 내적 갈등 (출신 혹은 집안의 문제)의 해결방법이 너무 통속적이어서 캐릭터의 깊이를 더하지 못했다. 즉 입체적인 캐릭터를 만드는데 실패했고, 대부분의 캐릭터들이 평면적인 캐릭터로 남아있다. 후속편을 위해 남겨둔 것인지?
  • 더 큰 문제는, 게임 자체의 볼륨은 크게 늘어났는데 비해 너무 많은 등장 인물들이 들어오면서 (VII 반의 9명 + 기타 플레이 가능 조연 3명) 캐릭터들의 밀도마저 옅어진 감이 있다는 것이다. 대표적으로 가이우스와 엠마 같은 몇몇 캐릭터들은 공기화 되어서, 시나리오 상으로는 없어도 큰 지장이 없다. 엠마같은 캐릭터는 복선을 위한 캐릭터이지만, 다음 작품을 통해서만 그 의의를 획득하기 때문에 굳이 플레이가능 캐릭터가 될 필요는 없었다고 본다.
  • 또한, 무대가 학원이 되면서 학원물 + 연애물적 요소가 들어간 캐릭터게임화 되었다. 그렇다고 캐릭터게임의 매력을 십분 살리고 있느냐 하면 그렇지도 못하다. 등장 인물들간의 갈등은 별로 공감가지 않는 이유로 어이없이 해결되고, 연애씬 및 캐릭터 묘사는 지지리도 힘이 없는지, 주인공 린과 메인 히로인으로 보이는 알리사의 철철 넘치는 중2병 대사들은 손발을 오그라들게 한다. 으아악.
  • 연출 측면은, 3D 게임으로 2D 게임을 만든 느낌이 강하다. 동시에 반복되는 흑막 연출은 이제 식상하기까지 하다. 대표적으로 주인공 일행이 사건을 해결하고 떠나가는 등뒤로 흑막이 스르륵 나타나면서 한마디 하는 장면. 연출 아이디어 고갈인가?
  • 게임의 내적 동력을 위해서는 악역의 존재감이 강해야 하는데, 그렇지 못하기에 6장까지는 다소 평화로운 게임의 느낌이다.

그래픽 및 연출 2.5/5

  • 내가 ps2 게임을 하는건가 ps3 게임을 하는건가.
  • 그나마도 ps3 성능 활용을 못한 엔진을 만들어서인지, 여러명이 화면에 있으면 버벅댈때가 있다.
  • 주인공으로부터 약간 떨어진 곳에 있는 캐릭터나 사물들은 화면상에서 보이지 않는다. 일종의 꼼수인데.. 너무하잖아!

사운드 5/5

  • 사운드는 만족스러운 편이다. 궤적 시리즈 음악은 느낌이 다 비슷비슷해서 많이 들어본 느낌도 나지만, 만족스러운 편이다. 이벤트 전환시의 사운드 전환 연출도 괜찮은 편.

전투 4/5

  • 크래프트가 메인이 되면서 아츠 캐릭터는 나락으로 빠졌다.
  • 일자형 라인 캐릭터는 멀티라인 캐릭터에 비해 단점만 있고 장점이 없다. 일자형 라인도 뭔가 장점을 주어야 할 듯 싶다. (쿼츠들이 같은 라인에서 연결되었을 때 더욱 강해진다든지)
  • 캐릭터가 너무 많다보니, 마지막 장에서는 결국 쓰는 캐릭터만 골라 쓰게 된다. 적은 캐릭터로도 충분히 전략성을 발휘할 수 있는데, 하는 아쉬움이 있다.
  • 보스전은 적당히 도전적인 난이도. 다만 일반 전투는 메갈리스 + 패도가 있는 6장부터 개판이 된다. 메갈리스와 패도를 피나 밀리엄에게 주고 전투 개시하자마자 전체 S크래프트로 날려버리면 끝.

시스템 3/5

  • 패치된 이후의 ps3에서 맵간 로딩은 많이 줄어든 편이어서 플레이 도중 크게 불편함을 느끼지는 않았다. 하지만 시간이 아예 걸리지 않는 것은 아니기에 가끔 불편함을 느끼게 된다. 이벤트 존재를 나타내는 ! 가 엉뚱한 캐릭터에 붙기도 하는 등 버그가 좀 있는 편.
  • 숏컷 이동은 좋은 편이지만, 가끔 메뉴가 직관적이지 않을때도 있다.
  • 링크는 다회차 플레이를 강요하는 측면이 있다. 노가다를 통해 링크를 1회차에서도 전 캐릭터에게 MAX를 줄 수 있는 방법이 있었으면 좋겠다.
  • 링크 수치를 볼 수 없는 적은 치명적인 단점. 최종장 후야제 이벤트에서 조건을 만족하는지 아닌지 알 수가 없다..
  • 전투 관련해서 가장 불편한 점은, 조별 실습시 다른 조 레어 쿼츠 해제. 다른조 인원과도 언제든지 자유롭게 쿼츠 및 장비를 교환할 수 있어야 할 듯 싶다.

번역 3.5/5

  • 전반적으로 괜찮지만, 여러 사람이 작업해서 그런지 가끔 일관적이지 않은 부분이 있음. (해시라이스 vs 하이라이스)
  • 레어 쿼츠의 능력치 상승 부분이 번역시 짤리는 바람에 일일이 세팅해보아야 하는 불편함.

총평 3.5/5

  • 전투는 좋지만 세세한 부분의 마무리가 부족한 편이며, 시나리오는 후반부의 급전개를 빼면 다소 지루하기까지 하다. 연출도 3D 시대에 한참 뒤떨어지는 편.
  • 궤적 시리즈의 팬이라면 놓치지 말하야 할 작품임에는 틀림없다. 하지만 장점과 단점이 뚜렷하게 혼재된 작품이다보니, 본 작품으로 궤적 시리즈를 처음 접하고 싶은 사람에게는 강하게 추천하기 힘들 듯.
Posted in 게임 | Leave a comment

영웅전설 벽의 궤적 공략 위키

최근 영웅전설 벽의 궤적을 하고 있었는데요, 국내에 제대로 된 공략집이 없어서 일본의 http://www47.atwiki.jp/ao_psp/ 를 참조하면서 틈틈히 번역해 보았습니다.

아래 주소로 들어가시면 볼 수 있습니다.

벽의 궤적 공략 위키

아직 제대로 다듬어지지 않은 부분이 많고 미처 번역하지 않은 링크도 많은데요, 시간되는대로 마저 정리하도록 하겠습니다.

일단 일반인도 수정할 수 있도록 해 두었으니 자유롭게 수정하셔도 괜찮구요.

문의사항은 제 이메일(shyoo at sunghwanyoo dot com)로 해 주시면 됩니다.

그럼 모두들 즐겁게 플레이하세요!

Posted in 게임 | Leave a comment

영웅전설 섬의 궤적 공략

최근에 영웅전설 섬의 궤적을 PS3로 플레이 했는데요, 제대로 된 공략 위키가 없어서 한 번 만들어 보았습니다.

루리웹 포광의 메시아님이 작성하신 공략집과 일본의 섬의 궤적 공략 위키 (http://amuwiki.com/sen_kiseki)를 바탕으로 작성하였습니다. 사용을 허락해주신 포광의 메시아님께 다시 한 번 감사드립니다.

아래 주소로 들어가시면 볼 수 있습니다.

섬의 궤적 공략 위키

거의 대부분의 항목들을 작성해 두었습니다. 저도 플레이하면서 작성하느라 통일되지 않은 단어가 좀 있을텐데, 누구나 수정 가능하도록 해 두었으니 자유롭게 수정하셔도 됩니다.

문의사항은 제 이메일(shyoo at sunghwanyoo dot com)로 해 주시면 됩니다.

그럼 모두들 즐겁게 플레이하세요!

Posted in 게임 | Leave a comment

추천하는 코드 리뷰 툴 Phabricator

최근 같은 프로젝트에서 일하는 분과 원격으로 소스 코드를 공유하면서 작업해야 할 일이 생겼다.

구글에서는 내부적으로 Critique 이라는 코드 리뷰 툴이 있는데, 아직 오픈 소스로 공개되지 않은지라 외부에서 쓸만한 툴이 있는지 알아보니, 페이스북에서 오픈 소스로 공개한 Phabricator 가 가장 쓸만해 보였다.

내가 본 Phabricator의 주요 장점으로는

  • 주요 버전 관리 시스템(git, hg, svn)에서도 잘 동작하고, 외부 저장소(github, bitbucket)와도 잘 연동됨.
  • 주요 기능들을 잘 갖추고 있는 코드 리뷰 도구
  • 용이한 프로젝트 관리 및 버그 관리 도구
  • 여러 사용자에 대한 지원이 잘 되어 있음 (권한 관리 등)
  • 제출 전 코드 리뷰(differential) 뿐만 아니라 제출 후 코드 리뷰(audit)도 지원

등이 있다. 아직 문서화가 제대로 안되어 있다는 단점이 있기는 하지만, 전반적으로 디자인도 깔끔하고 실제 프로젝트에서 언제든 사용되어도 괜찮을 기능들을 많이 갖추고 있다.

현재로서는 github 처럼 편하게 가입해서 사용할 수 있는 방법은 없고 사이트에 직접 설치해야 하는 번거로움이 있지만, 일단 설치하면 그 이후부터는 강력한 기능들을 자유롭게 사용할 수 있다. 혼자가 아니라 여러명이서 같이 코드 리뷰 하면서 작업해야 하는 경우에는 꼭 추천하는 툴이다.

홈페이지 방문 : http://phabricator.org

Posted in | Leave a comment

방구석에 인어 아가씨 공략

방구석에 인어 아가씨 전체 순서별 공략 정리해서 위키에 올려 두었습니다. 아래 주소를 방문하시면 됩니다.

방구석에 인어 아가씨 위키 공략

오유에 올라온 공략을 참고해서 정리했습니다.

Posted in 게임 | Leave a comment

애니 및 드라마 자막 다운로드 서비스

안녕하세요,

자주 사용하던 smidown.com 이 다운되어서 임시로 애니, 일드 및 미드 자막 제작자 분들이 업로드한 자막을 수집해서 보여주는 사이트를 만들었습니다.

사용자 삽입 이미지

다음 주소 방문하시면 됩니다 : http://subtitle.sunghwanyoo.com

검색 기능 등은 지원하지 않습니다만, 나중에 추가하도록 하겠습니다. ^^

Posted in 프로그램 | Leave a comment

콘티 작성 및 찬양곡 연관도 분석 툴

(updated 2014.3.24)

취미생활로 제작하던 콘티 작성 및 찬양도 연관도 분석 툴을 공개합니다. 콘티를 짤 때 연결되는 곡들을 만들기 위해서 찬양집 목록을 뒤적이는 분들이 많으실 것 같은데요, 자동으로 연관된 가사를 가진 곡들이나 해당 곡과 같은 콘티에 들어갔던 적이 많은 곡들을 보여주는 도구입니다.

다음 주소를 방문하시면 됩니다 : http://project.sunghwanyoo.com/similar_worship

사용자 삽입 이미지
첫 화면을 보면, 기본적으로 가장 많이 불리는 곡 가운데 하나인 “예배합니다”와 “그 사랑”과 관련된 곡들이 화면상에 보여지게 됩니다.

메뉴를 보면 다음과 같은 기능들이 있습니다.

1. Relations

선택된 곡 (여기에서는 “예배합니다”와 “그 사랑”)과 관련된 곡들을 선정하는 기준을 설정합니다.  “By used”는, 같은 콘티에서 있었던 곡들 중에 가장 많이 선택된 곡을 출력하고(즉 같이 불려진 횟수), “By lyric”은 가사의 내용을 기반으로 가장 유사한 곡들을 출력해줍니다. “All”은 이 둘을 적절히 조합하여 출력해줍니다.

2. Layout

곡들을 화면상에 어떻게 출력할지를 결정합니다. “By similarity”는 유사한 곡들(같이 불려진 횟수 혹은 가사 유사성)이 가급적 근처에 붙어있을 수 있도록 하고, “By key”는 Key 별로 분류해서 출력해주는 역할을 합니다. 곡별로 있는 원들은 Key를 의미하므로, 아래와 같이 “By key”를 선택하면 색깔별로 모이는 것을 볼 수 있습니다.

사용자 삽입 이미지

3. Filter

화면상에 곡이 너무 많을 경우, 중요도 순으로 이를 필터링하는 기능을 합니다.

4. Sort

그다지 중요하지는 않는데, 곡들을 정렬할 때 출력 횟수를 기준으로 하는지 아니면 연결된 링크의 수를 기반으로 하는지를 결정합니다. 그냥 놔두셔도 됩니다.

* 곡별 정보 분석

화면상에 있는 각 곡의 이름 혹은 원 위에 마우스 커서를 올리면 가사 첫줄 제목과 작곡자 등의 정보가 보여집니다. 여기에서 “콘티에 추가”를 클릭하시면 오른쪽 콘티 리스트에 곡이 추가됩니다.

사용자 삽입 이미지

아직까지 콘티상의 곡을 삭제하거나 하는 기능은 없지만, 조만간 추가할 예정입니다. 그리고 콘티상의 곡을 클릭하시면 옆에 pin 아이콘이 나타나면서, 해당 곡을 중심으로 새로이 연관곡들을 갱신해서 화면에 출력해주게 됩니다. 이 때 여러곡을 선택해서 분석하실 수도 있습니다.

사용자 삽입 이미지

마지막으로 화면상에 없는 곡들은 위에 있는 검색 기능으로 콘티상에 추가하실 수 있습니다. 원하는 곡을 입력하고 Search 를 누르시면 됩니다.

사용자 삽입 이미지

악보보기나 음악듣기와 같은 기능들은 저작권 문제로 구현하지 않았습니다. 공개 버전에서는 추후 가사 보기 같은 기능 혹은 부분 악보보기 기능이라도 구현해 볼 예정입니다.

그럼 콘티 짜실 때 도움이 되었으면 좋겠습니다. ^^

Posted in 프로그램 | Leave a comment

Firefox auto restart script upon memory consumption exceeds 1G limit

If you are struggling with memory leak in
firefox, check this autohotkey script out. It will prompt to restart
your firefox when memory consumption exceeds 1G. 😀

https://gist.github.com/shyoo/5272758

Posted in 프로그램 | Leave a comment

Installing pptpd on Ubuntu

Recently I had to set up VPN server on my Ubuntu server 10.04.

Yes, Ubuntu 10.04 is old but the following guide  will also work for latest  Ubuntu systems as well.

pptpd is the VPN server that provides microsoft VPN protocol, which will mostly work fine with any vpn connection from Windows, OSX, or iOS systems.

Anyway, here are the steps for installing and configuring pptpd:

1. Install pptpd

sudo apt-get install pptpd

2. Configure your IP

sudo vi /etc/pptpd

(Use nano if you are not familiar with vi/vim)

At the last two bottom lines, pptpd would already have configured localip and remoteip according to your system. If not, you should modify it.

For example, if your server’s IP is 192.168.0.20, then you may configure as follows:

localip 192.168.0.20
remoteip 192.168.0.230-239

It will make pptpd to use server ip address as 192.168.0.20 while vpn clients that access to this server will use remove ip range from 192.168.0.230 – 192.168.0.239. It also means, you will allow only 10 multiple vpn client connections at a time. You can increase it if you want, but make sure remoteip range doesn’t overlap with localip.

3. Configure ppp options

In your /etc/pptpd/conf file, there may be options file location. It probably will be /etc/ppp/pptpd-options. Let’s open it and make sure we have right encryption level.

sudo vi /etc/ppp/pptpd-options

Do not allow pap, chap, and mschap.

refuse-pap
refuse-chap
refuse-mschap

Allow ms-chapv2 (which is more secure) and mppe-128.

require-mschap-v2
require-mpp3-128

I think those are already default option. If so, you don’t need to make any change.

Also, you need to configure DNS.  Check /etc/resolve.conf if your server already have configured DNS. If that address is 22.22.22.22 and 22.22.22.23 configure ms-dns as

ms-dns 22.22.22.22
ms-dns 22.22.22.23

Otherwise you may use Google’s DNS server.

ms-dns 8.8.8.8
ms-dns 8.8.4.4

4. Configure account for user

Lastly, you should configure user account for the VPN connection.

sudo vi /etc/ppp/chap-secrets

And add

testuser pptpd testpassword *

Then you may be able to connect to VPN with ID=testuser PW=testpassword.

Note that if you use special characters like “#” in the password, that will cause trouble. I recommend to use just alphanumeric for your password. Also, make sure your chap-secrets file in unix CRLF format. (I spent couple of hours to find the problem that pptpd didn’t let me log in–it was due to chap-secrets file)

5. Restart pptpd

You can simply

sudo server pptpd start

to start the pptpd server or

sudo server pptpd restart

to restart pptpd.

6. Check what’s going on with syslog

If VPN doesn’t work, you may want to check out what’s going on under the hood. All the message will be recorded through syslog. So

sudo tail -f /var/log/messages

will show you any log associated with pptpd.

I hope this helps whom wants to run VPN server on Ubuntu.

Cheers,

Posted in 프로그램 | Leave a comment

문제로 풀어보는 알고리즘 0.3 생각해보기 풀이 – Ruby version

연구실에서 실험 중에 facebook 에 링크가 하나 올라왔길래 풀어봅니다. ㅎㅎ 자꾸 딴 짓 하면 안되는데…;;

원본 문제는 http://www.insightbook.co.kr/post/3814 에 게제되어 있습니다.

배열 arr[]과 위치 s, t가 있을 때,
arr[s], arr[s+1], … , arr[t-1]을 오른쪽으로 한 칸씩 이동하고,
arr[t]는 arr[s]로 복사하는 것을 ’1만큼 오른쪽으로 회전시켰다’고 한다.

예를 들어 길이가 8인 배열에서 s=2, t=6이면 다음 그림처럼 바뀐다.

길이가 n인 배열의 위치는 0, 1, 2, … , n-1이다.

문제 :
k를 인자로 받아서 k만큼 오른쪽으로 회전시키는 함수를 작성하라.
단, 1만큼 오른쪽으로 이동시키는 과정을 k번 반복해서는 안 된다.

조건 1 : 작성하는 언어에는 제한이 없습니다.
조건 2 : 답안으로 작성하신 글 제목에는 ‘문제로 풀어보는 알고리즘 0.3 생각해보기 풀이’라는 문장이 들어가야 합니다. (저희 블로그에도 트랙백을 걸어주세요.)

(주의: 이 코딩 인터뷰는 인사이트 입사와는 무관합니다. ㅡㅁㅡ /)

shift(array, k)를 어떻게 구현하냐는 것인데요,

일반적으로 생각하기 쉬운 알고리즘은 2가지 정도가 있습니다.

첫째는 array를 하나 더 만들어서 각 element를 새로운 배열의 (element+k) MOD n 위치로 복사하는 방법이 있습니다. 가장 일반적인 방법이지만, 창의적이지는 않지요.

둘째는, 해답이라기 보다도 트릭이겠지만, 위의 (element_k) MOD n 을 함수처럼 제공하는 방법이 있습니다. 즉 shift(array, k, i)를 억세스하면 shift 된 array를 반환시키는 방법이죠. 하지만 이것은 문제에서 요구하는 방법은 아니니까 패스…

스크립팅 언어를 사용하면 코딩량을 줄일 수 있는 다른 괜찮은 트릭이 나오겠지만, 문제에서 코딩량 보다는 O(n) 알고리즘을 어떻게 효율적으로 구현하느냐의 트릭을 요구하는 것 같아서 한 번 reverse 를 3번 구현해서 shift를 구현하는 방법을 사용해 보았습니다. 예전 고등학생 때 올림피아드 준비하면서 알아뒀던 알고리즘인데, 여기서 다시 볼 줄은 몰랐네요. ㅎㅎ

ruby 로 된 답을 한번 제시해봅니다.

#!/usr/bin/ruby

# Reverse the array
def rev(a,s,e)
    for i in 0..(e-s-1)/2 do
        tmp=a[s+i]
        a[s+i]=a[e-i]
        a[e-i]=tmp
    end
end

# Shift the array with size of k with three reverses
def func(a,k)
    rev(a,0,a.length-1)
    rev(a,0,k-1)
    rev(a,k,a.length-1)
end

arr = Array.new
arr = [1, 2, 3, 4, 5, 6]

puts "Original = " + arr.inspect

func(arr,3)

puts "Shifted  = " + arr.inspect

rev()를 3번 이용해서 Shift 시키게 됩니다. rev()는 주어진 array의 주어진 범위 내에 있는 원소들의 위치를 반대 방향으로 만들어주는 함수입니다.

하나씩 뜯어보면

    rev(a,0,a.length-1)

를 실행하면

a = [6, 5, 4, 3, 2, 1]

이 됩니다. 그 상태에서

    rev(a,0,k-1)

를 실행하면

a = [4, 5, 6, 3, 2, 1]

이 되고, 마지막으로

    rev(a,k,a.length-1)

를 실행하면

a = [4, 5, 6, 1, 2, 3]

이 되어서 shift 연산을 완료하게 됩니다.

실제로 shift를 구현할 때 위 방법이 많이 쓰이는지는 모르겠군요. 메모리 가격이 중요했던 예전에는 array 하나로 해결할 수 있는 저런 알고리즘이 각광을 받았는데, 요즘은 뭐… 그냥 알아보기 쉬운 코드가 제일이 아닌가 싶습니다.

array가 정수라고 가정해서 덧셈을 이용한 swap을 하면 tmp 변수도 필요없이 swap 하는 트릭도 있습니다만, 대신 속도가 느려서 요즘은 쓸 일 없겠죠.

Posted in 프로그램 | Leave a comment