프로그래밍 478

StringBuilder

문자열의 리스트가 주어졌을 때 이 문자열들을 하나로 이어붙이려고 한다.이떄의 수행 시간은 어떻게 되는가?문제를 간단히 하기 위해 모든 문자열의 길이를 x라 하자.같은 n개의 문자열이 주어졌다고 가정해보자. 문자열을 이어붙일 때마다 두 개의 문자열을 읽어 들인 뒤 문자를 하나하나 새로운 문자열에 복사해야 한다.처음에는 x개, 두 번쨰는 2x개, 세 번째는 3x개 n번 쨰는 nx개의 문자열을 복사해야 한다. 따라서 총 수행 시간은 O(x + 2x + 3x + ... + nx)즉, O(xn^2)이 된다. StringBuilder는 이 문제를 해결해 줄 수 있다.StringBuilder는 단순하게 가변 크기 배열을 사용하여 필요한 경우에만 문자열을 복사하게끔 해준다. 문자열, 배열, 일반적인 자료구조를 연습해 ..

DT 기능 에디터 만들기 GoogleSheetURLParser Class 설명

1. GoogleSheetURLParser Class 에디터 만들기 위해선 일단, 정규 표현식이란 개념을 숙지해야 한다.웬 뜬금없이 정규 표현식? 이라는 의문을 가지기 쉬운데,정규 표현식 사용을 통해 문자열에서 특정 패턴을 찾거나 검증하거나 추출하는 데 사용되는 개념이기 때문이다. 구글 스프레드 시트 URL 주소를 통해 특정 패턴을 찾아서, 변수 값을 추출한 뒤 그 변수 값으로 시트를 분별하여 DT를 가져올 것이기 때문이다. 정규 표현식이란,특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. 이러한 정규 표현식을 활용하기 위한 네임 스페이스는using System.Text.RegularExpressions 이다. 정규 표현식을 통해,Google Sheet URL에서 spreadShe..

문자셋(Character Sets)의 종류와 특성

가장 대표적인 문자셋에 해당하는아스키코드(ASCII CODE)와 유니코드(UNICODE)에 대해서 간단히 언급하고자 한다.이미 알고 있듯이 아스키코드는 미국에서 정의하고 있는 표준이다.알파벳의 개수는 26개이다.여기다가 몇몇 확장 문자(그림문자를 비롯하여 흔히 사용되는 수학 기호나 악센트 기호들)를 포함해도 총 256개 넘지 않는다.그래서 1바이트를 가지고도 충분히 표현할 수 있다.다시 말해서 아스키코드는 1바이트로 표현이 된다. 문제는 영어가 아닌 다른 국가에서 사용하는 문자들을 표현하는 일이다.우리나라를 예로 들어 보자.컴퓨터에 한글을 인식시키기 위해서는 글자 하나하나마다 값(숫자)을 지정해줘야만 한다.아스키코드처럼 말이다.그렇다고 해서 미국에서 영어를 표현하기 위해정의해 놓은 아스키코드값을 한글을 ..

ArrayList와 가변 배열

특정 언어에선 배열(이 경우엔 종종 리스트라 불리지만)의 크기를 자동으로 조절할 수 있습니다.즉, 데이터를 덧붙일 때마다 배열 혹은 리스트의 크기가 증가한다.하지만 자바 같은 언어에서는 배열의 길이가 고정되어 있다.이런 경우에는 배열을 만들 때 배열의 크기를 함께 지정해야 한다. 동적 가변 크기 기능이 내재되어특정 언어에선 배열(이 경우엔 종종 리스트라 불리지만)의 크기를 자동으로 조절할 수 있습니다. 즉, 데이터를 덧붙일 때마다 배열 혹은 리스트의 크기가 증가한다.하지만 자바 같은 언어에서는 배열의 길이가 고정되어 있다.이런 경우에는 배열을 만들 때 배열의 크기를 함께 지정해야 한다. 동적 가변 크기 기능이 내재되어 있는 배열과 비슷한 자료구조를 원할 때는 보통 ArrayList를 사용한다.Arra..

GAS 캐릭터 입력 처리

플레이어 캐릭터 기획기존 플레이어 캐릭터 클래스를 상속입력에 따라 정해진 게임플레이 어빌리티가 발동되도록 설정점프 GA : 스페이스 바를 누르면 점프 어빌리티가 발동공격 GA : 마우스 왼쪽 클릭시 공격 어빌리티가 발동 기본적으로 ASC 를 사용하고,어빌리티 태스트를 사용해서 보다 게임플레이 어빌리티를 풍부하게 구현할 것이다. 또한 게임플레이 태그를 사용하여 현재 캐릭터의 상태를 표현하고디버깅 기능을 확인하는 것이 중요하다. 게임플레이 어빌리티 시스템의 기본 흐름으로게임플레이 어빌리티 구현시 어빌리티 태스크를 보조적으로 활용하는 방법을 학습할 것이다. 플레이어의 ASC 설정 지난 번 구현한 분수대 액터처럼 구현하려면 싱글 플레이까지 가능하다.하지만 네트워크 멀티플레이까지 감안한다면 몇 가지 추가로 고민..

UE5/GAS 2025.06.07

HLSL 개요

옛날 버전의 DX에서는 기본적인 쉐이더를 제공해주었지만, 이제는 그렇지 않다.따라서 DX를 난생 처음 본다 하더라도 VertexShader와 PixelShader는 짤 줄 알아야 DX를 쓸 수 있다. VertexShader와 PixelShader는 다른 프로그램이다.VS가 쫙 실행이 되고, PS가 실행이 된다.따라서 각각의 main이 있어야 한다. HLSL은 얼핏보면 C++과 비슷하지만 분명한 차이가 있다.근래에는 Shader Programming이 점점 복잡해지기 때문에 쉐이더를 파일로 넣어준다. AppBase::CreateVertexShaderAndInputLayout( L"ColorVertexShader.hlsl", inputElements, m_colorVertexShader,..

그래픽스/DX11 2025.06.03

Cocos Creator Canvas 최적화 고안

Cocos Creator Canvas 개념 Cocos Creator 2D에서는 Canvas라는 개념이 있다.이 개념은 유니티의 Canvas와 매우 비슷한 개념이다. 1. Canvas게임 내에서 UI 요소(버튼, 텍스트, 이미지 등)를 배치하는 "UI의 루트(root)" 역할Unity의 Canvas처럼,그 안에 다양한 UI 오브젝트(예: 버튼, 텍스트 등)를 자식 오브젝트로 넣어서 관리 2. MainCamera게임 화면을 보여주는 카메라 역할Unity에서 Main Camera와 동일하게, 씬(Scene)을 렌더링하는 뷰(View)를 담당 요약구조, 역할 모두 Unity의 Canvas와 매우 유사UI 시스템의 뿌리(루트)가 Canvas그 아래에 다양한 UI 오브젝트를 배치 추가 TIP대부분의 게임 엔진이 ..

CocosCreator 2025.06.02

코코스 크리에이터의 생명주기

코코스 크리에이터(Cocos Creator) 타입스크립트 컴포넌트의 생명주기는 게임 오브젝트(노드)가 생성, 활성화, 업데이트, 비활성화, 삭제되는 동안 자동으로 호출되는 콜백 함수들로 구성되어 있습니다. 생명주기 콜백(Life Cycle Callbacks)Cocos Creator는 컴포넌트 스크립트를 위한 생명주기 콜백 함수를 제공합니다. 사용자가 특정 콜백 함수를 정의하기만 하면, Cocos Creator가 해당 시점에 자동으로 실행해주며, 사용자가 직접 호출할 필요는 없습니다.현재 제공되는 주요 생명주기 콜백 함수(호출 순서대로)는 다음과 같습니다:onLoad()onEnable()start()update()lateUpdate()onDisable()onDestroy()onLoad()컴포넌트 스크립트의..

CocosCreator 2025.06.01

Cocos Creator 2D UI 겉핥기

1. Preview In Browser웹 브라우저에서 게임이나 프로젝트를 실행해서 미리보기를 할 수 있다. 특징 :실제 웹 환경에서 동작하는 모습을 볼 수 있다.HTML5 기반으로 배포할 때 실제 유저가 보는 환경과 동일하다.빠르게 테스트할 때 유용하다.2. Preview In Editor에디터 (지금 사용 중인 개발 툴) 내부에서 미리보기를 실행한다. 특징 :개발 중 바로 에디터 안에서 결과를 확인할 수 있다.디버그 정보, 에디터에서만 볼 수 있는 추가 정보 등을 확인할 수 있다.개발에 편리함을 제공한다.3. Preview In Simulator별도의 시뮬레이터 프로그램 (또는 창)에서 게임을 실행해서 미리보기 한다. 특징 :실제 모바일 기기 (스마트폰, 테블릿 등)에서 동작하는 것과 비슷하게 시뮬레이..

CocosCreator 2025.05.31

CocosCreator를 사용하는 이유

Cocos의 사용자 인터페이스의 장점1. 애니메이션을 생성하거나, 스프라이트 시트 애니메이션을 생성할 수 있다. 2. 다양한 플랫폼에서 출시 / 플랫폼 지원이 가능하다.MICROSOFT STORE에 게임을 출시할 수 있다.데스크탑으로 Web Facebook 게임과 같은 Android와 같은 모바일 장치용 게임을 만들 수 있다. 모든 프로젝트에서 어떤 플랫폼을 타깃팅하는지에 따라서 게임 엔진의 사용이 달라진다.Coco 4. 콘솔창을 디버그창을 지원해준다. 5. JavaScript 혹은 TypeScript로 코드를 짜도,실제로는 Cocos2d-x 엔진이 C++로 변환하여 처리해주기 때문에,가벼운 스크립트 언어로 제작하여 개발이 훨씬 더 쉬워지고, 기존 엔진의 강점도 그대로 쓸 수 있다. 이 이야기는 Coco..

CocosCreator 2025.05.31