먼저 소총의 구조를 이야기해보면 크게 총열, 본체, 개머리판 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

미국회사 적응기 2

Memory 2016/07/21 02:32

Z사에 근무한지도 1달이 넘었네요.
이것 저것 쓰고 싶은 이야기가 많지만,

보통 입사후 1달 정도는 적응 기간으로 본다고 하더군요.
입사후 1주간 놀았더니 몸이 근질거려서 Jira에서 Bug 찾아서 고치고 Wiki에 기록을 남겨 뒀습니다.

그랬더니, 2주차에 메인 피쳐 팟으로 배정되었으니 자리 옮기라고 통보왔어요. -_-;;
얼떨떨하게 조직변경된 겸 새로운 팟으로 자리 이동했습니다.

원래 지원할때 업무는 그래픽 아티스트와 사운드 아티스트를 지원하는 시카고 오피스 업무였지만, 입사할때 SF HQ로 오라고 해서 1번,
메인팀으로 배정 받으면서 1번. 입사결정부터 치면, 약 1달동안 2번의 이동이 있었네요.

정작 부럽다 싶은건 이곳 리더들의 능력입니다.
여기 잼있는 문화가 닥치고 코딩시험입니다. 이 문화가 실무생활에서도 똑같이 작동하는거 같네요.

무슨 말이냐면,
- 리더로 태어나서 리더하는게 아니라 연차가 찬다고 해서 리더하는게 아니라, 팀원들로부터 크리딧 받아서 리더합니다.

딸랑 Pod 맴버가 2명있는 저희 Pod만 하더라도, Pod장이 업무지시하고 외부 협의하고 내부 협의하는 일을 하지만, 실재 개발 실력도 수준급인지라, 어제 같은 경우는 제가 이거 이거 알려 달라고 했더니 몇 시간만에 프레임워크로 재개발한뒤에 매뉴얼 첨부해서 던지더군요.

가깝게는 Pod장만 예로 들었지만, 여기는 일본 한국 중국 게임업계의 이상한 독재 시스템인 PD시스템이 없고 SW개발조직 중심으로 움직이고, 중간에서 조율하고 일정관리하며 매출관리하는 PM그룹, 전체를 조견하고 SW개발조직을 보조하는 Art 그룹 3개 그룹이 각자 알아서 움직입니다.

- 팀 매니저는 3개 그룹을 총괄하고 SW 엔지니어 출신으로 CTO에 가까운 역할을 하면서 실재 개발에 직접 관여합니다. (어느날은 버그 Ticket보고 들어갔더니 이미 팀매니저가 고쳐놨더라는...)
- 팀 매니저 직속으로 크레프트 마스터라는 직책이 있습니다. 이분들은 신기능을 만들고 매뉴얼 만들어서 뿌리는 일을 하지요.
- 팀매니저 직속에 운용조직을 맡는 팀 리더라는 직책이 있습니다. 여기서는 초고수들이 만들어 놓은 모듈들과 기능들을 운용, 유지보수하는 일을 합니다. 여기에 각각의 Pod 들이 있고 거기에 Pod장 리더와 Team member들이 있는 구조입니다.

워낙에 땅떵어리가 넓다보니 Ohio 부터 시작해서 텍사스, SF, 샌디에고, 시카고 등 도시에 흩어져 있다보니 다들 팀 커뮤니케이션 수단으로 메신저로 붙어 있습니다.

그러다가 이슈가 생기면 관련 담당자들 소집해서 온라인에서 의견 조율하거나 문제점 지적하는 등의 커뮤니케이션이 일어납니다.
물론 여기서만 일어나는게 아니고,
Git, Jira, Offline meet에서 끊임없이 커뮤니케이션이 발생하지요.

가장 부러운건 직장 문화입니다.
- 한국의 어느 팀에서 본 새로 영입된 직원이 PD 뒤에서 모략질하고 하는일이 있을 수 없는게, 기본적으로 팀원들 중 실력이 뛰어나고 커뮤니케이션 능력이 좋은 사람이 진급합니다. 리더로 태어나는게 아니라 노력여하에 따라 리더로 만들어지죠.
- 나이 차별이 없습니다. 50이 넘어서도 Pod 팀원으로 일할 수 있고 Pod장이 20대가 할 수 도 있죠. 아무도 나이가지고 찍어 누르거나 경력가지고 뭐라 하는 분위기가 아닙니다. 더욱이 X도 없으면서 학벌가지고 뭐라하는 분위기도 아니구요. 특히 완장 달았다고 지뢀하는 분위기도 아니고 오로지 Pod장은 Helper 역할에 집중합니다. 제 Pod장이 항상 하는 이야기가 "야근하지 말라. 도움이 필요하면 언제든 이야기해 내가 돠줄께. 우리는 니가 크레이지하게 일하는거 원하지 않아" 입니다.
- 여기 잼있는게 또 하나 있는데, 고등학교 졸업하고도 입사하는 친구들이 많습니다. 인턴이나 정직원이나 크게 차별도 없구요. 똑같이 유명대 석박사들과 코딩시험 보고, 인터뷰봐서 들어오는 친구들이다보니 오히려 이쪽이 영재들인 경우 이더군요.

생각해보면, 한국에서 생기는 거의 모든 부조리가 리더의 선출과정에서 생긴다고 생각합니다.
예를 들어, 나이차면 과장되고 차장되다가 부장되는... 일본식 군대 시스템에서 온 전체주의적 노예 시스템이라 생각해요.
노예 시스템에서는 어차피 말 잘듣고 고분고분하면서 저 밑에 있는 노예들 잘 갈구는 노예가 필요하거든요.
그래서, 일해서 성과내기보다는 위에 잘보이고 밑에 잘 갈구는 사람이 계속 진급하는 경우를 많이 봤습니다.

여기서도 물론 그런 유형이 있겠지만, 여기 문화가 흥미로운게 리더가 마음에 안들면 매니저나 HR에 연락해서 다른 리더가 있는 팀으로 이동이 자유롭다는 겁니다. 즉, 팀 맴버들이 리더가 마음에 안들면 리더를 버리는것도 문화입니다.
물론, 리더가 팀 맴버가 문화를 해친다고 생각하면 layoff 시켜 버리는 권한도 있죠.

따라서, 서로 총을 맞대고 있는 팽팽한 균형이 있는 문화다보니 찍어누르거나 하는게 불가능 합니다.
오히려 자신이 실력을 입증하고 신뢰를 얻는게 더 중요해지지요.

많은 경우 Agile 이라는 이름하에 이런 문화를 도입하려는 팀이 있는데, 그냥 이건 미국 실리콘 밸리 문화 같아요. Agile과 무관하지요.
여기서도 Senior 에게 물어 봤더니 "어? 우린 Agile 안해" 하는데 책에서 보던 Agile practices 를 하고 있더란 이죠...

마지막으로 야근 없다는 말은 정확하게 여기서는 구라입니다.
- 야근이 없는 대신 "일을 집으로 싸들고 간다"입니다.
- 일을 집에 싸들고 갈 정도면 팀내에서 어느정도 크리딧이 쌓여 있는 상태이고 출근 안하고 재택근무하는 것도 자연스럽게 허용됩니다.


2016/07/21 02:32 2016/07/21 02:32