목차

반응형

CommandInvokationFailure: Unable to install APK to device. Please make sure the Android SDK is installed and is properly configured in the Editor. See the Console for more details.

C:\Android\sdk\platform-tools\adb.exe -s "ce051605d060b10404" install -r "C:\jump\jump.apk"


stderr[

adb: failed to install C:\jump\jump.apk: 

]


보통 다른 블로그에서는 설치시 이미 설치되어있는 앱을 삭제하라고 나와있는데 그런 오류가 아니다.

알고보니까 핸드폰의 용량이 부족했다.


영화한편 지우고 나니까 잘됨

ㅡㅡ 아오 또 쓸모없는 삽질

반응형
반응형

유니티 파이어베이스 설치시 Microsoft.VC90.CRT.manifest could not be extracted! 오류가 발생한다.

국내나 해외나 해결방법에 대한 글이 거의 없다.

꽤나 오랜시간을 뒤져봤다.

주로 vc 9.0을 다시 설치하라고 하는데 많이 해봤지만 해결하지 못한다.


원인은 generate_xml_from_google_services_json.exe파일이 Microsoft.VC90.CRT.manifest을 찾지 못하면서 발생하는 문제다.


그래도 오래걸리지는 않으니까 한번 시도해보자

https://community.norton.com/en/forums/dependent-assembly-microsoftvc90crt-could-not-be-found

1. Microsoft Visual C++ 2008 Redistributable Package:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en(link is external)

2. Microsoft Visual C++ 2008 SP1 Redistributable Package:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a5c84275-3b97-4ab7-a40d-3802b2af5fc2&displaylang=en(link is external)

3. Microsoft Visual C++ 2010 SP1 Redistributable Package:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c32f406a-f8fc-4164-b6eb-5328b8578f03


그 다음으로는 닷넷도 설치해보고 이것저것 많이 해봤는데


현재 작동중인 계정의 유저이름이 영어가 아니라서 이런다고 한다.

지금 당장 C:\Users로 가서 현재 계정이 한글인지 확인해보자

한글이라면 계정을 새로 생성해서 빌드를 해보자


영어로 윈도우 계정을 새로 파서 generate_xml_from_google_services_json.exe를 실행해보면 이제 위의 오류가 나오지 않는다.


유저명 폴더 한글에서 영어로 바꾸니까 잘된다.

아 화난다...

반응형
반응형

applovin과 마찬가지로 페이스북에서 AudienceNetwork.aar 플러그인을 설치하면 아래 오류가 발생한다.

페이스북의 최신 sdk파일을 받고 넣어주면 오류가 없어진다.


 Caused by: java.lang.ClassNotFoundException: Didn't find class "com.facebook.ads.BidderTokenProvider"


FacebookAudience-sdk.jar


반응형
반응형

Applovin을 설치하고 안드로이드로 빌드하면

unity AppLovinSdkajava.lang.NoSuchMethodError: No interface method getBidToken()Ljava/lang/String;

오류가 난다.


인터넷에서 떠돌아다니는 Applovin 라이브러리를 사용하면 버전이 낮아서 그런지 오류가 난다.


https://mvnrepository.com/artifact/com.applovin/applovin-sdk/9.1.3

여기서 가장 최신의 applovin sdk를 받아준다음에

aar파일이지만 압축파일이므로 확장자를 zip으로 바꾸고 그 안에 있는 jar파일을 applovin-sdk-9.1.3.jar로 이름을 바꿔준뒤에

Assets\Plugins\Android에 넣어서 빌드해보면 에러없이 잘 된다.

반응형
반응형

안드로이드 기준 모펍의 플러그인을 사용하는데 배너광고를 불러오는 속도가 경이롭게 느렸다.

정확한 원인은 못찾았지만 mopub sdk를 불러오기전에 banner를 요청하면 요청의 응답 속도가 매우 느리게 나옴을 확인했다.

따라서 모펍 sdk를 불러오고나서 배너를 요청하도록 하자

거참 별거아닌데 해결하느라 빌드한답시고 오래걸려서 고생했다



모펍 불러오는거 소스 추가하고 프로젝트 가동하면 위처럼 OnSdkIn~~~ Sdk를 불러왔다는 이벤트가 로그에 찍힌다 그곳을 더블클릭해서 들어간다.




그러면 OnSdkInitializedEvent로 들어가게 되는데 이 부분이 바로 SDK가 불러오고나서 호출되는거니까 이 아래에 배너를 만들어주는 코드를 추가한다.



코드는 아래와 같다.


Debug.Log("LoadBanner");
MoPub.CreateBanner("b195f8dd8ded45fe847ad89ed1d016da", MoPub.AdPosition.BottomCenter);


안드로이드로 가동해보면 배너가 빠른속도로 잘 불러와진다.

반응형
반응형

어제 어쩌다보니 회사를 퇴근하고 사무실로가서 일을 하게 되었다.

일을 좀 하다가 태희(대표)가 나한테 이것저것 궁금한것을 물어봄으로써 인생에 대한 얘기를 하게되었다.

대화해보면서 앞으로 내 삶에 이런 사람이 또 나타날까 싶어서 대화의 주제들을 적어놓고 정리해본다.


사람이 말만으로 바뀌기는 힘들다. 하지만 한번 바뀌어보자고 노력해보겠다.

대화록은 대강 아래와 같다.


대학교를 왜 가는가?

내가 예전에 농담삼아서 '아 대학가기 싫다'(사실 내가 이 말을 했는지 기억이 안난다 ㅋㅋㅋ) 라는 말을 했는데 태희가 대학 왜 가기싫냐? 그 이유가 궁금하다.

나 : 대학을 가면 뭐먹고살지? 이런 걱정하게되고 막막함을 맞이해야한다는 것인데 그것이 싫다.

태희 : 나도 대학가서 배운게 거의없다. 단순히 20대에 다른 사람들처럼 한번쯤 해볼만한 추억? 그 이상은 없다.


사실 대학 졸업도 안해보고 얼마 다녀보지도 않아서 공감이나 진정한 이해는 하지 못했다.

태희 말로는 대학에서는 아무것도 가르쳐주는게 없다고 하였다. 나는 컴공에 대한 로망?이 있는데 태희한테 이 말을 하고싶었다. '대학교에서 컴퓨터 사이언스를 배운 사람하고 고졸이 이론에 대한 이해 없이 실전에서만 얻은 지식하고는 깊이가 다르지 않느냐?' 하지만 나는 이 질문에 대한 대답을 알고있었다. 태희도 나처럼 대답할지는 모르겠지만 알고 있었기 떄문에 얘기하지 못했다. 고졸은 대졸처럼 공부할수없는건가? 하물며 원서를 사서라도 공부하면 대졸자하고 차이가 있겠느냐? 어차피 대졸들도 결국에 원서사서 교수가 책나오는거 얘기해주는거 그 이상도 없는데 말이지?

나도 안다. 대졸자 고졸자 실력차이 근본의 유무 전부다 핑계인것같다 고졸자도 노력하면 대졸자 또는 그 이상으로 실력을 키울수 있는것 나도 안다....


실패를 두려워 하는것

그리고 나서 다음 대화 주제는 실패를 두려워하는 것이다.

나는 태희의 사연을 듣고보니(하는것마다 항상 결과가 나쁘지않았다. EX)1달만 빡세게 그림연습해서 전국 그림대회 1등찍는것 등 등.... 사실 태희는 될놈될이다 내가보기엔 ㅋㅋㅋㅋㅋㅋㅋ)

여튼 태희보고 물어봤다.

나 : 태희는 실패를 두려워하지 않는 것 같다. 보통 사람들이라면 그렇지 않는데 말이죠?

태희 : 맞다. 사실 잃을게 없다. 이미 잃어보기도 많이 잃어봤고 이것저것 정말 많은 경험을 하면서 느낀것은 우리가 생각하는 걱정(사업 망하면 어떡하지, 대학 졸업하면 뭐하지?)은 정말 쓸모없는 걱정이다. 막상 잃어보고나면 그 걱정이 점점 없어지고 무뎌지면서 지금의 나를 만든 것 같다. 다만 무언가를 도전하려면 진짜 이악물고 해야된다.

태희 : 다른 사람들이 회사에서 일하면 연마다 연봉이 백단위로밖에 안오르지만 나는 사업을 해보면서 실패를 하더라도 연봉이 천단위로 오를수있다.


나도 태희처럼 정말로 이것저것 해보면서 실패도 많이 해보며 실패에 대한 두려움이 없는 사람이 되고싶다. 정말로...


대기업? 난 왜가고싶은가

또 얘기하다가 대기업 얘기가 나왔다.

태희 : 대기업 짐(내이름 ㅎㅎ)은 왜 가고싶어요?

일단 질문을 받고나서 당황했다. 깊게 생각해보지는 않았고 그냥 주변에서 대기업 다니는 것만큼 인정해주는 것이 없으니까 가야한다고 무의식적으로 생각하고 있었던것같다. 하지만 일단 아무 대답도 못하면 너무 멍청해보일까봐 ㅋㅋㅋ 평상시 대기업을 가야하는 이유를 생각해서 말해봤다.

나 : 대기업을 가야하는 것은 대기업에서 얻을 수 있는 인맥, 대기업의 시스템, 기술력때문 아닐까요?

태희 : 인맥은 그냥 평범한 회사에서도 얻을 수 있다. 그리고 인맥은 본인이 사람 좋으면 어떻게든 만들어진다. 

인맥 관련해서는 아직 경험이 적어서 공감은 못하였다.

태희 : 시스템? 이번에 갑자기 갑부된 스마일게이트 같은 회사가 시스템이 있을것같아요? IT는 가장 시스템이 없는 곳이에요. 그리고 대기업 시스템이 더 악질이에요. 뭐 하나 하려면 정말 13명한테 보고해야하고 내가 뭔가 할수 없도록 만들어져있고 정말 적폐의 끝이에요

태희 : 그리고 나도 대기업 다니다가 나와봤지만 대기업 10년 다니면 대부분의 사람이 썩는다. 그 테두리 안에 갇혀서 대기업 없으면 아무것도 못하면서 대기업이 마치 나인것처럼 내 아이덴티티인것처럼 행동한다. 예를들어 내 친구가 대기업에서 오랫동안 일한 친구인데 그 친구보고 사업하자고 했더니 친구가 하는말이 (근데 투자금 100억은 되야지 않을까?, 그렇게 적은 사람으로 일을 어떻게 해 한 100명은 있어야하지 않을까?) 이러면서 대기업에서 일한 사람이 오히려 스타트업을 뛰어다니던 사람보다 못한다.

사실 대기업을 다녀보고나서 저런 말을 할 수 있는거지 대기업도 안가보고 저런말을 하면 신빙성이 없지않을까 속으로 생각했다. 내가 나중에 사업을 차려도 저런말을 하기전에 대기업을 한번 다녀봐야하지 않을까? ㅋㅋㅋ

태희 : 그리고 우리나라만 좀 이상한데 외국에서 구글은 누가가는지 알아요? 루저들이 가는거에요

나 : ??? (첨에는 루저라는말이 똑똑한 사람들은 nerd이기떄문에 루저라고 한 줄 알았다.)

태희 : 미국은 퍼스트 라운더는 다 창업해요 그리고 거기서 밀려난 세컨트 라운더가 구글가는거구요

나 : (아... 그럼 난 뭐지 ㅎㅎ)

맞는말이다. 무조건 대기업 대기업 하는데 정신을 좀 차리지않았을까 싶다.


인생의 목표

태희 : 짐은 하고싶은 것이 뭐에요? 궁금했어요

나 : 아직도 고민중이다. 일단 최고의 개발자가 되고싶지만 세상에 미친사람들이 너무 많아서 개발을 좀 하다가 사업을 하거나 할 것 같다. 하지만 일단 지금 당장 내 목표는 개발을 열심히 배워서 아 나 개발좀 해봤다 이정도까지는 끌어 올리는 거다.

그리고나서 인생이 목적에 대해서도 얘기했다.

사람마다 사는 목적은 다른데 태희는 내 행복이 우선이었다.

나는 내가 하고싶은것을 하면서 사는것이 내 목표였는데 점점 돈으로 바뀌는 것 같다고 했다.


그리고 또 한가지 충격을 먹은 것이 있다.

태희 : 내 친구중에 요트를 사는 것이 인생의 목표라는 친구가 있었다. 근데 친구가 말하기를 일단 집부터 사고... 차부터 사고... ㅁㅁ부터 하고...

태희 : 그러면 언제살껀데? ㅋㅋㅋㅋ

태희 : 요트를 사는데에는 돈이 필요하지만 돈이 있어야 요트를 살 수 있는 것은 아니다

나 : ??(사실 내 꿈도 러시아 상트페테르부르크 강에서 요트타고 호화를 누리는 것이었음... 근데 태희가 저 말을 하니까 ?? 그럼 어떻게 하지?)

태희 : 요트관련 업자한테 가서 일을 배우던가 아니면 요트 사업하는 사람한테 가서 투자를 하고 남는 시간에 이용하던가 공동 투자자를 모아서 요트를 살생각을 해야지 그렇게 해서 언제 사느냐! 이말이죠


태희한테는 얘기 못했지만(지킬수 있을지 없을지도 모르고 그렇게 의지가 있지는 않아서 얘기하지 못했다.) 지금 당장 내가 해보고싶은 내 삶의 목표는 외국으로 나가서 게임을 만들어보거나 내가 좋아하는 게임사에 취업해서 일을 한번 해보는 것이다.

그리고 어떤 게임이든 만들 수 있을 정도로 남들에게 아 나 이런게임 만들 수 있다. 정도의 실력자가 되는 것이다.


정말 태희를 만난것은 인생에 있어서 큰 축복인 것 같다.

내 인생이 정말로 바뀔지는 모르겠지만 태희에게서 배울 것이 정말 많은 것 같다.


아 그리고 태희 농구좋아한다는데(농구 선수였다고 한다) ㅁㅊ ㅋㅋㅋㅋㅋㅋ 같이 농구한번 해보고싶다.

반응형
반응형

먼저 web.xml에서 xml bean 설정을 참조하는지 먼저 확인하기


web.xml파일 내에서

*.xml로 검색해보면

<servlet>

  <servlet-name>action</servlet-name>

  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

  <init-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>/WEB-INF/config/springmvc/*.xml</param-value>

  </init-param>

  <load-on-startup>1</load-on-startup>

</servlet>

위와 같이 WEB-INF/config/springmvc/ 밑의 xml파일을 전부다

참조하도록 되어있는것을 볼 수 있다.


springmvc 경로로 들어가서 xml파일을 하나 추가해준다.(servlet-context.xml) 파일이 있는데

해당 파일에 아래와 같이 필터링을 추가해준다.

<mvc:interceptors>

<mvc:interceptor>

<mvc:mapping path="/sitesys/** "/>

<bean class="com.cmm.sysPathControllerInterceptor"/>

</mvc:interceptor>    

</mvc:interceptors>

이것의 이미는 sitesys로 접속하는 모든 URL에 대하여 sysPathControllerInterceptor.java 파일을 거치도록 하는것이다.


위에서 지정한 경로에 맞추어 sysPathControllerInterceptor.java파일을 생성한다.


소스는 아래와 같이 생성해준다.

public class sysPathControllerInterceptor extends HandlerInterceptorAdapter {

    @Resource(name = "IpAddrManageService")

private IpAddrManageService ipAddrManageService;

/**

* sitesys로 접근하였을때 허가된 IP가 아닐경우 리다이렉트가 안되도록 수정

*/

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

IpInter is = new IpInter();

boolean res_bool = is.IpInterCepter(request, ipAddrManageService.SelectIpAddr());

if(!res_bool) {

response.sendRedirect("/mainPage.do");

return false;

}

return true;

}

}


위는 참고 소스입니다. 각 프로젝트별로 허용 IP 조회하는 방식이 다르기때문에 IP 관련 소스는 생략하도록 한다.

위에서 중요한 부분은 return false를 하면 요청한 URL로 페이지가 안넘어가는것이고(현재 소스는 response.sendRedirect를 이용하여 메인페이지로 넘어가도록 처리되어있다..)

return true를 하면 요청한 URL로 넘어간다는 것이다..

반응형
반응형

유니티의 파티클 시스템을 스크립트로 동작하고 멈추는 방법


아래처럼 단순히 particle system에 스탑을 해버리면 방출되던 Particle도 그대로 나오고 아무런 영향을 안준다.

public ParticleSystem Eff_Title_Opening;

Eff_Title_Opening.Play();

Eff_Title_Opening.Stop();


Stop에 인자를 넣어줘야한다. 아래처럼 코드를 작성하면 방출하면 particle이 즉시적으로 없어지고 Stop 처리가 된다.

public ParticleSystem Eff_Title_Opening;

Eff_Title_Opening.Play();

Eff_Title_Opening.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear);


아래는 API 링크

https://docs.unity3d.com/ScriptReference/ParticleSystem.Stop.html

반응형
반응형

이펙터분과 리소스를 공유하기 위하여 유니티 콜라보레이션 생성하는 방법과 초대 방법을 간단하게 캡쳐해놓았다.


초대하는 사람 입장

콜라보레이션 하기 위한 프로젝트 생성


우측상단 콜라보레이션 클릭(로그인 필요)


아직 해당 프로젝트에 콜라보레이션을 활성화시키지 않으면 위와 같이 Start Now!가 나옴 클릭하고 프로젝트를 생성함


하단의 Go to Dashboard 클릭


Add a person or group에 초대하고자 하는 사람의 계정을 입력하여 추가하면 됨.




초대받는 사람 입장

그러면 초대를 받은사람은 유니티를 켜보면 In the Cloud에서 초대를 받은 프로젝트가 나온다.


In the Cloud가서 프로젝트를 다운로드 받는다. 클릭!


그러면 프로젝트 다운받고 잘나온다~ 끗!




기타사항

이후 작업을 하고나면 explorer에 새로 추가되거나 수정이 된 파일들에 푸른색 아이콘이 표시됨.

그러면 다시 Collab 버튼을 눌러서 수정한 내역을 간단히 정리한뒤 (1)Publish now!를 누름

(1) 을 눌러서 파일을 업로드하면 다른 사람들이 Collab를 통하여 해당 파일을 업데이트 받을 수 있음.

(2) 내가 작업한 파일이 Collab에 올라가있는 파일들과 비교하여 수정이 된 파일들의 개수(업로드 될 파일의 개수)

(3) 업로드 될 파일들의 정보

(4) version control (git와 비슷 자세한건 생략)

(5) Collab 프로젝트 관리(멤버 추가 등)


콜라보레이션 하는사람과 작업내용이 겹치지않도록 규칙을 잘 정해서 작업할것


작업이 있을 때 마다 Collab에 최신본을 올려주고 업데이트 받아달라고 팀원에게 요청하면 될 듯하다.

반응형
반응형

자세하게 적고 싶지만 현재 신분과 상황상 간략하게 적음


어쩌다보니 유니티로 게임을 만드는 여러 팀들의 모임에 가게 되었다.

현재 내가 다니는 웹 SI 회사도 부서가 기획겸 PM겸 영업부, 개발, 퍼블리셔, 디자이너 이렇게 나뉘어져 있는 것 처럼

게임도 여러개의 부서로 나뉘어져 있었다.


2D게임 기준 : 기획, 이펙터, 2D, 클라이언트, 서버


기획 : 게임 기획부터 시작하여 테스팅, QA, 밸런싱, 파트간의 의사소통 중재

사실 가장 핵심적인 역할은 각 부서에서 전문지식을 필요로 하지 않는 단순노동?이 필요할 때 지원을 해주는 느낌

ex) 게임 테스팅, 게임에 필요한 이펙트 리스트 정리 등

단순 취미로 개발을 하다가 처음으로 개발 현장에 왔을때는 뭐하는 사람들이지? 왜필요하지? 싶었는데 요즘들어서 어찌보면 가장 중요한 초기 인력이라고 생각이 들음


이펙터 : 유니티 게임에서 발생하는 이펙트 부분들을 구현하여 클라이언트에게 전달

예를 들어 공이 벽에 충돌하면 마법의 가루가 발생한다고 했을때 마법의 가루가 발생하는 파티클 시스템을 생성해서 클라이언트에게 전달해줌 -> 클라이언트는 해당 파티클을 트리거에 넣어서 공이 충돌했을때 해당 파티클이 생성되도록 코딩을 함

이펙터는 어제 처음만나서 어떻게 작업을 해야할지 감은 안잡혔지만 웹을 만들때 개발자가 css나 간단한 js를 만지지 않듯이 역할이 분담되어있었다.


2D : UI 이미지부터 시작해서 포토샵과 일러스트레이터를 이용한 작업물들을 만들어내는 사람들을 말한다. 아무래도 프로젝트에 대한 이해도가 부족해도 바로바로 작업물을 만들어 낼 수 있어서 그런지 이곳 저곳에 투여되는 느낌이었다.

또한 클라이언트에게 2D 리소스를 제공해준다.


클라이언트 : 다른 분야의 사람들에게 리소스를 제공받아 게임이 사용자에게 드러나는 모든 부분을 다 만든다. 흔히들 말하는 유니티 개발 파트라고 보면 될 듯 하다.

어찌보면 다른 파트들이 식재료를 준비해왔다면 이 재료들을 요리하여 맛을 내는 부분이라고 볼 수 있지 않을까 싶다.


서버 : 사실 어제 서버 엔지니어는 없었지만 네트워크가 필요한 경우 서버 엔지니어가 필요할 것 같다. 아마도 서버단 구성해주고 필요한 API를 클라이언트와 얘기하며 제공, 생성해주지 않을까 싶다.


여태까지는 항상 혼자서 유니티를 만지고 개발해왔는데 실제로 다른 사람들도 유니티를 켜서 작업을 하는 것을 보면서 오... 다른 사람들은 신을 어떻게 구성할까? 너무 궁금했고 알 수 없는 설렘이 있었다.

그래서 그 날 미팅은 끝났지만, 다른 사람들로 인하여 느껴지는 긍정적인 기운(유니티)이 좋아서 좀 더 일을 하다가 왔다.


아 그리고 다른사람은 NGUI를 쓰고있길래 나도 배워야겠다는 생각이 들었다(NGUI 95$ ;;)

지금 서점인데 유니티 게임 개발서적과 NGUI 튜토리얼 서적을 살 예정이다.

반응형