본문 바로가기

반응형

진리는어디에

(291)
[Unity] Coroutine 코루틴(Coroutine) 이해하기 http://unityindepth.tistory.com/21 https://en.wikipedia.org/wiki/Coroutine
브레즌햄(Bresenham) 알고리즘 브레즌햄 알고리즘은 컴퓨터 그래픽스에서 복잡하고 계산을 느리게 만드는 실수 계산을 배제하고 정수 계산만으로 직선을 그리기 위해 만들어진 알고리즘 입니다. 직선의 공식을 이용해 계산된 좌표값은 결국 스크린에 표현하기 위해서는 소수점 이하를 버림한다던지 반올림 해서 정수로 만들게 됩니다. 이렇게 버려지는 소수점 이하의 복잡한 계산을 브레즌햄 공식을 이용하여 간단한 정수 연산으로 바꾸는 과정을 알아보도록 하겠습니다. 먼저 두 점을 지나는 직선의 방정식을 보면 아래와 같습니다 : y - y1 = (x2 - x1) / (y2 - y1) * (x - x1) y = (x2 - x1)/(y2 - y1) * (x - x1) + y1 예를 들어 (2, 1) 과 (6, 4)를 지나는 직선의 점들 중 x가 3일때 y의 값은 ..
[Unity] Animator 사용하여 애니메이션 종료까지 기다리기 애니메이션이 플레이 중인지 종료가 되었는지는 다음과 같은 체크 코드를 사용하면 간단하게 알아 볼수 있다. animator.GetCurrentAnimatorStateInfo(0).IsName("YourAnimationName") "YourAnimationName" : 메카님 스테이트의 이름(Animator 윈도우를 보면 여러 상태가 있는데 체크하고 싶은 애니메이션이 플레이되는 상태의 이름을 적어주면 된다). IEnumerator WaitForAnimation(Animator animator) { while (true == animator.GetCurrentAnimatorStateInfo(0).IsName("")) { yield return new WaitForEndOfFrame(); } GameObject..
AddComponent 시 return null 현상 GameObject의 AddComponent를 호출 했는데, 맥에서는 아무런 문제 없이 동작했지만 윈도우에서 실행시 null을 리턴 한다. 원인 MonoBehaviour 를 상속 받은 아주 작은 역할을 하는 클래스를(이하 A 클래스) 새로운 파일을 만들지 않고 기존 클래스의(이하 B 클래스) 내부에 작성하였는데 이런 경우 윈도우에서는 AddComponent 시 null을 리턴한다. 해결 A 클래스와 이름이 같은 신규 파일을 생성 사족 유니티에서 MonoBehaviour를 상속받은 클래스는 new 로 생성할 수 없고 GameObject에 AddComponent를 통해서만 생성 할 수 있다. 부록 1. 같이 읽으면 좋은 글 Unity를 사용하기 전에 알아두면 좋은 기본 개념들 http://forum.u..
쉘 스크립트(shell script) - 조건문 조건문의 형식 쉘 스크립트의 조건문은 if로 시작하여 [ ] 괄호로 묶여지며, [ ] 괄호 내에의 조건식은 괄호와 공백이 있어야 한다. 예를 들어[ -f /etc/passwd ]의 경우 시작 괄호 '['와 '-f' 사이에는 공백이 꼭 필요하다. 조건문의 끝은 ;로 표현 되며, 만일 then 문장을 입력할 때는 ;를 생략해도 된다. if [ 조건 ]; then 문장 elif [ 조건 ]; then 문장 else 문장 fi test 명령어 test 명령어는 뒤에오는 조건식을 검사하여 참, 거짓 여부를 판단 할 수 있다. 주로 파일 존재 유무, 타입, 권한을 체크 할 때 사용 된다. test 명령어는 아래 두가지 형태로 조건문에서 사용 가능하다. test expressions or [ expressions ]..
[Python] 파이썬용 print_r php에서는 print_r이라는 유용한 함수가 있어, 특정 객체가 가지고 있는 값들을 재귀적으로 따라 들어가며 모든 변수들의 값을 다 보여준다. python에도 pprint 라는 모듈이 있긴 하지만 변수가 객체인 경우에는 더 이상 재귀적으로 따라 들어가지 않고 해당 객체의 주소만 프린트하고 종료한다. 결론은 불편하다. 그래서 만들었다. 파이썬용 print_r : 만들고 보니 역시 세상은 넓고 천재는 많다는 사실을 다시 한번 깨달았다. var_dump(https://github.com/sha256/python-var-dump)라고 변수 이름 부터 타입까지 아주 깔끔하게 뽑아 주는 라이브러리를 누가 만들어 github에 올려 놓았다. 자세한 사항은 위 링크를 따라 가보면 된다(만일 링크가 깨져 있다면 어쩔수..
구글 인앱(in-app) 결제 서버 인증의 불편한 진실 구글 in-app 결제 관련하여 알고계신 분들도 있지만 잘못 알려진 부분도 있는 것 같아 공유 드립니다. Q. in-app 결제 영수증 검증 시스템은 구글에서 제공하는 것을 이용한다?A. 아닙니다. 구글 결제 시스템은 google play를 이용하여 클라이언트와만 연동 됩니다. 실질적으로 아이템을 지급하는 게임서버와 구글 시스템과는 아무런 연동이 없습니다. 영수증의 인증은 게임 서버가 직접 해야 합니다. Q. 그럼 결제 발생시 웹 콜은 왜 하나요? A. 해당 호출은 구글 시스템에 질의하는 것이 아닙니다. 서버가 C++등 언어 차원에서 인증 라이브러리를 제공하지 않는 경우 웹 서버를 두고 php와 같이 라이브러리 차원에서 인증을 지원하는 언어를 사용하는 경우가 많습니다. 그렇다고 그 웹 서버들이 구글에게 ..
Lex & Yacc Tutorial 들어 가기 전에.. 이 문서는 Lex & Yacc를 처음 시작하려는 분께 도움이 될만한 내용입니다. C/C++, 정규표현식, BNF에 대한 기본적 지식을 알고 있다는 가정하에 쓰여 졌습니다. 아래에 사용된 예제 코드의 추가 정보는 아래 링크에서 확인 가능합니다. Lex & Yacc를 이용한 프로젝트 메뉴얼 : [도구의발견] - [idlc] 객체 직렬화(Object Serialize) 컴파일러 Lex & Yacc를 이용한 프로젝트 소스(Github) : https://github.com/ChoiIngon/gamnet/tree/master/idlc 1. Lex & Yacc 의 목적 일반적으로 Lex & Yacc는 컴파일러 또는 인터프리터를 만들기 위해 많이 사용되어지고 있다. Lex & Yacc 는 독립된 ..
[C++] 구글 인앱 결제 영수증 서버 검증 (Server side Google Play receipts verification using C++) 들어가며 필자가 만드는 모바일 게임 서버는 C++기반으로 작성되어 있다. php나 python을 이용한 서버 사이드 구글 인앱 결제 검증 예제는 인터넷에서 쉽게 찾을 수 있었지만 C/C++의 경우는 관련 예제를 찾을 수 없어 고생하다 openssl 기반 검증 코드를 직접 만들어야만했고 실제 사용하면서 문제가 없었기에 여기에 공유하도록 한다. 코드를 보시는 분들의 이해를 돕기 위해 실제 사용된 퍼블릭 키와 영수증을 예제에 첨부 했으므로 테스트 해보기 편할 것이라 생각한다. 본 포스트에 사용된 예제 프로젝트의 전체 코드는 [여기]에서 확인 할 수 있다. 본 포스트에서는.. 클라이언트 사이드 구글 인앱 결제를 어떻게 하는지 설명하지 않는다. 워낙 클라이언트 종류가 많고 그걸 일일이 다 나열하기에는 시간과 공간..
[C++11] Variadic template(Parameter pack) Variadic template C++에서는 Parameter pack이라고 불리며, 수가 정해지지 않은 N개의 인자를 사용 할 수 있는 기능으로써 D언어와 C++ 11에서 지원하고 있다 en.cppreference.com/w/cpp/language/parameter_pack Parameter pack(since C++11) - cppreference.com A template parameter pack is a template parameter that accepts zero or more template arguments (non-types, types, or templates). A function parameter pack is a function parameter that accepts zero..

반응형