Skip to content

Jealousing/PublicStudyRecordRepository

Repository files navigation

PublicStudyRecordRepository

학교에서 배웠던 내용들은 여기에 있습니다.
개발하면서 올린 영상은 여기에 있습니다.

저장소의 목적

다양한 공부한것을 저장하기위해서 만들어진 저장소입니다.

저장소 구조 소개

카테고리에 맞는 폴더 안에 그에 대한 공부 한 기록들이 저장되어 있습니다.

  • BuildGame 폴더 : 빌드된 게임을 올려두는 폴더입니다.
  • ComputerScience 폴더 : CS 공부하며 저장하는 곳입니다. ( 코테자료 및 디자인패턴 등 )
  • Various Functions 폴더 : 유니티로 다양한 기능을 제작해서 저장하는 곳입니다.
  • TeamProject 폴더 : 팀 프로젝트에 참가해서 사용한 코드들 저장하는 곳입니다.
  • StudyDetours 폴더 : 공부 도중 본래 목적과는 무관하게 생긴 의문 중, 정리해두면 재미있겠다 싶은 생각들을 기록합니다.
  • TemporaryFolder 폴더 : 이 저장소의 양식을 만들어 사용하기 위한 폴더입니다.

각 내부 폴더에 스크립트를 저장하고 리드미를 따로 두어 그 기능이 무엇인지 간단한 소개, 구현할때 어려웠던 점, 해결했던 방법, 느낀점 등을 작성할 예정입니다.

폴더별 간단소개

팀 프로젝트

0

  • TeamDemonStrate : [2021.04.13 ~ 2021.10.12] 학교생활 중 진행한 중단된 팀 프로젝트, 퍼즐 플랫포머식 어드밴처 호러게임

개인 프로젝트

Unity:

  • 3D 수박게임 : 수박게임을 3d로 바꿔서 제작 [2024.02.04 ~ 2024.02.18]
  • Archero : 과제로 만들어본 궁수의 전설 영상링크 [2020.11.01 ~ 2020.12.10]

다양한 기능구현

리드미 작성일 기준으로 정리되어 최근에 작성또는 수정한 문서가 위로 가도록 작성되어 있습니다.
코드가 정리되어 공개되어 있는 문서가 있고 아닌 문서도 있습니다.

Unity:

  • 끈을 통한 살의 눌림 효과 ProceduralMeshDeformer : 리본이 허벅지를 눌러서 변형 효과를 주는 실시간 메시 변형 시스템입니다. [2025. 04. 13]
  • 인스펙터 스크립트 카데고리 시스템 : 오브젝트에 있는 스크립트들을 카데고리별로 정리해보자 [2025. 03. 08]
  • 유니티 폴더 툴팁 시스템 : 폴더 에디터 만들어보기 [2024. 11. 28]
  • 회피 (Dodge) : 적의 공격 회피관련 처리 [2024. 11.06]
  • 잔상 효과(MotionTrail) : 메쉬 복사를 통한 잔상 효과 구현 [2024. 11.05]
  • Enemy Hybrid(FSM+BT) AI : FSM & Behavior Tree 통합 몬스터 AI 시스템 [2024. 10.29]
  • 개선된 이동관련 시스템들 : 기존의 후크샷or그래필링건(로프액션)과 파쿠르시스템, 이동방식을 개선 [2024. 10. 8]
  • 원형(방사형) 메뉴 : 원형 메뉴를 사용자가 마우스를 이용하여 메뉴를 선택하도록 만드는 기능 [2024. 4. 29]
  • 퀘스트 시스템 : 퀘스트를 통해 플레이어에게 방향성을 제공하는 시스템 [2024. 3. 11]
  • NPC 대화 시스템 : 대화 스크립트가 담긴 csv를 불러와서 대화를 진행하는 듯한 연출을 해주는 시스템 [2024. 3. 11]
  • 미니맵 : 플레이어 근처의 오브젝트 정보를 간단하게 UI를 통해 전달하는 시스템 [2024. 3. 11]
  • 뱀서라이크 만들어보기 : 몹 소환, 레벨링시스템, 스킬관련 등 [2024. 2. 1]
  • 포탈 저장서 및 포탈 : 플레이어가 저장한 포탈을 관리하고 생성하는 시스템, 포탈은 이동할 위치를 이미지를 통해 보여줌 [v1.1 - 2024.02.01]
  • 게임 사용자 설정 화면 : 사용자가 옵션을 설정할 수 있도록 하는 화면 [2024. 2. 1]
  • 시네머신을 활용한 타이틀씬 : 시작, 옵션, 끝내기 [2024. 2. 1]
  • 글라이딩 시스템 : 날개 비행 시스템 [2023. 11. 16]
  • 공중섬 조종 및 건설 : 레프트라는 게임의 배처럼 플레이어가 땅을 늘리고 그 땅덩어리를 방향과 속도 등을 조절할 수 있는 시스템 [2023. 11. 16]
  • 인벤토리 : 흔히 플레이어가 사용하는 인벤토리를 구현 ( 정렬, 슬롯 추가 및 슬롯 잠금, 아이템 스왑 등 ) [2023. 11. 16]
  • 스캔 시스템 : 플레이어 기준으로 특정 오브젝트를 탐지하는 시스템 [2023. 11. 16]
  • 씬 전환 시스템 : 씬 전환시 로딩 씬으로 진입해 비동기 로딩 및 로딩 화면을 통한 부드러운 씬 전환 구현 [2023. 10. 16]
  • 월드 생성 시스템 : 청크 단위로 월드를 시드 값을 통해 절차적으로 생성하고 풀링을 통해 관리하는 기능 [2023. 10. 15]
  • 카메라 : 플레이어의 카메라 구현 [2023. 9. 7]
  • 반응형UI : 해상도가 변경됨에 따라 UI의 위치조정 [2023. 9. 5]
  • Json 데이터 관리 : Json으로 데이터를 관리 및 저장하는 시스템 [2023. 9. 5]
  • 플레이어 스킬구현 : 플레이어가 사용하는 스킬을 구현해보는 부분 [2023. 8. 21]
  • 전투시스템 : 플레이어의 전투시스템 관련 스크립트 모음 [2023. 8. 21.]
  • 퀵슬롯스킬 : UI에 스킬을 등록해서 스킬을 사용하고 쿨타임같은 사용경험을 높여주는 기능 구현 [2023. 8. 21]
  • 스킬트리 : Path of Exile 스킬트리처럼 나무가지가 뻣어나가는 형태의 스킬트리 구현 [2023. 8. 21]
  • IK : 손과 발의 IK(역운동학) 사용해보는 스크립트. [2023. 8. 21]
  • 범위공격 시스템 : 메쉬로 도형을 그리면서 그 구역내에 있는 오브젝트에 대미지를 주는 방식. [2023. 8. 21]
  • 메쉬로 도형그리기 : Unity Graphics 시스템을 이용해서 도형모양의 메쉬를 생성해 보여주는 기능. [2023. 8. 21]
  • 체력바 : 체력을 가진 오브젝트 머리위에 표시되는 막대로 HP상태를 알려주는 기능. [2023. 8. 15]
  • 로프액션 : 마우스 에임 방향으로 로프를 발사해 그 곳으로 직선이동이나 스윙이동하는 기능. [2022. 10. 26]
  • 캐릭터 이동관련 스크립트 : 캐릭터가 이동하는 방식에 대한 스크립트. [2022. 10. 11]
  • 파쿠르 시스템 : 캐릭터가 특정 오브젝트와 상호작용해서 구조물을 활용해 이동하는 시스템. [2022. 10. 11]

CS(ComputerScience)
  • 디자인패턴
    • GoF
      • 생성 패턴(Creational)
        • 싱글톤 패턴 : 특정 클래스가 단 하나의 인스턴스만 가지도록 하는 디자인 패턴이며 전역 접근이 가능하다, 제네릭으로 구현되어있는 스크립트.
        • 팩토리 패턴 : 객체 생성을 공장(Factory) 클래스로 캡슐화 처리하여 대신 생성하게 하는 생성 디자인 패턴이다.
        • 추상 팩토리 패턴 : 객체 군을 생성하는 인터페이스 제공과 서로 다른 종류의 팩토리를 사용하여 객체를 생성하는 디자인패턴.
        • 빌더 패턴 : 빌더 패턴은 복잡한 객체의 생성 및 구성을 단순화하고, 객체의 생성 과정을 분리하여 유연성을 제공하는 디자인 패턴이다.
        • 프로토타입 패턴 : 기존 객체를 복사하여 새 객체를 생성하는 디자인 패턴으로, 새로운 객체를 처음부터 만드는 것을 피합니다.
      • 구조 패턴(Structural)
        • 어댑터 패턴 : 호환되지 않는 인터페이스를 변환하여 함께 작동하도록 만드는 디자인패턴.
        • 브릿지 패턴 : 추상화와 구현을 분리하여, 두 요소 간의 결합을 약화시키고, 확장성이 높고 유용한 디자인 패턴.
        • 컴포지트 패턴 : 부분-전체 계층을 나타내기 위해 객체를 트리 구조로 구성하고 개별 객체와 구성을 통일적으로 다룰 수 있는 디자인 패턴입니다.
        • 데코레이터 패턴 : 데코레이터 패턴은 객체에 동적으로 새로운 기능을 추가할 수 있는 구조적 디자인 패턴입니다. (객체의 기능을 확장하거나 변경하기 위해 객체의 감싸는 래퍼 클래스를 생성하는 방식으로 작동)
        • 퍼사드 패턴 : 복잡한 시스템에 대한 간소화된 인터페이스를 제공하여 복잡성을 클라이언트로부터 숨기는 디자인 패턴입니다.
        • 플라이웨이트 패턴 : 유사한 상태를 가진 객체를 공유하여 인스턴스의 수를 줄이고 메모리 사용량을 최소화하여 성능을 향상시키는 디자인 패턴입니다.
        • 프록시 패턴 : 다른 객체에 대한 대리자 또는 대체물을 제공하여 해당 객체에 대한 접근을 제어하고 추가 기능을 제공하는 디자인 패턴입니다. 예를 들어, 지연 초기화 또는 접근 제어와 같은 기능을 제공할 수 있습니다.
      • 행동 패턴(Behavioral)
        • 책임 연쇄 패턴 : 여러 객체가 연쇄적으로 요청을 처리할 수 있는 디자인 패턴으로, 요청이 처리되거나 체인의 끝에 도달할 때까지 요청이 체인을 따라 전달됩니다.
        • 커맨드 패턴 : 클라이언트의 요청을 객체로 캡슐화하여 다양한 시점에 대기열, 요청 및 작업을 호출할 수 있도록 하는 디자인 패턴.
        • 인터프리터 패턴 : 언어의 문법을 정의하고 그 언어의 문장을 해석하는 디자인 패턴으로, 특정 도메인 언어를 해석하고 해당 언어를 실행 가능한 코드나 동작으로 변환하는 데 유용한 패턴입니다.
        • 이터레이터 패턴 : 집합 객체의 요소에 순차적으로 액세스하는 방법을 제공하여 내부 표현을 노출하지 않고도 해당 요소에 접근하는 디자인 패턴입니다.
        • 중재자 패턴 : 상호작용하는 객체 사이의 결합도를 줄이기 위해 중재자 객체를 통해 통신을 중앙 집중화하는 디자인 패턴입니다.
        • 메멘토 패턴 : 객체의 특정 상태로 다시 되돌아올 수 있도록 하는 설계 패턴입니다.
        • 옵저버 패턴 : 객체가 상태를 변경할 때 관련 객체들이 업데이트를 받는 설계 패턴입니다.
        • 상태 패턴 : 객체가 내부 상태가 변경될 때 동작을 변경할 수 있도록 하며, 상태별 동작을 별도의 클래스로 캡슐화하는 설계 패턴입니다.
        • 전략 패턴 : 동일 계열의 알고리즘을 정의하고 각 알고리즘을 캡슐화하며, 동일한 계열 내에서 교환 가능하게 만드는 설계 패턴입니다.
        • 방문자 패턴 : 객체 구조를 수정하지 않고 새로운 작업을 추가하여 알고리즘과 객체를 분리하는 설계 패턴입니다.
    • ETC
      • 오브젝트풀 패턴 : 객체를 재사용하여 자주 발생하는 가비지 컬렉션 호출을 줄여서 메모리 사용을 효율적으로 개선하는 패턴.
      • 몬스터 AI FSM : 객체의 동작을 다양한 상태로 나누고, 이 상태들 간의 전환과 각 상태에서의 행동을 관리하는 패턴.
      • 몬스터 AI BehaviorTree : 객체의 동작을 트리 구조 내의 노드로 구성하여 객체의 동작과 결정을 효과적으로 관리하는 디자인패턴.
      • Dependency Injection (DI) : 클래스 내부에 종속성을 하드 코딩하는 대신 외부에 주입하여 클래스 간의 종속성을 관리하는 방법을 제공합니다.
  • 프로그래밍 패러다임
  • 아키텍처 패턴
    • Entity Component System (ECS) : 게임 엔터티의 데이터 및 동작을 구성하기 위해 게임 개발에서 일반적으로 사용되는 패턴입니다. 게임 개체를 더 작은 구성 요소로 분해하여 더 나은 확장성과 재사용성을 가능하게 합니다.
  • 자료구조와 알고리즘, 코딩테스트
    • 알고리즘 기초
      • 시간 복잡도 : 알고리즘이 문제를 해결하는 데 걸리는 시간을 나타내는 것으로, 입력 크기에 대한 함수로 표현됩니다.
      • 공간 복잡도 : 알고리즘이 실행되는 동안 사용되는 메모리 공간의 양을 나타내는 것으로, 입력 크기에 대한 함수로 표현됩니다.
      • Big-O 표기법 : 알고리즘의 시간 복잡도와 공간 복잡도를 간결하게 나타내기 위한 표기법으로, 알고리즘의 최악의 실행 시간을 나타냅니다.
    • 자료구조
      • 배열,Array : 선형 자료구조로, 연속된 메모리 공간에 데이터를 저장하는 자료구조입니다.
      • 연결 리스트,Linked List : 각 노드가 데이터와 다음 노드를 가리키는 링크로 구성되어 있는 자료구조입니다.
      • 스택,Stack : 후입선출 구조를 가진 자료구조로, 데이터를 삽입하고 삭제할 수 있습니다.
      • 큐,Queue : 선입선출 구조를 가진 자료구조로, 데이터를 삽입하고 삭제할 수 있습니다.
      • 우선순위 큐,Priority Queue : 요소들의 우선순위에 따라 데이터를 저장하고, 가장 높은 우선순위를 가진 요소를 먼저 반환하는 자료구조
      • 해시 테이블,Hash Table : 키와 값의 쌍으로 데이터를 저장하는 자료구조로, 해시 함수를 사용하여 키를 값의 위치에 매핑합니다.
      • 트리 (Tree)
        • 이진 트리,Binary Tree : 각 노드가 최대 두 개의 자식을 가지는 자료구조로, 재귀적으로 정의됩니다.
        • 이진 탐색 트리,Binary Search Tree(BST) : 이진 트리의 한 종류로, 왼쪽 자식은 현재 노드보다 작고 오른쪽 자식은 큰 값을 가집니다.
        • 힙,Heap : 완전 이진 트리의 일종으로, 최대값 또는 최소값을 효율적으로 찾기 위해 사용됩니다.
        • 트라이,Trie : 각 노드가 문자열의 한 문자를 나타내는 트리 자료구조로, 문자열 검색과 관련된 문제에 사용됩니다.
        • 세그먼트 트리,Segment Tree : 구간에 대한 문제를 빠르게 처리하기 위해 사용되는 자료구조입니다.
        • 펜윅 트리,Fenwick Tree : 구간 합 문제를 효율적으로 처리하기 위해 사용되는 자료구조입니다.
      • 그래프,Graph : 정점과 간선의 집합으로 구성된 자료구조로, 여러 종류의 그래프 알고리즘에 사용됩니다.
    • 알고리즘
      • 정렬 알고리즘
        • 선택 정렬 : 가장 작거나 큰 원소를 선택하여 정해진 위치에 정렬하는 알고리즘이다.
        • 삽입 정렬 : 각 원소를 이미 정렬된 부분에 삽입하는 알고리즘.
        • 버블 정렬 : 서로 인접한 두 원소의 크기를 비교하고 조건에 맞지 않다면 교환하며 정렬하는 알고리즘이다.
        • 병합 정렬 : 병합 정렬 알고리즘은 배열을 반으로 나눈 후 각 부분을 정렬하고 병합하여 정렬하는 알고리즘이다.
        • 퀵 정렬 : 문제를 작은 2개의 문제로 분리하고 해결 후 결과를 모아서 다시 문제를 해결하는 방식으로 정렬하는 알고리즘이다.
        • 힙 정렬 : 힙(Heap) 자료구조를 사용하여 배열을 정렬하는 비교 기반 정렬 알고리즘이다.
        • 기수 정렬 : 입력된 숫자들의 자릿수를 기반으로 정렬하는 알고리즘입니다.
        • 계수 정렬 : 정수나 정수 형태의 키를 가진 데이터를 정렬하는 비교 기반 정렬 알고리즘 중 하나
      • 탐색 알고리즘
        • 선형 탐색 : 리스트를 처음부터 끝까지 순회하면서 원하는 항목을 찾는 가장 간단한 탐색 알고리즘
        • 이진 탐색 : 배열을 반으로 나누어 탐색 범위를 줄여나가는 알고리즘 중 하나로, 정렬된 배열에서 사용됨
        • 해시 탐색 : 해시 테이블을 사용하여 키(key)를 해시값(hash)에 매핑하고 해당 해시값을 인덱스로 사용하여 데이터를 검색하는 방법
      • 그래프 알고리즘
        • 깊이 우선 탐색,DFS : 그래프를 탐색할 때 한 분기(branch)를 끝까지 탐색(깊은 부분을 우선적으로 탐색)한 후 다음 분기로 넘어가는 알고리즘
        • 너비 우선 탐색,BFS : 그래프를 탐색할 때 인접한 모든 노드를 먼저 탐색(가까운 부분부터 우선적으로 탐색)하는 알고리즘
        • 최단 경로 : 그래프에서 두 정점 사이의 최단 경로를 찾는 알고리즘
          • 다익스트라 : 하나의 출발 정점에서 다른 모든 정점까지의 최단 경로를 찾는 알고리즘
          • 벨만 포드 : 음의 가중치가 있는 그래프에서도 사용 가능한 단일 출발 최단 경로 알고리즘
          • 플로이드 워셜 : 그래프 상의 모든 정점 쌍 사이의 최단 경로를 찾고 음의 가중치가 없는 그래프나 음의 가중치가 있는 그래프에서도 사용 가능한 알고리즘
          • A* 알고리즘 : 시작 노드에서 목표 노드까지의 최단 경로만 구하려 하는 그리디 알고리즘
        • 최소 신장 트리 : 그래프의 모든 정점을 포함하면서 사이클이 없는 부분 그래프 중에서 간선의 가중치 합이 최소인 트리를 찾는 알고리즘
        • 최소 공통 조상,LCA : 트리 구조에서 두 노드의 가장 가까운 공통 조상을 찾는 알고리즘입니다.
      • 동적 프로그래밍
        • 동적계획법,DP : 복잡한 문제를 간단한 하위 문제로 나누어 해결하고, 그 결과를 저장하여 중복 계산을 줄이는 알고리즘 기법
        • 최장 증가 부분 수열,LIS : 주어진 배열에서 숫자들의 순서를 유지하면서 증가하는 부분 수열 중 가장 긴 것을 찾는 동적 프로그래밍 알고리즘
        • 최장 공통 부분 수열,LCS : 주어진 여러개 수열 모두의 부분수열이 되는 수열들 중에 가장 긴 것을 찾는 알고리즘
      • 그 외 다양한 알고리즘
        • 재귀 : 함수가 자기 자신을 호출하여 반복적으로 작업을 수행하는 프로그래밍 기법으로, 분할 정복이나 동적 프로그래밍과 같은 알고리즘에서 사용됩니다.
        • 탐욕 알고리즘 : 각 단계에서 가장 최선의 선택을 하여 문제를 해결하는 알고리즘
        • 분할 정복 : 문제를 둘 이상의 부분 문제로 나누어 각각을 해결하고, 그 결과를 합쳐 원래 문제의 해를 구하는 알고리즘
        • 백트래킹 : 조건을 만족할 때까지 모든 가능성을 탐색하며, 조건에 맞지 않으면 되돌아가는 알고리즘
        • 브루트포스 : 모든 가능한 경우의 수를 시도하여 문제를 해결하는 간단한 방법
        • 투포인터 : 두 개의 포인터를 사용하여 배열 내에서 특정 조건을 만족하는 원소를 찾는 알고리즘
    • 코딩테스트
      • 간단한 알고리즘 정리 : 코딩테스트에서 사용하는 알고리즘 간단정리
      • 백준 : 코딩테스트 사이트인 백준에서 문제를 풀고 정리한 폴더
  • Books

공부하다 딴길로 새버린 궁금증

이 시리즈는 정답을 빠르게 찾는 기록이 아니라,
공부 도중 생긴 의문을 끝까지 따라가며 사고가 어떻게 변형되는지를 남기는 것을 목표로 합니다.
결론보다 질문이 길고, 계산보다 판단이 중요해지는 순간을 기록합니다.


About

공부한 것들을 정리하는 저장소

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published