반응형 개발900 기본기) 정규표현식 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. 개인생각) AI의 발전의 고도화 AI의 발전의 고도화 AI가 시간이 지날수록 계속해서 더 발전하는 과정이 심상치 않다. 시간이 가면 갈수록 AI는 고도화되고 인간이 만들어낸 여러 가지 많은 경우에 수가 있는 것들을 예측하고 더 효율적인 것에 대한 증명이 계속해서 되고 있다. 단편적으로는 AI가 어떠한 것을 판단하는 것부터 해서 지금은 판단 및 의사결정에도 참여가 가능한 수준에 이른 것이다. 인간이 처음에는 AI가 바둑을 이기려면 많은 시간이 걸린다라고 예측했었으나 세기의 대길인 '이세돌 프로' 바둑기사와의 알파고 대결에서부터. 지금은 다양한 분야에서 AI가 사용되고 있다. 주식 : https://news.sbs.co.kr/news/endPage.do?news_id=N1005029702 인간 vs AI…주식 거래까지 인공지능 승리 1억 .. 2019. 10. 25. 코드규칙) 스네이크 표기법(Snake Casing Notation) 스네이크 표기법(Snake Casing Notation) 스네이크 표기법은 한 문자 단어마다 _(underScore)를 붙여서 의미를 부여하는 방식을 말한다. 예시는 다음과 같다. int unit_type; int unit_index; *변수명, 함수명, 상수값, 네임스페이스등에서 사용하는것을 권장한다. ★☆☆☆☆ 2019. 10. 23. 기본기) 유효자리수 유효자리수 유효자리수라는 것은 자료형의 범위를 말한다. 유효자리수의 범위를 잘 이해해야 정수와 실수 또는 자료형의 형변환(Type Casting)을 할때 생각지도 못한 버그를 예방할 수 있다. 데이터를 저장하는 과정에서도 데이터의 범위는 매우 중요하다. 데이터의 크기보다 더 큰 크기의 데이터를 넣게되면 데이터의 이상현상이 생긴다. (대부분 짤리거나 오버플로우가 발생한다) 유효자리수는 컴파일과 개발언어에 따라 다르다. 가장 대표적으로 알고있어야하는 실수의 유효자리수에 대해서 알아보면 다음과 같다. (C 기반) ★★☆☆☆ 2019. 10. 23. 코드규칙)파스칼 표기법(Pascal Casing Notation) 파스칼 표기법(Pascal Casing Notation) 모든 단어의 첫번째 문자를 대문자로 표현하는 표기법이다. 일반적으로 가장 많이 사용되는 방식이라고 한다. 예시는 다음과 같다. int Count SetState(_state : eTYPE) *함수와 클래스명은 대체적으로 파스칼 표기법을 권장한다. ★★☆☆☆ 2019. 10. 23. 코드규칙) 헝가리언 표기법(Hungarian Casing Notation) 헝가리언 표기법(Hungarian Casing Notation) 헝가리언 표기법은 마이크로소프트 내부에서 널리 사용하는 표기법이다. 모든 변수 타입을 이름 앞에서 붙여 넣으면 된다. 예시는 다음과 같다. pLast -어떤 데이터 구조에 속한 마지막 요소의 포인터(p) sBookname -책이름이라는 문자열(s)을 의미한다. bool g_bInit = false; int nCount = 0; *자료형이 존재하는 변수에 주로 사용한다. ★☆☆☆☆ 2019. 10. 22. 이전 1 ··· 55 56 57 58 59 60 다음 반응형