꽃미남 프로그래머 김포프가 창립한 탑 프로그래머 양성 교육 기관 POCU 아카데미 오픈!
절찬리에 수강생 모집 중!
프로그래밍 언어 입문서가 아닌 프로그래밍 기초 개념 입문서
문과생, 비전공자를 위한 프로그래밍 입문책입니다.
jobGuid 꽃미남 프로그래머 "Pope Kim"님의 이론이나 수학에 치우치지 않고 실무에 곧바로 쓸 수 있는 실용적인 셰이더 프로그래밍 입문서 #겁나친절 jobGuid "1판의내용"에 "새로바뀐북미게임업계분위기"와 "비자관련정보", "1판을 기반으로 북미취업에 성공하신 분들의 생생한 경험담"을 담았습니다.
Posted by 친절한티스

C#의 WPF로 툴을 만들다 보면 TreeView를 쓸때가 있습니다. 대략 요런것죠.



파일 디렉토리 구조라든가, 씬그래프 (SceneGraph) 라든가 유용하게 써먹을데가 많습니다. 코드로 보면 대략 이렇게 사용하겠죠.

TreeViewItem newItemC1 = new TreeViewItem();
newItemC1.Header = "카테고리1";
newItemC1.Items.Add("아이템1");
newItemC1.Items.Add("아이템2");
treeView1.Items.Add(newItemC1);

TreeViewItem newItemC2 = new TreeViewItem();
newItemC2.Header = "카테고리2";
newItemC2.Items.Add("아이템1");
newItemC2.Items.Add("아이템2");
treeView1.Items.Add(newItemC2);

좋습니다. TreeView 컨트롤을 사용하다 보면 이 중에 아이템이 선택되었을때 어떤 아이템이 선택되었는지 알아야 할때가 있어요.

private void OnDoubleClickItem(object sender, MouseButtonEventArgs e)
{
    TreeView treeView = sender as TreeView;
    if (null != treeView)
    {
        string selectedItemName = treeView.SelectedItem as string;
    }
}

간단하게 마우스 클릭 이벤트를 받아 TreeView의 SelectedItem을 얻어오면 됩니다. 그런데 아이템1을 선택했다고 하면, 이 아이템1이 카테고리1의 아이템1인지, 카테고리2의 아이템1인지는 어떻게 판별할 수 있을까라는 문제가 생깁니다.


( 아시는 분은 가르켜주세요 )


아래는 제가 사용한 방법입니다. 먼저, Helper 클래스를 하나 만듭니다. 추가할 오브젝트와 그리고 상위 TreeViewItem을 보관합니다.

public class TreeViewHelper
{
    public object Value
    {
        get { return mObj; }
    }
    public TreeViewItem ParentTree
    {
        get { return mParentTreeViewItem; }
    }
    private object mObj;
    private TreeViewItem mParentTreeViewItem;
    public TreeViewHelper(object obj, TreeViewItem parentTreeViewItem)
    {
        mObj = obj;
        mParentTreeViewItem = parentTreeViewItem;
    }
    public override string ToString()
    {
        return mObj.ToString();
    }
}

TreeViewItem에 아이템을 추가할때 이 Helper 클래스를 이용합니다.

TreeViewItem newItemC1 = new TreeViewItem();
newItemC1.Header = "카테고리1";
newItemC1.Items.Add(new TreeViewHelper("아이템1", newItemC1));
newItemC1.Items.Add(new TreeViewHelper("아이템2", newItemC1));
treeView1.Items.Add(newItemC1);

TreeViewItem newItemC2 = new TreeViewItem();
newItemC2.Header = "카테고리2";
newItemC2.Items.Add(new TreeViewHelper("아이템2", newItemC2));
newItemC2.Items.Add(new TreeViewHelper("아이템2", newItemC2));
treeView1.Items.Add(newItemC2);

이제 이 Helper 클래스를 통해 선택된 아이템의 값과 상위 TreeViewItem까지 조사할수 있게 되었습니다.

private void OnDoubleClickItem(object sender, MouseButtonEventArgs e)
{
    TreeView treeView = sender as TreeView;
    if (null == treeView)
        return;

    TreeViewHelper selectedItem = treeView.SelectedItem as TreeViewHelper;
    if (null == selectedItem)
        return;

    TreeViewItem selectedParentItem = selectedItem.ParentTree as TreeViewItem;
    if (null == selectedParentItem)
        return;

    string parentItemHeader = selectedParentItem.Header.ToString();
}

끝~



반응형
,
Posted by 알 수 없는 사용자

지난 회에서 자본금, 자본잉여금, 자본, 자산 등과 같은 기업의 재무관리를 이해하기 위해 필요한 아주 기본적이자 핵심적인 용어들에 대해서 알아보았습니다. 그러면 이번 포스팅에서는 본격적으로 게임개발사를 창업할 때와 회사를 끌고나가면서 알아야 할 회계와 재무관리에 대한 이야기를 시작해볼까 합니다.

"ㅅㅂ 사장이 되었습니다!"

 

▣ 지분율, 그것이 문제로다

여러분이 다니던 회사를 때려 치우고 나와서 게임개발사를 창업한다고 가정해봅시다. 김포ㅍ님이나 레ㅇ님, 불친절한티ㅅ님 같이 회사의 평균연봉을 혼자서 상향조정하는 고액연봉자라면 조그만 스타트업 정도는 그냥 미소녀 피규어 지름을 한달 정도만 참으면 쉽게 창업할 수 있지만, 저 같이 저렴한 인력은 수중의 돈만 가지고는 붕어빵 장사도 시작하기 어렵습니다. 그래서 대개는 초기자금(Seed Money)을 투자해 줄 호구... 아, 아니 물주를 구하게 되는데요. 이 때 문제가 되는 것은 바로 창업주, 즉 돈은 별로 없지만 좋은 사업 아이템과 기술력을 보유한 여러분과 가진 건 돈 밖에 없는 투자자 사이의 지분율을 결정하는 일입니다.

 

지분율이란 회사의 주식을 각 주주들이 얼마만큼 보유하고 있는지를 나타내는 수치인데요. 주식회사에서는 각 주주들의 지분율만큼 주주총회에서 의결권을 행사할 수 있고, 또 의결권이 과반수를 넘으면 사실상 회사의 경영을 자기 마음대로 할 수 있기 때문에 지분율을 얼마로 설정하느냐는 상당히 중요하고 민감한 문제입니다. 그런데 청춘을 오로지 게임개발에만 바쳐오다가 갑자기 창업을 하시는 분들은 막연히 모든 지분을 자기 혼자서, 혹은 믿을 만한 초기멤버 하고만 쥐고 있고 외부에 지분을 내주면서 투자를 받는 것을 굉장히 꺼리는 경우가 많죠. 물론 지분을 모두 쥐고 있다으면 회사의 경영권을 빼앗길 우려가 전혀 없기 때문에 자신이 원하는 대로 회사를 꾸려나갈 수 있다는 점은 장점이긴 합니다. 하지만 문제는 초기에 최소한의 자본만 가지고 시작한 스타트업의 경우 결국 수익을 낼 때까지 적지 않은 개발기간이 필요하고, 그동안에 필요한 자금을 외부에서 조달할 수 밖에 없다는 사실이죠.

 

 

▣ 창업초기에 부채로 자금을 조달한 경우

그러면 한 번 예를 들어보겠습니다. 캐나다에서 럭셔리한 게임들을 여럿 개발해온 베테랑 개발자 김폽프님은 한국에 돌아와서 (주)게임데브포에버라는 개발사를 창업합니다. 창업자금이 좀 쪼들리긴 하지만 그래도 회사의 지분 전체를 혼자서 독점하고 싶어서, 그동안 미소녀 액션피겨를 지르려다 꾹 참아가며 꿍쳐놓은 돈 2억원을 종자돈으로 삼습니다. 초기 발행주식은 액면가 5,000원, 발행가는 액면가와 같고, 발행주식수을 4만주라고 하면 자본금은 이 둘을 곱한 2억원이고 4만주 전부 창업주이자 대표이사인 김폽프가 보유하는 것이죠. 이렇게 회사를 설립한 직후의 재무상태는 아래 그림과 같습니다. 주식을 액면가 5,000원 그대로 발행했으니까 4만주 만큼의 금액인 2억원이 자본금으로 들어오고, 은행에 보통예금으로 보유하고 있는 상황이 된 것이죠.

자 이렇게 야심차게 앱 게임개발을 시작했습니다. 하지만 사무실 보증금 3천만원 내고, 인테리어 공사하고, 각종 집기들 구매하고, 직원들에게 월급 두어달 주고 나니 어느덧 회사 통장에 잔액이 8천만원 밖엔 남지 않는 군요. 물론 사무실 보증금은 사무실을 뺄 때 되돌려 받을 수 있는 돈이지만 어쨌거나 당분간은 마음대로 쓸 수 없는 돈이니 수중 융통할 수 있는 자금은 8천만원 밖엔 안되는 것입니다.

 

아래 재무상태표를 보시면 처음 설립시에는 자산총계가 2억원이었는데, 지금은 1억 4천만원으로 줄었죠. 그 이유는 보증금을 내고 유형자산을 구매하는 것은 일시적인 비용이 아니라 현금이 다른 자산으로 바뀐 것 뿐인데 비해, 직원들에게 월급을 주거나 인테리어 공사를 하는 것 등은 모두 자산으로 보유하는 것이 아니라 지출하는 즉시 비용으로 빠져나가 버리는 것이므로 이것이 재무상태표에서 결손금이 되고, 전체자본에서 마이너스가 되기 때문입니다. 아래 표를 보시면 그런 소모성 비용들을 지불하고 나서 총자산 2억원 중에서 직원 급여와 공사비 등으로 6천만원의 지출이 발생하였기 때문에 회사의 자산규모가 6천만원 감소된 것이죠. 반대로 만약 매출이 발생해서 수익금이 회사에 들어오면 결손금의 반대 개념인 이익잉여금이 되어 회사의 자산이 증가하는 거구요.

결손금의 숫자가 괄호로 싸여 있는 것은 마이너스라는 의미입니다

 

그렇게 3개월 여가 지난 후, 김폽프 대표는 첫 프로젝트들이 상용화 되고 회사의 수익구조가 안정될 때까지 버틸 자금 3억원 정도를 조달해야 겠다고 생각합니다. 그리고 수소문 끝에 스타트업 앱 개발사에 투자의향을 가진 한 투자자 투자마왕J를 만납니다. (이름 때문에 자꾸 어떤 분이 연상될 수도 있지만 그거슨 착각입니다) 이 분은 전문 투자회사 소속은 아니고 그냥 개인적으로 부동산 하다가 쌓아논 돈을 여기저기 투자하는 중입니다. 김폽프 대표이사를 만나서 사업계획을 들은 투자마왕J는 3억원 정도는 흔쾌히 투자해줄테니 지분율을 논의하자고 합니다.

 

하지만 지분을 남에게 줄 생각이 전혀 없던 김폽프 대표는 지분을 내주는 투자계약은 하지 않겠다며 투자마왕J의 투자제안을 단호하게 거절합니다. 이런 식으로 몇 번의 투자제안을 거절한 김폽프 대표는 결국 지분을 요구하는 개인 투자자보다는 금융기관에서 자금을 끌어다 쓰기로 결정하고 쏠로문저축은행에 찾아갑니다. 그러나 은행 대출담당자는 회사가 설립된지 얼마 되지도 않았고, 아직 수익모델도 없고, 회사내에 담보로 잡을 만한 거라고는 사무실 보증금 3천만원이 전부여서 대출이 쉽지 않겠다고 말합니다. 그래서 결국 김폽프 대표는 자신의 강남 스똬일~ 아파트를 담보로 잡고 3억을 대출 받게 됩니다.

 

"대출은 쏠로문~ 쏠로인 분들에게만 캐시를 찰지게 땡겨드려용"

 

자 그러면 3억원의 대출을 받은 직후의 재무상태는 어떻게 될까요? 아래에서 보다시피 은행에서 끌어온 차입금 3억원이 통장에 입금되어 자산총계가 4억 4천만원으로 증가합니다. 하지만 자산을 구성하는 금액 가운데 부채가 3억원으로 자본총계 1억 4천보다 두 배가 넘죠. 회사에 현금은 많아졌는데 이게 죄다 부채로 끌어온 것이다보니 회사의 부채비율(부채총계÷자본총계)이 214%나 됩니다. 한 방에 뙇~하고 채무초과 회사가 된 것이죠. 회사 지분 100%를 유지하기 위해서 지분투자를 거절하고 그냥 차입금을 끌어다 쓰면 회사의 재무상태가 이렇게 됩니다.

그런데 문제는 스타트업이기 때문에 당장 수익은 없고 상용화에 성공한 게임이 나오기까지 계속해서 지출만 발생한다는 사실입니다. 그래서 3억원을 빌려와서 자산을 증가시켜도 금세 까먹고 마는 것이죠. 처음 창업인데다 개발자들도 팀웍이 잘 안맞고 하니 프로젝트 일정도 계속 지연됩니다. 그런데다가 별개의 프로젝트 팀까지 구성해서 집기를 추가 구매하고 월급을 주고 하니까 매달 지출은 눈에 띄게 증가합니다. 요렇게 또 몇 달 흘러가니까 회사의 재무상태가 아래와 같이 변합니다. 

4억 4천만원이었던 자산규모는 거의 반토막이 나서 2억 6천만원으로 줄었고, 무엇보다도 계속 비용만 지출하고 수익은 없으니 결손금이 누적되어 자본금(2억원)보다 결손금(2억 6천)이 더 많아지는 자본잠식 상태가 되어 버립니다. 그 결과 자본총계가 플러스가 아닌 마이너스 4천만원이 되었죠. 당장 쓸 수 있는 자금인 보통예금은 1억 4500만원 밖에 남질 았았는데, 개발인력이 늘어나서 이젠 한 달에 4천만원 가까이 유지비가 들어가니까 4개월도 채 버티지 못할 금액이죠. 위기의식을 느낀 김폽프 대표는 창업초기에 투자의사가 있었던 투자마왕J를 다시 만납니다.

 

한동안 소식이 없다가 갑자기 미팅 제의를 받은 투자마왕J는 김폽프 대표의 스타트업 개발사 (주)게임데브포에버의 재무상태가 '당연히' 궁금해집니다. 그래서 김폽프대표로부터 재무제표를 전달 받아 펴보는 순간 뜨악~하고 놀랍니다. 자본금은 이미 다 까먹은데다가 부채는 3억이나 있고 회사의 운영자금도 3~4개월분 밖에는 남지 않았기 때문이죠. 그래도 투자마왕J는 지분이라도 좀 많이 내주면 베팅을 해볼 생각이었지만, 이방면에 지식이 없는 김폽프 대표는 그저 3억을 투자하면 지분의 20%를 주겠다고 선을 딱 그어버립니다. 

 

발행주식수가 4만주에 자본금이 2억원인 기업에 3억을 투자해서 지분 20%를 받는 조건이라면, 투자자 몫으로 새롭게 발행하는 주식의 수는 아래와 같은 식으로 계산됩니다. (χ = 새로 발행할 주식수)

 

( 40000 + χ ) * 20% = χ

 

자세한 설명은 생략한다...

 

χ = 10000

 

즉 투자자 몫으로 새롭게 발행되는 주식수는 1만주이고 투자마왕J는 이 1만주를 3억원에 인수하게 되겠죠. 그러면 투자마왕J는 3억원을 내고 액면가 5천만원 어치의 주식을 받는 것이니까 액면가의 6배를 지불하는 셈입니다. 즉 6배수 증자라는 뜻이죠. 그런데 투자마왕J는 이 제안을 받고 한참을 고민합니다. 반면에 김폽프 대표는 고작 3억을 받고 지분을 20%나 내주는 것도 내심 내키지가 않습니다.

 

 

▣ 창업주와 투자자의 시각차

자, 그러면 창업주 김폽프 대표와 투자를 고려하고 있는 투자마왕J 사이의 생각의 차이는 어디서 오는 것일까요? 통상적으로, 투자자가 기업에 자금을 제공하고 그 기업의 주식을 받는 방식인 지분투자를 할 때에는 투자시점의 기업가치를 평가하고 그렇게 산정된 가치를 기준으로 투자액과 지분율을 결정합니다. 그런데 창업주는 자신이 그동안 회사에 투자한 금액과 노력에 비중을 많이 두고, 또 회사의 미래 가능성에 대해서 긍정적으로 생각하는 반면에, 투자자는 보다 냉정하고 계산적으로 가치를 평가하는 것은 물론이거니와 미래의 가능성에 대해서도 보수적으로 생각하기 때문에 둘 사이에 큰 간극이 벌어지게 됩니다.

 

그럼 김폽프 대표의 제안을 가지고 체계적으로 따져볼까요? 이 제안이 적정하다면, 3억을 투자해서 20%의 지분을 얻는 것이므로 투자후 기업가치는 3억 ÷ 20% = 15억이 됩니다. (아래 그림 참조) 그렇다면 투자전 기업가치는 투자금 3억을 뺀 12억원이라는 뜻이 돼죠. 따라서 투자마왕J는 자신이 투자하기 전 (주)게임데브포에버의 기업가치가 12억원이 되는지 여부를 따져볼 것입니다.

 

 

 

그러면 우선은 기업가치를 산정하는 방식에 대해서 알아봐야 겠죠? 기업가치 산정방식은 다음과 같은 세 가지가 있습니다.

 

  1. 자산가치 산정방식 ▶ 회사의 순자산 가치를 측정
  2. 수익가치 산정방식 ▶ 순이익 * 적절한 PER(주가수익률)
  3. 상대가치 산정방식 ▶ 투자대상 기업과 유사한 기업의 가치와 비교

 

 

▣ 기업가치 평가방법 (1) - 자산가치 산정방식

자 그러면 가장 먼저 자산가치 산정방식에 대해서 알아봅시다. 이 방식은 간단하게 말하면 기업의 순자산액을 그 기업의 가치로 평가하는 방식입니다. 여기서 순자산이란 자산총액에서 부채를 뺀 금액을 말합니다. 그러면 (주)게임데브포에버의 현재 재무상태를 다시 살펴볼까요? 어... 스크롤을 꽤 많이올려야 하니 그냥 앞에서 보았던 재무상태표를 다시 Ctrl+V 하기로 합니다.

 

 

자산총계는 2억 6천만원인데, 문제는 부채가 3억원이고 자본은 마이너스 4천만원이죠. 그러니까 자산가치 산정 방식으로만 보면 현재 (주)게임데브포에버는 가치가 전혀 없는 셈입니다. 그런데 사실 자산가치 산정방식은 지식서비스 산업인 IT업종에는 적합하지 않은 방식이고 또 스타트업에는 더더욱 적합하지 않은 방식이긴 합니다. 하지만 중요한 것은 위 재무상태표를 통해서도 알 수 있듯이 스타트업이 초기부터 돈을 빌려쓰면 재무상태가 아주 열악해진다는 사실이죠. 그래서 초기에는 창업주의 지분을 조금 내 주더라도 적절히 자본을 유치하는 편이 더 바람직합니다.

 

 

▣ 기업가치 평가방법 (2) - 수익가치 산정방식

그러면 이번에는 두 번째 평가방법인 수익가치 산정방식을 살펴볼까요. 이 방식은 회사의 순이익에 적절한 PER(퍼~)라는 것을 곱해서 기업의 가치를 산정하는 방식입니다. 그러면 PER란 건 도대체 뭘까요?

 

PER: Price Earning Ratio (주가수익률)

회사의 주가(株價)를 주당순이익으로 나눈 값이다. 즉 회사의 주가가 이익의 몇 배인지를 나타내는 수치로, 이 수치가 높으면 회사의 수익률에 비해 주가가 높게 형성되어 있음을 의미한다. 반대로 PER가 낮으면 회사의 실적에 비해 저평가 되어 있다는 뜻이다.

 

PER를 구할 때 분모가 되는 주당순이익은 EPS(Earnings Per Share)라고 하며, 회사의 순이익을 총주식수로 나눈 값이다. 즉 회사가 발행한 주식 1주당 얼마의 이익을 내는지를 나타내는 수치이다.

 

예를 들어, 1주당 주가가 1만원인 기업의 그 해 순이익이 10억원이고, 총주식수가 100만주라면,

⊙ 주당순이익(EPS)은, 10억원 ÷ 100만주 = 1,000원 이고,

⊙ 주가수익률(PER)은, 1만원 ÷ 1,000원 = 10 (배)이다.

 

 

자, 그러면 일부 상장 게임사들의 주가수익률을 한 번 살펴보도록 하죠.

 

 

PER 순위(!)에서 대망의 1위를 차지한 곳은 컴투스로군요. 물론 상장기업의 주가는 시시각각 급변하기 때문에 이 수치는 일정한 게 아니라 수시로 변합니다. 어쨌거나 조사일인 8월 3일 주식시장 마감시점을 기준으로 무려 103.16배나 돼죠. 이말은 즉, 컴투스의 주가 42,400원이 1주당 순이익(EPS) 411원보다 103배가 많다는 뜻입니다. 반면에 위 표에서 최하위(!)인 네오위즈게임즈는 6.56배에 불과합니다.

 

하지만 바로 위에서 용어설명을 하면서도 언급했듯이 PER가 높다고 해서 무조건 좋은 것도 아니고 낮다고 해서 나쁜 것도 아닙니다. 다만 PER라는 수치는 그 기업의 실적에 비해 주가가 고평가되었느냐 저평가되었느냐를 나타내는 지표일 뿐입니다. PER가 높으면 과거 실적에 비해 미래 전망이 밝은 회사일 수도 있는 것이고, PER가 낮으면 과거실적은 좋지만 미래 전망이 어둡거나, 혹은 주식투자자들의 눈에 띄지 않아서 거래가 활발하지 않은 것일 수도 있습니다. 딱히 네오위즈게임즈가 민군님이 다니는 회사라서 PER가 낮은 것은 아니라는 얘기죠.

 

그런데 뭐 얘기하다가 PER가 나왔죠...? 아... 기업가치 평가방법에서 수익가치 산정방식을 설명하려다가 이 얘기가 나왔군요. 수익가치 산정방식에서는 앞에서도 설명했듯이 기업의 순이익에 적절한 PER를 곱하는 방법으로 기업의 가치를 평가합니다. 예를 들어서 순이익이 1억 5천만원이 나오는 회사에 적정 PER가 20이라면, 이 방식으로 산정한 기업가치는 1억 5천 * 20배 = 30억이 되는 셈이죠.

 

그러면 적정 PER는 도대체 어떻게 구할까요? 이게 다분히 주관성이 개입되는 부분이긴 합니다만, 나름대로 객관성을 유지하기 위해서 동종 상장기업의 평균 PER 등을 기준으로 일정수치 만큼 낮춰서 책정하는 방법이 흔히 쓰입니다. 예를 들면, 상장 게임사의 평균 PER가 35~45 정도이고, 평가대상이 비상장 중소게임사라면 이보다 낮은 15~25 선에서 배수를 잡는 것이죠. 아무래도 이미 실적이 검증되어 있고, 이미 상장도 되어 있고, 비교적 안정적으로 운영되는 상장사에 비해 창업초기의 비상장사 기업은 불안요인이 많으니까요.

 

하지만 문제는, 초기 스타트업 개발사는 이익은 커녕 매출액 자체도 없기 때문에 이 방법조차도 적용할 수 없다는 점입니다. 이익이 있어야 적정한 PER를 곱해서 기업가치를 산정할 텐데 이익 자체가 없으니 계산이 가능할리가 없죠. 0에다가는 몇을 곱하든 0이 되어버리니까요. 그래서 결국 초기 스타트업이라면 기업가치 산정방식 1, 2 둘 다 소용이 없습니다. 그러면 이제 마지막 산정방식이 남아 있는데요. 세 번째인 상대가치 산정방식에 대해서는 다음 회에서 설명해보겠습니다.

 

 

 

반응형
,
Posted by 대마왕J

DOT 제대로 알기

 

14강입니다. 반갑습니다. 흠...

간만에 보니까 막 낯설고 막 이래.

 

전에 뭔 얘기 했지? 라는 생각에 13강 잠깐 보고 올께요

 

 

아 뛰어 갔다 왔뜸. 진짜임.

 

 

아... 그거 했구나...

13강때 드디어 Shader의 본질에 접근한 거였군요. dot을 배웠어요 dot을 . 도트라고 읽으면 안돼요. 놀림받아요.

 '닷' 이라고 읽으세요.  

공식으로는 요렇게 써요 (AㆍB) 라고 말예요. A랑 B를 닷 한다는 얘기죠.
유식하게 말하면 '닷 프로덕트'(dot product) 를 한다고 하는 거지요. 오늘부터 써먹어 보세요.  [각주:1]

저번 시간 잠깐 정리해 보죠. 결코 새로 쓰기 귀찮아서가 아님
일단 벡터가 두 개 있었죠. 조명벡터와 노말벡터.

 

그리고 그 각도에 따라 값이 결정된다고 했습니다.
0도일때는 1.0
45도일때는 0.5
90도일때는 0


그리고 그걸 하는데 dot 이라는 함수를 썼었지요. 그걸 쓰면 저 값이 나오나 봅니다.
네 그럴 듯 해요. 그런거 같아요. 맞는 것 같습니다.
 


그런데 이 그림 
사실은
틀립니다!!!!

헹 속았지?

 

 

정확하지 않아요!!!! 아주 대에추우우우우우웅 생각하면 아주 대에에에추우우우웅 맞는 것 같은 느낌이 문득 들 것도 같기도 하지만, 사실은 아주 정확하게도 정확하지 않습니다!!!

왜냐고요? 저거 그래프로 그려볼께요
0도일때는 1.0
45도일때는 0.5
90도일때는 0
우리는 수학에 약하므로, 이 수치만 가지고 대충 생각해 보죠.

뭐 이런 건가??? 라고 생각이 들지 않아요???
솔직히 말해봐요. 이렇게 생각하고 있었죠?  

근데말이죠. dot 공식이라는걸 좀 제대로 알면 생각이 달라져요.
제대로 알기 위해 정말 하기 싫은 설명을 안할 수 없겠군요. 수학 얘기요. 나 수학 싫음.

수학 무써워 ㅠㅠ

 

 

 

 

dot 조금만 더 알자

걱정하실 필요 없습니다. 저도 여기서 공식 증명할 수준 안돼요.
(사실 배웠는데 다 잊어먹음 . 잇힝. 내 머리가 다 그렇지 뭐.)

그래서 걍 외워 버렸습니다. 여러분도 저처럼 외우면 돼요. 간단해요. 캬캬캬컄
그냥 우리 그림으로 다 이해해 버리죠. 그래픽 디자이너 답게요.

먹고 살려면 다 외우게 되어 있어.

 

일단 이 dot이란 놈이 생긴 이유가요. 아래와 같은 이유예요.
빛이 기울어지면 길어지죠. 다시 말해서 같은 양의 빛이 넓은 면적에 퍼지는 거니까,
빛의 원래 강도가 1이라고 보고, 기울어지는 각도를 θ (세타 : theta) 라고 본다면

 

요래요래요래요래요래요래요래요래 되는 것이란 말이죠. 응? 이해 안돼요? 하지마요 그럼. 괜찮아요 이까이꺼.

 

그래서 이렇게 입사광의 광도는 노말 벡터와 조명 벡터의 코사인이 된다는 관계가 있으므로
이걸 이렇게 저렇게 요렇게 씹고 뜯고 맛보고 즐기고 수식으로 바꾸면...

 AㆍB = |A||B|cosθ
A 닷 B 는 A절대값과 B절대값의 코사인세타다

이라고 하니까....

AㆍB 이라는게 위에 말한 A와 B의 각도의 코사인이라는 얘기인거 아닙니까

 


 

아... 머리가 갑자기 복잡해지죠?
괜찮습니다. 여기서 알아야 할 건 딱 하나입니다. 여러분은 이것만 알면 돼요.[각주:2]

Dot 함수는 "코사인 그래프"와 뭔가 연관이 있다.

넹 이거예요.

바로 이 코사인인가 뭐신가 하는 것의 모양으로 값이 변한다는 겁니다.
아 그럼 일단 코사인 그래프를 꺼내보죠
코사인 그래프는 이렇게 생겼어요.

 

http://100.naver.com/100.nhn?type=image&media_id=8101&docid=86013&dir_id=0501010403

그래프를 보시면, 두 가지를 알 수 있죠.

 그래프가 직선이 아니라 살짝 곡선으로 휘었네요 .
베지어 곡선 같아요. 에니메이션 컨트롤러 건드려 보신분은 알듯

 

 1에서부터 0까지가 아니라
 1에서 0을
 거쳐 -1 까지 왔다갔다 하네요.

 

 

네, 그래서 ...
조명 계산 공식의 그래프는

이런 모양이 아니라 사실은

 

이런 모양인 거란 말입니다!!! 즉

 0.5의 밝기는 45도가 아닌, 60도 정도에서 나와요.
살짝 배부른 모양이라니까요.

그리고 또 하나 중요한 사실.

 

 

 

 두둥

0에서 1까지의 값이 아니라 -1에서 1까지의 값이 나와요!!!
dot 공식은 코사인 그래프라서, 사실 0에서 1까지의 값이 아니라 -1에서 1까지의 값이 나온단 말입니다!!!
음수라니!! 내가 음수라니!!!!! 빛을 계산하는데 내가 음수라니!!!! 

나도음수라니

 

즉 진실은

이게 아니라요

 

이게 진짜라는 말입니다. 45도가 절반(0.5)도 아니고, 0에서 끝나는게 아니라 음수까지 나온단 말이죠. 수학적으로.

그런데 빛 계산을 할 때 음수가 저렇게 있으면 여러모로 피곤한 일이 생깁니다. 빛이 거꾸로 밝아진다던가 등등...[각주:3]
그래서 dot 계산을 할 때, "0보다 낮은 수가 있으면 그냥 0으로 갈음해라" 라는 명령이 생기지요.

그 명령이 Shader FX 에서는 이거입니다.
이거 하나 배우자고 여기까지 온거냐.

음수를 방지하는 저 옵션이 켜 있기 때문에, 0보다 작은 음수는 모두 0으로 인식되어서

 

이렇게 인식되므로... (음수값이 모두 0으로 변했어요)

 

이런 이미지가 나올 수 있게 된거죠. [각주:4]

자, 그럼 우린 그래픽 아티스트니까,
정말로 값이 저런지 체크를 해 볼까요?

조금 무식하지만,
각 각도에 해당되는 위치의 색상값들을 스포이드로 찍어 보지요.
우린 이렇게 바로 보이는거 좋아하잖아   

 

정말입니다!!! 사실 약 1~4 정도의 오차는 있었지만, 거의 계산대로 나왔어요!!! 45도 위치에 있는 빛의 밝기가 0.7 즉 70% 정도의 밝기값이라는게 증명되네요!

 

자 그런데 이걸 왜 굳이 설명했냐고요?

그러게요♬ 

쌈바

 

 

 

 

 

 

사실 뭐 굳이 cos 이라고 인식 안해도 돼요. 사실 그냥 직선이라고 생각해도 아-무 문제 없습니다. 아니 아무 문제 없다는건 거짓말. '큰' 문제 없습니다. 특히나 우리같은 그래픽 아티스트들한테는 말이죠. 대충 개념으로만 생각하기에는 무리 없어요.

그래도 어느 정도 이상 가면 저게 확실히 필요하긴 하거든요.
그리고 어렵더라도, 이왕 알아둘 바에는 할 수 있는 한 정확하게 알아두는게 좋지요. [각주:5]

 

그런 의미에서... 그 '어느 정도 이상' 으로 가 봅시다. 후후후. 저게 필요한 영역으로 가 보자고요.

 

 

 

조명 계산의 응용

조명 계산은 뭐.. 위에 설명한 램버트 방식은요, 사실 그다지 좋은 녀석은 아녜요.
무척 가볍긴 한 장점이 있지만 가볍고 싼 대신 아무래도 좀 그러니까.

 

넌 쫌 그래.

특히 캐릭터 같은 경우는 그래서 이걸로만 쓰는건 좀 부족해서요.
그래서 뭔가뭔가뭔가 더 하곤 하죠.

 

 

 

그 중에서도 되게 간단하고 쉬운데 이름이 간지나고 나름 유명한거 하나만 다음 시간에 해보도록 하겠습니다.

바로 하프 - 렘버트 (Half- Lambert) 라고 하는, 하프 라이프 2에 사용되었던 유명한 캐릭터 라이트 방식입니다!

 

이걸 다음 시간에 실습해 보도록 하지요!

위의 것을 제대로 익히셨다면 아무것도 아니예요!!! 진짜 쉬워서 눈물이 나올 지경!!!!

 

  1. 프로그래머 앞에서 이렇게 얘기하면 프로그래머가 "아니!!?? 도데체 어디서 뭘 어디까지 배워온 거지?" 라고 생각하면서 흠칫 놀랄 겁니다. 켈켈켈. [본문으로]
  2. 사실 프로그래머들한테도 가서 갑자기 '왜 닷이 코사인이랑 같은지 설명해봐' 이러면 도망가는 친구가 많습니다. 이런거 시험에 안나와요. ㅋ [본문으로]
  3. 절대값 계산이 들어가는 경우가 있거든요. 그럼 음수도 양수로 돌변... [본문으로]
  4. 사실 지금은 음수를 그냥 남겨 놔도 제대로 나오긴 합니다만, 다른 계산할때 치명적 문제가 발생하므로 일찌감찌 막아주는 겁니다. [본문으로]
  5. 안그러면 저같이 뽀루꾸가 됨. [본문으로]
반응형
,
Posted by 알 수 없는 사용자

PC 온라인 게임 개발이 주류이던 시절에는 게임 개발사를 창업한다는 게 쉬운 일이 아니었지만, 스마트폰 게임이나 앱 개발이 트렌드가 된 요즘은 혼자서도 개발사 창업이 가능한 시대가 되었습니다. 하지만 스스로 창업을 해서 대표이사 또는 개인사업자가 되거나 스타트업의 출자자가 될 경우, 매달 꼬박꼬박 월급을 받아가며 회사에 다니던 때와는 달리 개발 외적인 쪽에도 신경써야 할 것도 많고 책임감도 막중해지죠. 그 가운데에서도 가장 큰 고민거리는 여러분도 잘 알다시피 바로 자금과 관련된 것입니다.

 

월급 받는 회사원일 때에는 직원들에게 줄 월급이나 개발에 필요한 비용을 어디서 어떻게 구해올지 내가 신경 쓸 필요가 없었죠. 하지만 창업을 하면 회사를 굴리고 개발을 진행하는데 필요한 자금을 스스로 조달하고 관리해야 한다는 점이 가장 큰 어려움이 됩니다. 그런데 문제는 자금을 조달하고 관리하려면 필연적으로 회계에 대한 지식과 노하우가 필요하다는 사실이죠. 그래서 이번 포스팅부터는 직접 개발사 창업을 하거나 혹은 창업멤버의 일원이 되시려는 분들을 위한 회계 이야기를 써볼까 합니다. 단, 이번회에서는 어쩔 수 없이 기초적인 용어 설명 위주라서 좀 재미가 없을 겁니다. 실제로 피가 되고 살이 되는 이야기는 다음 포스팅부터 이어질텐데요. 그래도 이번 회에서 설명하는 용어들을 꼭 알고 넘어가야만 하니까 조금만 참고(!) 봐주시기 바랍니다.

[ 짤방은 창업신화 가우스전자 ]

 

▣ 회사의 종잣돈, 자본금(資本金, capital stock)

몇몇 기업의 광고를 보면 '자본금 규모 업계 1위' 혹은 '자산 규모 업계 1위' 등을 내세우는 경우가 있습니다. 아마도 회계를 잘 모르시는 분들은 그 업체가 업계에서 가장 보유 자금이 많은 회사인가보다 하셨을 겁니다. 하지만 엄밀히 말하면, 자본금이나 자산 규모가 크다고 해서 꼭 그 회사가 돈이 많거나 우량한 회사인 것은 아닙니다. 왜 그런지 한 번 살펴볼까요?

 

주식회사가 사업을 위한 자금을 조달하는 방법 중에 가장 대표적인 것은 주주를 모집하는 것입니다. 그래서 회사는 모집된 주주에게 발행한 주식을 팔고 그 대가를 받아서 필요한 자금을 조달합니다. 물론 은행이나 러x앤캐x 같은 금융기관을 통해 돈을 빌리는 방법도 있지만 회사를 처음 설립하는 시점에는, 아직 만들어지지도 않고 돈을 벌지도 않는 회사에 대출을 해줄 곳이 있을 리가 만무하니 무조건 주주를 모집해고 주식을 발행해서 자본금을 조달해야만 하죠. 이렇게 발행되는 주식에는 액면가라는 게 있는데요, 액면가란 말 그대로 주식증권(주권)에 기재된 액면 금액을 말합니다. 아래 그림은 액면가 5,000원짜리 실제 주권의 예입니다.

그래서 회사가 발행한 주식의 액면가총액, 즉 1주당 액면가에 발행주식수를 곱한 금액이 자본금이 됩니다. 예를 들어, 회사를 처음 설립할 때 1주당 액면가격을 5,000원으로 하여 1만주를 발행했다고 하면, 자본금은 5,000원 x 1만주 해서 5,000만원이 되는 것이죠. 통상적인 주식회사의 경우 초기 자본금을 5,000만원 또는 1억원으로 해서  설립하는 것이 일반적입니다. 요즘에는 법이 바뀌어서 자본금 100만원짜리 주식회사도 설립할 수 있지만, 예전에는 주식회사의 경우 법정 최소 자본금이 5,000만원이었기 때문이죠.

 

그런데 이 때, 초기 주주, 즉 출자자가 여러 명이라면 각자 출자한 금액에 따라 주식을 분배받는데요. 예를 들어 대주주인 A가 60%를 출자하고 B,가 30%, C가 10%를 출자한다면, 각각 6천주, 3천주, 1천주씩을 보유하게 되는 것이죠. 그렇다면 출자금액은 어떻게 될까요? 만약 각각의 출자자들이 주식의 액면가만큼만 출자한다면, 1주당 인수금액이 액면가와 같은 5,000원이므로, A는 3,000만원, B는 1,500만원, C는 500만원을 각각 주식인수대금으로 납입할 것입니다. (주금납입이라고 함)

 

하지만, 출자금액이 항상 주식의 액면가와 동일할 필요는 없습니다. 1주당 액면가가 5,000원이라 할지라도 주식을 발행하는 회사에서 정하기에 따라서 주식의 매입가격이 10,000원일 수도 있고, 20,000원이거나 그 이상일 수도 있는데요, 흔히 말하는 2배수 증자, 4배수 증자가 바로 이런 경우를 말하는 것입니다. 그래서 주식의 액면가와는 다른 개념으로 발행가라는 용어가 등장합니다. 주식의 발행가란 쉽게 말하면 주식을 새로이 발행할 때, 그 주식의 인수자들이 실제로 지불하는 금액을 말합니다.

예를 들어, 액면가가 5,000원인 주식을 발행하는데, 발행가를 5,000원으로 한다면 그 주식을 인수하는 주주(출자자)는 액면가와 동일한 5,000원을 내면 1주를 살 수가 있습니다. 하지만 액면가가 5,000원인데, 발행가가 10,000원이라면, 그 주식을 인수하는 주주는 액면가가 아닌 발행가, 즉 10,000원을 내야만 1주를 살 수가 있는 것이죠. 그래서 흔히 말하는 '몇 배수 증자'라는 표현은, 어떤 기업이 주식을 새로이 발행할 때, 즉 자본금을 새로 유치할 때 '주식의 발행가가 액면가의 몇 배'냐를 나타내는 말입니다. 만약 액면가가 5,000원인데, 발행가가 10,000원이라면 2배수 증자인 셈이고, 20,000원이면 4배수 증자, 40,000원이면 8배수 증자가 되는 셈입니다. 따라서 회사의 입장에서는 당연히 높은 배수로 증자를 하는 것이 유리하겠죠. 회사의 지분을 적게 내주고도 많은 자본이 뙇~하고 통장에 입금될 수 있으니까요. 물론 회사가 장래성이 있어야 높은 가격에 주식을 인수할 주주가 나오겠지만요.

 

 

▣ 주주와의 거래차익, 자본잉여금(資本剩餘金, additional paid in capital)

앞에서, 자본금은 주식의 액면가 총액이라고 했었죠? 그렇다면, 주식의 액면가와 발행가가 다른 경우에 출자자로부터 납입받은 주식인수대금은 어떻게 될까요? 이를 테면 주식의 액면가가 5,000원이고 발행가가 10,000원인데 1주를 발행한 경우라면 액면가 5,000원을 초과한 나머지 5,000원 역시 자본금이 되는 것일까요?

 

회계상으로, 자본금은 주식의 액면가만 해당되며 액면가를 초과하여 납입된 금액은 '주식발행초과금'이라고 합니다. 그리고 이렇게 초과된 금액은 재무제표상에서 '자본잉여금'으로 표시되죠. 즉, 주주와 주식을 거래해서 발생한 자본이익이 잉여잉여해져서 자본잉여금으로 회사에 남는 셈입니다. 그래서 위와 같이 주식의 액면가는 5,000원인데 주주가 납부한 금액은 10,000원이라면, 자본금은 주식의 액면가인 5,000원이 되고 액면가를 초과하는 5,000원은 자본잉여금이 됩니다. 즉 어떤 회사의 재무상태표에서 '자본잉여금'이 있다면 그 회사는 언젠가 액면가보다 큰 금액으로 주식을 발행한 적이 있는 회사라는 뜻인 거죠. 물론 자본잉여금에는 주식발행초과금 외에도 감자차익이나 자기주식처분이익 등도 포함되지만, 이런 것들은 이번 포스팅의 논점과는 좀 거리가 있는데다 회계지식이 꽤 필요한 항목이므로 자세한 설명은 생략합니다.

 

▣ 회사의 재산 중 주주의 몫, 자본(資本, capital)

자본은 자본금에서 '금'자만 빼면 되지만, 실제로는 자본금보다 훨씬 더 큰 범주를 나타냅니다. 자본에 해당되는 항목을 일일이 다 설명하자면 너무 복잡하고 어려워지니까 단순하게 설명하자면, 회사가 보유하고 있는 전체 재산(자산)에서 부채를 제외한 금액을 모두 자본이라고 보면 편합니다. 다른 말로 하면, 부채는 갚아야 할 돈이므로 타인자본이라고 하고 부채를 제외한 나머지 자본은 회사 자신의 소유이므로 자기자본이라고 합니다. 그런데, 회사의 소유권은 주주에게 있으므로 자기자본을 또 다른 말로 주주자본이라고도 합니다. 실제로 회사가 사업을 중단하고 청산할 때에는 부채를 다 정리하고 난 나머지 자산을 처분하여 주주들에게 지분율에 따라 분배하도록 법으로 정하고 있죠. (상법 제538조)

 

자본에 해당하는 대표적인 예는 앞서 살펴본 자본금과 자본잉여금 외에도 이익잉여금(또는 결손금) 등이 있습니다. 여기서 이익잉여금이란 쉽게 말하면, 회사가 이익을 내서 쌓아놓은 금액을 말하며, 결손금은 반대로 이익을 내지 못해 손실로 누적된 마이너스 금액을 의미합니다.

 

 

▣ 회사가 보유하고 있는 것, 자산(資産, asset)

자산은 재산(財産)과 비슷한 뜻을 갖지만, 회계에서 말하는 자산은 '과거의 거래나 사건의 결과로서 현재 기업에 의해 지배되고, 미래에 경제적 효익을 창출해줄 것으로 기대되는 자원'을 의미합니다. 아... 뭔가 좀 머리가 아프죠? 그냥 쉽게 말하면, 유형이든 무형이든 경제적 가치가 있는 것으로 회사가 보유하고 있으면 자산이라고 할 수 있습니다. 예를 들면, 현금이나 예금과 같은 것은 현금성자산이고, 회사가 사용목적으로 구입한 건물이나 자동차, 각종 집기, 컴퓨터 등은 유형자산이며, 판매목적으로 구입한 원재료나 제품 등은 재고자산입니다. 그리고 영업권이나 특허권 등은 실체가 없는 것이므로 무형자산에 속합니다.

 

 

▣ 자본, 부채, 자산의 관계를 알아보자

그런데 재미있는 것은, 회계상으로 자산 = 자본 + 부채라는 등식이 성립한다는 사실입니다. 따라서 자산 규모 크다고 해서 그 회사가 반드시 우량한 것이 아닙니다. 자산이 크더라도 그 자산의 대부분이 부채라면 그 회사는 재정적으로 부실한 회사일 가능성이 크죠. 그러면 왜 자본과 부채의 합이 자산이 되는 것일까요?

 

회계의 관점에서 보면, 기업의 활동은 자금을 조달하는 일과 자금을 활용하는 일로 구분할 수 있습니다. 그래서 기업의 외부로부터 자금을 회사의 외부에서 빌려오면 부채이고, 주주로부터 자금을 끌어오거나 경영활동을 통해 이익을 내서 회사에 쌓이면 자본입니다. 그리고 이렇게 확보된 자금을 회사가 어떻게 활용하느냐에 따라 현금성자산, 재고자산, 유형자산, 투자자산, 무형자산 등으로 분류되어 회사의 경영활동에 기여하는 것이죠.

 

그래서 재무제표 가운데 재무상태표(예전 명칭 대차대조표)를 보면 왼쪽(차변)에 자산의 내역, 오른쪽(대변)에 부채와 자본의 내역이 나열되어 있으며, 이것을 보면 그 회사가 자금을 어떻게 조달해서 어디에 활용하고 있는지를 알 수가 있습니다. 예를 들어, 회사를 처음 설립해서 출자자로부터 1억원을 출자 받고 액면가 5,000원짜리 주식 1만주를 발행했다면, 그 회사의 재무상태표는 이렇게 됩니다.

 

오른쪽(대변)을 보면 아직 돈을 빌린적은 없으니까 당연히 부채는 0원이고, 자본항목에서는 5,000원 짜리 주식을 1만주 발행했으니 자본금이 5천만원이 되었죠. 그리고 출자자로부터 1주당 1만원씩 1만주 만큼의 주식인수대금을 받았으니까 받은 돈 1억원 가운데에 자본금(주식 액면가) 5천만원을 제외한 나머지 5천만원은 주식발행초과금으로써 자본잉여금으로 들어갑니다. 그래서 출자자로부터 받은 총 1억원의 자금이 현금자산으로 재무상태표의 왼쪽(차변)에 기록되죠. 즉 현재시점에서 자금의 조달은 주주에게 주식을 팔아서 했고, 그 자금은 현재 현금으로 보유하는 방법으로 활용하고 있는 것이죠. 여기서, '현금으로 보유'하고 있는 게 어떻게 '활용'이냐는 의문을 가지실 수도 있지만, 회계에서는 현금으로 보유하는 것도 자금을 활용하는 방법 가운데 하나입니다. 뭐 굳이 설명하자면, 현금자산은 우발적이거나 시급하게 자금이 필요한 경우에 즉시 대응을 하는 용도라고 할 수 있죠.

 

그럼 이제 회사를 설립하고 자본금도 채웠으니 이제 사업할 준비를 해야겠죠. 게임 개발사니까 일단 컴퓨터와 집기들을 2천만원 어치 구입합니다. 뭐 사실은 사무실부터 구해야 하지만 일단 그건 그냥 있다고 칩시다. 아니면 처음에는 비용을 최소화 해야 하니까 일단 집에서 방 한칸을 사무용으로 쓴다고 치죠.

그러면 위와 같이 부채나 자본은 변화가 없고, 자산쪽에서 현금 2천만원이 줄고 유형자산 2천만원이 늘었습니다. 즉, 2천만원 어치 구입한 컴퓨터와 집기류들이 현금에서 유형자산으로 바뀌었다는 뜻이죠. 자, 현금자산이 1억원일 때에는 자금이 넉넉해 보였는데 2천만원을 쓰고나니, 창업자금이 금세 바닥날 것 같다는 걱정이 생깁니다. 그래서 이번에는 러x앤캐x 같은 곳에서 신체포기각서를 담보 삼아 3천만원을 빌려봅니다. 네? 뭔가 좀 이상하다구요? 요즘 같이 시장경쟁이 치열한 시대에는 게임개발사 창업도 이렇게 목숨을 걸고 해야 하는 거죠. 그정도 의지력이 부족하면 이 사업 못합니다.

자 그러면 부채쪽에 장기차입금 3천만원이 생기면서 회사의 자산총계가 1억에서 1억 3천만원이 되었습니다. 그리고 빌린 돈 3천만원 만큼 현금자산이 증가해서 1억 1천만원이 됐죠. 은행에서 차입금을 빌려오는 것은 '자금의 조달'이니까 재무상태표 상의 오른쪽(대변)에 들어가고, 빌린 차입금을 현금으로 보유하는 것은 '자금의 활용'이므로 왼쪽(차변)에 들어갑니다.

 

이정도면 일단 본격적인 이야기를 시작하기에 앞서 기초설명은 대강 된 것 같네요. 오늘의 이야기를 요약하자면 이렇습니다.

  • 부채자본은 회사가 자금을 조달하는 방법을 나타냅니다

  • 자산은 그렇게 조달된 자금을 어떻게 활용하고 있는지를 나타냅니다.

  • 또한 자금의 조달방법 중에서 부채는 기업의 외부에서 빌려온 자금을 말합니다.

  • 자본은 기업이 스스로 돈을 조달한 자금을 뜻합니다. (자본금+자본잉여금+이익잉여금 등)

  • 자본 가운데에서도 자본금은 회사가 발행한 주식의 액면금액 합입니다.

  • 본잉여금은 주주와의 자본거래에서 발생한 차익(주식발행초과금 등)을 뜻합니다.

  • 재무제표 가운데 하나인 재무상태표는 왼쪽(차변)에 회사의 자산내역을, 오른쪽(대변)에 부채와 자본 내역을 열거하여 회사가 자금을 어떻게 조달해서 어떻게 활용하고 있는지를 알려줍니다.

 

자, 이렇게 해서 본격적인 게임회사 창업을 위한 회계 가이드의 서론을 마무리 해봅니다. 이제 다음 포스팅부터는 정말로 피가 되고 살이 될 본론을 시작해보도록 하겠습니다. 커밍쑨~

 

 

반응형
,
Posted by 알 수 없는 사용자

버그 리포트 작성은 테스터에게 매우 중요한 업무 중의 하나입니다.

그런데 실은 이런 버그 리포트는 테스터 외의 사람들도 할 수 있는 업무입니다.

만들고 있는 게임과 관련된 사람이라면 그리고 버그라고 생각되는 현상을 찾아냈다면 디자이너도 작성할 수 있고 PM도 작성할 수 있고 GM도 작성할 수 있고 그리고 게이머도 작성할 때가 있죠.

그럼에도 그까이꺼~ 라는 관념 때문인지 이 버그리포트에 대해 제대로 알려주지 못하는 경우가 많습니다..

실은 그 그까이꺼~ 내용이 조엘 온 소프트웨어라는 책에 잘 소개 되어 있습니다.

조엘 온 소프트웨어를 보면 좋은 버그 리포트에는 항상 3가지가 들어 있다고 합니다.

1. 버그를 재현할 수 있는 과정

2. 당초 기대했던 적정 결과

3. 버그로 인한 실제 결과

참 쉬우니까 이번 포스팅은 여기서 끝~~

예 아직 아니됩니다.

다시 3가지 내용이 뭔지 가져와 보죠.

1. 버그를 재현할 수 있는 과정

다시 조엘 온 소프트웨어의 내용을 잠시 빌려봅니다.

 

버그를 재현할 수 있는 방법을 설명해주지 않으면, 프로그래머는 도대체 어떤 버그를 말하는 것인지조차 감을 잡을 수가 없다. “프로그램이 다운되더니 시스템이 엉망이 돼 버렸어.” 아주 친절한 설명이로군. 구체적으로 무엇을어떻게했는지를 말해주지 않으면 프로그래머는 아무것도 할 수가 없다. 정확한 버그 재현 과정을 설명하기 어렵다는 점을 프로그래머가 인정할 수 있는 경우는 두 가지다. 첫 번째는 가끔씩 그저 기억이 잘 나질 않거나 혹은 그냥 “필드” 테스트에서 버그 결과만 그대로 옮기는 경우다. (그런데, 왜 “필드”(field, 밭)이라는 말을 쓸까? ‘호밀밭’ 할 때 그 밭하고 같은 의민가? 아무튼…). 버그 재현 과정을 정확하게 보고하기 어려운 또 다른 경우는 버그가 매번 발생하는 것이 아니라 이따금씩 발생하는 경우다. 하지만, 이런 경우에도 버그 재현 과정은 설명해주어야 한다. 버그가 자주 발생하는 것은 아니라는 주석과 함께. 이처럼 정확한 버그 재현 과정을 파악할 수 없는 경우 버그를 찾아내기란 매우 어렵지만, 그래도 프로그래머들은 디버깅을 시도한다.

 

자세히 잘 써주면 됩니다. 라는 내용이긴 합니다만 몇 가지 예를 좀 골라보겠습니다.

  • 테스트 환경

    - Client의 Version 혹은 Revision을 명시한다.

    - 개발서버 혹은 테스트 서버가 따로 있다면 서버 이름도 명시한다.

  • 장문보다는 짧고 순차적인 단문으로

    - 프로그래머에게 국어 시험 풀게 하는 것도 아닌데 굳이 장문으로 상황을 길게 쓰는 것 안 좋습니다. 디버깅도 일인데 문장 해석까지 시켜야 할까요.

    - 1,2,3,4로 스텝을 나눠가며 단문으로 나눠 적는 것도 좋습니다.

  • 보편적 단어 통일된 단어를 사용한다.

    - 같은 뜻을 얘기하는데 서로 다른 단어를 쓰는 경우가 흔하게 있습니다. 미리미리 통일시켜줘야 나중에 업무상에도 편합니다.

    - 예를 들면 프랍=메쉬=프록시 요런거 보통 비슷한 뜻으로 쓰는데 다르기도 하고 그러죠.

  • 육하원칙 아시죠?

    - 누가? 내 캐릭터가? 저노마가? 저 NPC가? 저 몬스터가?

    - 언제? 몇 시경에? 서버에 log가 남는다면 log 내용 찾을 때도 쓸 수 있겠죠.

    - 어디서? 어떤 맵에서? 맵이름을 몰라? 그럼 좌표는?

    - 무엇을? 어떻게? 왜? 상황에 대한 자세한 설명이 필요합니다.

  • 버그 발생의 조건 최소화하기

    - 버그라는 게 발생할 때의 조건이 제한적이지 않을 때도 있습니다.

    - 이왕이면 제한적인 조건을 찾아내는 게 프로그래머가 원인을 파악하는데 시간을 줄일 수 있으니 좋죠.

    - 하.지.만. 제한적인 조건을 찾는데 시간을 너무 들이지 않는 것이 좋습니다. 10분 동안 재현 스텝을 찾아보고 그래도 안 나온다면 그냥 리포트를 보내세요.

    - 가끔은 테스터보다 프로그래머분들이 더 빨리 문제 상태만 보고 원인을 찾아내기도 합니다. (마음속 한구석에 자리잡고 있던 어떤 의심이라던가.. 그런거 있잖아요.)

    - 그리고 그 문제 조건 찾느라 다른 거 테스트 못하면 그만큼 더 손해랍니다. 언제나 테스트를 위한 시간은 한정적이니 잘 조절하세요.

이 1번 항목이 원래 가장 까다롭습니다. 그만큼 중요한 것이기도 하구요. 프로그래머에게 이쁨받는 테스터가 되려면 이게 중요하다고 해도 과언이 아닙니다.

2. 당초 기대했던 적정 결과

또 조엘 온 소프트웨어를 보죠..

 

또, 당초기대했던적정상태가 어떤 것인지 구체적으로 이야기해주지 않으면, 프로그래머는 도대체 이게 왜 버그라는 것인지 이해할 수 없게 된다. 스플래쉬 화면에 핏자국이 있어요. 그래서요? 그건 코딩할 때 내가 손가락을 다쳐서 그때 묻은 거예요. 도대체 그게 뭐가 잘못됐다는 거죠? 아, 원래 스펙에는 핏자국은 포함되지 않았다는 말이구나. 진작에 그렇게 말씀을 해주시지.

저는 양키 개그는 언제나 훌륭하다고 생각하는데 저 개그는 좀………

테스터 혹 문제를 발견한 사람은 이것이 문제라는 것을 인지하고 리포트를 보냅니다. (그러니까 보내겠죠?)

하지만 프로그래머는 그것이 무엇을 원하는지 모르는 경우가 있습니다.

“내가 왜 이걸 버그라고 하는지 오빠는 몰라?”

여러분이 프로그래머의 여자친구는 아니잖아요? 나는 모르겠는데 넌 대체 왜 그러는 거니?

그러니 순순히 여러분이 보내는 리포트에는 정상 상태의 결과도 적어서 보내주세요. 밀당은 이성 사이에서만 합시다.

3. 버그로 인한 실제 결과

마지막으로, 버그로 인한 결과를 설명해줘야 프로그래머가 버그의 정체를 알 수 있다. 마지막 규칙은 비교적 지키기 쉬운 편이다. 눈에 보이는 상태를 이야기하면 되니까.

마지막은 쉽습니다.

보이는 그대로의 상태를 적으면 되는 거니까요.

1번하고 뭐가 다르냐고 생각하실 수 있습니다. 1번은 과정을 중요시하는 것이고 3번은 말 그대로 결과만을 얘기하는 것입니다.

어떤 행동을 했더니 클라이언트가 강제 종료되었다.

어떤 몬스터를 사냥했는데 경험치가 들어오지 않았다.

골대에 골을 넣었는데 상대방 스코어에 점수가 올라갔다.

위 내용에서 파란색 내용만 없다고 생각해보죠. 버그로 인한 결과 내용이 빠진다면 프로그래머는 이게 그래서 왜 버그인지 이해하기 어려울 것입니다.

설명이 좀 됐을까요?

쉬운 내용임에도 다시 쉽게 쓸려니 좀 부끄럽고 그렇습니다.

하지만 버그 리포트를 쓰는 법에 대해서 생각해 볼 기회가 많진 않잖아요. 누가 열심히 설명해 주는 내용도 아니구요.

간혹 버그를 발견해서 리포트를 전달해 줬더니 뭔 말인지 모르겠다고 면박당하거나 아니면 고치고 있는지 장을 담그는지 반응도 없고…

게임 회사의 모든 사람들이 저렇게 버그 리포트를 작성해준다면 프로그래머도 행복하고 자기가 발견한 문제도 아니지만 어쨌든 수정됐다고 확인해달라고 버그 리포트를 재전달 받는 테스터도 행복하고 자기가 발견한 버그가 빨리 고쳐진다면 모두모두 행복하겠죠?

그런 기분 좋은 업무 환경이 되기를 바라며 작성해 보았습니다.

봐주셔서 감사합니다.

반응형
,

Spring +

아트 2012. 7. 24. 20:59
Posted by 알 수 없는 사용자

이번 달 포스팅은 5일정도 일찍 올리게 되었네요.


사내 애니메이터 대상으로 했던 강좌 동영상인데

스프링 컨트롤러를 이용해서 헤어 리깅을 할 때 유용한 팁 소개입니다.

대상 애니메이터중에 마야를 주로 사용해서 맥스를 잘 모르는 애니메이터가 있어서 가능한 쉽게 설명했습니다.



전에 올렸던 동영상 강좌에서 콧바람이 너무 많이 들어가서

이번에는 마이크 위치에 신경을 좀 썼습니다만

선풍기를 틀어놓고 녹화를 하는 바람에 ... 무슨 산 꼭데기에 올라가서 강의하는 분위기가 되었습니다. OTL

반응형
,