본문 바로가기
반응형

개발875

Unity) 스크립트 템플릿 설정하기(Unity Script Template 전체) 스크립트 템플릿 설정하기(Unity Script Template 전체) 유니티로 코드를 개발하다 보면 스크립트의 기본 생성이 되는 여러 가지 규칙을 생길 수 있다. 그럴 경우에는 코드 템플릿을 설정하면 템플릿으로 설정된 기본 형태로 코드가 생성된다. 설치된 유니티의 경로에 Scripte Templete의 경로의 기본 생성 파일의 규칙을 변경하는 것인데 대체적으로 기본 경로에 설치가 됬다는 가정하에는 다음과 같다. 기본 경로 : C:\Program Files\Unity\Editor\Data\Resources\ScriptTemplates 유니티 허브 : C:\Program Files\Unity\Hub\Editor\2018.3.13f1\Editor\Data\Resources\ScriptTemplates Mac.. 2019. 11. 12.
잡학지식) 버튼 액션 - QTE (Quick Time Event) 버튼 액션 - QTE (Quick Time Event) Quick Time Event의 약자로 버튼 액션이라고도 불리운다. 게임 중간에 화면에 특정 버튼을 누르라는 표시가 뜨고 버튼을 제 시간 안에 눌러줘야 하는 요소를 말한다. 보통 버튼을 제대로 누르지 못하면 좋지 않은 결과가 나온다. 극단적인 경우는 게임 오버로 이어지는 경우도 있고 바로 앞 부분부터 다시 시작되는 경우도 있다. 대부분 콘솔게임기기에서 타이밍을 기반으로 특정액션을 처리하는 방식에서 많이사용되고 게임을 좀더 몰입감있게 즐길수있게하는 방식이다. QTE 방식은 특정 타이밍을 맞춰야 하기 때문에 스트레스적인 요소로 받아드리기도 한다. 이런 비판들 때문인지 초창기의 QTE에 비해 최근 게임들의 QTE는 난이도도 낮아진 편이고 실패 페널티도 그.. 2019. 11. 12.
게임코드) 원 운동(등속) 원 운동(등속) x = Math.cos( angle ) * 반지름 y = Math.sin( angle ) * 반지름 float posX = (Mathf.Cos(radius) * HalfDiameter); float posY = (Mathf.Sin(radius) * HalfDiameter); return Vecter3( posX, posY, 0f) ★★☆☆☆ 2019. 11. 8.
코드) 두 점 사이의 각도 계산 두 점 사이의 각도 계산 return Math.atan2 ( ( from.x - to.x) , (from.y - to.y)) * (360 / ( Math. PI * 2)) var angle = Mathf.Atan2((prevPos.y - nextPos.y), (prevPos.x - nextPos.x)) * Mathf.Rad2Deg; transform.rotation = Quaternion.Euler(0, 0, (float)angle+90); using System; public static double GetAngle(double x1, double y1, double x2, double y2) { // 두 점 사이의 차이 계산 double deltaX = x2 - x1; double deltaY = y.. 2019. 11. 8.
코드) 두 점 사이의 거리 두 점 사이의 거리 return Math. Sqrt( ( from.x - to.x) * ( from.x - to.x) + (from.y - to.y) * (from.y - to.y)); Vector3.Distance(prevPos, nextPos); ★★☆☆☆ 2019. 11. 8.
기본기) 정규표현식 RegExp-(Regular Expression) 정규표현식 RegExp-(Regular Expression)  정규 표현식 또는 정규식은 특정한 규칙을 가진 문자열을 표현하는데 사용하는 형식 언어이다.정규 표현식은 문자열을 검사하는데 많이 사용한다.  정규 표현식의 기본 문법은 여러가지가 있는데 대표적인것들은 다음과 같다. 1. 패턴 그대로의 검색2. 메타 문자 및 한정된 검색3. 그룹으로의 검색 문자의미예^문자열의 시작. [...] 내에서 쓰이면 “일치하지 않는“의 의미가 된다.^http는 문자열의 맨 처음에 http가 온 경우에 매치한다. (중간에 http가 나타난 경우는 매치하지 않음)$문자열의 끝them$은 문자열이 them으로 끝난 경우에 them에 매치한다.\b단어의 경계. 공백, 탭, 컴마, 대시 등이 올 수 있다.\bplay\b는 pla.. 2019. 11. 6.
디자인패턴 ) FSM- 유한상태머신(Finite State Machine) FSM- 유한 상태 머신(Finite State Machine) 유한 상태 머신이라고해서 상태를 기반으로 동작하는 개념의 방식을 말한다. 상태를 기반으로 처리되기 때문에 한 번에 한 개의 상태만 처리가 된다. 상태에 기반한 조건을 처리하기 때문에 상태가 변경이 되면 상태에 대한 종료 및 다른 상태로의 변환 과정을 처리한다. 상태는 여러가지 상태를 다중으로 처리하지 않고 Only One 인 방식으로 처리한다. FSM은 게임로직에서 많이 사용을 하는 것 같다. 게임에서는 일정한 조건을 만족을 할 때에 대한 조건이 상당히 많은 편이다. 다른 애플리케이션에 비해서. 그래서 FSM을 기반으로 메인 로직과 같이 처리하는 경우가 많다. 예시는 다음과 같다. 유닛이 있고 유닛은 각각 여러가지 상태가 존재한다. 1) 생.. 2019. 11. 5.
게임개발) 프레임드랍(frame drop) 프레임 드랍(frame drop) 특정순간 에 i / o 입력이나 리소스 로드나 연산처리 등으로 평균 프레임 이하로 떨어져서 끊기는듯한 현상을 프레임 드롭 현상이라고 한다. ​ 프레임드랍을 방지하기 위해서는 다양한 기법들이 존재하는데 자주 사용하는 리소스는 미리 로드 ( preload )를 하거나 오브젝트 풀(object pool)로 작업을 하던가 연산을 줄일 수 있도록 하는 방법, 그래픽 품질 변경, 불필요한 설정 제거 등등 특정 순간에 많은 부하가 쏠리지 않도록 설계해야 한다. 퍼포먼스 확인하는 과정에서 가장 기본이 되는 항목이다. 틈틈히 확인하도록 하자. ★★★★☆ 2019. 11. 4.
기본기)메타파일 (Meta File) 메타 파일(Meta File) 파일을 정의하는 파일. 서로 다른 형식으로 그래픽 정보를 표현하는 컴퓨터 그래픽 프로그램 사이에서 자유로운 정보의 교환을 위하여 사용되는 그래픽 정보의 저장 파일 형식을 말한다. 어떤 정보를 어떤 형태로 저장하는가에 따라 달라지는데 엔진을 사용하면 대부분 엔진에서 자동으로 갱신 or 생성을 시켜준다. 파일의 갱신여부나 어떤 링크라던지 많은 정보들을 같이 포함하는 정보이다. 많은 형상 관리하는 툴들은 이 메타 파일을 기반으로 변경 여부를 판단한다. 메타 파일이 꼬이면.. 큰일 난다.. 다시 파일을 로드할 수 있게 편법으로 '삭제 - 다시 새로 생성 or 붙여 넣기'를 하게 된다. 메타 파일을 여러 사람이 같이 작업할 때 유독 조심해야 한다.ㅠㅠ ★★★★☆ 2019. 11. 4.
알고리즘) 알고리즘 깊이우선 탐색 (Depth-First Search) 알고리즘 깊이우선 탐색 (Depth-First Search) 깊이 우선 탐색(DFS, Depth-First Search) 깊이 우선 탐색은 루트 노드(혹은 다른 임의의 노드)에서 시작해서 다음 분기(branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법이다. 미로를 탐색할 때 한 방향으로 갈 수 있을 때까지 계속 가다가 더 이상 갈 수 없게 되면 다시 가장 가까운 갈림길로 돌아와서 이곳으로부터 다른 방향으로 다시 탐색을 진행하는 방법과 유사하다. 즉, 넓게(wide) 탐색하기 전에 깊게(deep) 탐색하는 것이다. 사용하는 경우는 모든 노드를 방문하고자 하는 경우에 이 방법을 선택한다.(전체 검색) 깊이 우선 탐색(DFS)이 너비 우선 탐색(BFS)보다 좀 더 간단하다. 단순 검색 속도 자체는.. 2019. 10. 31.
기본기) 메모리풀(Memory Pool ) 오브젝트 풀(Object Pool) 메모리풀(Memory Pool ) 오브젝트 풀(Object Pool) 어떤 상황에서 메모리를 할당을 해서 사용을 하고 다시 또 같은 상황으로 인해서 메모리를 사용해야 하는 경우 재사용하기 위해서 여러 개를 가지고 사용이 모두 끝난 경우에 해제해주는 것을 메모리 풀이라고 한다. 오브젝트 풀( object pool )도 비슷한데 대상이 메모리가 아니고 오브젝트 객체인 것인데 이때는 메모리랑 다르게 사용 여부 플래그를 변경하고 값을 초기화함으로 재사용을 하는 것을 말한다. 자주 반복적으로 사용하는 메모리나 객체는 풀 방식으로 예상치의 최댓값을 미리 세팅하고 사용하면 좋다. 게임에서는 로딩을 하는 화면에서 사운드라던지 이펙트 특정 상황에서 항시 필요한 스코어라던지 대미지 표기 폰트 등을 많이 풀링(Pooling.. 2019. 10. 31.
개인생각) 2019 롤드컵 이슈 ( 그리핀팀 소드인터뷰, 바이퍼 인터뷰 + 씨맥감독) 2019 롤드컵 이슈 ( 그리핀, 소드, 바이퍼, 씨맥 감독) 요 근래 롤드컵이 한창 진행 중이어서 퇴근하고 롤드컵을 즐겨보고 있는데 그리핀이란 팀의 씨맥 감독이 갑자기 계약 종료가 되었다는 소식을 접했다. 그냥 단순 계약 만료라고 보기에는 앞뒤 상황이 안 맞는 상황라고 판단돼서 이렇게 찾아보게 되었다. 씨맥의 프로필은 다음과 같다. cvMax 씨맥(김대호) 2013년 LOL 프로게임단 연습생 - 프로게이머 Anarchy 삼성 갤럭시 블루(2014.01~2014.02) Rebels Anarchy(2014.03~2015.07.24) Griffin(2017.06~2019.09.26) 씨맥이 감독을 맡았던 그리핀은 서머 정규 시즌 1위를 차지하면서 롤드컵 출전을 확정 지은 팀이고 팀 성적도 좋았다. 씨맥이 감.. 2019. 10. 29.
개인생각)랜덤박스의 고찰 랜덤박스의 고찰 랜덤박스라는 흔히 말하는 가챠(Gacha)는 뽑기 형태로 아이템을 하는 방식인데 이 방식으로 인해서 모바일 BM이 엄청 많이 변경되었다. Pay to Win을 따르는 도박 같은 시스템이지만 과금으로 원하는 것을 살 수 있는 것도 매력적인 요소이다. 정확한 시초는 알 수 없지만 랜덤박스는 2004년 일본판 메이플스토리에 추가된 가차폰 티켓이라는 게 시초라고 한다. 그냥 선택하지 않는 상품을 모두 다 랜덤 박스라고 표현할 수 있는데.. 예시로 '아무거나'와 비슷하지 않을까.? 2007년부터 국내에서는 확률형 아이템을 많이 채용했다. 그전에서는 정액제(기간 내 사용)에 관련돼서 집중되어있었던 것이 무료 게임이 풀리면서 그에 따른 BM이 필요했는데 랜덤박스는 매우 매력적인 상품이었다. 처음에는 .. 2019. 10. 29.
개인생각) 레벨 밸런스 데이터 개발 레벨 밸런스 데이터 개발 게임의 재미의 많은 요소를 차지하는 항목이다. 게임을 개발하다 보면 사용자가 난이도나 학습기준에 따라 플레이했을 때 즐거움을 느낄만한 요소를 만드는 과정을 진행 한다. 보드 게임류에서는 대체적으로 어떤 스테이지가 있고 그 스테이지를 클리어하고 다음 단계로 진행하는 경우가 많다. 단계에 대한 난이도 설정 즉 밸런스 데이터(맵데이터, 밸런스 수치 등등)을 만드는 과정이 필요하다. 레벨 밸런스 데이터 개발를 하는 과정에 대해서 아는 기준 내에서 설명을 하고자 한다. 밸런스 데이터의 종류를 굉장히 많은데 공통적인것들은 다음과 같다. 재화 캐릭터 패턴 맵 개발과 밀접한 스테이지 데이터를 기준으로 이야기하자면 스테이지 데이터는 기획자가 생각한 밸런스를 기준으로 스테이지를 임시로 셋팅한 이후.. 2019. 10. 29.
알고리즘)알고리즘 너비 우선 탐색 (BFS : Breadth-First Search) 알고리즘 너비 우선 탐색 (BFS : Breadth-First Search) DFS와는 구현 방식이 조금 더 다른 형태의 탐색 알고리즘이다. 너비 우선 탐색은 탐색하는 곳의 동등한 뎁스를 우선 탐색 이후에 다시 하위에 대한 노드를 탐색하는 알고리즘이다. DFS와 다른점은 재귀적으로 동작하지 않고 반복 탐색을 한다. 너비 우선 탐색(BFS)의 특징 직관적이지 않은 면이 있다. BFS는 시작 노드에서 시작해서 거리에 따라 단계별로 탐색한다고 볼 수 있다. BFS는 재귀적으로 동작하지 않는다. 이 알고리즘을 구현할 때 가장 큰 차이점은, 그래프 탐색의 경우 어떤 노드를 방문했었는지 여부를 반드시 검사해야 한다는 것이다. 이를 검사하지 않을 경우 무한루프에 빠질 위험이 있다. BFS는 방문한 노드들을 차례로 저.. 2019. 10. 28.
반응형