게임을 구입할 수 있는 상점들은 여러개 있지만 가장 유명한 곳은 단연 스팀(Steam) 이라고 할 수 있습니다. 이러한 스팀의 경우에는 일반 Windows 뿐 아니라 MacOS 와 Linux 게임도 판매하고 있습니다.
리눅스에서 스팀클라이언트를 실행해서 보다 보면 다음과 같은 내용이 있는 게임이 있습니다.
게임을 Steam Play 를 통해 실행한다고 쓰여져 있습니다.
그렇다면 Steam Play란 무엇인가?
리눅스 사용자라면 Wine 을 들어본 적이 있을것입니다. Wine 은 리눅스에서 윈도우즈 라이브러리인 Win32 를 구현한 것으로 리눅스에서 윈도우즈 실행파일을 실행할 수 있게 해 주는 프로그램입니다.
이 Wine 을 Steam 측에서 수정하여 윈도우용 게임을 리눅스에서 좀 더 원할히 실행할 수 있도록 하는것이 바로 Steam Play 입니다. 스팀에서는 이 프로그램을 Proton 이라고 부르고 있고요. Proton 은 Wine을 해당게임이 더 잘 실행되도록 수정한것으로 소스도 공개되어 있고 자신만의 Proton 을 만들어서 게임을 실행하는데 적용하는것도 가능하다고 FAQ 에 써 있습니다.
하지만 Wine 으로 모든 윈도우 게임이 실행 가능하지 않은것 처럼 Proton도 그렇습니다. 따라서 모든 윈도우 게임이 스팀플레이로 리눅스에서 잘 실행되는 것은 아닙니다.
스팀에서는 스팀플레이로 잘 실행되는 게임을 리눅스 게임쪽에 표시해 주고 위에서처럼 그런 게임들은 스팀플레이로 실행된다고 알려주고 있습니다.
리눅스용 스팀에서는 스팀 플레이에 대한 설정부분이 있습니다.
위 스크린샷에서 보면 두개의 설정이 있습니다.
위의 설정은 스팀플레이로 플레이 가능한 게임을 표시해 주겠냐는 것입니다. 이 게임들은 Steam측에서 플레이 가능여부를 테스트 해 본 게임들이기 때문에 실행에 문제는 거의 없을 것입니다.
아래쪽 빨간색으로 표시해 놓은 곳은 모든 다른 게임들을 스팀플레이로 실행하겠냐는 설정입니다. 이 경우는 스팀에서 실행여부를 테스트 하지 않았거나 실행에 이런저런 문제가 있는 게임들이기 때문에 게임들이 잘 실행될지는 알 수 없습니다. 그냥 한번 시도해 보는 거죠. ^^;
제 경우는 아래쪽 설정을 사용해 보진 않았습니다. 하지만 리눅스에서 실행해 보고 싶은 게임이 있다면 한번 시도해 보는 것도 손해 볼 건 없겠지요.
>
스팀 플레이용 게임을 설치해 보면.....
이와 같이 Proton 을 함께 설치합니다. 게임이 77.4MB 인데 Proton이 354.3MB 네요. 게임보다 용량이 더 큽니다. 앞에서도 이야기 했듯이 Wine 은 Win32 라이브러리를 구현한 것이니 용량이 큰것도 이해가 갑니다.
설치가 끝나고 게임을 실행해 보면 위와 같이 Steam Play 로 게임을 실행한다고 알려줍니다.
실행해보니 잘 됩니다. ^^;
>
스팀 플레이로 실행되는 게임이(스팀측에서 테스트 완료한 게임) 아직은 그렇게 많지 않은 것 같습니다. 하지만 점점 늘어난다면 리눅스에서 즐길 수 있는 게임이 늘어나게 되니 어찌되었던 좋은일이 아닐 수 없습니다.
스카이림을 안한지가 좀 되었는데 이번에 한번 다시 시작해 봤습니다. 오랜만에 해도 할만하네요.
컴퓨터를 아직 업그레이드 하지 않아서 SE 는 좀 버거워 LE 로 하고 있습니다. 컴퓨터 업그레이드 할려고만 하면 무슨 일이든 터져 버리네요. ㅡㅡ; 사실 게임외에 특별히 불편한 점이 없어서 결국 업그레이드는 느긋하게 하기로....아직 안한 게임도 많고....
>
제가 스카이림 모드에 대한 글을 몇번 블로그에 썼었는데 이 모드를 여태 몰랐다는게 좀 의아 할 정도로 좋은 모드가 있더군요. 바로 Haven Bag 입니다. 이 Bag 안에 왠만한게 다 있습니다. 이 모드가 있으면 집이 크게 필요가 없습니다.
치트를 쳐서 바깥에서 본 haven bag 입니다. 정말로 Bag 입니다. 실제로 내부 공간은 넓지 않지만 이 안에 마법부여대, 도가니, 모루, 연금술대등 있을건 다 있습니다.
게다가 상자에 물건을 보관할 수 있어서 정말 편합니다. 스카이림의 무게제한은 다니다 보면 좀 너무 부족 하다는 생각이 들죠. 그래서 많은 분들은 치트로 무게 제한을 높여서 사용하기도 합니다. 하지만 이 모드가 있으면 그냥 Bag 에 들어가서 상자에 물건을 저장하고 나오면 됩니다.
>
내부의 모습입니다. 작지만 여기에서 모든 제작을 다 할 수 있습니다. 뒤에는 침대도 있습니다.
>
명칭이 다 잘 생각이 안나서 그냥 스크린샷으로....도가니도 축소되어 존재하고 있습니다.
>
왼쪽엔 이런것들이....
>
이 Bag의 사용법은 간단합니다. 모드를 적용하면 위의 스크린샷처럼 방어구에 Haven Bag 이 나타납니다. 방어구를 장비하는 것처럼 Haven Bag 을 선택하면 바로 이 Bag 안으로 들어 오게 됩니다. 시간과 장소에 구애를 받지 않고 말이죠. ^^;
그런데 저 같은 경우 처음에 이 Bag 에서 나가는 방법을 몰라 좀 헤맸었는데요. 오른쪽 설명에 보면 들어가고 나갈때 쓴다고 되어있습니다. 즉 이 Bag 에서 나가려면 방어구 해제 하듯이 한번 다시 선택해 주면 되는 거더군요.
>
이 모드를 쓰는 이유는 물론 편한점도 있지만 스카이림에 존재하는 버그인 세이브 파일 문제를 해결하기 위한 용도로 쓰기도 합니다. 세이브 하기전에 이 Bag 에 들어와서 세이브를 하면 됩니다.
이 Bag 안은 크기도 작고 별다른게 없어서 세이브 파일 문제(로딩중 CTD)를 해결하는데 도움이 된다는 이야기가 있습니다. 세이브 파일 정리도 된다고 하는 이야기도 있는데 제가 직접 확인할 방법은 없네요.
단점은 세이브 파일 이름이 모두 Haven Bag 으로 나와서 어디서 세이브 한건지 구분이 안된다는 건데...이것도 무슨 모드로 해결 할 수 있다고 하지만 저는 딱히 필요가 없어서 사용하지는 않고 있습니다.
>
저는 이 모드를 LE 에서 쓰고 있지만 찾아보니 SE 도 있더군요. SE 용은 써본적이 없지만 SE 를 플레이 하는 분들을 위해 같이 링크를 남겨둡니다.
스카이림이 나온지도 오래된데다. 사실 이 모드도 엄청난 뒷북이라 딱히 정보성이라기 보단 제 자신을 위한 기록으로 남겨 둡니다.
기록이라고 하니까 하나 생각나는데 최근 플레이 하다가 다른 공간으로 이동할때(로딩이 있는 경우) CTD 가 자주 발생해서 이런저런 모드들을 지우고 배열하고 하다 보니, 마법을 좀 편하게 쓰려고 설치해 놓은 Smart Cast 라는 모드를 지우니 CTD 가 좀 적어 지는것 같았습니다. 뭐....확신은 없고 좀더 써봐야 겠지만 그냥 기록으로 남겨둡니다.
발더스 게이트는 정말 굉장히 오래된 게임입니다. 이제는 고전 명작의 반열에 들어 가는 작품이죠. 최근에 리메이크 되어 발매 되기도 했습니다. 물론 제가 플레이 하고 있는건 리메이크된 발더스 게이트 입니다.
개인적으로 이것저것 대부분 장르를 가리지 않고 게임을 플레이 하는 편이지만 그럼에도 선뜻 손이 안가는 장르가 서양 RPG 입니다(보통 서양식 RPG를 그냥 RPG라고 하고 일본식 RPG를 JRPG라고 따로 말하기도 합니다만......). 복잡하기도 하지만 시간도 많이 필요하고 상당한 언어실력(?)을 필요로 하기도 하기 때문입니다. 상당한 언어실력이 필요한 게임임에도 사실 국내에선 크게 인기 없는 장르라(세계적으로도 이젠 좀 사양에 들어간 장르이기도 합니다만...) 한글화가 안되어 있는 경우가 많아서 제대로 즐기기 어렵기도 하고요.
그래도 요즘은 예전과는 달리 유저들이 직접 한글화 하는 경우도 있고, 게임 회사에서 직접 한글화 해 주는 경우도 있어서 예전에 비하면 좀 낫기는 합니다.
발더스 게이트의 경우는 1편과 2편, 총 두편이 있는데 1편만 한글이었지만 최근에는 두편 모두 제작사에서 한글을 포함해서 배포되고 있습니다. 따라서 게임을 즐기는데 언어의 장벽은 없는 편입니다.
하지만 이 게임은 D&D 룰을 따르는 게임들이라(테이블에서 직접 주사위를 굴리며 즐기는 RPG) 다른 게임들과는 좀 다른면들이 많이 있어 이러한 테이블 RPG 에 익숙하지 않는 상당수 국내 유저들은 즐기기 어려운 게임이기도 합니다. 저역시 여러 RPG 를 했다고 생각하는데(서양 RPG는 대부분 엔딩을 못봤지만...) D&D 룰 게임은 처음이라....
게임을 하고 있는 저도 아직 룰을 다 파악하지 않고 하고 있는 중입니다만...위 스크린샷으로 간단하게 예를 보여드리자면...
보시면 피해 부분이 "1d8" 이라고 되어 있습니다. 처음엔 이걸보고 뭔가 오타가 아닌가 생각했었습니다. ^^;
이건 이런거라고 합니다. 8 까지 새겨진 주사위를 1번 굴렸을때 나오는 수. 즉 이 칼로 공격했을 경우 데미지가 굴린 주사위에 따라 1~8 까지 나오게 됩니다. 데미지 계산이야 컴퓨터가 내부에서 열심히 주사위를 굴려서 해주겠지만 무기를 선택할때 저 내용 정도는 알아볼 수 있어야죠. 참고로..... 갑옷의 경우 숫자가 적을수록 방어력이 높은겁니다. ㅡㅡ;
마법이 제일 생소했는데....마법은 MP 같은걸 사용하는게 아니라 일정한 갯수의 마법을 암기 하고 있다가 사용하는 방식입니다.
암기할 마법을 미리 선택해 놓고 휴식을 취하면(노숙을 하던 여관에서 자던) 마법이 암기가 되고 전투에서 사용할 수 있도록 되어 있습니다. 초기에는 암기할 수 있는 마법의 수가 적어서 마법을 몇번 쓰면 휴식을 취할때 까지 마법을 사용할 수 없는 경우가 많았습니다. 이 마법을 조합하는거에 따라 전략적 전투가 가능하다고 합니다만....초기에는 암기할 수 있는 마법의 수가 적어서 유용하게 쓰기는 좀 어렵습니다. 적을 움직이지 못하게 묶어 놓거나 공포에 질리게 하는 건 일단은 쓸만하다고 생각은 됩니다만....마법에 대해선 좀 더 플레이 해 봐야 알 수 있을 것 같습니다.
이것 저것 설명하자면 길고 위에서도 이야기 했듯이 저도 모든 룰을 파악하지는 않고 게임을 하고 있습니다. 한마디로 게임을 제대로 즐기기 위한 사전지식이 조금은 필요한 게임입니다.
>
게임은 전체맵이 하나로 되어 있는게 아니고요. 위 스크린샷에서 처럼 특정 지역으로 가면 그 지역맵이 열리는 식입니다.
한 맵에서 끝까지 이동해서 맵 밖으로 나오면 새로운 지역이 나타나고....그런 식으로 진행됩니다. 덕분에 지역에서 지역으로 이동할땐 위 지도에서 클릭해서 이동이 가능하기 때문에 빠른 이동이 가능합니다. 가끔은 이동중 적의 습격을 받아 전투를 벌이기도 합니다.
>
사실 이 게임을 하는데 가장 피곤한건 바로 멍청한 동료 AI 입니다.
제가 플레이 하고 있는 게임은 분명 리메이크 된 게임임에도 동료들이 현명하게 이동을 못합니다. 탁트인곳은 그나마 좀 낫지만 위 스크린샷 에서 처럼 좁은 던전에선 문제가 많습니다. 스샷에 보면 캐릭터들이 이동하고 있는데 아래에 있는 캐릭터들은 어디에 걸렸는지 따라오지 않고 계속 저 자리에 서있습니다. 이동중에 다른캐릭터가 길막하면 엉뚱한 곳으로 돌아 오는 경우도 있고...ㅡㅡ; 이런 경우 한명씩 클릭해서 뭔가 이동에 장애가 되는 상황을 직접 해결해 줘야 합니다.
다른건 뭐....그냥 옛날 게임이니 그러려니 하겠는데 그래도 리메이크면 위에처럼 사소한(?)것 정도는 좀 해결해 줬으면 좋았지 않았을까 싶습니다.
>
솔직히 이 게임은, 요즘의 스마트폰 게임들을 주로 즐기는 사람들에겐 안맞는 게임입니다. 캐릭터들도 별로 안예쁘고 이동도 불편하고 마법 사용도 불편하고...
뭣보다 요즘은 스카이림 조차도 퀘스트 해결하려면 어디어디로 가라고 맵에서 다 알려주는 시대인데 당연히 이 게임은 그런 친절함은 없습니다. 뭐....예전에 웨이스트랜드 때도 한 이야기지만...요즘 게임이 좀 지나치게 친절한 감이 없지 않긴 하지만요.
인터넷에 이 게임을 검색해보면, 요즘 게임을 주로 즐기는 사람들은 이 게임을 이해하지 못하는 경우도 많이 봅니다. 뭐...확실히 요즘게임에 비하면 구식이라고 생각할만한 게임이기는 합니다. 하지만 구식이라기 보단 게임의 "룰" 이 다르다고 보는게 맞다고 봅니다.
저 "룰"에 재미를 느끼면 좋아하게 되는거고 그렇지 않으면 그냥 재미없는 게임인거죠.
일단은 한글이라 스토리를 따라 진행하기에 좋고 전투가 너무 어렵다 싶으면 가벼운 마음으로 전투 난이도를 낮추고 스토리를 따라 즐기면 되게 되어 있어서 D&D 게임을 안해본 분이라면 경험해 보기는 괜찮은것 같습니다. 나중에 D&D 게임의 매력을 알게 되면 푹 빠지게 될지도 모르죠. ^^;
구성품은 보더랜드 2 와 보더랜드 프리시퀄의 모든 DLC 를 포함한 풀셋입니다. 가격은 고작 6620원...
뭐....원래 할인폭이 큰 제품이긴 한데 3편이 곧 나올거라 그런지 헐값에 파는군요.
스팀의 경우 이런 묶음 상품의 경우에는 기존에 구입한 상품이 있으면 제외해서 구입할 수 있습니다.
제 경우에 보더랜드2 GOTY 와 프리시퀄 본편이 있기때문에 제가 가진 제품들을 제외하면
3510원 이더군요. 그래서 샀습니다. ^^;
뭐....사실 제가 게임을 깊게 파는 스타일은 아니라 보더랜드 2의 경우 GOTY 만으로 충분했어서 그것때문에 산건 아니고요. 프리시퀄의 Claptastic Voyage DLC 가 괜찮다는 이야기가 있어서 그거 하나 해보려고 샀습니다. 3510원 이면 뭐.....살만하쟎아요.
보더랜드 1 리마스터도 본편엔딩은 봤으니 DLC 한번씩 돌아보고 그 다음에 프리시퀄 DLC 한번 돌아보면 될 것 같습니다.
97%세일인데 더이상의 세일은.......없겠죠? (94% 세일때도 그 이상은 없겠지 하긴 했었지만.......)
두 스프라이트가 충돌하는지를 검사해서 충돌하면 bool 값 True 를 리턴합니다. 사용시 주의할 점은(사실 당연한 겁니다만...) 스프라이트의 rect 에 제대로된 값을 넣어줘야 제대로 작동한다는 점 입니다. rect.x ,rect.y 혹은 rect.center 에 제대로된 스프라이트의 위치값이 있어야 제대로 작동합니다.
위의 스크린샷을 보면 실제로 두개의 스프라이트는 충돌하지 않았습니다. 하지만 사각형체크 방법은 사각형 형태로 충돌을 체크하기 때문에 위와 같은 상황도 충돌로 판정합니다.
원의 형태로 충돌을 체크 합니다. 위의 이미지와 같이 충돌 체크할 부분이 원인 경우 이 방법을 사용하면 됩니다.
제대로 작동시키기 위해선 sprite 객체에 radius(원의 반지름) 값을 넣어줘야 합니다.
위에 b1,b2 를 보면 radius 값을 넣어준걸 보실 수 있습니다.
3. Mask 체크
위의 두가지 방법은 사각형과 원의 특정형태로만 충돌체크가 됩니다. 하지만 스프라이트의 경우 더 다양한 모양이 있을 수 있습니다. 즉 특정 도형의 형태가 아니라 스프라이트의 이미지와 이미지가 직접 충돌하였을때(투명한 알파영역 제외), 이미지와 이미지가 서로 겹쳤을때 충돌로 판정해 줍니다.
이미지에 특별히 투명한 부분이 없더라도 위와 같이 convert_alpha() 로 해 주지 않으면 mask 체크가 제대로 작동하지 않더군요. 이것때문에 좀 헤맸습니다. ^^;
4. SpriteGroup 과 Sprite 의 충돌체크
pic = []
pic.append(pygame.image.load("images/bb.png").convert_alpha())
pic.append(pygame.image.load("images/gb.png").convert_alpha())
pic.append(pygame.image.load("images/pb.png").convert_alpha())
pic.append(pygame.image.load("images/rb.png").convert_alpha())
pic.append(pygame.image.load("images/yb.png").convert_alpha())
block_list = pygame.sprite.Group()
for j in range(0,5):
for i in range(1,9):
block = Block(pic[random.randrange(5)])
block.rect.x = i * 91 - 50
block.rect.y = 50 + 37*j
block.mask = pygame.mask.from_surface(block.image)
block_list.add(block)
ball_pic = pygame.image.load("images/ball.png").convert_alpha()
ball_pic = pygame.transform.scale(ball_pic,(15,15))
ball = Block(ball_pic)
ball.rect.center = (410,680)
ball.mask = pygame.mask.from_surface(ball.image)
스프라이트 ball 과 스프라이트그룹 block_list 를 위와 같이 만들어 줬습니다.
hit_list = pygame.sprite.spritecollide(ball,block_list,True,pygame.sprite.collide_mask)
for h in hit_list:
score +=1
위와 같이 충돌체크를 하면 됩니다.
리턴값 hit_list 는 충돌한 스프라이트들의 리스트입니다. 각 인자들을 설명하자면... 첫번째가 스프라이트, 두번째가 스프라이트 그룹, 세번째는 충돌한 스프라이트를 스프라이트 그룹에서 제거할것인지, 마지막이 충돌을 체크하는 방법입니다. 위의 예는 mask 를 이용한 체크 방법이고 collide_rect 나 collide_circle 도 가능합니다.
이 테스트 프로그램은 공을 마우스로 마음대로 움직일수 있게 했습니다. 마우스로 공을 이동시켜 블럭과 충돌시키면 해당 블럭은 스프라이트 그룹에서 삭제되기 때문에 위와 같이 공과 충돌된 블럭은 사라지게 됩니다.
>
모든 충돌체크를 다 설명하지는 않았지만, 나머지는 이 정도만 이해하면 이해하기 어렵지 않을거라 생각합니다.