개인적으로 개발자가 디자이너를 제한하면 안된다고 생각하기 때문에 작업했다.


유니티에서 자체적으로 GUI System을 제공해주지만 아직까지 NGUI가 더 편하다 ㅠㅠ


가끔 디자이너분들중 하나의 오브젝트를 그리더래도 Overlay나 레이어를 겹쳐서 사용하시는분들도 있고

게임 내 에서 시각적인 효과( ex: 전체적으로 어두워지는??) 를 주는데 오버레이 블렌딩을 많이 사용하신다.


NGUI만으로 캐쥬얼한 게임을 개발한다면 이러한 요구사항에 대해서는 처리하기 힘들다.

대체로 포기하거나, 사용되는 부분을 따로 유니티 레이어를 잡거나 카메라 자체에 연출을 주는등으로 처리하는 것 같다.


하여튼 필요해서 개발은 하긴 했고 NGUI상에서도 클릭 몇번으로 해당연출을 사용할수있게 만들어두어 디자이너들이 이제 알아서 잘한다..


아틀라스를 생성해줄 때 사용할 BlendMode들을 선택해주고




UISprite Inspector에서 BlendMode를 지정해줄수있다.


끝이다. 기존 UISprite의 Tint를 이용해도 함께 잘 적용된다.

(Multiply시 특정 색상(RGB)수정시 최종alpha이 조금 이상한, 버그가 존재하긴 하지만..)


아래는 단순 팝업에 적용된 예시지만 실제로는 게임속에서 미세한 디테일들을 올려주는데 아주 유용하다.


퍼포먼스, 메모리에도 전혀 문제가 없다.


[단점]

NGUI또한 써드파티 플러그인이기 때문에 해당 플러그인이 업데이트 될때마다

각각의 Shader코드와 별개로 아래 코드들을 수정해주어야한다.

UIAtlasMaker.cs

UIBasicSpriteEditor.cs

UISprite.cs

Posted by 랜스.

Leave your greetings here.

Git : https://github.com/aws/aws-sdk-unity

http://aws.amazon.com/ko/mobile/sdk/

위 페이지에 들어가면 아래와 같이 Unity버전 AWS SDK를 다운로드 받을수있습니다.

다운로드를 받아서 ZIP파일을 풀면

아래와 같이 서비스 별로 SDK가 분류되어있는 것을 확인할수있을텐데요.

우리는 여기서 extas에 있는 aws-unity-sdk-cognitosync-2.0.0.4.unitypackage를 실행시켜주어 import해주도록 하겠습니다.

 

Import가 완료되면 프로젝트 탐색창에서 AWSSDK\example\Congnito Sync에 있는 CognitoSyncManagerSample.unity을 실행하여 장면을 연뒤 Play를 눌러 샘플을 실행해보도록 합시다.

Play를 누르게 되면 위 그림과 같이 AgumentNullException이 발생하는데요.

Play를 중단시키고 Hierachy에서 CognitoSyncManagerSample오브젝트를 선택하면 나타나는 Component의 Identity Pool Id값을 채워주어야하는데요.

해당 PoolId값을 만들려면 우선적으로 aws에 샘플에서 사용할 identity pool을 생성하여야합니다.

https://console.aws.amazon.com/cognito/create/.

Aws에 가입되어있다면 위 링크를 통해 새로운 identity pool을 생성할수있습니다.

이름 같은 경우 원하는대로 작성해서 넣으시면 되고 해당 샘플을 테스트 해보려면 Unauthenticated identities에 있는 Enable access to unauthenticated identities을 체크해두어야합니다. (기본값은 체크가 해제되어있습니다.)

샘플의 추가적인 Facebook 연동을 테스트하려면 FacebookSDK도 설치되어있고 추가적인 세팅이 필요하니 이번 포스트에서는 다루지않도록 하겠습니다.

 

어쨌든 생성을 하고나면 위와 같은 페이지로 이동하는데요. 설정에서도 확인할수있지만 해당 페이지에서도 Identity Pool ID를 확인할수있습니다. 이를 복사한뒤에 Unity로 돌아와서 CognitoSyncManagerSample의 Identity Pool Id값을 채워주도록 합시다.

 

해당 값을 채운뒤 다시 Play를 누르게되면 에러가 뜨지 않고 아래와 같은 화면을 볼수있습니다.

Full Name과 alias를 입력한뒤 Save offline을 누르면 단순히 기기내에 있는 cognito dataset에 저장을 합니다. 내부적으로는 아래와 같은 코드로 동작합니다.

playerInfo.Put("playerName", playerName);

playerInfo.Put("alias", alias);

 

playerInfo Dataset이라는 클래스로 선언이 되어있으며 이는 Put으로 특정 키와 값을 넣어줄수있습니다. 어플을 삭제하지않는 이상 값은 내부적으로 저장이 되도록 되어있습니다.

 

여기까지는 Unity에서 제공하는 PlayerPref 같은 기능을 하는것처럼 보입니다. 이번에는 Sync with Amazon Cognito버튼을 클릭해보도록 하겠습니다.

 

해당 버튼을 클릭하게 되면 내부적으로 비슷하게 Dataset Put해주는것까지는 Save offline 눌렀을때와 같지만 Put이후에 Dataset::Sychronize메서드를 호출해주어 AWS 있는 IdentityPool 저장해주도록 되어있습니다.

 

AWS Cognito Console 이동하여 Identity browser탭을 클릭하면 아래와 같이 cognito 통해 싱크된 사용자 데이터를 확인할수있습니다.

 

만약에 sychronize에서 문제가 생긴다면 Identity pool id 잘못되었거나 Unauthenticated identities에 있는 Enable access to unauthenticated identities을 체크를 하지않았는지 다시 한번 확인해보면 될것입니다.

Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/200
  2. 주윤 2015/09/18 08:03  Modify/Delete  Reply  Address

    좋은 정보 감사합니다

  3. 파마 2015/10/05 09:32  Modify/Delete  Reply  Address

    퍼갑니다



사용자 삽입 이미지



양재엘타워에서 ‘Gaming on AWS’ 행사에 다녀왔습니다. 컨퍼런스 구경가는건 정말 오랜만이였던것같습니다. 대부분이 사실 인터넷에서 흔히 볼수있는 이야기들 이지만 마지막 세션은 생각보다 흥미로웠던것같네요.


솔루션즈 아키텍트의 김일호 님의 서버 없이 게임 만들기 - Serverless Architecture 세션이였는데요. AWS에서 제공해주는 여러가지 서비스들을 이용하여 서버가 없는 게임 설계 방법에 대한 몇가지 예시와 컨퍼런스 몇일전 해커톤을 통하여 개발된 게임들에 대한 시연이 있었습니다.
해커톤 관련 기사 원문 : https://www.imaso.co.kr/news/article_view.php?article_idx=20150902140118


서버가 없이 게임을 만든다는건 게임내의 실시간활동(맵이동,채팅 등)에 한계가 있기 마련이라 이를 극복할수있는것에 대한 솔루션은 따로 제공되지않는 것 같지만 인증,결제,푸쉬,데이터싱크 등의 기능을 손쉽게 적용할수있다는 것이 장점인것같습니다.

웹서버로 구현하는것보다 가장 큰 장점이라고 하면 비용과 서버 스케일링 관련한 측면에서 상당히 장점이 있는듯합니다. 비용같은경우 API호출 N당 얼마 이런식으로 책정이되고 스케일링도 크게 따로 신경써줄게 없는듯 하더라구요.

질의 시간이 있었다면 좋았을텐데 그게 좀 아쉬웠네요.

조만간 해당 세션의 내용을 가지고 Serverless Achitecture에 대한 글을 써볼 생각입니다.

Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/199
  2. ㅇㅇ 2015/09/10 11:37  Modify/Delete  Reply  Address

    $50 짜리 쿠폰 받으셨나요?
    전 티셔츠만 받았는데;

사용자 삽입 이미지


근래에Kickstarter에서 Sprite DLight라는 녀석을 알게되었는데
단순 이미지에서 노멀맵을 추출해주는 보조 프로그램으로
출력되는 노멀맵을 보면 상당히 괜찮게 나오는것같습니다.
라이트 버전은 $25 프로버전은 $40로 보통 유니티 에셋과 가격대네요.

차후에 프로젝트를 진행하면서 쓸일은 없겠지만 개인 프로젝트때 쓰게되면 상당히 좋은 연출을 줄수있을것같아서 노멀맵 추출하는 작업을 직접 한번 도전해보았습니다.

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

Art and sprites from the Dragon’s Crown (ドラゴンズクラウン, for PS3 and PS Vita) http://dragons-crown.com/

테스트 동영상



생각보다 원하는 퀄리티가 나오지않아서 Sprite Dlight의 동영상을 보니 노멀맵추출하는 알고리즘이
상당히 잘되어있다는 것을 깨달았습니다.

저는 단순히 edge추출해서 해당 엣지에 단순히 bump효과를 준거였는데 비하여
이 프로그램에서는 음영(gradient)을 검출해서(sobel algorithm) shape를 검출해주고
이의 볼륨감을 조정해줄수있게 되어있는데 전체볼륨과 디테일볼륨을 따로 조절할수있고
선명도 조정이라던지 단순히 이미지에서 추출하는 노멀맵이라 하기엔
상당히 좋은 퀄리티를 뽑아낼수있는것같습니다.

사용자 삽입 이미지



1.Original sprite by AlbertoV (DYA Games)
2.Normal map created by the GIMP plugin (same as PS plugin)
3.Normal map created by a common normal map generator with the original
sprite used as height map, followed by shape enhancement
4.Normal map created by Sprite DLight in one click
3. is the best result you can achieve with current automatic normal
map generators combined with clever techniques, although the result
is still pretty poor, it's more of a bevel effect, which is randomly
concave or convex, particularly at the edges of the shape.

결론은 좋은게 나와있으면 구입해서 사용해봅시다.
Posted by 랜스.

Leave your greetings here.

유니티 재팬의 keijiro 님이 공개한 텍스쳐 압축 플러그인입니다.
내용으로 보아서 픽셀당 12bits정도의 메모리를 확보할수 있다고 합니다.

사용자 삽입 이미지

압축을 원하는 이미지 파일 이름 확장자 이전에 CP를 붙이면 ChromaPackProcessor에서 자동적으로 아래와 같이 Alpha8 이미지로 바꾸어주는 것을 볼수있습니다.

사용자 삽입 이미지

사용자 삽입 이미지

실제 바이너리를 프로파일링해본건 아니지만 샘플 이미지 기준
원본 텍스쳐 : 256 256 ARGB 32 bit = 256.0KB
압축된 텍스쳐 : 384 256 Alpha 8 = 96.0KB

그리고 크게 눈에 띄지는 않지만 아래의 이미지를 보시면 머리카락 부분에 계단지는 현상이 나타나기도 합니다. (상 : 오리지날 텍스쳐 하 : ChromaPack이 적용된 텍스쳐)

사용자 삽입 이미지

사실 크게 눈에 띄지않고 용량 대비 좋은 퀄리티를 내는 건 사실이기 때문에 true color 텍스쳐를 적용하길 원하시는 분들은 한번쯤 적용해봐도 괜찮은 플러그인인것같습니다.

Git hub : https://github.com/keijiro/ChromaPack
Posted by 랜스.

Leave your greetings here.


Ruby Warriors

디버깅이 안되서 불편한감이 있지만 루비문법글들을 보면서 한번 쭉 클리어 해보면 어느정도
루비 사용법을 익히는데 도움이 되는것같다.

 Ruby

https://www.bloc.io/ruby-warrior/#/warriors/59323/levels/1

코드가 궁금한 분은 아래 git링크로..
https://github.com/ryanb/ruby-warrior

비슷한 류로 dbms인 mysql을 배울수있는 페이지
schemaverse
https://schemaverse.com/

Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/195
  2. ㅁㅁㅁ 2014/04/05 07:00  Modify/Delete  Reply  Address

    만들면서 배우는 HTML5 게임프로그래밍 보고있는 독자인데요
    그런데 이거 게임을 만들고나서 소스를 숨길 수 있는 방법은 없는건가용 ㅠㅠ

    • 랜스 2014/11/23 04:10  Modify/Delete  Address

      자바스크립트는 브라우져의 코드보기를 통해서 노출될수밖에없습니다.
      난독화,우회법등 많은 방법으로 코드분석을 방해할수는 있습니다.
      읽어보실만한 글 링크해드릴게요.
      http://skyul.tistory.com/333

  3. 아아 2014/04/16 00:05  Modify/Delete  Reply  Address

    랜스님 여쭤볼게 몇가지있는데 메일 확인해주실수있나요?

http://www.rleonardi.com/interactive-resume/


포트폴리오를 준비중에 발견한 자료..

HTML5+CSS로 개발되어 상당히 인상깊은 리쥬메라고 할수있지만
실제로 인사담당자가 보기에는 보기 불편한것같기도하다..

하단에 구간 별 버튼을 두어 이동할수있게 하면 좀더 좋았을것같은 아쉬움이 있지만
그래도 근래에 본 리쥬메중 엄청 이펙트 있는 것임은 변함이 없다!!

참고해서 이력서를 제출해볼까?   
Posted by 랜스.

Leave your greetings here.

facebook에서 unitypackage형태로 sdk를 배포한지 어언 몇달이 지났으나
아직은 beta버젼이라 생각보다 삽질을 많이 하게되더라구요..
직접 개발하기는 막상 귀찮아서 해결한 문제점들을 다른분들의 삽질을 방지하기 위해 정리해둡니다.

테스트 환경
Unity4.3.0
FacebookSDK 4.2~4.3.4(가장 최신버젼)

빌드가 안되는 경우 or FB.Init함수의 콜백메서드가 호출되지않는경우
FacebookSDK는 기본적으로 Assets에 임포트 되었을때 정상적으로 작동됩니다.
만약에 폴더구조가 정해진 프로젝트에서 작업한다면 코드상의 경로들을 모두 수정해주어야 합니다.


FB.Init에 대한 콜백 메서드는 호출되지만 FB.Login를 호출해주어도 아무런 창도 변화가 없는경우
안드로이드 빌드시 발생하는 문제 FacebookSDK는 Android API 4.0이상 부터 지원한다.
이게 만약에 빌드시 4.0이하면 콘솔창에 출력되어주어야하는데 처음에 import한 이후 이 로그를 보기 힘들기 때문에 많은 사람들이 이것때문에 삽질하더라...
PlayerSettings - Other Settings - Android Minimum API를 4.0'ice cream'이상으로 설정해주도록하자.

FB.Login를 통하여 로그인, 해당 앱을 수락했지만 콜백메서드가 호출되지 않는경우
development build 체크후 실행해보면 아래와 같은 로그가 찍혀있을것입니다.
FacebookSDK.WebDialog(1588): Redirect URL: fbconnect://success#access_token=CA.....
위 로그의 경우 페이스북 어플이 설치되었다면 확인할수없으니 이런 현상이 발생하는 경우 페이스북 어플리케이션을 삭제한후 위와 같은 로그가 출력되는지 확인합시다.
위 로그는 로그인 인증이 성공했고 그에 따른 access_token값이라던지 user_id를 넘겨주는데 이 리다이렉션 된 주소를 해당 어플에서 처리하지 못하는 경우에 발생합니다.
원래 ManifestMod.cs에서 자동적으로 activity class name을 변경하게 코드가 작성되어있는 데 이게 잘 작동을 안하나 봅니다...-_-
Assets/Plugins/Android/AndroidManifest.xml 을 열어
com.unity3d.player.UnityPlayerProxyActivity 부분을 com.facebook.unity.FBUnityPlayerActivity
같이 변경해줍니다.


페이스북 앱이 설치된 경우 페이스북 인증이 되지 않는 현상
앱이 설치되지 않은경우 www를 통해 인증 과정을 걸치지만 앱이 설치된 경우 Facebook어플을 통해 인증과정이 진행되는데 이 과정에서 어플과 통신이 안되는 경우가 대다수
위에 작성된 수정사항들이 모두 정상인지 확인한뒤 빌드하면 해당 문제 해결

LogCat에 찍히는 버전이 SDK 버젼과 다를 경우
Using SDK 4.2.5, Build 131022.2bb3e6026790434
위와 같은 식으로 로그가 찍히는 경우가 있습니다. facebook 측에 문의해본 결과 해당 SDK외에 다른 버젼의 SDK를 설치한적이 있으면 이전 버전과의 dll충돌로 이런현상이 발생한다고 합니다. 그러나 기능상의 문제가 없으니 그냥 우선 사용해도 무방 하다고하네요.  

iOS빌드시 링크 에러 문제
경로문제가 대부분입니다. 기본 경로로 설정해준뒤에 레퍼런스라이브러리에 Facebook.a 가 포함되어있는지 확인해봅시다.

추가적으로 문제점이 발생하는 것이 있다면 아래 링크로 페이스북에 알려주는 것이 좋을것 같습니다.
https://developers.facebook.com/bugs/create
Posted by 랜스.

Leave your greetings here.



거의 유일하다 싶이 했던 게임개발관련 잡지 GameDeveloperMagagine이 이번 부수를 마지막으로 발행을 종료하였습니다. 참으로 안타까운 소식이 아닐수 없으나 과거의 지난 부수들을 온라인 상으로 모두 공개한다는건 좋은 소식인것같기도합니다.

다달이 눈요기하던 잡지들이 하나둘씩 사라져가는것같아 아쉽네요.

아래 링크로 들어가시면 공개된 잡지들을 읽어보실수있습니다.
http://www.gdcvault.com/gdmag


Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/191
  2. 정대호 2013/10/04 22:26  Modify/Delete  Reply  Address

    랜스군님 메일로 몇 가지 문의사항을 보냈는 데 확인 좀 해주세요...

최근에 모바일 게임 개발은 멀티플랫폼 지원이 당연시하게 되었기 때문에
크게 cocos2d-x 와 유니티를 이용하여 개발하는 추세입니다.

cocos2d-x가 처음 발표되었을때부터 사용하였고 unity의 경우 하이엔드 툴이다 보니
3D게임 개발외에는 크게 도움이 될것같지 않고 그마져도 직접 코딩하는게 최적화에 도움이 될것같았습니다. 또한 제가 cocos2d-x로 한창 개발하고 있을 당시 무료버젼의 경우 스플래쉬 이미지가 유니티 로고로 고정이 되어있었고 모바일 버젼의 경우 안드로이드와 아이폰 개별적으로 추가적인 라이센스 구매를 통해야만 개발이 가능하였습니다.

요 몇일 전 예전에 지인한테 받아둔 유니티 프로 라이센스가 유효기간이 다가온다는 메일을 받고 유니티를 처음 설치하고 구동해보았습니다. 몇가지 튜토리얼과 사용법들을 익히니 상당히 편리한 툴임은 부정할수 없더라구요.

앞으로 유니티를 사용하면서 유용하거나 팁이 될만한 글들을 블로그에 게시하려 합니다.

자 처음으로 유니티에서 에셋을 구매하는 방법을 알려드리겠습니다.

유니티를 실행한후 [Window] - [AssetStore] 를 클릭하여 에셋스토어에 접속합니다.



에셋 스토어에 접속하게 되면 수많은 에셋들이 보이는데 자신이 구매하고 싶은 에셋들을 Buy 버튼을 클릭하여 장바구니에 담아주도록 합시다.

저는 지인에게 간단한 2D게임개발용으로 추천해달라고 해서 알게된
NGUI
PlayMaker
SmoothMoves

와 PlayMaker와 NGUI를 연동시켜주는 것같은 PlayMaker NGUI Scripts 도 함께 구입하였습니다.



장바구니에 구입하고 싶은 에셋들을 모두 넣었다면 Checkout Now 를 클릭하여 결제를 진행하도록 합니다. ( 로그인이 필요합니다. )



결제는 페이팔, 신용카드 (비자,마스터)를 지원하며 저는 비자카드를 이용하여 위와 같은 정보를 입력하여 결제를 진행하였습니다.



결제가 완료되면 에셋 스토어에서 구입한 에셋들을 확인할수 있을것입니다. 각 에셋별로 Download를 받고 Import를 하면 이제 프로젝트에서 해당 에셋을 이용하여 개발할수있습니다.

이미 구입한 에셋을 다른 컴퓨터에서 설치해야할 경우 위와 같이 다운받고 임포트해주면 됩니다.
또 한가지 방법이 있는데 아래의 경로에 가시면 현재 컴퓨터에 다운받은 에셋들이 유니티패키지 형태로 저장되어 있습니다.

C:\Users\(사용자 이름)\AppData\Roaming\Unity\Asset Store

에셋은 한번 구입하면 개발사가 업데이트를 할때마다 해당 업데이트를 받을 수 있는것같더라구요.
에셋스토어에 에셋들이 상당히 많은데 주기적으로 업데이트가 되는 에셋을 받아야 차후에도 유용히
사용할수있을것같습니다.

Posted by 랜스.

Leave your greetings here.

« Previous : 1 : 2 : 3 : 4 : 5 : ... 19 :