quasarboy의 등록된 링크

 quasarboy로 등록된 네이버 블로그 포스트 수는 46건입니다.

[엑셀/VBA] 매개변수의 전달 방식 [내부링크]

VBA에서 매개변수를 전달하는 방식은 주소만 전달하는 ByRef 방식과 값 자체를 전달하는 ByVal 방식 2가지가 존재합니다. ByRef 방식은 매개변수를 전달할 때 참조된 값만 전달합니다. 매개변수를 전달받은 쪽에서는 전달받은 값을 이리저리 고쳐도 진짜 값이 수정되지 않도록 값이 보호됩니다. ByVal 방식은 매개변수를 전달할 때 값 자체를 전달합니다. 매개변수를 전달받은 쪽에서는 전달받은 값을 실제로 수정할 수 있습니다. 하지만 byVal 방식은 byRef 방식보다 느리게 동작합니다. Sub Test() Dim startTime As Double Dim endTIme As Double Dim elapsedTime As Double startTime = Timer For i = 0 To 100000000 Test_ByVal (i) '이부분을 교체 Next i endTIme = Timer elapsedTime = Round(endTIme - startTime, 3) MsgBox "

[게임 개발 번역] 게임 개발을 위한 기계학습 활용 [내부링크]

오역, 의역이 많을 수 있습니다. 제보 및 지적 환영합니다. 원문 : Leveraging Machine Learning for Game Development 수년에 걸쳐 온라인 멀티 플레이어 게임은 폭발적인 인기를 얻으며 전 세계 수백만 명의 플레이어들을 사로잡았습니다. 이 인기로 인해 게임 디자이너에 대한 수요도 기하급수적으로 증가하게 됩니다. 게임 플레이어들이 잘 만들어지고 균형 잡힌 게임을 기대하게 되었기 때문이죠. 하나의 전략이 다른 전략들을 모두 이겨버리는 게임을 하는 건 재미가 없으니까요. 게임 디자이너는 긍정적인 플레이 경험을 만들기 위해 게임의 밸런스를 반복적으로 조정합니다. 테스터와 수천 번에 걸친 테스트를 진행하고, 피드백을 포함해 게임을 다시 디자인합니다. 그리고 테스터와 게임 디자이너 모두가 만족할 때까지 1번과 2번 과정을 반복합니다. 이 과정은 시간도 많이 걸릴뿐더러 완벽하지도 않습니다. 게임이 복잡해질수록 작은 결함을 알아차리기 어려워지죠. 게임 속에는 다

[게임 디자인 탐구] 챔피언 유사성 시각화 [내부링크]

리그 오브 레전드에는 현재 무려 160여 명의 챔피언이 존재하고, 1년에도 여러 챔피언들이 출시됩니다. 게임을 더 재미있게 만들기 위해서는 챔피언들이 각자 독특한 개성을 가져야 하는데요. 수많은 챔피언 사이에서 플레이 경험이 겹치지 않는 챔피언을 만들기란 꽤나 어려워 보입니다. 유저들에게 새로운 경험을 줄 수 있는 챔피언을 디자인하려면 어떻게 해야 할까요? 유사한 챔피언끼리 시각적으로 모아본 뒤 기존 챔피언과 비슷하지 않은 위치에 있도록 하는 챔피언을 만들면 새로운 경험을 줄 수 있지 않을까요? 이번 글에서는 챔피언의 유사성을 시각화하고, 그 결과를 확인해 보는 시간을 가져보도록 하겠습니다. 접근 방식은 다음 글을 참고하였습니다. Understanding Champion Similarity: Part I - Doran's Lab Learn Tools About Contact Understanding Champion Similarity: Part I Matthew S. — August

[게임 리뷰] 사이버펑크 2077 [내부링크]

말도 많고 탈도 많았던 게임. 사이버펑크 세계관을 바탕으로 한 오픈 월드 액션 RPG 게임 사이버펑크 2077입니다. 사이버펑크 세계관의 몰입 Previous image Next image 게임은 가상의 거대 도시, 나이트 시티에서 진행됩니다. 이 나이트 시티는 꽤나 막장인데요. 거리에는 용병과 갱단들이 싸우고 골목에는 노숙자나 약쟁이들이 돌아다니며 비리로 뒤덮인 경찰들이 있습니다. 강력한 권력을 가진 거대 기업도 있죠. 게임은 이런 세계관을 적극적으로 보여주고 있습니다. 거리에서는 교통사고가 일어나고, 갱들과 갱들, 갱들과 경찰들이 총격전을 벌이며, 시민들 사이에서도 자연스러운 폭력이 일어나는 것을 볼 수 있었습니다. 플레이어가 개입하지 않았음에도 NPC들이 나이트 시티 시민스러운 모습을 보여주니 디스토피아적인 세계관에 더욱 몰입할 수 있었습니다. 세계관을 충실히 표현하는 NPC의 행동 외에도 연출적인 면에서도 높은 몰입감을 느낄 수 있었습니다. 특히 차에 치였을 때가 그랬는데요

[파이썬] Riot API를 통한 챔피언 유사성 시각화 [내부링크]

챔피언 유사성 시각화 글의 소스 코드입니다. 데이터 수집부터 데이터 가공, 시각화까지의 과정이 공개되어 있습니다. 아래의 GitHub 사이트를 참고하시길 바랍니다. GitHub - qusrby/Public_ChampionGroupAnalysis Contribute to qusrby/Public_ChampionGroupAnalysis development by creating an account on GitHub. github.com 궁금한 점은 댓글로 남겨주세요.

[게임 디자인 탐구] 그래프 형태에 따른 경험의 변화 [내부링크]

게임 속에는 공격력이나 치명타 확률, 마나같은 스탯에서부터 시작해, 경험치, 골드 같은 일종의 재화, 몬스터 공격력이나 체력 등 플레이어가 체감하는 난이도 수준까지 다양한 값들이 존재합니다. 그리고 이 값들은 변화합니다. 장비 아이템은 강화를 통해 레벨을 올릴 때마다 공격력이 증가하고, 그에 맞춰 골드 소모량도 증가합니다. 또한 몬스터의 레벨이 높아지면 최대 체력과 공격력이 증가하게 되고, 게임을 진행할수록 플레이어가 느끼는 난이도 수준도 달라지게 되죠. 게임을 많이 즐겨봤다면 이렇게 변화하는 값들은 항상 특정한 패턴을 보여주며 변화하고 있음을 알 수 있습니다. 오늘은 게임에 등장하는 그래프들의 성질과 형태를 살펴보고, 형태가 어떤 경험을 제공하는지 확인해 보도록 하겠습니다. 게임 속 그래프 확대해보기 그래프의 형태를 살펴보기 앞서, 게임 속 그래프는 어떤 성질을 가지고 있는지 확인해 봅시다. 그래프의 형태를 이해하는데 도움이 될 것입니다. 게임 속의 값은 연속적이지 않습니다. 게

[엑셀/VBA] 로지스틱 함수 [내부링크]

LOGISTIC_BASIC(x값) LOGISTIC_GENERAL(x값, x의 최대값, y의 최대값, 기울기) 이 함수는 시그모이드(Sigmoid) 함수의 한 종류인 기본형 로지스틱 함수와 일반형 로지스틱 함수값을 반환하는 함수입니다. 사용 예시 다음은 일반형 로지스틱 함수의 사용 예시입니다. x값 범위 기울기 결과 1~50 0.15 1~50 0.075 기울기값을 변경함에 따라 그래프 모양이 달라지는 것을 볼 수 있습니다. 자세한 예제는 첨부 파일을 참고하시길 바랍니다. 첨부파일 로지스틱 함수.xlsm 파일 다운로드 Function LOGISTIC_BASIC(x As Double) LOGISTIC_BASIC = 1 / (1 + Exp(-x)) End Function Function LOGISTIC_GENERAL(x As Double, max As Double, L As Double, K As Double) LOGISTIC_GENERAL = L / (1 + Exp(-K * (x - (m

[게임 리뷰] 역전재판 123 나루호도 셀렉션 [내부링크]

나루호도 류이치가 주인공으로 등장하는 역전재판 123 나루호도 셀렉션입니다. 역전재판 시리즈는 어릴 때 닌텐도 DS로 해봤는데 중간에 어려워서 그만뒀던 기억이 나네요. 이번에는 닌텐도 스위치로 플레이해 봤습니다. 에피소드는 매번 새롭고 독특한 사건으로 시작됩니다. 선량해 보이는 피고인이 유치장에 잡혀오고, 나루호도 류이치는 그들의 변호를 맡습니다. 이후 개성 있는 등장인물들을 만나 단서를 모으고 이리저리 돌아다니며 증거를 수집하는 조사 파트를 진행하고, 법정에 들어서서 재판 파트를 진행하게 됩니다. 답은 정해져있고 너는 답만 하면 돼 조사 파트든, 재판 파트든, 게임은 등장인물에게 무언가를 제시하는 것으로 진행됩니다. 등장인물들은 어떠한 사실을 무의식적으로 모두 이야기해 주지 않기도 하고 의도적으로 정보를 숨기기도 하기 때문에 이들에게 정보를 이끌어내려면 가지고 있는 증거 중에서 적절한 증거를 선택해 제시해야 합니다. 이 과정은 어떤 증거를 제시해야 할지 명확하게 알고 있다면 즐거

[게임 디자인 탐구] 유사 무작위 분포 [내부링크]

우리는 게임을 하면서 확률을 자주 만납니다. 대표적으로 공격이 치명타가 될 확률인 치명타 확률, 상대방의 공격을 회피할 확률인 회피 확률, 강화가 성공할 강화 성공 확률 등이 있죠. 하지만 엄청난 행운이 찾아와 낮은 확률이 연속해서 성공할 수도 있고 반대로 엄청난 불운이 찾아와 높은 확률이 연속해서 실패할 수도 있습니다. 어떤 사람은 ‘운이 더럽게 안 좋은 날이구나’ 하고 넘길 수 있겠지만, 아주 작은 요소로 승패가 갈리는 프로 경기에서는 엄청난 문제로 이어질 수도 있습니다. 이렇게 극단적인 상황이 덜 발생하게 하려면 어떻게 해야 할까요? 유사 무작위 분포의 탄생 우리의 캐릭터가 30%의 치명타 확률을 가지고 있다고 가정해 봅시다. 그렇다면 우리는 3~4번 정도 공격하면 그중 한 번은 치명타가 발동하리라 기대하게 됩니다. (도박사의 오류이긴 하지만 기대는 할 수 있잖아요.) 하지만 우리가 기대하는 상황은 항상 일어나지 않습니다. 무수히 많은 횟수로 공격하면 치명타 발동률은 30%에

[게임 리뷰] 라쿠나 [내부링크]

라쿠나는 SF 배경의 추리 어드벤처 게임입니다. 플레이어는 형사가 되어 한 정치인의 암살 사건을 추적하게 됩니다. 장점은 살리고, 단점은 보완하다 좋은 추리 디자인은 수집한 정보를 바탕으로 플레이어 스스로가 추리 문제에 대해 고민하게 만듭니다. 라쿠나는 이 규칙을 성실히 지키려고 노력한 것 같았습니다. 게임을 진행하면서 수집되는 뉴스, 이메일, 단서에 담긴 의미를 연관 지어 생각해 내야만 답을 찾아내도록 디자인되어 있었습니다. 플레이어는 이런 정보들을 살펴보면서 자신만의 사고를 통해 문제의 답을 고민하게 됩니다. 또한 추리 문제에 대한 제출 방식도 변별력을 가지도록 만들어져 있었습니다. 오브라 딘 호의 귀환에서도 사용된 방식인데, 경우의 수를 조합한 답을 제출하게 만들어 플레이어가 답에 대해 완벽히 이해했는지를 확인합니다. 라쿠나는 여기에 더해 답을 한 번밖에 제출할 수 없도록 하여 정말 신중하고 진정성 있는 추리를 하도록 유도시켰습니다. 라쿠나는 장점을 강화한 점 외에도 단점을

[게임 디자인 탐구] 추리 게임의 구조 [내부링크]

최근 오브라 딘 호의 귀환, 역전재판 123 나루호도 셀렉션, 라쿠나 등 여러 추리 게임들을 플레이하면서 게임 속 추리가 어떻게 동작하는지 궁금해지기 시작했습니다. 추리 게임은 어떤 구조로 진행되고, 좋은 추리 게임들은 어떻게 동작할까요? 단서 조사 모든 추리 게임은 숨겨진 단서를 찾아내는 과정으로 시작됩니다. 본격적으로 단서를 조사하는 과정을 살펴보기 전에 단서를 찾기 위해 이동하는 과정을 살펴보겠습니다. 이동 페인스크릭 킬링즈에서는 배경이 되는 마을을 자유롭게 이동할 수 있다. 하지만 너무 높은 자유도는 플레이어를 헤매게 만들 수 있다. 추리 게임은 기본적으로 어드벤처 장르의 특성을 지닙니다. 이곳저곳을 돌아다녀야 하죠. 하지만 사건의 배경이 되는 공간은 재미있고 즐거운 공간이 아닙니다. 대게 살인이나 실종같이 무거운 주제를 가지고 있으니까요. 다른 어드벤처 게임은 점프, 담 넘기 같은 이동기를 사용하게 하거나 몬스터를 배치해 전투하게 하는 등 이동하는 과정을 즐겁게 만들 수

[게임 리뷰] 어 쇼트 하이크 [내부링크]

어 쇼트 하이크는 감성 있는 도트 그래픽이 특징인 힐링 어드벤처 게임입니다. 주인공 클레어와 이모는 함께 호크 피크 주립 공원으로 여름 휴가를 떠납니다. 클레어는 엄마의 전화를 기다리지만 전파가 잘 잡히지 않았고, 전화를 걸기 위해 전파가 잡히는 호크 피크로 올라가게 됩니다. 다양한 할 거리들 처음에는 호크 피크로 가기 위해 맵을 이곳저곳 둘러봤습니다. 맵을 둘러보면서 그냥 워킹 시뮬레이션 느낌의 게임인가 하고 생각했습니다. 그러나 게임을 하면 할수록 방대한 맵 안에 다양한 할 거리가 존재했습니다. 높은 곳으로 올라 활강하거나 땅을 파서 보물을 찾고, 낚시를 하거나 보트를 타기도 하는 등 탐험하는 재미가 있었습니다. 활강할 때는 젤다의 전설 브레스 오브 더 와일드가, 땅을 파서 보물을 찾고 낚시를 할 때는 NDS 동물의 숲이 떠올랐습니다. 힐링되는 대화들 맵을 탐험하다 보면 여러 동물 친구들을 만날 수 있었는데요. 동물 친구들은 저마다 고민이나 사연이 있었습니다. 그런데 나오는

[게임 디자인 탐구] 숨겨진 성취감의 비밀 [내부링크]

누군가 게임과 도박의 차이점을 묻는다면 카지노의 주인은 플레이어가 아슬아슬하게 실패하길 바라는 반면, 게임 디자이너는 플레이어가 아슬아슬하게 성공하길 바란다고 답할 수 있습니다. 플레이어는 게임에서 가까스로 성공했을 때 가장 짜릿한 감정을 느낍니다. 그리고 게임 디자이너는 이런 경험을 모든 플레이어에게 일관적으로 주고 싶어 합니다. 하지만 모든 플레이어의 능력은 동일하지 않습니다. 시간, 거리에 대해 이해하는 정도가 다르고 신체의 반응속도도 다릅니다. 대부분의 플레이어에게 가까스로 성공했다는 경험을 주려면 어떻게 해야 할까요? 이번에는 플레이어들이 아슬아슬하게 성공할 수 있도록 사용된 게임 디자인의 비밀에 대해 알아보겠습니다. 현실보다 과장하기 먼저 현실보다 과장해서 보여줌으로써 성취감을 강화하는 방법이 있습니다. 미니 메트로는 승객들이 원활하게 이동할 수 있도록 선로를 관리하는 게임인데요. 하나의 역에 많은 승객들이 일정 시간 머무르게 되면 패배하게 됩니다. 이때 패배까지 남은

[게임 디자인 탐구] 나선형 계단의 진행 방향 [내부링크]

젤다의 전설 : 티어스 오브 더 킹덤을 플레이하던 도중 리토의 마을 계단을 올라가다가 문득 그런 생각이 들었습니다. 이 계단은 왜 시계 방향이 아니라 반시계 방향으로 올라가게 만든 걸까요? 반시계 방향으로 올라가야만 하는 이유가 있는 걸까요? 컨트롤러의 특성 게임은 소프트웨어이지만, 하드웨어인 컨트롤러로 조작합니다. 따라서 컨트롤러가 게임 플레이에 영향을 주게 되죠. 닌텐도 스위치의 위치 이동 스틱은 좌측에, 시점 이동 스틱은 우측에 위치해있는데요. 일반적인 방식으로 패드를 잡은 상태에서 반시계 방향으로 이동하려면 왼손의 엄지손가락을 오른쪽으로, 오른손의 엄지손가락을 왼쪽으로 밀게 됩니다. 스틱을 당기는 움직임보다 미는 움직임이 더 편하다는 점을 생각하면, 플레이어는 스틱을 안쪽으로 밀게 만드는 반시계 방향으로 이동할 때 더 편하다고 느끼게 됩니다. 총을 쏘는 슈팅 장르에는 숄더 피킹이라는 단어가 있습니다. 고개나 몸을 내밀어 적을 슬쩍 보는 행위를 말하는데요. WASD 이동 체계

[게임 리뷰] 더 위트니스 [내부링크]

브레이드의 개발자 조나단 블로우의 작품, 더 위트니스입니다. 아름다운 섬 한가운데에 놓여져 퍼즐을 푸는 어드벤처 게임입니다. 관찰을 통한 풀이 더 위트니스는 퍼즐을 풀고 다음 퍼즐로 이동해 퍼즐을 푸는 것으로 게임이 진행됩니다. 더 위트니스의 퍼즐의 풀이 조건은 간단한데요. 길을 한 번만 지나 시작점에서 끝점으로 점을 이어나가면 퍼즐을 풀 수 있습니다. 언뜻 보면 쉬워 보이는 이 규칙은 다른 규칙들과 함께 수많은 퍼즐을 만들어냅니다. 퍼즐 게임의 재미는 내가 예상한 대로 행동한 후 그 예상이 들어맞았을 때의 지적 쾌감으로부터 옵니다. 더 위트니스 안의 퍼즐들은 이런 부분들이 치밀하게 디자인되어 있습니다. 흥미로운 점은 퍼즐 안의 규칙을 잘 알아야 할 뿐만 아니라 주변 환경도 잘 관찰해야 한다는 겁니다. 일반적으로 풀 수 없는 퍼즐들은 항상 주위에 있는 힌트가 배치되어 있습니다. 퍼즐이 원하는 답의 방향을 이해하고 주변에 있는 환경 요소들을 관찰하다 보면 어느새 자연스럽게 퍼즐의 답

[게임 리뷰] 수프라랜드 [내부링크]

수프라랜드는 1인칭 메트로배니아 게임입니다. 개발자가 포탈, 메트로이드, 젤다에서 많은 영감을 받았다고 합니다. 빨간 나라의 물 부족 문제를 주인공이 해결하는 스토리를 가지고 있습니다. 제한 없는 지나친 자유 수프라랜드는 메트로배니아 게임이지만 이동의 자유를 제한하지 않고 있습니다. 보통 메트로배니아 게임은 능력을 얻지 못했다면 다른 지역으로 이동할 수 없도록 제한합니다. 그러나 수프라랜드는 이 제한을 어느 정도 허용한 것처럼 보였습니다. 보통이라면 트리플 점프를 얻어야만 갈 수 있는 곳도 다른 루트로 가면 더블 점프를 이용해 갈 수 있었죠. 원래는 크리스탈을 염색한 후 옆에 꽂아 문을 열어야 하지만 이동의 제한이 없다 보니 왼쪽의 발판을 딛고 그냥 성벽을 넘어갈 수 있었다. 처음엔 이렇게 가는 게 정상적인 플레이인 줄 알았다. 이렇게 능력을 얻지 않아도 진행할 수 있다고 느끼다 보니 잘못된 방향을 옳은 방향이라고 착각하는 경우가 많이 생겼습니다. 폐쇄된 공간에서의 퍼즐은 선택지가

[게임 디자인 탐구] 3D 게임의 적, 3D 멀미 [내부링크]

차나 배를 탈 때면 속이 울렁거리고 어지러운 멀미를 느끼는 경우가 있습니다. 그런데 3D 게임을 할 때에도 동일한 증상이 생기곤 합니다. 이를 3D 멀미라고 합니다. 멀미의 원인은 과학적으로도 정확하게 밝혀지지 않았지만 3D 멀미를 잘 유발하는 게임들은 특정한 패턴을 가지고 있는 것을 알 수 있었습니다. 3D 멀미의 이유 시각과 평형감각의 괴리 3D 멀미로 유명한 포탈 시리즈 우리는 눈과 귀에 위치한 전정기관에서 받는 정보를 통해 움직이고 있다는 것을 느끼게 됩니다. 평소에는 이 두 정보가 서로 일치하지만 게임 플레이 중 괴리가 생기게 되면 3D 멀미를 유발하게 됩니다. 게임에서는 내가 움직이고 있다는 시각적 정보를 보내오는데, 실제 게임을 플레이하는 나는 움직이지 않고 있으니까요. 이처럼 두 정보의 차이가 발생하는 것을 감각 갈등이라고 합니다. 이 같은 감각 갈등에 예민한 사람은 3D 멀미를 심하게 느낄 수 있습니다. 1인칭, 3인칭 게임이라면 모두 안고 있는 문제며, 적응을

[3D펜] 3D펜으로 만든 갑옷 거인 피규어 [내부링크]

진격의 거인에 나오는 갑옷 거인 피규어를 만들어봤습니다. 자세와 형태는 이 곳을 참고했습니다. 무게감을 주고 근육 표현을 편하게 하고자 뼈대를 만든 후 지점토로 살을 붙였습니다. 그 후 필라멘트로 표면을 덮고 평평하게 다듬어주었습니다. 중간에 오른팔 각도가 마음에 안 들어서 잘라버리고 오른팔만 새로 다시 만들었습니다. 이후 세세한 근육 표현을 한 뒤 마지막으로 손과 얼굴을 만들었습니다. 얼굴은 디테일한 작업을 위해 따로 만든 다음에 붙였습니다. 어쩌다 보니 무릎 아래는 안 만들게 되었는데 자신도 없고 귀찮아서 받침대를 만들고 안에 넣기로 했습니다. 1차 채색, 2차 채색, 3차 채색 형태를 완성한 후에는 경질화된 부분과 선홍색 근육을 채색해 주었습니다. 처음엔 원하는 색이 안 나와서 어쩌나 했는데, 계속 색을 섞어가며 채색하다 보니 원하는 색이 나왔습니다. 역시 채색은 여러 번 해야 하는 것 같습니다. 이후 눈과 치아를 채색한 다음 마감재를 뿌려 완성해 줍니다. 이번에는 무광 마감재

[게임 디자인 탐구] 적 공격 모션 디자인하기 [내부링크]

액션 게임을 하다 보면 내가 대응할 수 없을 정도로 빠른 공격에 억울함을 느끼기도 하고, 분명 느린 공격임에도 불구하고 대응하기 어렵다는 생각을 하기도 합니다. 적의 공격 모션은 어떻게 디자인해야 할까요? 공격 모션의 구성 발차기를 하는 모습을 상상해 봅시다. 발차기를 하려면 먼저 힘을 모아 발을 뻗고, 발을 끝까지 뻗어 타격한 후 다시 발을 제자리로 가져와야 합니다. 이 과정은 예비 동작, 공격 동작, 복귀 동작으로 구분할 수 있습니다. 게임의 공격 모션도 동일하게 진행됩니다. 공격 모션을 잘 설계하려면 각 단계가 어떤 역할을 하는지 잘 이해해야 합니다. 예비 동작 단계 하데스에 등장하는 적의 공격 모션 예비 동작은 플레이어에게 공격이 다가온다는 경고를 줌으로써 플레이어에게 어떠한 동작을 하도록 유도합니다. 플레이어는 적의 예비 동작을 보고 공격 범위에서 피해 멀리 도망가거나, 방어 자세를 취해 공격을 막거나, 흔히 패링이라고 부르는 저스트 가드를 하는 등의 행동을 하게 됩니다

[게임 리뷰] 바이오쇼크 [내부링크]

바이오쇼크 시리즈의 첫 번째 작품이자 현재까지도 명작으로 평가받는 게임, 바이오쇼크입니다. 게임은 갑작스러운 비행기의 추락 사고로 시작됩니다. 주인공은 사고에서 겨우 빠져나와 수상한 등대를 발견하게 되고, 등대 안에 있던 잠수정을 통해 해저도시 랩처에 들어가게 됩니다. 자연스럽게 녹아있는 세계관 ‘신도, 왕도 없다. 오직 인간만이 있다.’라는 문장을 통해 랩처라는 도시가 어떤 이데올로기를 가지고 있는지 보여준다. 배경이 되는 도시 랩처는 대서양 깊숙한 곳에 자리한 해저도시입니다. 자유지상주의를 핵심 이념으로 세워진 랩처는 유전자 조작 물질인 아담을 악용하고 남용하는 사람들로 인해 미치광이들이 가득한 도시로 변해버립니다. 바이오쇼크는 이런 랩처의 모습을 환경 요소와 NPC를 통해 효과적으로 전달합니다. 아르데코풍의 건물과 장식품들은 랩처가 한때 세련되고 호화스러운 도시였다는 걸 보여주고, 도시 곳곳에서 대놓고 총알을 판매하는 자판기들과 여기저기 널브러진 시체들은 현재의 랩처가 얼마나

[게임 디자인 탐구] 배틀 패스 디자인하기 [내부링크]

최근에 이르러 많은 라이브 게임들이 배틀 패스 BM을 사용하고 있습니다. 특히 PVP 게임에서 재미를 해치지 않는 동시에 매출에 높은 기여를 하는 모습을 보여줍니다. 배틀 패스는 어떤 방식으로 동작할까요? 좋은 배틀 패스는 어떻게 디자인해야 할까요? 배틀 패스란 포트나이트에서는 각종 퀘스트를 수행해 XP를 획득할 수 있다. XP를 획득해 레벨을 올리면 배틀스타를 받고, 배틀스타와 보상을 교환할 수 있다. 배틀 패스는 퀘스트를 통해 패스 XP를 쌓고 일정 단계에 도달하면 보상을 획득할 수 있는 시스템입니다. 보통은 시즌제로 운영되며 시즌이 바뀌면 퀘스트 내용이나 보상이 업데이트됩니다. 배틀 패스는 보통 무료 패스와 프리미엄 패스 두 종류로 구분됩니다. 무료 패스의 보상은 유저가 게임 플레이를 통해 패스 XP를 쌓으면 모두 획득할 수 있지만 프리미엄 패스의 보상을 획득하려면 프리미엄 패스를 구매해야 합니다. 콜 오브 듀티의 배틀 패스에는 클랜에 참가해야만 받을 수 있는 보상이 존재한다

[게임 리뷰] 오브라 딘 호의 귀환 [내부링크]

오브라 딘 호의 귀환은 페이퍼 플리즈로도 유명한 1인 개발자 루카스 포프가 개발한 게임입니다. 플레이어는 손해사정사가 되어 신비한 회중시계를 이용해 오브라 딘 호에서 일어난 사건들을 조사해나갑니다. 독특한 방식의 공간 확장 게임의 배경이 되는 오브라 딘 호는 4층으로 구성된 배입니다. 게임의 배경치고는 아주 작은 편이죠. 하지만 신비한 시계의 능력을 사용하면 이 배가 결코 작지 않다는 것을 알 수 있습니다. 처음에 받게 되는 이 회중시계는 사체가 죽는 순간의 과거로 돌아갈 수 있는 능력을 가지고 있습니다. 게임은 이 능력을 사용하면서 진행하게 되는데요. 시계를 사용해 다른 시간대의 다양한 상황을 마주하도록 만들어 게임의 공간을 배 한 척이 아닌 여러 개의 레벨로 확장시켰습니다. 또한 과거에 일어난 일을 추리를 통해 진상을 파헤친다는 점은 다른 추리 게임과 동일했지만 보통의 추리 게임과 달리 과거에 직접 들어가 답을 찾아낸다는 점에서 참신하다고 느껴졌습니다. 정직한 추리 디자인 추

[게임 리뷰] 카타나 제로 [내부링크]

카타나 제로는 게임메이커 스튜디오 2 엔진으로 만들어진 액션 플랫포머 게임입니다. 유튜브에서 플레이 동영상을 보고 매료되어 하고 싶은 게임 목록에 넣어놨던 게임인데, 얼마 전 게임을 선물받아 기분 좋게 플레이하게 되었습니다. 유튜브에서 미리 봤던대로 카타나 제로의 비주얼은 정말 훌륭했습니다. 픽셀 아트 그래픽임에도 광원의 영향을 받아 색이 달라졌고 캐릭터의 모션이 역동적이면서 자연스러웠습니다. 그리고 계속 플레이하면서 매력적인 비주얼만큼 게임 플레이 경험도 훌륭하다는게 느껴졌습니다. 미래를 예지하는 사무라이 카타나 제로의 주인공은 미래를 예지하는 능력을 가진 사무라이입니다. 그래서 어떻게 할지 전투 계획을 세워보고 실수 없이 완벽하게 적들을 썰어내죠. 캐릭터가 죽을 때마다 다시 시작하는 여타 게임들처럼 카타나 제로도 죽으면 다시 시작하지만, 카타나 제로에서의 죽음은 실제로 죽은 것이 아니라 단지 이미지 트레이닝 과정 속에서의 실패한 것을 의미합니다. 저에게 이 설정은 단순히 캐릭터

[엑셀/VBA] 나만의 리본 메뉴 만들기 [내부링크]

엑셀에서 나만의 추가 기능AddIn을 만들어 사용하면 작업을 빠르고 정확하게 할 수 있습니다. 그리고 만든 추가 기능을 사용할 때 사용자 정의 리본 메뉴를 사용하면 더욱 간편하게 사용할 수 있죠. 하지만 이렇게 만든 추가 기능을 공유했을 때 내 PC에서 설정한 사용자 정의 리본 메뉴는 공유되지 않습니다. 때문에 추가 기능을 공유 받은 사람은 일일이 리본 메뉴를 설정해 줘야 하는 문제점이 있는데요. 오늘은 추가 기능을 설치하면 자동으로 리본 메뉴가 생성되게 하는 방법에 대해 알아보겠습니다. 1. 파일 준비 우선 리본 메뉴를 적용할 파일을 준비하고 모듈을 하나 생성합니다. 이름은 RibbonController 라고 하겠습니다. 여기에 다음과 같이 코드를 작성합니다. 저는 구분하기 쉽게 새로운 모듈을 만들었지만 기존에 있는 모듈에 넣어도 상관은 없습니다. RibbonController의 코드 Sub loadCustomTabOfRibbon(ribbon As IRibbonUI) '사용자 정의

[게임 리뷰] 하데스 [내부링크]

2020년 GOTY 수상작 하데스입니다. 하데스의 아들 자그레우스가 지옥을 뚫고 어머니 페르세포네를 만나러 가는 스토리를 가진 쿼터뷰 로그라이트 게임입니다. 닌텐도 스위치로 플레이해 보았습니다. 아름다운 지옥 가장 먼저 눈에 띄는 것은 그래픽입니다. 흔히 지옥이라 하면 칙칙하고 어두운 분위기가 떠오르는데요. 하데스는 다양한 질감과 패턴을 가진 건축물과 배경 위에 강렬한 색채와 광원을 더해 지옥을 세련된 공간으로 묘사했습니다. 타르타로스부터 아스포델을 거쳐 엘리시움까지 이르는 지옥의 층들은 각자의 독특한 분위기로 눈을 사로잡았습니다. 매력적인 점은 단순히 보기에만 좋은 것이 아니라는 점입니다. 하데스의 오브젝트들은 단순히 맵을 꾸미는 역할만 하지 않고 세계관의 모습을 보여주며 특정한 역할을 하고 있습니다. 떠다니는 혼령들의 말을 엿들으면 그 혼령이 어떻게 죽었는지 알 수 있고 작은 항아리들을 깨면 게임 진행에 도움을 주는 금화를 얻을 수 있죠. 또 기둥을 타격하면 잔해들이 몬스터들에

[엑셀/VBA] 좌우 문자열 자르기 [내부링크]

LEFTCUT(대상 문자열, 자를 개수) RIGHTCUT(대상 문자열, 자를 개수) 이 함수는 문자열을 자르는 함수입니다. 문자열을 자를 때면 RIGHT 함수나 LEFT 함수를 자주 사용하곤 합니다. 그러나 결과값은 지정한만큼 잘린 문자열이 나오게 되죠. 그렇다 보니 말 그대로 문자열을 자르는 함수는 없었는데요. 매번 귀찮게 두 겹의 함수를 쓰기 귀찮아서 하나의 함수로 만들어봤습니다. 사용 예시 대상 문자열 자를 개수 결과 [Test 1 Test (LEFTCUT 사용 시) ASD) 1 ASD (RIGHTCUT 사용 시) 자세한 예제는 첨부 파일을 참고하시길 바랍니다. 첨부파일 좌우 문자열 자르기.xlsm 파일 다운로드 Function LEFTCUT(text As String, cut As Integer) LEFTCUT = Right(text, Len(text) - cut) End Function Function RIGHTCUT(text As String, cut As Integer)

[게임 리뷰] 젤다의 전설 : 꿈꾸는 섬 [내부링크]

젤다의 전설 : 꿈꾸는 섬은 1993년 게임보이로 출시된 동명의 작품을 리메이크한 게임입니다. 다른 시리즈의 젤다의 전설을 정말 재밌게 했던 터라 많은 기대를 품고 플레이를 시작했습니다. 훌륭하지만 완전하지 않은 그래픽 게임의 그래픽은 전체적으로 깔끔했습니다. 모델은 아기자기하고 귀여웠고, 색감은 산뜻하고 생생했습니다. 마치 동물의 숲이 떠오르는 친근한 느낌의 그래픽이었습니다. 다만 부가적인 문제점들이 보였는데요. 첫 번째는 화면 전체에 적용된 아웃포커스 효과입니다. 미니어처 같은 느낌을 주려 한 것으로 보이나 시야가 답답해 부담스럽게 느껴졌습니다. 두 번째는 프레임 드랍 문제입니다. 새로운 지역으로 이동할 때면 프레임이 순식간에 떨어져서 게임 내내 불쾌함을 야기했습니다. 스위치 라이트를 사용하는 유저는 플레이가 가능할지 의문이 들 정도였습니다. 분명히 훌륭한 그래픽이었지만 완벽하지는 않은 그래픽이었습니다. 낭비되고 있는 버튼들 게임보이(1989)와 스위치 조이콘(2017) 낭비

[3D펜] 3D펜으로 만든 바위게 피규어 [내부링크]

요즘 색다른 취미에 빠졌습니다. 바로 3D펜인데요. 원래부터 뭔가를 직접 만드는 걸 좋아하는데, 유튜브에서 3D펜 영상을 보고 이거다 싶어서 바로 구매를 했습니다. 뭘 만들까 고민하다가 리그 오브 레전드에서 소환사의 협곡 강가의 시야를 책임지는 바위게를 만들어 보기로 했습니다. 마침 리그 오브 레전드 3D 모델 사이트에서 바위게 3D 모델을 찾을 수 있었는데요. 사이트에서 바위게의 앞, 뒤, 옆 등을 스크린샷 찍은 후 참고하면서 작업했습니다. 사실 뼈대부터 쌓아 올리는 자세한 제작 과정은 못 찍었습니다. 만들 때 미친 듯이 몰두해서 만드느라 과정을 찍을 생각을 못 했네요. 모양을 다 만든 후에는 채색을 해줬습니다. 왼쪽이 1차 채색 이후의 사진이고 오른쪽은 3차 채색 이후의 사진입니다. 여러 색의 물감을 섞어 채색을 했는데 배합 비율을 못 맞추다 보니 매번 다른 색이 나왔습니다. 그런데 그냥 대충 덧칠을 해주니 오히려 자연스러운 느낌을 연출할 수 있었습니다. 이후 마감재를 뿌려 완성

[엑셀/VBA] 값을 분리하여 더하기 [내부링크]

SPLITSUM(대상 문자열, 구분자) 이 함수는 문자열을 잘라 분리된 값들을 모아 더해주는 함수입니다. SPLIT 함수로 문자열을 자르고 모두 더합니다. 사용 예시 대상 문자열 구분자 결과 1,3,5 , 9 자세한 예제는 첨부 파일을 참고하시길 바랍니다. 첨부파일 값을 분리하여 더하기.xlsm 파일 다운로드 Function SPLITSUM(text As String, split_word As String) As Double Dim arr() As String arr() = SPLIT(text, split_word) result = 0 For i = 0 To (UBound(arr) - LBound(arr)) result = result + Val(arr(i)) Next i SPLITSUM = result End Function 궁금한 점은 댓글로 남겨주세요.

[엑셀/VBA] 조건에 맞는 분리된 값 구하기 [내부링크]

SPLITCOUNTIF(대상 문자열, 구분자, 조건) 이 함수는 문자열을 잘라 분리된 값들 중에서 조건에 맞는 값의 개수를 구해주는 함수입니다. 텍스트와 구분자를 인자로 받아 분리시킵니다. 분리시킨 값이 조건과 일치하는지 검사한 후 일치하는 개수를 반환합니다. 사용 예시 대상 문자열 구분자 조건 결과 1,3,5 , >3 1 자세한 예제는 첨부 파일을 참고하시길 바랍니다. 첨부파일 조건에 맞는 분리된 값 구하기.xlsm 파일 다운로드 Function SPLITCOUNTIF(text As String, split_word As String, condition As String) sp = SPLIT(text, split_word) operator = Array("<>", ">=", "<=", "!=", ">", "<", "=") For Each i In operator If Not SPLIT(condition, i)(0) = condition Then op = i compare = Val

[게임 리뷰] 툼 레이더 (리부트) [내부링크]

이번에 플레이한 게임은 리부트 된 툼 레이더입니다. 주인공 라라 크로프트가 미스터리한 섬에서 탈출하는 내용을 담고 있는 액션 어드벤처 게임입니다. 아쉬운 마감 처리 게임 초반 구간에서 간단한 퍼즐에 막히고 말았습니다. 못 풀어서 막힌 게 아니라 버그 때문에 진행할 수가 없었습니다. 퍼즐을 다 푼 이후, 비행기를 발판 삼아 올라가기만 하면 됐는데 파쿠르를 하려고 하면 자꾸만 캐릭터가 구르기를 하는 버그였습니다. 또한 다른 레벨에 진입했을 때 오브젝트들이 로딩되지 않는 버그도 있었는데요. 이 버그는 게임을 껐다 켜도 해결이 되지 않았고 다른 베이스캠프로 이동했다가 다시 돌아와야 해결할 수 있었습니다. 진행 과정이 사라지지는 않아서 다행이었지만 이런 버그들이 잘 진행되던 게임의 흐름을 끊어버려서 아쉽게 느껴졌습니다. 지독한 3D 멀미 3D 멀미는 내가 보는 것과 조작하는 것의 괴리로 인해 발생합니다. 캐릭터를 움직이는 조작을 했을 때 화면의 이동이 의도한 것과 다르게 움직이거나 강제적

[게임 디자인 탐구] 가방 공간이 제한되는 이유 [내부링크]

많은 게임들이 인벤토리 시스템을 가지고 있고, 최대 보유량, 무게, 부피의 개념을 사용해 공간을 제한시킵니다. 왜 인벤토리의 공간을 제한시키는 것일까요? 그리고 제한시키는 방법에 따라 어떤 차이점이 있을까요? 인벤토리 공간 제한의 이유 가치 판단 가장 큰 이유는 가치 판단을 통해 게임에 더 몰입시키기 위함입니다. 인벤토리의 공간을 제한시키면 플레이어는 아이템을 더 가질 수 없을 때 어떤 아이템을 버리고 팔지 선택해야 합니다. 제한된 상황에서 최선의 선택을 유도하는 것은 유저에게 자율성을 부여하고 몰입을 강화시킵니다. 데이터의 제한 다른 이유는 데이터의 크기 때문입니다. 인벤토리를 제한하지 않는다면 유저의 인벤토리 데이터는 방대해질 것입니다. 그런 유저가 한 둘이 아니라 셀 수 없이 많다면 게임 서버에 부하가 될 것이고 게임사 입장에서는 서버를 관리하는 인적 자원이나 비용이 부담될 것입니다. 때문에 서버에 무리가 가지 않고 게임의 원활한 재미를 보장하는 적정한 선에서 인벤토리의

[엑셀/VBA] 단어 분리하기 [내부링크]

SPLITTEXT(단어를 탐색할 문자열, 구분자, 찾을 위치) 이 함수는 특정 구분자로 구분된 문자열에서 원하는 위치에 있는 단어를 분리하는 함수입니다. VBA의 SPLIT함수로 문자열을 자르고 입력한 순서에 위치한 단어를 가져옵니다. 사용 예시 단어를 탐색할 문자열 구분자 찾을 위치 결과 Jazz_Hiphop_Ballad_Rock _ 3 Ballad Jazz-@-Hiphop-@-Ballad-@-Rock -@- 4 Rock Jazz and Hiphop or Ballad and Rock and 2 Hiphop or Ballad Jazz and Hiphop or Ballad and Rock or 1 Jazz and Hiphop 자세한 예제는 첨부 파일을 참고하시길 바랍니다. 첨부파일 단어 분리하기.xlsm 파일 다운로드 Function SPLITTEXT(text As String, split_word As String, order As Integer) As String '단어 분리하기

[게임 리뷰] 젤다의 전설 : 브레스 오브 더 와일드 (야생의 숨결) [내부링크]

젤다의 전설 : 브레스 오브 더 와일드(이하 야숨)은 닌텐도에서 개발한 액션 어드벤처 게임입니다. 출시한 2018년부터 3년이 지난 지금까지 엄청난 사랑과 높은 평가를 받고 있습니다. 제일 처음 만나는 NPC인 수상한 노인 첫인상은 기대했던 만큼은 아니었습니다. 잠깐의 조작 실수로 시작의 탑에서 떨어지거나 기온이 낮은 지역에 있는 사당을 찾아가면서 수많은 죽음을 겪어야 했습니다. 죽은 후 다시 시작하는 과정이 즉각적으로 진행되는 것도 아니어서 불편함이 이만저만이 아니었습니다. 그러나 광활하게 펼쳐진 오픈월드의 비주얼 하나만으로 게임을 계속 플레이할 동기는 충분했습니다. 방향만 제시하는 스토리텔링 계속 플레이해보니, 수상쩍은 할아버지는 사실 자기가 이 나라의 왕이었고, 중앙에 위치한 성에는 자신의 딸인 젤다 공주가 100년 전 이 나라를 멸망시킨 원흉, 재앙 가논을 봉인하고 있다고 설명해 주었습니다. 그리고 봉인의 힘이 한계에 도달하고 있으니 재앙 가논을 물리치고 멸망의 위기에 처한

[엑셀/VBA] 배열 안의 배열 [내부링크]

VBA에서 2차원 배열은 'Dim 배열이름(1차원의 크기,2차원의 크기) As 자료형' 의 형태로 선언합니다. 하지만 이 형태로는 데이터를 쉽게 제어할 수 없습니다. 예를 들어 처음에 1차원의 크기를 5, 2차원의 크기를 3으로 지정했다면, 가장 마지막 차원인 2차원의 크기만 변경할 수 있고 1차원의 크기는 변경할 수 없습니다. 또한 2차원의 크기를 변경하더라도 1차원 하위에 있는 모든 2차원의 크기가 바뀌기 때문에 원하는대로 데이터를 제어할 수 없습니다. 이처럼 기본적으로 제공되는 배열은 많은 한계를 가집니다. 이 때, Variant 자료형을 이용하면 모든 차원의 크기 변경은 물론 각 차원의 크기를 제각각으로 설정할 수 있습니다. 기존에 배열 안에 배열을 넣을 수 없었던 것은 배열의 자료형을 배열을 넣을 수 없는 자료형(Integer, Double, String, ...)으로 선언했기 때문인데, 배열의 자료형을 Variant 로 선언하면 배열 안에 배열을 넣을 수 있기 때문에 데이

[엑셀/VBA] 조건에 맞는 중앙값 구하기 [내부링크]

MEDIANIFS(범위, 조건1의 범위, 조건1, 조건2의 범위, 조건2, ...) 이 함수는 지정한 범위에서 다중 조건을 만족하는 수들을 대상으로 중앙값을 가져오는 함수입니다. MINIFS, MAXIFS 같이 다중 조건을 만족하는 최솟값, 최댓값을 가져오는 함수는 기본적으로 엑셀에 내장되어 있지만 다중 조건을 만족하는 중앙값을 가져오는 함수는 없어서 만들어 보았습니다. 범위와 조건을 인자로 받고, 조건에 일치하는 값에 대해서만 MEDIAN 함수를 적용합니다. 자세한 예제는 첨부 파일을 참고하시길 바랍니다. 첨부파일 조건에 맞는 중앙값 구하기.xlsm 파일 다운로드 Function MEDIANIFS(median_range As Range, ParamArray criteria() As Variant) As Integer '조건에 맞는 중앙값 구하기 Dim candidate() As Double '후보들을 담을 배열 Dim candidate_size As Integer '배열의 크기를

[엑셀/VBA] 구조적 참조의 절대 참조 [내부링크]

엑셀에서 셀을 참조할 때 절대 참조를 하고 싶다면 앞에 $ 기호를 넣어 고정을 시킬 수 있습니다. 하지만 표를 사용할 때는 [@열이름] 과 같이 참조되기 때문에 절대 참조를 사용할 수 없습니다. 이 경우 표이름[열이름] 에서 표1[@[열이름]:[열이름]] 과 같이 바꾸면 자동 채우기를 사용해도 참조 위치가 변경되지 않습니다. 자세한 예제는 첨부 파일을 참고하시길 바랍니다. 첨부파일 구조적 참조의 절대 참조.xlsm 파일 다운로드 궁금한 점은 댓글로 남겨주세요.

[게임 리뷰] 리틀 나이트메어 [내부링크]

리틀 나이트메어는 2017년 출시된 호러 어드벤처 게임입니다. 어둡고 기묘한 분위기를 가진 그래픽이 특징입니다. 얼마 전 스팀에서 무료 배포를 하길래 냉큼 라이브러리에 넣어놨습니다. 사실 게임 자체에 대해서는 유튜브에 있는 수많은 플레이 영상으로 알고 있었기 때문에 기대를 가지고 플레이를 시작했습니다. 불친절한 게임 진행 처음에는 조작에 대한 아무런 가이드가 없어서 당황했습니다. 이동은 어떻게 하는 건지, 물건과의 상호작용은 어떻게 하는 건지 마구 눌러보며 알아가야 했죠. 플레이어가 능동적으로 학습을 하게 하는 것이 좋은 튜토리얼이라고는 생각하지만 리틀 나이트메어의 튜토리얼은 지나치게 불편하다는 생각이 들었습니다. 분명 이 레벨은 깬 레벨인데... 체크포인트도 아쉽다고 느껴졌습니다. 리틀 나이트메어는 분기별로 데이터를 저장합니다. 그리고 레벨 여러 개를 풀어야 분기가 넘어가죠. 그래서 게임이 진행될 때 특정 레벨을 실패하면 다시 그 레벨에 도전할 수 있지만, 게임을 다시 켜면 저장

[게임 리뷰] 큐리어스 익스페디션 [내부링크]

큐리어스 익스페디션은 각지를 탐험하며 명성을 쌓는 로그라이크 어드벤처 게임입니다. 역사적인 인물을 선택한 후 그 인물의 특성에 맞는 플레이를 할 수 있는 것이 특징입니다. 문명 시리즈와 같이 육각형 모양 타일에서 움직일 수 있어서 익숙하게 플레이할 수 있었습니다. 처음 마주한 타이틀 화면에서 게임 플레이 버튼과 튜토리얼 버튼이 같이 있는 걸 보고 고개를 갸우뚱했습니다. 보통 게임 플레이를 하면 튜토리얼이 자동으로 진행되기 마련인데 말이죠. 저는 하면서 알아가자는 생각으로 튜토리얼을 하지 않고 게임 플레이를 하기 시작했습니다. 여러모로 아쉬운 UI/UX 게임을 시작하고 플레이할 인물을 고르자 대사가 출력되기 시작했는데, 이곳저곳을 클릭하니 대사가 순식간에 스킵 됐습니다. 보통의 게임은 대사를 자세히 읽는 사람과 빨리 스킵 하고 싶어 하는 사람 모두를 위해 스킵 버튼을 따로 만들어 놓습니다. 그런데 이 게임은 화면 어디든 클릭하면 대사가 스킵 되어 대사를 읽을 수가 없었습니다. 나중에

[엑셀/VBA] 시트가 존재하는지 확인하기 [내부링크]

ISEXISTSHEET(시트 이름) 이 함수는 지정한 이름을 가진 시트가 활성화된 워크북에 존재하는지 확인하는 함수입니다. 인자로 받은 시트 이름을 현재 활성화된 파일의 시트 이름 중에서 일치하는지 검색해 존재 여부를 판단합니다. 자세한 예제는 첨부 파일을 참고하시길 바랍니다. 첨부파일 시트가 존재하는지 확인하기.xlsm 파일 다운로드 Function ISEXISTSHEET(sheetName As String) As Boolean '시트가 존재하는지 확인하기 ISEXISTSHEET = False For Each i In ActiveWorkbook.Sheets If i.Name = sheetName Then ISEXISTSHEET = True Exit For End If Next i End Function 궁금한 점은 댓글로 남겨주세요.

[엑셀/VBA] 두 개의 값 비교하기 [내부링크]

COMPARISON(비교할 값 A, 비교할 값 B, 비교 연산자, 정확성) 이 함수는 비교할 값 A와 비교할 값 B 를 비교 연산자를 통해 비교하는 함수입니다. 비교할 값 A와 B 중 하나라도 숫자 타입이라면 다른 하나의 값 타입도 숫자로 변환해 계산합니다. 정확성은 생략할 수 있으며 TRUE일 경우 더 정확히 비교합니다. 사용 예시 비교할 값 A 비교할 값 B 비교 연산자 정확성 (생략 가능) 결과 5 5 > FALSE 5 5 >= TRUE HelloWorld HelloWorld = TRUE HelloWorld Hello* = TRUE ※ Hello* 의 * 가 와일드카드로 동작하여 결과값이 TRUE가 나오게 됩니다. HelloWorld Hello* = TRUE FALSE ※ 와일드카드를 무시하고 그대로 비교해 FALSE 가 나오게 됩니다. 자세한 예제는 첨부 파일을 참고하시길 바랍니다. 첨부파일 두 개의 값 비교하기.xlsm 파일 다운로드 Function COMPARISON(by

[게임 디자인 문서] 2018 청강대 공모전 수상작 [내부링크]

2018 청강대 공모전에 참여해 우수상을 수상한 작품입니다. 공모전에 관심있는 중고등학생들에게 참고 자료로써 도움이 되면 좋겠습니다. 첨부파일 2018 청강대 공모전 기획부문 우수상 수상작.zip 파일 다운로드 암호 : blog.naver/quasarboy ※ 무단 수정, 재배포를 금지합니다.

[게임 디자인 문서] 2018 GIGDC 수상작 [내부링크]

GIGDC 글로벌 인디게임제작 경진대회 www.gigdc.or.kr 2018 GIGDC 중고등부 기획부문에 제출해 대상을 수상한 작품입니다. 문서는 제출 당시와 동일합니다. 때문에 오탈자들이 조금 있는 점 양해 바랍니다. 대회 참여를 하려는 사람에게 도움이 됐으면 좋겠습니다. 첨부파일 2018 GIGDC 중고등부 기획부문 대상 수상작.zip 파일 다운로드 암호 : blog.naver/quasarboy ※ 무단 수정, 재배포를 금지합니다.

[게임 디자인 탐구] 배틀로얄의 경기 구역 [내부링크]

배틀그라운드와 포트나이트는 물론 에이펙스 온라인, 콜 오브 듀티 : 워존 등 많은 배틀로얄 장르 게임에서는 경기 구역을 제한시키는 시스템이 존재하고 있습니다. 배틀로얄 게임들은 왜 경기 구역을 제한시키는 것일까요? 경기 구역의 제한 배틀로얄 장르는 무수하게 많은 인원들이 한곳에 모여 경쟁하는 게임의 장르입니다. 많은 사람들이 한 공간에 모이고 공간 안에서 자원이 불규칙적으로 생성되기 때문에 공간의 크기는 곧 경쟁의 심화와 불공정으로 이어지게 됩니다. 당장 배틀그라운드를 보더라도 에란겔보다 맵의 크기가 작은 사녹에서 경쟁이 더 자주, 다발적으로 일어나며, 인기가 많아 사람이 몰리는 지역에서는 낙하한 곳 근처에 어떤 파밍 아이템이 있냐에 따라 실력에 관계없이 초반 순위가 결정되는 경우도 있죠. 때문에 대부분의 배틀로얄 장르 게임은 많은 인원들을 분산시켜 공정하고 쾌적한 경쟁을 할 수 있도록 충분히 넓은 맵을 가지게 됩니다. 그런데 경쟁이 점차 진행되어 적은 인원수만 남게 되면 남은 인

[게임 디자인 탐구] 공격력과 공격속도의 가치 [내부링크]

어떤 유닛은 공격력이 낮지만 공격속도가 높고, 어떤 유닛은 공격력이 높지만 공격속도가 낮습니다. 밸런스를 생각해 보면 동일한 시간 내에 비슷한 피해를 주기 위한 공평한 장치로 보이는데요. 그런데 과연 DPSDamage Per Second가 같다고 해서 동일한 성능을 내는 걸까요? 공격력과 공격속도, 둘 중 어떤 값이 더 중요할까요? 공격력과 공격속도의 가치 차이 방어력 계산 공식 방어력은 피해량을 감소시키는 값이기 때문에 DPS를 결정짓는 중요한 요소입니다. 게임 저마다의 방어력 계산 공식은 다양하지만 크게 나누기 공식과 빼기 공식으로 구분할 수 있습니다. 나누기 공식을 사용하는 리그 오브 레전드 나누기 공식은 방어력이 피해 감소율에 영향을 미치는 공식입니다. 최근의 게임은 대부분 나누기 공식을 사용합니다. 나누기 공식은 공격력과 공격속도가 달라도 DPS만 같다면 피해량이 달라지지 않습니다. 몇 번을 나눠서 공격하든 결국엔 일정 비율만큼 피해량이 감소되기 때문에 같은 시간 내에

[게임 디자인 탐구] 부활의 방식 [내부링크]

캐릭터의 죽음은 몰입감을 깨트립니다. 이제껏 게임에서 이뤘던 것을 잃게 하고 게임의 진행을 싹둑 잘라내기 때문입니다. 그렇지만 게임에서 죽음은 꼭 필요한 요소입니다. 죽음이 없다면 게이머는 위험에 맞서는 재미를 느낄 수 없습니다. 하지만 죽음은 존재의 이유를 떠나 그 자체로 치명적이기 때문에 많은 게임들은 부활을 통해 다시 게임에 복귀시키고 다시 게임에 몰입할 수 있도록 돕습니다. 때문에 게임에서 부활은 거의 필수적인 요소라고 봐도 무방한데요. 게임들은 저마다 부활을 어떻게 다루고 있을까요? 동일한 위치에서의 부활 리그 오브 레전드의 부활 위치 팀과 팀이 맞붙는 게임들은 사망 시 동일한 위치에서 부활합니다. 리그 오브 레전드, 오버워치 쟁탈전이 대표적인 예죠. 이런 게임들은 끊임없는 전투를 통해 상대를 이겨낸다는 성취감이 주 재미요소입니다. 따라서 전투 결과의 손익이 명확해야 하지만 동시에 역전할 수 있는 여지도 있어야 합니다. 때문에 이런 게임들은 캐릭터가 죽고 일정 시간이 지난