본문 바로가기

유니티

유니티를 이용하여 온라인 게임 만들기 - (1/2) 원본 보기 유니티를 이용하여 온라인 게임 만들기 - 1 이번 튜토리얼에서는 유니티 네트워크 기능을 사용하여, 어떻게 다중 플레이어 게임을 구현하는지 알아볼 것이다. 우리는 이전에 온라인 게임을 만들어 본 적은 없지만, 현재 작업중인 LFG: The Fork of Truth이 어떤 방식으로 구현되어있는지 보여줄 것이다. 이 게임은 4명이 함께 게임을 할 수 있는데, 각 플레이어는 LFG 만화에 등장하는 캐릭터중 하나를 선택해서 플레이 할 수 있다. 적을 무찌르고, 퀘스트를 완료하기 위해서는, 각 플레이어의 능력을 잘 조합해야 한다. 프로젝트를 시작할 때 했던 중요한 결정은, 네트워크를 먼저 구현하고, 다른 나머지를 만드는 것이였다. 새로운 것을 추가할 때 마다, 우리는 네트워크 상태에서도 잘 되는지 테스트.. 더보기
C#의 Virtual과 Abstract 속성(Property)에 대해서 원문 보기 C# Virtaul & Abstract 속성에 대해서 최근 C#입문자들에게 C#의 Virtual과 Abstract 속성에 관한 질문을 받았다. 이에 대해서 한번 자세하게 살펴 보자. Abstract와 Virtual 속성의 차이점 Abstract 속성은 Abstract 클래스를 만들도록 강요하지만, Virtual 속성은 이러한 제약이 없다. Virtaul은 하위 클래스가 오버라이드(Override)를 가능하게 해준다. Abstract 속성은 구현을 하위 클래스로 미룬다. Virtual 속성은 기본적인 구현이 가능하다. Virtaul 속성 Virtual 속성에 대해서 좀 더 자세하게 알아 보자. 쓰기 전용 속성(프로퍼티)을 만들기 위해서 옵션 1 : getter을 private속성으로 한다.ex).. 더보기
유니티에서 싱글톤을 만드는 4가지 방법 원문 보기 유니티에서 싱글톤을 만드는 4가지 방법여기 유니티에서 싱글톤(Singleton)을 사용하는 여러가지 방법이 있다. 1) 일반적인 방법, 2) "자체 포함" 방법, 3) 빠르지만 지저분한 방법, 4) C#을 사용하는 사람들을 위한, 접근자 방법 1. 일반적인 방법 일반적인 방법은, GameObject에 첨부된 클래스에 정적 "GetInstance()" 함수를 만드는 것이다. 그리고 instance변수에 대해서 확인을 한다. 만약 instance가 null이 아니면 instance값을 반환하고, null인 경우, 클래스(여기서는 MyClass)를 첨부한 게임오브젝트를 하나 추가해야된다는 경고 메시지를 출력한다.public class MyClass { private static MyClass ins.. 더보기
Hack And Slash 0.5v 버전 게임하러 가기(크롬, IE에서 테스트 완료, 실행안되는 경우 댓글 부탁드립니다.) - WASD키(움직임), 쉬프트 키(달리기), 스페이스 바(점프), 마우스 사용(공격, 카메라 전환) ▲ 캐릭터 생성 화면 ▲ 캐릭터 커스터마이징 ▲ 게임 첫 화면 ▲ 몬스터 사냥 1 ▲ 몬스터 사냥 2 게임 소개 Hack And Slash 강좌를 기반으로 만든 WoW풍의 심플한 RPG게임.캐릭터 커스터마이징 가능.다양한 아이템 및 몬스터 등장장비 착용시 외형 변경.NGUI와 NGUI HUD Text애셋을 이용해 인터페이스 제작. 개인 소감 개발을 하면서 중간 중간 많은 텀이 있었지만, 시간 상으로 따지자면 4개월정도 걸린 것 같습니다. 해보시면 알겠지만 사실 게임이라고 하기에는 많이 부족합니다. 아직까진 RPG게임의 아주.. 더보기
유니티로 레벨 만들기 – Part 3 of 3 (마지막) 원문은 이곳에서 보실수 있습니다. 안녕!, 나는 Paladin Studios의 Matthias라고 한다. 이번 글은 The Fork Of Truth의 레벨 디자인에 대한 마지막 부분이다. 여기 앞 부분의 연재 글에 대한 소개가 있다: 파트 1 - 유니티에서 지형을 생성하는 방법파트 2 - 방대한 환경 객체 라이브러리를 관리하는 방법 이번 마지막 글에서는, 레벨 전체를 합치는 작고 부수적인 방법에 대해서 알아 볼 것이다. 시점 게임의 시점에 대해서 신중하게 생각해봐야 하는데, 약간의 변화만으로도 게임을 하는데 많은 영향을 미치기 때문이다. 어깨 위에 카메라를 두면, 3인칭 시점의 사람같은 느낌을 줄 것이다. 하늘 위에 높게 고정시켜 놓으면, 실시간 전략 게임이 된다. 만약 플레이어 위에 맴돌면서, 함께 움.. 더보기
유니티로 레벨 만들기 – Part 2 of 3 원문은 이곳에서 보실수 있습니다. 안녕!, 나는 Paladin 스튜디오의 Matthias라고 한다. 이번은 어떻게 The Fork Of Truth의 킥스타터 데모에 나오는 레벨을 어떻게 만들었는지에 대한 두번째 연재 글이다. 다른 포스트도 여기에서 찾아볼 수 있다. 파트 1 - 유니티에서 지형을 생성하는 방법파트 3 - 레벨 전체를 하나로 만드는 더 작고, 부수적인 트릭 이번 글에서는, 환경 객체에 대해서 다뤄 볼 것이고, 이들이 어떻게 설정되는지를 배우게 될 것이다. 기본 설정레벨 디자인을 할 때, 두 가지 방법이 있다. 하나는 "레고" 같은 모듈 타일 기반 시스템이고, 다른 하나는 모든 것을 손으로 직접 만드는 방법이다. 이전 Momonga – Pinball Adventures나 Nikko RC Ra.. 더보기
오랜만에 구입한 책들 안녕하세요. 매번 번역글만 올리다보니 블로그에 사람냄새가 나지 않는 것 같아 안타까운 마음에, 오랜만에 구입한 책들을 한번 간단하게 소개해볼까 합니다. 예전 학교를 다닐 때는 인터넷 서점에서 대부분 책을 샀는데, 졸업을 하고 서울에서 생활을 하다보니 물론 인터넷에서도 사기도 합니다만, 직접 서점에 가서 구입하는 경우도 많아졌습니다. 회사를 나오고 나서 수익이 없는 상태지만, 책을 사는 것까지는 돈을 아끼고 싶지는 않았기에 이러한 여건에서 산 책이라 더욱 더 애착이 가는 것 같습니다.총 3권을 구입하였는데, 위에 사진에 나와있는 책의 제목만 봐도 어떤 책인지는 쉽게 짐작할 수 있으실 겁니다. 간단하게 책에 대한 소개를 해드리자면, 1. 번역, 이럴 땐 이렇게 요즘 시간이 날때마다 평소에 보관해두고 있던 글.. 더보기
유니티로 레벨 만들기 – Part 1 of 3 원문은 이곳에서 보실수 있습니다. 하이! 나는 Matthias Zarzecki, 그리고 나는 Looking For Group – The Fork Of Truth 레벨을 만들고 있다. 이 시리즈에서, 우리는 게임 환경을 만들기 위해 유니티를 사용할 것이다. 첫 번째 파트에서는 기본적인 풍경을 다룰 것이다 - 나머지 환경들은 지형 위에 만들어 진다. 당신은 여기서 다른 포스트 2개를 볼 수 있을 것이다.파트 2 - 방대한 환경 객체 라이브러리를 관리하는 실행 계획파트 3 - 레벨 전체를 하나로 만드는 더 작고, 부수적인 트릭. 만약 우리의 rockin' trailer를 봤다면... ...혹은 우리의 Kickstarter video를 봤다면, 캐릭터들이 싸우고 있는 환경들을 볼 수 있을 것이다. 이 비디오를 .. 더보기
"14일만에 0에서 60프레임 만들기" Unity3D를 사용하여 우리의 게임을 최적화시키면서 배웠던 것들 원문은 이곳에서 보실수 있습니다. "14일만에 0에서 60프레임 만들기" Unity3D를 사용하여 우리의 게임을 최적화시키면서 배웠던 것들 부드러운 게임 플레이는 매끄러운 프레임 레이트를 기반으로하는데, 아이폰과 아이패드를 대상으로 60프레임에 이르게하는 것은 우리의 다가오는 액션 게임, Shadow Blade의 중요한 목표였다. (http://shadowblade.deadmage.com) 다음은 우리가 고려해야 했던 것과 성능을 개선시키기위한 게임 내의 변화, 그리고 집중적인 최적화 기간 동안 목표 프레임에 도달하게하는 것들에 대한 요약이다. 기본적인 게임 기능이 잘 작동되고 난 후, 목표로 설정한 게임 성능을 만족시켜야 했다. 우리의 주요 성능 측정 툴은 내장 유니티 프로파일러와 Xcode 프로파일링.. 더보기
간단한 Observer Pattern for Unity 4.2 원문은 이곳에서 보실수 있습니다. 유니티 4.2버전에 대한 Simple Observer Pattern 이 글에 대한 유니티 패키지는 여기서 다운로드 가능하다.만약 얼마동안 유니티로 개발을 했다면, 자신이 작성한 코드에서 다음과 같은 부분을 발견할 수 있을 것이다.GameObject.Find("BigBoss").GetComponent().AddHealth(-20F); 이와 같은 코드는 완전히 실용적임에도 불구하고, 나는 당신에게 이렇게 사용하지 말라고 제안할 것이다. 여기 그에 대한 몇가지 이유가 있다:만약 BigBoss의 BossManager 스크립트를 일반적인 EnemyManager 스크립트로 교체한다면, BossManager스크립트를 참조하는 모든 스크립트는 깨질 것이다.(심지어 EnemyManage.. 더보기
유한 상태 기계(Finite State Machines, FSM) #1 (3/3) 원문은 이곳에서 보실수 있습니다. 내용이 길어 총 3편으로 나눠서 올리겠습니다. (2편에 이어서 계속) 우리의 첫번째 실용적인 유한 상태 기계 enemy에 대해서 더 주의깊게 생각하고, 상태를 정의한 다음, enemy들을 한 번에(at a time) 하나의 상태에 넣어보자. enemy는 다음 중 하나의 상태에 있을 수 있다 : sleeping, following, attacking, being hit, dying. 우리는 실제 다음과 같이 작동하기를 바란다: Part 1/Scene 2우리는 FiniteStateMachine1.cs파일을 만든 다음, 파일안에서 가장 먼저 해야할 일은 상태를 정의하는 열거형을 만드는 것이다: 0102030405060708091011public enum EnemyStates{.. 더보기
유한 상태 기계(Finite State Machines, FSM) #1 (2/3) 원문은 이곳에서 보실수 있습니다. 내용이 길어 총 3편으로 나눠서 올리겠습니다. *번역을 하면서 이해가 잘되지 않은 부분은 원문과 같이 배치하였습니다. (1편에 이어서 계속) 유한 상태 기계의 타입 많은 사람들이 알다시피, 유한 상태 기계를 만드는 것을 도와주는 많은 그래픽 툴이 있다. - 이 튜토리얼은 코드 기반의 FSM에 대한 것이다. 만약 그래픽 툴을 사용하고 싶다면, PlayMaker 또는 그외 경쟁사 제품을 확인해봐라. - 하지만 그래픽 툴을 이용하는 것은 스스로 코드를 작성하는 것보다 훨씬 더 많은 제약이 존재한다. 여기에는 2가지 형태의 코드 기반 FSM이 있다. Discoverable FSM/On Demand FSM 가끔씩, 특별한 목적으로 특정 시간에, 어떤 대상의 상태만 알면 되는 경우.. 더보기
유한 상태 기계(Finite State Machines, FSM) #1 (1/3) 원문은 이곳에서 보실수 있습니다. 내용이 길어 총 3편으로 나눠서 올리겠습니다. 튜토리얼의 첫 부분에서, 우리는 유한 상태 기계를 사용하는 이유를 파헤치고, switch문을 사용하여 이를 구현하는 가장 간단한 방법을 보여줄 것이다. Getting in a State? 당신이 작성하는 모든 프로그램은 상태 기계이다. if문을 작성하는 순간에도, 적어도 2개의 상태중 하나를 만든 것이다. - 코드를 작성할수록, 프로그램에는 더 많은 상태가 들어갈 것이다. switch와 if문의 과도한 사용은, 겉으로 이해하기 힘든 이상한 버그들과 함께, 해결방법의 복잡성은 증가하고 컴포넌트간의 상호작용은 예기치 않은 결과를 초래하면서, 감당할 수 없게 될 것이다. 당신의 프로젝트는 확장하기 어려워 지게 되고, 심지어 개념화.. 더보기
Space Shooter AI(우주 발사체 인공지능) - 3 (마지막) 원문은 이곳에서 보실수 있습니다. 내용이 길어 총 3편으로 나눠서 올리겠습니다. 본문에서 프로젝트 파일을 다운받아서 같이 따라하시면 더 이해가 쉽습니다.:) 숨바꼭질 (first FSM) 우리는 여기서 유한-상태-기계(FSM)이라는 새로운 단어를 소개하려고 한다. 이 화려한 단어 뒤에 있는 것은 무엇인가? 다른 행동 또는 주변 환경에 따른 행동의 집합이다. 이는 당신의 NPC가 자신의 상태와 주변의 환경에 대해서 행동을 수행하고 있다는 것을 의미한다. 여기 이 주제에 대한 상급 튜토리얼이 있지만, 명심해라! 그것은 상급이다. (역자 주: 해보시면 쉽습니다 ^^) 적 우주선에 대해서, 자신을 보호하기 위해 바위 뒤로 숨으면서, 계속 앞으로 나아가는 간단한 FSM을 만들 것이다. 코드로 이동하기 전에, 항상.. 더보기
상급 코루틴 개념(Advanced Coroutines) 원문은 이곳에서 보실수 있습니다. 제 능력에 한해서 최대한 쉽게 쓰려고 노력했습니다만 이해가 잘 안되는 부분이 있을 것입니다. 여러분의 잘못이 아니기에 좌절하지 마시고, 이해가 안되시는 부분만 원문을 참고하시는 것도 좋을 것 같습니다. 본문에 나와있는 소스코드를 보면서 읽으시면 조금 더 이해가 쉬울 것입니다. 코루틴이 어떻게 작동하는지 궁금한가? yield 명령문의 뒤에서 도대체 무슨 일이 일어나는가? 한번 알아보자.목적 코루틴이 화면 밖에서는 어떤 일들이 일어나는지 알고 싶다면 반드시 이 글을 읽어야 한다. 만약 당신이 FSM 튜토리얼을 따라하고 있거나, 후에 다시 재시작 가능한 개입 중단 가능한(interruptable) 코루틴을 어떻게 만들 수 있는지에 대한 세부사항을 알고 싶다면 이 튜토리얼은 매.. 더보기