본문 바로가기

Unity

유한 상태 기계(Finite State Machines, FSM) #2 (1/3) 원문보기 간단한 switch기반 FSM에서 강력한 힘을 가진 delegate기반 프레임으로 변경하기 두번째 강좌에 온 것을 환영한다. 사실 첫번째 튜토리얼은 꽤 쉬운 편이였다. 이번 강좌에서는 성능이 좋고, 깔끔한 FSM 프레임워크를 만들어 볼 생각이다. 이 튜토리얼은 FSM 프레임워크를 어떻게 만드는지 보여주는데, 분량이 많다고 너무 걱정하지는 마라. 뒷부분에서는 FSM을 사용해서 어떤식으로 게임을 디자인하는지 보여줄 것이다. 이런 상황은 노트북을 살때, 샐러리맨이 다음과 같이 말하는 것과 같다."좋아요, 제가 CPU를 만드는데 사용된 실리콘 동판화 프로세스를 설명해드리죠. 걱정마세요 딱 1시간이면 충분합니다"첫번째 튜토리얼 이후에, 이 튜토리얼은 많이 발전되었다. 대충 느낌을 파악하기 위해서 비디오를.. 더보기
유니티와 페이스북 연동하기 (3/3) 원문 보기 1편 튜토리얼 보기 2편 튜토리얼 보기 앞서 첫번째와 두번째 강좌에서 만들었던 간단한 페이스북 게임은 재미는 없어도, 그럭저럭 잘 작동은 한다. 페이스북 프로필 사진을 보여주고, 점수를 저장하고 불러올 수 있다. 그런데, 두번째 강좌 마지막 부분에, 마크 주커버그가 6이 최고인 게임에서 7이라는 이상한 점수를 가지고 있는 것을 보았을 것이다. 이 튜토리얼에서는, 어떻게 자신의 점수를 수정할 수 있는지와 이로부터 예방하는 방법을 배울 것이다. 100% 안전한 어플리케이션을 만드는 것은 불가능하다. 최근 몇년간 출시된 메이저 게임들을 보면, 이들 모두 복사 방지법을 가지고 있지만, 이들이 해킹을 당하는 것은 시간문제일 뿐이다. 해커는 매우 창의적이고, 항상 당신의 프로그램을 부당하게 이용하는 방법.. 더보기
유니티와 페이스북 연동하기 (2/3) 원문 보기 1편 튜토리얼 보기 (역자 주 : 본 튜토리얼에서 예제를 따라하기위해 php, mysql, PHPMyAdmin등 여러 설치할 것들이 있습니다. 그래서 이를 처음으로 접하시는 분들에게는 중간중간 어려움을 겪을 수도 있지만, 이번 기회에 설치법과 간단한 사용법을 익힐 수 있는 좋은 예제라고 생각되니 한번 해보시면 많은 도움이 될 것입니다.)시작하기 전에 알아야할 것: 이 글은 유니티에서 페이스북을 연동시키는 튜토리얼이다. 이는 자신의 웹-앱에 페이스북을 연결하고 싶어하는 유니티 개발자를 위한 기술 가이드이다. 만약 이 주제가 흥미롭게 들린다면, 주저없이 한번 읽어 보자. 두번째 튜토리얼에서 배울 내용은 다음과 같다:점수를 보내고 저장하는 방법점수를 받아오는 방법점수와 페이스북 프로필 사진을 출력하.. 더보기
유니티와 페이스북 연동하기 (1/3) 원문 보기 시작에 앞서 시작하기 전에 알아야할 것: 이 글은 유니티에서 페이스북을 연동시키는 튜토리얼이다. 이는 자신의 웹-앱에 페이스북을 연결하고 싶어하는 유니티 개발자를 위한 기술 가이드이다. 만약 이 주제가 흥미롭게 들린다면, 주저없이 한번 읽어 보자.Paladin사의 게임들은 플레이어가 페이스북을 사용하여 친구들과 함께 플레이할 수 있다. 3개의 연재 글을 통해 어떠한 방법으로 유니티 어플리케이션을 페이스북과 연동하고, 친구들의 점수를 보며, 우리의 앱을 보호할 수 있는지를 배우게 될 것이다. 첫 번째 글에서, 우리는 현재 유저의 친구와 그들의 이름을 유니티에 표시하기 위해, 자바 스크립트 SDK를 사용하는 Facebook 어플리케이션을 만들 것이다. 이 튜토리얼은 웹관련 배경지식이 조금 필요하고.. 더보기
유니티를 이용하여 온라인 게임 만들기 - (2/2) 원문 보기 (1편에 이어서) 상태 동기화 네트워크 통신을 하는 데는 2가지 방법이 있다. 첫번째 방법은 상태 동기화이고, 다른 한가지 방법은 원격 프로시저 호출(RPC, Remote Procedure Calls)이다. RPC는 이 글의 후반부에서 다루도록 하겠다. 상태 동기화는 네트워크를 통해 계속해서 값들을 업데이트 한다. 이는 Player의 움직임같은 자주 값이 변경되는 경우에 유용하다. OnSerializeNetworkView()함수에서 변수를 보내고 받으며, 변수들을 빠르고 간단하게 동기화 한다. 이것들이 어떻게 작동되는지 보기 위해서, 우리는 Player의 위치값을 동기화 하는 코드를 작성할 것이다. Player 프리팹에 있는 network view 컴포넌트로 가보자. Observed 필드는 동.. 더보기
유니티를 이용하여 온라인 게임 만들기 - (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.. 더보기