스터디/Unity 2017. 3. 26. 21:21

[유니티] Unity create a game series (sebastian lague)



Unity Create a Game Series

https://www.youtube.com/watch?v=SviIeTt2_Lc&list=PLFt_AvWsXl0ctd4dgE1F8g3uec4zKNRV0

https://github.com/SebLague/Create-a-Game-Source


와 한글 번역 해주신분 감사합니다.

튜토리얼도 알차고 매 에피소드마다 코드 히스토리도 github에 올라와있고 이 튜토리얼로 공부한 한글 블로거들도 있어서 뭔가 문제에 부딪혔을때 검색해보거나 물어볼수도 있지 않을까 하는 기대감(?)



영상 러닝타임 약 5시간, 실제 따라 만들려면 하루 이틀이면 되려나. 생각좀 해보자.

00 Intro 1:31

01 Player controller 15:09

02 Gun system 14:43

03 Enemies 12:59

04 Damage system 10:06

05 Spawn system 10:41

06 Enemy Attacks 16:19

07 Some loose ends 10:37

08 Tile map 12:04

09 Obstacle placement 15:03

10 Map connectivity 17:04

11 Map navigation 14:40

12 Finishing the map generator 18:42

13 Random spawning 20:24

14 Game over 14:43

15 Particle death effect 13:24

16 Weapon effects 20:38

17 Weapon variation 12:41

18 Wave difficulty 16:04

19 Crosshairs 14:20

20 Recoil and reloading 22:12

21 Guns and UI 22:16

22 Audio pt1 17:30

23 Audio pt2 17:22

24 Menu 31:20

25 finishing up 31:12

스터디/Processing 2016. 10. 21. 22:35

[Processing] openCV를 활용한 트래킹 영역 설정 및 왜곡 보정


위쪽은 일단 포토샵으로 만든거긴한데 레고패널 위에 양 모서리에 흰색 동그라미 하나씩 두면 웹캠 영상 중에 그 영역 안의 부분만 캡쳐해서 쓰는 코드 작성.

일단 처리 순서는 뭐가 더 효율적인지는 잘 모르겠지만 내가 만든 방법은

1) openCV로 받은 이미지 중 흰색 부분을 다 contour 추출 

2) contour들을 bounding box 씌워주고 중심점 추출 

3) 그 중심점들과 전체화면의 각 모서리들간의 거리를 구해서 4개의 점에서 젤 가까운 상하좌우 obeject를 찾는다

4) 그 4개점을 연결해주는 사각형안에 있는 부분만 Warpperspective 로 다시 픽셀 재배열 하여 우측 타겟사각형 안에 구겨넣음 


이렇게 해두면 나중에 웹캠 위치나 각도 보정도 되고, 프로젝션이랑 카메라인풋이랑 싱크시키기도 좀더 수월해지고, 

아래 판의 크기에 따라서 프로젝션되는 영역 자체도 작고 커지는 scalablity가 생겨서 다른 데모만들떄 좀 유용하지 않을까 기대중


맥에 기본 카메라인 facetime 말고 외부 웹캠으로 불러오게하는 방법

http://www.codingcolor.com/2014/01/21/processing-2-1-webcam-basics/


오브젝트 거리 구하는것도 좀더 정교한 방식도 있다

http://www.pyimagesearch.com/2016/04/04/measuring-distance-between-objects-in-an-image-with-opencv/


WarpPerspecvie 샘플 (여기서는 detection된 contour 네개중에 몇번째거만 오른쪽으로 띄우라는 예제이므로 변형해서 사용)

https://github.com/atduskgreg/opencv-processing#warpperspective-in-progress


Contour간의 위계도 지정하기

http://docs.opencv.org/trunk/d9/d8b/tutorial_py_contours_hierarchy.html


contour 간의 sorting 순서 

http://www.pyimagesearch.com/2015/04/20/sorting-contours-using-python-and-opencv/




스터디/Processing 2016. 10. 4. 23:34

[Processing] Computer vision for processing (Daniel Shiffman)

명불허전 다니엘 쉬프만 (http://shiffman.net/) 님의 컴퓨터 비전 기초 강의

유투브 재생목록 클릭 

11.4: Introduction to Computer Vision

11.5: Computer Vision: Color Tracking

11.6: Computer Vision: Motion Detection

11.7: Computer Vision: Blob Detection

11.8: Computer Vision: Improved Blob Detection

11.9: Computer Vision: Blob Tracking with Persistence

11.10: Computer Vision: Adding Lifespan to Blobs


졸업 프로젝트에서 뷰포리아 마커 트랙킹 쓰려했는데 환경도 너무 어둡고 마커위에 프로젝션이 되서 색상 트랙킹이 잘안되서 OpenCV로 갈아탈까 생각중

요 강의 목록에서는 간단하게 컬러트랙킹, 이전프레임과의 픽셀 차이값을 비교한 모션 디텍션, 그리고 Bulb 여러 점들을 디텍션하는 세가지 주제로 이루어져있다. 

뒤로갈수록 슨생님도 헷갈리고 나도 헷갈리고..........

shape detection이랑 bult detection이 혼합된 플로우를 만들어야되는데 과연 내가 할수있는 일인걸까

이거 다음엔 키넥트 강좌인데 일단은 키넥트는 빼기로 했다.

아무튼 또 굿럭



스터디/Data visualization 2016. 10. 4. 22:56

Moves API 활용 서비스 : moveoscope

몇년전 이동 데이터 모아서 아름다운 시각화와 인터페이스로 우리를 혹하게했던 모바일 어플리케이션 Moves https://www.moves-app.com/
얼마전에 갑자기 기억이 나서 찾아보니 이 API를 활용하는 앱이 엄청 많아졌다

그 당시엔 라이프로깅 자체에도 관심이 많고, 환경센서 데이터 시각화 과제도 있었기 때문에 참고하느라 애용했었는데 최근 다시 시각화때문에 리서치 하다가 찾아서 깔아봤더니 2013-4년 데이터가 고스란히 남아있어서 진짜 반가웠다. 그땐 쌓아서 뭐하나 싶어도 지나고 보면 데이터도 추억처럼 어쩐지 애틋하네.


iphone, android, web 용으로 110개쯤. 유사한 서비스 컨셉도 많고, 특수한 용도의 플러그인 정도로 나온 것도 있고. 


랭킹 1위 moveoscope. 기간 설정, 이동 유형, 많이 방문한 장소 표시 뿐만 아니라 특정 장소를 선택하면 어디에서 그 장소로 왔고 그 장소에서 어디로 갔는지 앞뒤 맥락이 나오는점도 재밌다 (우린 어디에서 와서 어디로 가는가.. 꽤나 사색적인 컨셉이랄까) 



큰 동그라미가 강남역 회사인데 클릭해보니 데이터는 거짓말을 하지 않아서 좀 슬픔 .....

평균 9-10시에출근해서 1-2시에 퇴근 ..주말출근도 잦았고 

더 슬픈건 회사에 있다가 자주 가는 장소가 집 다음으로 한의원..........(그위에 점 두개도 사실 병원...)
최근 방문이 2014년 5월인건 퇴사하면서 앱도 지워버려서이고..



좌하단은 사당역, 그 우측은 회사, 그리고 강건너 우 상단은 한남동으로 이사가고 이태원 열심히 돌아다녔던거. 

맨 좌측 상단에 하늘색 찔끔있는건 현장리서치하느라 여의도에서 자전거타고 돌아다닌 흔적까지 정말 깨알같네..

중간에 삐죽삐죽 끊기는 부분은 보통 지하철이나 한강다리위에서 일시적으로 통신이 잘 안되서 놓쳐지는 부분인듯. 

저것도 뭔가 보완해줄수 있으면 좋을거 같은데 




일주일 정도 모아본 카이스트 라이프




스터디/Unity 2016. 9. 19. 17:10

[유니티] Playmaker

유니티용 플러그인 Playmaker를 질렀다 (65달러에서 45달러로 할인중이었음)

프로세싱으로 만들어둔 데모를 이제 본격 유니티의 세상으로 옮겨야하는데 java랑 C#이 그나마 비슷하다고는 해도 새로 배워야할 개념이 많아져서 허우적대는중

비주얼 프로그래밍이라고해서 Max/msp 같은건가 싶었는데 FSM 개념을 담은 Flow-chart?..

State Action Event간의 관계가 헷갈려서 듣던 튜토리얼을 멈추고 블로그를 뒤적거리며 개념 정리하는 중.



[데브루키] 유니티와 Play maker를 이용한 쉽고 빠른 게임 개발 - Slideshare

introduce unity3D and playmaker basic - Slideshare

Hutong Games사의 튜토리얼 페이지



  • 함수 단위가 아닌 FSM 단위로 비주얼 프로그래밍 가능

  • GameObject FSM (Finite State Machine : 유한상태기계) 컴포넌트 하나 추가한 것이 하나의 FSM 객체가 된다. 한 게임 오브젝트에 여러 FSM 객체를 만들수도 있으며 일종의 레이어처럼 사용할수있다 (FSM1 캐릭터의 상태 변화제어, FSM2 캐릭터의 행동변화 제어)

  • FSM : State가 특정하게 제한된 것을 Finite State라 하며, 정해진 절차에 따라 반복적으로 그 일을 수행하는 Machine



  • State : FSM에서 하나의 상태를 표현하는 객체. 여러 action과 transitino으로 구성됨
  • Action : State에서 수행할 하나의 작업을 표현하는 객체. (오브젝트 이동 회전 등등등)
  • Transition : State에서 다른 State로의 이동. Transition에 지정된 Event가 발생했을때 다음 State로 넘어감
  • Event : Mouse down..FINISHED 등
  • Variable : 변수(Global도 따로 지정 가능). FSM이 아닌 곳에서도 객체 참조하여 값 얻을수 있음 


  • Animation event를 Playmaker로 전달 : animation event 함수를 PlaymakerFSM 함수중 SendEvent로 지정

  • 모든 PlayMakerFSM 컴포넌트로부터 Action 조회하기

foreach (var fsm in Component.FindObjectsOfType<PlayMakerFSM>())
{
    if (!fsm.Fsm.Initialized)
        fsm.Fsm.InitData();

    foreach (var state in fsm.FsmStates)
    {
        foreach (var action in state.Actions)
        {
            // use action
        }
    }
}

  • 마우스 클릭한 위치에 있는 오브젝트 찾아서 PlayMakerFSM에 이벤트 전달

if(Input.GetMouseButton(0)) {
   ray = Camera.main.ScreenPointToRay(Input.mousePosition);
   if (Physics.Raycast(ray, out hit, 5000)) {
    Debug.Log("name : " + hit.collider.name);
    //PlayMakerFSM fsm = hit.collider.GetComponent<PlayMakerFSM>();
    //fsm.SendEvent("이벤트명");

   }
  }


[HCI] Radical Atoms : hiroshi ishii, MIT MEDIA LAB

올해 오스트리아에서 열리는 Art Electronica 에서 실시간 라이브로 MIT media lab의  Hiroshi ishii 교수님의 세미나를 보여줘서 잠시 한던 일을 멈추고 구경중

요즘 Tangible 쪽 논문을 많이 보고있는데 이미 이 랩에서는 이 토픽도 옛날 과거가 되어버렸다. 

GUI > TUI > RADICAL ATOMS의 Evolution에서  아직 Radical Atoms라는 단어가 아무리 자꾸 봐도 확 와닿지 않는 이유는 내가 이제 겨우 GUI에서 TUI로 넘어가 공부하고 있는 단계이기 때문이겄지.. 어서 공부해서 담 계단을 올라가야지

강연에서는 이미 논문과 영상으로 본적있는 프로젝트들을 소개하고 있긴하지만, 큰 컨텍스트 안에서 흐름을 볼수있어서 좋았음 

페스티벌 현장에서는 20주년 기념으로 옛날 대표 프로젝트 몇개들을 스페셜 에디션으로 다시 만들어서 전시도 하고 새로운 컨셉들도 선보이고 있는듯..

언제쯤 직접 가볼수있을까...

http://www.aec.at/radicalatoms/en/live/ 






스터디/Unity 2016. 7. 26. 20:41

[유니티] 엑셀 파일을 XML로 변환하는 사이트 MR.Data Converter





http://shancarter.github.io/mr-data-converter/

엑셀 파일에서 원하는 셀들을 선택해서 사이트 상단에 붙여넣으면 아래쪽에 원하는 포맷으로 바뀌고 텍스트를 복사하여

Xml 포맷을 작성할수있는 텍스트 에디터로 붙여넣기해서 저장하면 된다.



일단은 그냥 깔려있던 Xcode로 하긴 했는데 저장이 수월하지 않다. 

유니티 공부가 좀 끝나면 코딩용 텍스트 에디터를 뭘로쓸지 탐색해봐야할듯. (UTF-8형식으로 저장하면 된다고 함)





스터디/Unity 2016. 7. 20. 16:39

[유니티] 유니티5 액션 RPG 전투 입문 강좌 수강



아래 두 강좌 수강을 끝내고 


[유니티] 초보자를 위한 유니티 C# 스크립트 강좌 수강


[유니티] 유니티 4 기초테크닉 80


ibatstudio의 액션 RPG 게임 강좌 출시 기념으로 50프로 할인중 (7월 21일까지) 이라 냉큼 구매해서 듣고 있다. 

게임을 만들어야하는건 아니지만 이 강좌에서 다루는 주요 모듈들이 내가 만들어야하는 프로토타이핑에 요긴하게 쓰일것 같다.




항상 초보자도 이해하기 쉽도록 풀어서 설명해주시고

 작은 부분도 놓치지않고 반복적으로 섬세하게 짚고 넘어가주시는게 감사하다.

아쉬운 점이라면 교안이나 예제 코드가 따로 없어서 

강좌들으면서 일일히 다 중요 내용은 필기를 따로 해놓아야 하고, 

오타나 작은 실수 때문에 문제가 생겼을때 뭐가 잘못됐는지 찾으려면 영상을 일일히 열어서 다시 체크해야한다는 점때문에

하나하나 넘어갈때마다 시간이 엄청 오래걸리면서도

그 때문에 좀더 꼼꼼하게 공부하게 된다는 엄청난 장점이 있다(?)

역시 어렵게 얻을수록 살과 피가 되는건가.








  • Module #1 마우스 클릭 이동 배우기

    마우스 클릭 이동을 위해서는 화면 좌표를 월드 좌표로 변환하는 방법을 배우셔야 합니다. 우리가 3D 공간에서 캐릭터를 이동시키려고 마우스 클릭을 할 때, 실제로는 2차원 평면 화면을 클릭하고 있는 것입니다. 여기에서는 레이캐스트를 이용하여 2차원 좌표를 3차원 좌표로 변환하는 방법을 상세하게 알려 드립니다.

    m1

    Module #2 유한 상태 기계(FSM) 만들기

    복잡한 게임을 만들기 위해서는 우리가 캐릭터나 몬스터의 행동에 대해 일일이 조건문을 이용하여 조건 판단을 하는 식으로 작업할 수 없습니다. 대신 해당 캐릭터의 상태를 정의하고, 각 상태에서 어떤 행동을 하며, 각각의 상태는 어떤 조건에 의해 변하게 되는가를 지정해 주면 됩니다. 이를 위해 유한 상태 기계(FSM)의 개념을 상세하게 알려 드리고, 실제 FSM을 만들어 캐릭터와 몬스터의 행동을 제어해 보겠습니다.

    m2

    Module #3 부드러운 회전과 부드러운 이동

    이제 마우스 클릭 지점으로 캐릭터를 이동시켜야 합니다. 이 때 자연스럽게 회전하고 이동하기 위해서는 어떤 로테이션 값을 가져야 하는 지를 계산하는 것 뿐 아니라, 매 프레임당 얼마나 조금씩 회전해야 자연스럽게 보일 지를 계산해 내야 합니다. 다행히도 유니티는 이런 과정을 아주 쉽게 처리할 수 있는 명령어들을 제공하고 있습니다.

    m3

  • Module #4 자동 공격하는 몬스터 만들기

    몬스터 역시 FSM을 구현하여, 자동으로 공격과 추적 등을 판단하고 수행할 수 있도록 해야 합니다. 여기에서는 몬스터가 플레이어와의 거리를 체크하여, 이에 따라 스스로 추적과 공격, 그리고 재 추적 등을 행할 수 있도록 하는 방법을 상세하게 다루게 됩니다. 또한 정해진 시간 차를 두고 자동으로 공격을 반복하게 하는 기법 등도 상세히 알려 드립니다.

    m4

    Module #5 캐릭터 파라미터 관리하기

    플레이어와 몬스터가 공방을 벌일 때, 내부적으로는 다양한 수치 계산이 이루어집니다. 이를 위해 플레이어와 몬스터가 공통적으로 사용하는 파라미터들을 담은 "캐릭터 파라미터" 부모 클래스를 만들고, 이를 몬스터와 플레이어 캐릭터 파라미터 클래스들이 각각 상속하도록 해 보겠습니다. 또한 가상함수와 오버라이드 함수를 사용하는 방법도 상세히 알려 드립니다.

    m5

    Module #6 이벤트(Event) 이해하기

    게임을 하는 동안에는 다양한 이벤트들이 일어납니다. 이 때 특정한 이벤트가 발생하면, 그에 따라 미리 등록해 둔 여러 개의 함수들이 동시에 실행되도록 하는 식으로 많은 게임 오브젝트들이 특정한 사건에 대해 각자 다른 방식으로 반응하도록 할 수 있습니다. 여기에서는유니티 이벤트를 사용하는 방법과 함께, 캐릭터 애니메이션의 특정 프레임에 이벤트 함수를 등록하는 방법도 배우게 됩니다.

    m6

    Module #7 UI 만들기

    게임에 등장하는 많은 몬스터들은 각자 자신의 잔여 HP를 표시하기 위한 게이지 바를 가지고 있습니다. 여기에서는 유니티 UI를 이용하여 이들 게이지 바들이 몬스터 머리 위를 자연스럽게 따라 다니도록 하는 방법을 알려 드립니다. 또한 몬스터의 HP 값이 줄어들 때마다 게이지 바도 자동으로 줄어들게 하는 법과 플레이어 캐릭터의 헤드 업 디스플레이(HUD) 만드는 법도 다루어 보겠습니다.

    m7

    Module #8 리스폰 영역 만들기

    필드 곳곳에 특정한 종류의 몬스터들이 자동으로 생성되도록 하는 '리스폰 영역' 만드는 법을 다룹니다. 리스폰 영역 마다 서로 다른 종류의 몬스터들을 등록하고, 이들 몬스터들이 플레이어의 접근시 자동으로 생성되도록 해 보겠습니다. 또한, 전투 중 모든 몬스터들이 사망하면, 일정 시간 후에 죽은 몬스터들을 재활용하여 다시 리스폰 시키는 방법도 다루어 봅니다.

    m8

    Module #9 엑셀 파라미터 불러 오기

    게임 속에 등장하는 수 많은 종류의 몬스터들의 파라미터 값들을 유니티 에디터에서 일일이 입력하는 것은 비효율적인 일입니다. 여기에서는 게임 기획자들이 엑셀로 작업한 몬스터 파라미터 데이터를 XML 파일로 변환한 뒤, XML 파싱을 통해 실제 게임 몬스터들에게 자동으로 적용하는 방법을 다루어 보겠습니다.

    m9

     



스터디/Unity 2016. 7. 20. 16:22

[Unity] Delegate 와 Event 설명 모음


아무리 봐도 헷갈리는 Unity3d C#  이벤트 event 와 델리게이트 delegate 사용 참고 페이지들


[유니티] 터치이벤트 처리하기

http://www.bsidesoft.com/?p=164


delegate, action, event 활용 관련 

http://hyunity3d.tistory.com/522


유니티 event delegate 예제

http://hyunity3d.tistory.com/528


[C#] delegate과 event의 차이점 

http://www.gpgstudy.com/forum/viewtopic.php?topic=18988


Delegate( 델리게이트 ) 는 어떨때 쓰나요?

http://devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=36068


C# 강좌 19편. 델리게이트와 이벤트

http://blog.eairship.kr/151


[Unity, C#] EventHandler를 이용해서 Event Driven Programming 하기

http://growingdever.tistory.com/215


<C# 강의> 5장. 델리게이트 (Delegate) - 콜백, 체인

http://mrw0119.tistory.com/19


<C# 강의> 7장. 이벤트 (Event)

http://mrw0119.tistory.com/21


C# event (이벤트) 를 알아보겠습니다.

http://aloloever.blogspot.kr/2015/01/c-event.html


유니티 - 탄막 슈팅 게임을 만들자(2), 이벤트(Event)와 Delegate 의 사용

http://linecode.tistory.com/12


UnityEvent, UnityAction and Delegate

http://rapapa.net/?p=2936


대리자(delegate)

http://penji.tistory.com/160


C#기초문법 <6> 델리게이트, 이벤트

http://blog.daum.net/_blog/BlogTypeView.do?blogid=0rMHK&articleno=104&categoryId=9&regdt=20151227150851


C# delegate 쉽게 이해하기

http://www.csharpstudy.com/CSharp/CSharp-delegate-concept.aspx


c# lambda expression

http://www.csharpstudy.com/CSharp/CSharp-lambda.aspx