본문 바로가기

반응형

분류 전체보기

(429)
브레즌햄(Bresenham) 알고리즘 브레즌햄 알고리즘은 컴퓨터 그래픽스에서 복잡하고 계산을 느리게 만드는 실수 계산을 배제하고 정수 계산만으로 직선을 그리기 위해 만들어진 알고리즘 입니다. 직선의 공식을 이용해 계산된 좌표값은 결국 스크린에 표현하기 위해서는 소수점 이하를 버림한다던지 반올림 해서 정수로 만들게 됩니다. 이렇게 버려지는 소수점 이하의 복잡한 계산을 브레즌햄 공식을 이용하여 간단한 정수 연산으로 바꾸는 과정을 알아보도록 하겠습니다. 먼저 두 점을 지나는 직선의 방정식을 보면 아래와 같습니다 : y - y1 = (x2 - x1) / (y2 - y1) * (x - x1) y = (x2 - x1)/(y2 - y1) * (x - x1) + y1 예를 들어 (2, 1) 과 (6, 4)를 지나는 직선의 점들 중 x가 3일때 y의 값은 ..
모든 것의 시작..주인공 만들기 게임에 등장하는 것들에는 무엇이 있을까요? 먼저 주인공과 몬스터가 있겠고, 퀘스트를 주거나 주인공을 도와 같이 싸우는 npc, 그 밖의 나무, 벽, 바위, 문, 보물 상자 등등의 다양한 것들이 있을 수 있습니다. 이런 종류의 것들을 지금 부터 '게임 내 오브젝트', 그냥 간단하게 '오브젝트'라고 부르도록 하겠습니다. 그리고 이번 장에서는 이 게임의 핵심이 되는 주인공(Player) 오브젝트를 만들어 보겠습니다. 주인공(Player) 클래스 데이터 및 오퍼레이션 정의 먼저 주인공의 기본속성 부터 생각해 보도록하죠. - 위치 : 타일 기반 2D 게임이므로 x, y 축에 대해 2차원 좌표를 가지면 됩니다. 지금은 주인공에겐 아무런 기능이 없습니다. 단지 화면에 표시 되기만 하면 되죠. 그래서 현재로는 표시 되..
들어가며 "그래픽 말고 시스템에 대해 설명하는 게임 서적은 없는거야?" 필자는 게임을 좋아한다. 그중 특히 넷핵과 같은 로그라이크 게임을 좋아한다. 그런데 게임을 즐기기만 하던 어느 날 '이 게임들 재미 있지만 다들 뭔가 2%씩 부족해. 내가 만들어 보면 어떨까?' 라는 생각으로 나만의 로그라이크를 만들기로 결심했으나...너무 마이너한 장르였기 때문일까? 딱히 이거다 할만한 서적을 찾을 수 없었다. 엔진을 사용하는 방법이라던지, 애니메이션과 쉐이더 같은 고급 그래픽 기술에 대한 자료들은 넘쳐났으나 퀘스트 시스템은 어떻게 만들어야 하는지, 아이템에 붙는 마법 효과들은 어떻게 만들어야 하는지와 같은 시스템에 대한 설명은 참으로 희귀했다. 그래서 이곳을 빌어 필자가 로그 라이크 게임을 만들어 가는 과정을 기록해 보고자..
[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..
게임에서 판매 되는 상품에 대한 정리 게임 서버 개발자라면 주로 자료 구조와 서비스 로직에 많은 고민을 하게 되는 것 같습니다. 그 중 게임 내에서 판매 되는 상품은 서비스 별로 로직이나 제한 사항들이 많이 달라지게 되는데요. 오늘 포스팅은 그것들에 대해 정리해보고자 합니다. '상품' 이란? 구매를 하게 되면 게임 내에서 사용되는 재화. 즉, 캐쉬(일반적으로 보석)나 골드(기본 무료 재화 같은것), 캐릭터 장착 아이템, 강화 아이템 등등을 지급하는 것 - 으로 정의 하도록 하겠습니다. 먼저 상품에 대한 카테고리를 나눠 볼까요? 상시 판매 상품 기간, 구매 횟수에 상관 없이 항시 판매하고 돈만 있다면 무제한으로 구매가 가능한 상품 입니다. 기간 한정 상품 특정 기간에만 판매하는 상품 입니다. 예를 들자면 x월 x일 부터 시작해서 다음달 y일까..
Ubuntu Apache(14.04) 설치 1. Apache 설치 $ sudo apt-get install apache2 설치가 완료 되고 나면 각 계정 별로 pubilc_html 디렉토리를 사용 할 수 있도록 셋팅 한다. /etc/apach2/httpd.conf(or /etc/apache2/apache2.conf) Include /etc/apache2/mods-available/userdir.load Include /etc/apache2/mods-available/userdir.conf UserDir public_html AllowOverride All Options ExecCGI Order allow,deny Allow from all Order allow,deny Allow from all ServerName localhost 설정이 끝나고..
MySQL 백업 스크립트 아래 쉘 스크립트를 crontab등에 등록 해두고 매일매일 실행 시키면 4일 까지의 덤프 데이터가 남는다. #!/bin/sh BACKUP_DIR=/home/SOMEWHERE/db_backup TODAY=`date +%Y%m%d` RETENTION_PERIOD=4 # 백업 덤프 파일 보관 기간 4일 DAY_BEFORE_RETENTION_PERIOD=`date --date "${RETENTION_PERIOD} day ago" +%Y%m%d` #echo "DAY_BEFORE_RETENTION_PERIOD:"${DAY_BEFORE_RETENTION_PERIOD} #유저가 작성한 DB 목록 추출 mysql -u root -h 127.0.0.1 -P 3306 --password='PASSWORD' --skip-co..
MySQL master-slave 리플리케이션(my.cnf 설정) 1. replication용 DB 계정 생성( master/slave 둘다 ) $ create user repl@'192.168.186.%' identified by 'repl'; $ grant replication slave, replication client on *.* to repl@'192.168.186.%' identified by 'repl'; 2. master 설정 1) master my.cnf 수정 [mysqld] server-id = 1 # master DB id for replication .... ######################################## # Replication related settings ##################################..
MySQL Event 등록 MySQL event mysql에는 특정 시간에 한번, 혹은 일정 주기를 가지고 반복적으로 특정 쿼리 혹은 SP를 호출하는 event라는 것을 제공한다. 1. 이벤트 스케줄러 활성화 SET GLOBAL event_scheduler = ON; 아래 처럼 해도 됨 SET @@global.event_scheduler = ON; SET GLOBAL event_scheduler = 1;SET @@global.event_scheduler = 1; http://dev.mysql.com/doc/refman/5.7/en/events-configuration.html 2. 이벤트 등록 하기http://dev.mysql.com/doc/refman/5.7/en/create-event.html

반응형