첫 레이오프...

Memory 2016/11/13 16:40
Z사가 3분기 순익 -1400% 찍고는...
회사의 결정에 따라 스튜디오 클라이언트 파트 3개중 1개가 순삭되었습니다. (요게 1달전...)
관련 정보 : http://www.capitalcube.com/blog/index.php/zynga-inc-znga-us-earnings-analysis-q3-2016-by-the-numbers-november-10-2016/

올드 맴버들이 하나 둘씩 퇴사하기 시작하고,
한 두명씩 안보이기 시작하더니...
인턴사원도 재계약안되고,
다른 팀 매니저 몇 명도 한 두명씩 사라지더니,
드디어 대망의 탕탕절에 조용히 저와 몇몇 인원들 불러서 레이아웃 통보를 주더군요.

시원 섭섭함을 뒤로하고 장비반납하고 제 짐 챙겨서 나오는데,
팀 매니저와 리더가 미안하다고 거듭 이야기하고 팀 동료들이 벙찐 표정으로 장난하냐?고 물어봤는데, 
너무 순식간에 일어난 일이라 저도 어안이 벙벙...

결국 통보받은지 5분도 안되는 시간에 짐 정리하고 신세졌던 분들께 인사드리고 원격근무하시는 분들께도 고맙다고 인사드리고 하는 걸로 Z사와의 인연이 끝났습니다.

지인분들 도움으로 여기저기 인터뷰 잡고 인터뷰 보는 사이에 벌써 2주가 휙~ 지나갔네요.

그럼에도 예전 200군데 넘는 곳에 이력서 넣을때보다는 응답률이 높아서 다행이다 싶습니다. :D
(현재까지는 이력서 20군데 정도 넣었는데 1군데 빼고는 전화인터뷰까지 다 들어가네요.)

또 좋은 소식있으면 올릴께요 :D


2016/11/13 16:40 2016/11/13 16:40

먼저 소총의 구조를 이야기해보면 크게 총열, 본체, 개머리판 3가지로 나뉩니다.

사용자 삽입 이미지
총열부는 크게 3가지로 총열, 총열덮개, 가늠쇠로 구성되고
본체는 소총의 주요 부품들이..
개머리판은 소총에서 전해지는 충격을 흡수하는 역할을 하는 부품으로 구성됩니다.

최초에는 원거리 조준을 위해 조준경을 달아보았습니다.

이렇게 달아보니... 장난 아니게 높이 달려 버립니다.
사용자 삽입 이미지
이정도 되면 진짜 조준되나 싶을 정도가 되고 말죠.
사용자 삽입 이미지

그러나 이러한 방식은 시장이 작아져버려 액서세리 가격이 상승해버립니다.
예를 들어 1000원에 살수 있는 micro-usb에 비해 애플 썬더볼트 어쩌구 케이블은 가격이 넘사벽으로 가버리죠.

그래서 초기에는 이렇게 이런 저런 액서세리 다 달 수 있게 가이드 레일이란 걸 붙였습니다.
사용자 삽입 이미지
일종의 어덥터 같은 부품이지요. 암튼 이총에도 저총에도 무언가를 장착할 수 있게되니 시장이 폭발적으로 늘어났고 액서세리 가격도 떨어지는게 당연했죠.

암튼 그러던중 누군가 본체위에 달린 가늠자와 손잡이를 겸임하는 부품을 빼버리고 스코프 달아 버립니다.
사용자 삽입 이미지
이제서야 깔끔해졌군요. 

이제부터 본론입니다. 가이드레일이 표준처럼 사용되자 아에 총열 덮개를 레일로 만들어 버립니다.
사용자 삽입 이미지
이 레일은 플라스틱보다 견고해서 액서세리 장착시 잘 떨어지지 않아야 합니다. 
그래서 통상 알루미늄으로 만듭니다.
다시 말해 M4A1이나 M16A4 등 거의 모든 현대 돌격소총은 알루미늄으로 만들어진 레일시스템 적용 총열 덮개를 가지고 만들어 지고 실재 이렇게 만들어진 덕에...
사용자 삽입 이미지

이런식의 액서세리를 적용하여 임무에 맞는 장비를 탈장착 할 수 있도록 했습니다.
사용자 삽입 이미지

실재 이렇게 만들어진 현대식 돌격소총의 파지법은

- 장갑을 끼고 총열 덮개를 잡던가
- 한때 파지자세가 이상하다고 겁나 까이던 탄창 앞부분을 잡고 쏘던가
- 수직그립을 장착해서 사격해야 합니다.
 

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
왜냐하면 연발사격하면 뜨겁거든요!

K2C1도 마찮가지입니다.

- 모 언론사에서 전직 특전사인 A씨는 사격 훈련시스템도 바꿔야 하구요 하며 대단한 문제인것 처럼 인터뷰하시던데, 전문가 행세하지 맙시다.
- 이미 한국군은 돌격소총 들려주고 아직도 M1소총 훈련방식을 고수하고 있지 않던가요?

그냥 하부 그립하나 달아주면 될 문제를 전량회수라는 초강수를 두를 이유를 이해할 수가 없네요.
하긴 최근 고국에서 들려오는 거의 모든 일들이 이해불가이기도 합니다. 쩝.

2016/10/13 16:09 2016/10/13 16:09

많은 인디 개발자 또는 프로개발자 조차도 모바일 UX를 지키지 않고 그냥 개발하고 있어 안타깝더군요.

PC 마우스 UX의 경우는

- Hover In / Out
- Click
- Double Click 

이렇게 이벤트를 먹이지만, 

모바일의 경우는 
- Pressed 
- Unpressed 로

- Press 됐을때 버튼을 확대하고
- 만약 사용자가 버튼 영역을 벗어나서 손을 떼면 원상복귀되면서 명령이 취소됩니다.
- 만약 사용자가 버튼 영역을 벗어나지 않고 손을 떼면 원상복귀되면서 명령이 실행됩니다.

일전에 작성했던 이벤트 통합하기로 구현하였으니 참고하시고 다음 소스를 보시면 이해가 쉬우실거 같네요.

참고 링크 : http://www.wolfpack.pe.kr/909


먼저 버튼을 2개 만들어 놓으시고 이벤트 통합용 스크립트는 다음과 같습니다.

using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;

public class UIManager_Intro : MonoBehaviour {

    const float workTerm = 0.2f;

    public static UIManager_Intro instance;
    public void Awake()
    {
        UIManager_Intro.instance = this;
     }

     private void SetScaleUp(GameObject _obj, bool isPressed)
     {
         if (isPressed)
         {
             iTween.ScaleTo(_obj, new Vector3(1.1f, 1.1f, 1.1f), workTerm);
         }
         else
         { 
             iTween.ScaleTo(_obj, new Vector3(1f, 1f, 1f), workTerm);
         }
     }

     private bool DetectHoverSameObject(GameObject _obj)
     {
         RaycastHit hit;
         Ray ray = NGUITools.FindCameraForLayer(_obj.layer).ScreenPointToRay(Input.mousePosition);
         if (Physics.Raycast(ray, out hit, Mathf.Infinity))
         {
             return (hit.collider.gameObject == _obj);
         }
         return false;
     }

     public void Button1_OnPress(GameObject _obj, bool isPressed)
     {
         SetScaleUp(_obj, isPressed);
         if (!isPressed && DetectHoverSameObject(_obj)) StartCoroutine(LoadingScene("usingAnchor"));
    }
 
    public void Button2_OnPress(GameObject _obj, bool isPressed)
     {
         SetScaleUp(_obj, isPressed);
         if (!isPressed && DetectHoverSameObject(_obj)) StartCoroutine(LoadingScene("inputField"));
     }

     IEnumerator LoadingScene(string _sceneName)
     {
         yield return new WaitForSeconds(workTerm);
         SceneManager.LoadScene(_sceneName);
     }
}


버튼1에만 우선 적용합니다. 스크립트는 다음과 같습니다. 
using UnityEngine;
using System.Collections;

public class Behavior_Button1 : MonoBehaviour {

    void Start () {
        UIEventListener.Get(gameObject).onPress += UIManager_Intro.instance.Button1_OnPress;
    }
}



결과 1. 마우스를 클릭하여 Press 시뮬레이팅
사용자 삽입 이미지
결과2. 취소 (드레그하여 다른곳에서 손 뗌)
사용자 삽입 이미지
결과 3. 명령실행 (원상복귀후 다른씬으로 이동)
사용자 삽입 이미지


2016/09/22 09:23 2016/09/22 09:23