본문 바로가기

반응형

분류 전체보기

(425)
랜덤 맵 만들기 update 2021.07.13 갑자기 너무나 많은 분들이 들어오셔서 일단 급한 마음에 C++로 구현한 코드 올려 봅니다. https://github.com/ChoiIngon/gamnet/tree/master/example/LobbyServer/Component/Dungeon ChoiIngon/gamnet Automatically exported from code.google.com/p/gamnet - ChoiIngon/gamnet github.com 코드에 대한 자세한 최대한 빨리 시간내서 랜덤 던전 관련 코드만 정리해서 올리도록 하겠습니다. https://github.com/ChoiIngon/gamnet/blob/master/example/LobbyServer/Component/Dungeon/Dung..
[Unity] Asset Bundle !!NOTE!! 유니티 2018.2 이상 버전 부터 AssetBundleManager의 지원을 중단한다는 공식 발표가 있었습니다. 2019.3 버전 부터 '어드레서블 에셋 시스템'이라는 새로운 에셋 관리 시스템이 추가 되며 , 2018 LTS 릴리스에서도 지원 된다고 합니다. 아래 내용들은 예전에 이런 것들이 있었구나..하는 역사 공부 정도로만 봐주시면 됩니다. 어드레서블 에셋 시스템은 -> https://blogs.unity3d.com/kr/2019/07/15/addressable-asset-system/에 있습니다. 내용도 알차고 한글로 잘 씌여져 있는지라 제가 따로 포스팅을 쓸 건덕지가 없네요. 들러 주셔서 감사합니다. 좋은 하루 되세요. 이번 포스팅에서는 어셋 번들의 기본 개념과 유니티에서 어셋스..
[Unity] Coroutine 코루틴(Coroutine) 이해하기 http://unityindepth.tistory.com/21 https://en.wikipedia.org/wiki/Coroutine
'The Rougelike'의 기획서 시나리오'The Roguelike'는 주인공이 이름 모를 던젼을 탐험하고 던젼에 숨겨진 보물을 찾으며 지하로 지하로 내려가는 턴제 게임입니다. 탐험 중에 위험한 몬스터들과 조우하기도 하고, 몬스터와 싸워 이기면 탐험에 필요한 아이템들도 얻을 수 있습니다. NPC들과 대화를 통해 퀘스트도 받고 퀘스트를 완수하면 보상도 주어집니다. 단, 로그라이크류 게임 답게 한번 죽으면 게임을 다시 시작해야만 합니다. 게임 방식성공 조건 : 플레이어가 던젼의 지하 맨 밑층까지 탐험을 완료하면 게임에서 승리하게 됩니다.실패 조건 : HP가 0이 되면 플레이어가 사망하게 되고 게임이 종료 됩니다.턴제 게임으로써 플레이어가 액션을 할때 마다 스테미너가 소모 되며, 0이 되면 그 때부터 매 턴마다 HP가 감소합니다.몬스터에게 공..
FoV(Field of Vision) 로그라이크에서 - 플레이어 캐릭터 주변 환경을 표현과 같은 - 가장 중요한 몇몇 기능들은 현재 플레이어의 위치에서 맵 위의 각 오브젝트들의 가시성을 체크하는 것이 필요합니다. 이것을 'Field of Vision' 혹은 'Field of View'(이하 FoV)라고 하겠습니다. 타일 기반 2D 게임에서 FoV를 구현하기 위해 현재 플레이어가 위치하는 방만 다 보이는 것으로 판단한다던지의 여러가지 구현 방법이 있지만 'The Rougelike'에서는 플레이어 주변 일정 범위 내에 있는 가려지지 않은 오브젝트들을 가려내는 방식을 채택했습니다.1. 맵 전체를 보이지 않는 영역으로 초기화 한다.2. 플레이어 좌표를 기준으로 원을 그린다.3. 플레이어에서 부터 원주를 이루는 하나의 점에 직선을 그린다.4. 플레이..
'The Rougelike' 제작 계획 우리가 이제부터 만들어 볼 게임은 'NetHack'으로 유명한 Rougelike 게임입니다. 로그라이크란원작 게임인 'Rouge'의 특징과 시스템을 모방한 게임들을 총칭하는 말입니다. 'Rouge'는 거의 최초의 던젼 탐험 RPG 게임으로써 지금과 같은 그래픽 기술이 없던 시절 제작 되었기 때문에 아스키 코드만으로 그래픽을 표현했습니다. 또한 요즘 처럼 데이터를 저장하고 죽으면 다시 불러오는 것이 아닌 한번 죽으면 모든것이 처음부터 시작하는 어마 무시한 룰을 가지고 있습니다. 이후 'Rouge'와 비슷한 방식으로 여러 게임들이 제작되었는데 이들을 로그라이크(Rouge-like = 로그류) 게임이라 부릅니다. 'NetHack', 'ADOM', 'Angband'등이 이런 로그라이크 게임이며, '바람의 나라'..
브레즌햄(Bresenham) 알고리즘 브레즌햄 알고리즘은 컴퓨터 그래픽스에서 복잡하고 계산을 느리게 만드는 실수 계산을 배제하고 정수 계산만으로 직선을 그리기 위해 만들어진 알고리즘 입니다. 직선의 공식을 이용해 계산된 좌표값은 결국 스크린에 표현하기 위해서는 소수점 이하를 버림한다던지 반올림 해서 정수로 만들게 됩니다. 이렇게 버려지는 소수점 이하의 복잡한 계산을 브레즌햄 공식을 이용하여 간단한 정수 연산으로 바꾸는 과정을 알아보도록 하겠습니다. 먼저 두 점을 지나는 직선의 방정식을 보면 아래와 같습니다 : y - y1 = (x2 - x1) / (y2 - y1) * (x - x1) y = (x2 - x1)/(y2 - y1) * (x - x1) + y1 예를 들어 (2, 1) 과 (6, 4)를 지나는 직선의 점들 중 x가 3일때 y의 값은 ..
모든 것의 시작..주인공 만들기 게임에 등장하는 것들에는 무엇이 있을까요? 먼저 주인공과 몬스터가 있겠고, 퀘스트를 주거나 주인공을 도와 같이 싸우는 npc, 그 밖의 나무, 벽, 바위, 문, 보물 상자 등등의 다양한 것들이 있을 수 있습니다. 이런 종류의 것들을 지금 부터 '게임 내 오브젝트', 그냥 간단하게 '오브젝트'라고 부르도록 하겠습니다. 그리고 이번 장에서는 이 게임의 핵심이 되는 주인공(Player) 오브젝트를 만들어 보겠습니다. 주인공(Player) 클래스 데이터 및 오퍼레이션 정의 먼저 주인공의 기본속성 부터 생각해 보도록하죠. - 위치 : 타일 기반 2D 게임이므로 x, y 축에 대해 2차원 좌표를 가지면 됩니다. 지금은 주인공에겐 아무런 기능이 없습니다. 단지 화면에 표시 되기만 하면 되죠. 그래서 현재로는 표시 되..
들어가며 "그래픽 말고 시스템에 대해 설명하는 게임 서적은 없는거야?" 필자는 게임을 좋아한다. 그중 특히 넷핵과 같은 로그라이크 게임을 좋아한다. 그런데 게임을 즐기기만 하던 어느 날 '이 게임들 재미 있지만 다들 뭔가 2%씩 부족해. 내가 만들어 보면 어떨까?' 라는 생각으로 나만의 로그라이크를 만들기로 결심했으나...너무 마이너한 장르였기 때문일까? 딱히 이거다 할만한 서적을 찾을 수 없었다. 엔진을 사용하는 방법이라던지, 애니메이션과 쉐이더 같은 고급 그래픽 기술에 대한 자료들은 넘쳐났으나 퀘스트 시스템은 어떻게 만들어야 하는지, 아이템에 붙는 마법 효과들은 어떻게 만들어야 하는지와 같은 시스템에 대한 설명은 참으로 희귀했다. 그래서 이곳을 빌어 필자가 로그 라이크 게임을 만들어 가는 과정을 기록해 보고자..
[Unity] Animator 사용하여 애니메이션 종료까지 기다리기 애니메이션이 플레이 중인지 종료가 되었는지는 다음과 같은 체크 코드를 사용하면 간단하게 알아 볼수 있다. animator.GetCurrentAnimatorStateInfo(0).IsName("YourAnimationName") "YourAnimationName" : 메카님 스테이트의 이름(Animator 윈도우를 보면 여러 상태가 있는데 체크하고 싶은 애니메이션이 플레이되는 상태의 이름을 적어주면 된다). IEnumerator WaitForAnimation(Animator animator) { while (true == animator.GetCurrentAnimatorStateInfo(0).IsName("")) { yield return new WaitForEndOfFrame(); } GameObject..

반응형