티스토리

코딩 레코딩
검색하기

블로그 홈

코딩 레코딩

most7336.tistory.com/m

한 사람의 코딩 기록실

구독자
1
방명록 방문하기

주요 글 목록

  • 프레임워크 (framework) 개발에서 프레임워크는 개발하기 쉽게 규칙이 있는 라이브러리 모음이라고 한다. 크게 보면 유니티 엔진도 하나의 프레임워크라고도 할 수 있지만, 개발자가 게임을 제작하려고 할때 프레임워크가 더 많은 도움을 준다. 예를 들어 몬스터를 개발할때 프레임워크를 만들어 둔다면, 새로운 몬스터 객체를 만들어야 할때 쉽게 만들어낼 수 있다. 즉 프레임워크는 정해진 틀이 있는게 아니고, 추상적인 개념에 가깝다. 중요한 점은 재활용이 가능한 클래스 모음이라는 걸 알고 있으면 좋다. 개발을 처음 시작할때 용어에 대한 정리가 많이 어려웠다. 워낙 추상적인 용어들이 많아 정확히 이해하지 않으면 모르는게 대다수 였다. 프레임워크도 포함이었다. 공감수 3 댓글수 2 2024. 9. 3.
  • 배열과 리스트 배열 데이터가 많아지면서 그룹 관리의 필요에 따라 배열을 사용한다. 고정된 크기를 갖는 같은 자료형의 원소들이 연속적인 형태로 구성된 자료구조이다. 데이터의 갯수가 확실하게 정해져 있고, 접근이 빈번한 경우 배열이 효과적이다. (인덱스에 따라 값을 유지하므로 원소가 삭제되어도 빈자리가 남게되어 메모리가 낭비된다.) 리스트 배열의 문제점을 해결하기 위한 자료구조이다. 빈틈없는 데이터의 적재라는 장점이 있다( 원소를 삭제했을 때, 삭제된 데이터 뒤 원소로 빈틈없이 연속적으로 위치시킨다.) 순차성을 보장하지 못하기 때문에 캐시 히트가 어렵다. ArrayList와 LinkedList가 있다. 배열은 컴파일때 할당되는 정적 메모리 할당이고, 리스트는 런타임에 할당되는 동적 메모리 할당이다. 배열과 리스트를 설명해.. 공감수 0 댓글수 0 2022. 3. 30.
  • 절차지향,객체지향 절차지향 절차지향 프로그래밍이란 위에서 아래로 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법이다. 대표적인 절차지향 언어는 C언어가 있다. 장점으로는 컴퓨터 처리구조와 유사해 실행속도가 빠르지만, 유지보수와 디버깅이 어렵고, 실행 순서가 정해져 있어 코드의 순서가 바뀌면 동일한 결과를 보장하기 어렵다. 객체지향 실제 세계를 모델링하여 소프트웨어를 개발하는 방법이다. 데이터와 절차를 하나의 덩어리로 묶어서 생각하게된다. 객체지향은 4가지 특징이 있다. 추상화 : 여러 객체들의 공통적인 특징을 도출해 내는 것 캡슐화 : 데이터와 데이터를 처리하는 함수를 하나로 묶는 것,다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 정보은닉의 개념이 중요.. 공감수 0 댓글수 0 2022. 3. 24.
  • 델리게이트(delegate) 델리게이트(delegate) 델리게이트를 변역하면 '대리자'라는 뜻이다. 즉 무엇인가를 대신할 수 있는 역할을 한다. 여기서 무엇은 '메서드'를 말하는 것이다. 델리게이트는 클래스 외부와 내부에 자유롭게 선언이 가능하다. 중요한 점은 델리게이트가 대신할 수 있는 메서드는 반환형, 매개 변수 종류와 개수가 모두 일치해야 한다(아닌 경우도 있지만 원칙상 대부분 위 방법으로 사용한다) 델리게이트 자체는 클래스 이지만 델리게이트 객체는 변경 가능한 변수이다. 실행 중에도 언제든 변경될 수 있다. 델리게이트는 변수이므로 메서드를 인수로도 전달 할 수 있다. 델리게이트에 대해 설명해주세요 델리게이트란 메서드를 대신할 수 있는 역할을 해줍니다. 델리게이트는 클래스 외부와 내부에 자유롭게 선언이 가능합니다 중요한점은 .. 공감수 0 댓글수 0 2022. 3. 24.
  • 유니티 이벤트 함수 실행 순서 유니티에서 이벤트 함수 실행순서에는 많은 단계가 있지만 그 중 자주 쓰는 이벤트 함수의 실행순서는 Awake() OnEnable() Start() FixedUpdate() yield WaitForFixedUpdate() OnTriggerXXX() OnCollisionXXX() Update() LateUpdate() OnApplicationQuit() OnDisable() OnDestroy() 정도가 있다. Awake() 프리팹이 인스턴스화 직후에 호출된다. 최초 1회만 호출된다. 오브젝트가 비활성화 되어있다면 이 함수는 호출되지 않다가 활성화 되는 순간 호출된다. OnEnable() 오브젝트 활성화 직후 이 함수가 호출된다. 게임 오브젝트+스크립트가 모두 활성화 되어있어야한다. 비활성화에서 활성화 될때마.. 공감수 0 댓글수 0 2022. 3. 24.
  • 코루틴(Coroutine) 작동 원리 코루틴 코루틴은 실행을 중지하여 유니티에 제어권을 돌려주고, 그 위치를 기억하고 다음 호출 때 부터 그곳부터 다음을 실행 할 수 있도록 하는 기능을 말한다. 유니티는 단일 스레드로 동작 하기 때문에 멀티 스레드 처럼 비슷하게 작동하게 해주는 것이 이 코루틴이다. 작동원리 코루틴은 IEnumerator와 같이 사용한다. 진입하는 지점을 여러개 가질 수있고, yield return을 통해 그 바로전 시점을 기억하고 다음 호출하게 될때 그 다음부터 실행이 되는것이다. 유니티에서는 대부분 그 시점을 Update에서 체크한다. 여기서 IEnumerator는 데이터의 목록을 하나씩 넘겨줄 때 사용되는 인터페이스인데, 코루틴은 호출한 함수와 서로 상호작용하면서 진행하도록 설계되어 있다. 코루틴은 자신을 호출한 함수에.. 공감수 0 댓글수 0 2022. 3. 24.
  • 내적과 외적이 게임에 어떻게 적용되는지 게임 개발에서는 벡터 연산을 자주 사용한다. 그 이유는 벡터로서의 접근이 직관적이고, 방정식이나 복잡한 계산을 피해 문제를 훨씬 쉽고 간단하고 효율적으로 해결되기 때문이다. 벡터연산에서 가장 기본은 내적과 외적이다. 내적 A, B 벡터의 내적은 A 벡터와 B 벡터의 크기를 각각 곱한 다음 사이각의 cosθ 값을 곱한 스칼라 값이 된다. 벡터와 벡터의 내적의 결과는 벡터가 아닌 스칼라 값이다. 두 벡터의 사이각을 구할 수 있다 플레이어의 방향벡터가 있고, 적이 플레이어 앞에 있는지 뒤에 있는지 판별할 수 있다. 플레이어의 시야각안에 들어와 있는지 알 수 있다. 외적 내적과 크게 다른점은 결과값이 스칼라 값이 아닌 벡터로 나온다는 것이다. 적이 플레이어 오른쪽에 있는지 왼쪽에 있는지 판별할 때 사용된다. 벽.. 공감수 0 댓글수 0 2022. 3. 24.
  • TCP/UDP TCP(Transmission Control Protocol) TCP를 해석하면 전송을 제어하는 프로토콜이라는 뜻이다. 좀 더 쉽게 정의하면 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜을 말한다. 특징 연결형 서비스로 가상 회선 방식 제공 3-way handshaking 과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제 흐름 제어 및 혼잡 제어 높은 신뢰성을 보장 UDP보다 속도가 느림 전이중, 점대점 방식 UDP(User Datagram Protocol) UDP를 해석하면 사용자 데이터그램 프로토콜이라는 뜻이다. 더 쉽게 정의하면 데이터를 데이터그램 단위로 처리하는 프로토콜이다. 데이터 그램은 독립적인 관계를 지니는 패킷을 말한다. 연결을 위해.. 공감수 0 댓글수 0 2022. 3. 24.
  • C++과 C#의 차이 C++과 C#의 차이를 물어볼 때 뭐가 더 좋은 언어인가? 라고 물어본다면 답을 말할 수 없다. 제각기 다른 분야에서 쓰임새가 있는 언어이기 때문에 서로 장단점이 있다. 차이점 C++은 동적 할당 후 프로그래머가 직접 delete로 해제 해야하지만 C#에서는 GC(garbage Collector)가 알아서 해제시켜준다. C++에서는 전역변수 전역함수가 있지만 C#에서는 존재하지 않는다. (static을 이용해 전역변수처럼 사용한다) C++은 타입 변환이나 배열 범위에 대해 엄격하진 않지만 C# 엄격히 통제한다. C++에서의 int,long 자료형은 그냥 제공되는 기본 자료형이지만 C#에서는 System.Int32,System.Int64라는 구조체의 별칭이고 int 형이라해도 멤버 함수와 연산자 함수를 갖.. 공감수 0 댓글수 0 2022. 3. 23.
  • 스마트 포인터(smart pointer) 스마트 포인터(smart pointer) C++에서는 new 키워드를 사용하여 동적으로 할당받는 메모리는 반드시 delete 키워드를 사용하여 해제해야 한다. 하지만 스마트 포인터는 포인터처럼 동작하는 클래스 템플릿으로, 사용이 끝난 메모리를 자동으로 해제해 준다. 스마트 포인터 종류 shared_ptr 어떤 하나의 객체를 참조하는 스마트 포인터의 개수를 참조하는 스마트 포인터이다. 이렇게 참조하고 있는 스마트 포인터의 개수를 참조 카운트라고한다. 참조 카운트는 해당 메모리를 참조하는 포인터가 몇개인지 나타내는 값을 말한다. unique_ptr 하나의 스마트 포인터만이 객체를 가리킬 수 있도록 한다. shared_ptr과 다르게 참조 카운트가 1을 넘길 수 없다. weak_ptr 하나 이상의 shared.. 공감수 1 댓글수 0 2022. 3. 23.
  • 전위 증감연산자 / 후위증감연산자 차이 증감연산자는 증가연산자(++)와 감소연산자로(--)로 나뉜다. 증가 연산자는 변수값을 1증가 시키고 감소연산자는 변수값을 1감소 시킨다. 또한 증감연산자는 전위(++a)와 후위(a++)로 나뉜다. 즉 a++이나 ++a이나 a=a+1과 a+=1 같은 기능을 수행하는 것이다. 중요한 점은 증감연산자에서 전위냐 후위냐에 따라서 연산결과값이 달라진다. #include using namespace std; int main(void) { int a = 1, b = 1; cout 공감수 0 댓글수 0 2022. 3. 23.
  • 값에 의한 호출(call by value),참조에 의한 호출(call by reference) 함수 호출 방법은 크게 두 가지가 있다. 바로 값에 의한 호출과 참조에 의한 호출이다. 값에 의한 호출(call by value) 함수 호출 시 전달되는 변수의 값을 복사하여 함수의 인자로 전달한다. 복사된 인자는 함수 안에서 지역변수로 사용된다. 따라서 함수 안에서 인자값이 변경되어도, 외부의 변수의 값은 변경되지 않는다. 장점 : 복사하여 처리하기 때문에 안전하다. 원래의 값이 보존된다. 단점 : 메모리가 사용량이 늘어나기 떄문에 많은 계산이 들어가면 과부하의 원인이 된다. 참조에 의한 호출(call by reference) 함수 호출 시 인자로 전달되는 변수의 레퍼런스를 전달한다. 즉 해당 변수의 주소를 가르키게 된다. 그래서 함수 안에서 인자 값이 변경된다면, 매개변수로 전달된 값도 함께 변경된다.. 공감수 0 댓글수 0 2022. 3. 23.
  • C++ 얕은복사, 깊은복사 (Shallow Copy,Deep Copy) 기본적으로 객체를 생성하고 초기화 시킬 때 멤버 변수를 어떻게 초기화하느냐에 따라 깊은 복사가 될 수 있고, 얕은 복사가 될 수 있다. 얕은 복사(Shallow Copy) 객체가 가진 멤버들의 값을 새로운 객체로 복사하는데 만약 객체가 참조타입의 멤버를 가지고 있다면 참조값만 복사가 된다. 또한 동적 할당을 받은 변수의 주소값을 공유한다. 즉 포인터 변수를 얕은 복사할 경우 새로운 포인터 변수는 기존 주소값을 가르키게 된다. 이 얕은 복사의 문제점은 프로그램이 종료되면서 객체의 포인터 변수가 소멸자에 의해 소멸되는데, 이때 복사된 객체가 소멸될 때 같은 주소를 공유하고 있던 원본이 소멸되었기 때문에 영역 침범이라는 에러가 발생하게 된다. 이를 해결하는 방법이 깊은 복사이다. 깊은 복사(Deep Copy).. 공감수 0 댓글수 0 2022. 3. 23.
  • 그래픽스 파이프라인(graphics pipeline) 3차원 컴퓨터 그래픽스에서 그래픽스 파이프라인(graphics pipeline) 또는 렌더링 파이프라인(rendering pipeline)은 3차원 이미지를 2차원 래스터 이미지로 표현을 하기위한 단계적인 방법을 말한다. 여기서 래스터란 컴퓨터에서 화상정보를 표현하는 한가지 방법으로 이미지를 2차원 배열 형태의 픽셀로 구정하고 이 점들의 모습을 조합, 일정한 간격의 픽셀들로 하나의 화상정보를 표현하는 것. 즉 한 줄에서 연속된 픽셀들의 집합을 래스터라고 한다. 그래픽스 파이프라인 과정 1. 3D모델 구축 이미 모델링이 된 파일의 정보를 불러오고 로컬 좌표계를 통해 3차원 모델의 정점들을 구축하는 단계이다. (CPU가 수행) 2. 가상 공간의 배치 불러온 3D 모델을 월드 좌표계로 변환을 하는 과정이다. .. 공감수 0 댓글수 0 2022. 3. 23.
  • 프로세스와 스레드(Process and Thread) 프로세스를 알아보기전 프로그램에 대해 먼저 알고 있어야 한다. 프로그램(Program) 1. 일반적으로 일의 진행 계획이나 순서 2. 방송이나 공연 따위의 진행 차례나 진행 목록 3. 어떤 문제를 해결하도록 컴퓨터에 주어지는 자료 처리 방법과 순서를 기술한 일련의 명령문의 집합체 이런 의미로 사용되지만 우리는 3번째 의미를 말한다. 쉽게 말해서 "파일 시스템에 존재 하는 실행파일" 이라고 생각하면 쉽다. 프로세스(Process) 사용자가 실행파일을 더블클릭해서 실행하게 되면 운영체제가 그 프로그램을 실행시켜준다. 그 프로그램을 실행 시키는 주체 그것을 인스턴스라고도 한다. 사전적 의미로는 "컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램" 쉬운 예를 든다면 컴퓨터에 엑셀이 깔려있다면 이 엑셀파일 자체.. 공감수 0 댓글수 0 2022. 3. 22.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.