전체 글 102

절차지향 프로그래밍 POP

절차지향 프로그래밍은 순차, 순서대로 진행 되는 프로그램을 설계하는 방식으로프로그램이 데이터를 처리하는 순서를 중요시 여기며, 위에서 아래로 실행되는 구조를 의미한다. 장점 구조 파악코드가 절차적으로 실행되므로 로직이 직관적이고 전체 로직의 가독성이 좋음코드 흐름이 명확해 디버깅, 테스트가 쉬움 적은 메모리 활용프로그램이 함수 중심으로 실행되기에 불필요한 메모리 소비가 적다 함수사용의 재사용성자주 사용되는 기능을 함수로 만들어 여러곳에서 재사용이 가능  단점 유지보수성프로그램의 규모가 커질수록 함수 간 관계가 복잡해지며 이는 유지보수성 저하와 관련되어있음변경 사항이 있을 경우 관련된 모든 함수에 영향이 있을 수 있음 제한적인 재사용성POP 의 경우 함수의 재사용만 가능하며 OOP 와 같은 상속을 통한 코..

CS 2025.02.13

객체지향 프로그래밍 OOP

객체지향 프로그래밍은 객체 라는 개념을 중심으로 설계 및 구현하는 프로그래밍 패러다임이다프로그램을 데이터와 동작을 가진 객체로 구성하며, 이 객체들간 상호작용으로 프로그램이 동작하는 방식으로 개발이 진행된다. 객체지향은 절차지향의 단점의 재사용성, 유지보수, 확장성을 개선하며협업에 용이한 소프트웨어 개발을 위해 도입된 개발 방식이다.  장점 재사용성의 증가이는 객체지향의 특징 상속성으로기존 클래스를 재사용해 새로운 파생 클래스를 제작할 수 있다.이는 부모클래스, 자식클래스로 나뉠 수 있으며 상속이라는 개념을 통해 제작된 클래스는제작될 때부터 이미 부모에 대한 데이터, 기능을 모두 갖게된다. 유지보수성 향상객체단위로 구성되므로 특정 기능을 수정해도 다른 부분의 영향이 최소화 될 수 있다.수정해야 할 부분이..

CS 2025.02.13

경일게임아카데미 개발자 부트캠프 후기 - 온라인과정 1기

독학으로 프로그래밍을 시작하였으며, 여러 게임을 만들어 보기도하고 이력서, 자기소개서 등 취업을 위한 준비를 해도회사로 연락이 없기에 도움을 받고자 이 학원에 등록했다.   과정 전 등록하기 전에 정말 고민이 많았다. 어떠한 학원이든 기본적으로 기간이 6개월 정도로 나같이 급한사람에게는 조금 긴 기간인데, 과연 이러한 시간을 투자해도 괜찮을지.. 여러 커뮤니티들도 여러 학원에 악평이 많다. 어딘 걸러라 어딘 괜찮다 등등 여러 데이터를 모아서 눈에 띈게 여기였다.하지만 지금 등록 가능한 과정이 XR 기술이였고, 게다가 온라인 과정이였다. XR 쪽은 개인적으로 선호하지 않는 분야이기도 하고 과정 중에는 여러 사람들과 눈을 보며 직접 소통하며 커뮤니티 능력향상을 목표로 하고있었기에 꽤 많이 고민된 부분이였다...

카테고리 없음 2025.02.13

실행 플랫폼 별 생성되는 기계어 코드가 다른 이유

컴파일러는 실행할 플랫폼에 맞는 기계어 코드를 생성해야한다.하지만 운영체제와 CPU 아키텍처마다 명령어 세트, 실행 방식이 다르기에 동일한 소스코드라도 각 플랫폼에 맞게 다르게 변환된다. 주요 원인1. CPU 아키텍처의 차이 - CPU 마다 지원하는 명령어 세트가 다름 대표적 아키텍쳐 종류x86 = 데스크톱, 서버에서 사용ARM = 스마트폰, 임베디드 시스템 같은 코드라도 x86 과 ARM 에서 실행되는 코드가 다르게 컴파일 됨int Add(int a, int b){ return a + b; }====== x86 ======mov eax, edi ; // a 값을 eax 레지스터에 저장add eax, esi ; // b 값을 더함ret ; // 함수 반환====== ARM64 ..

CS 2025.02.10

컴파일러 Compiler

컴파일러는 프로그래밍 언어로 작성된 소스 코드를 기계어로 변환하는 프로그램이다.평소에 작성하는 코드는 사람이 이해하기 쉬운 고수준 언어이지만 컴퓨터는 기계어 0과 1로 된 코드만 이해할 수 있다.컴파일러는 이 둘을 연결해주는 역할을 하며, 소스 코드를 실행 가능한 프로그램으로 변환해준다. 컴파일러의 주요 역할1. 코드 변환 : 프로그래머가 작성한 코드를 컴퓨터가 실행할 수 있는 기계어로 변환2. 코드 최적화 : 성능 향상을 위해 중복 코드 제거, 실행 속도 개선, 메모리 최적화 등을 수행3. 오류 감지 : 코드에 문법 오류, 의미 오류가 있는지 검사 컴파일러 동작 과정1. 전처리 Preprocessing컴파일 전 코드에서 #include, #define 같은 전처리기 지시문을 처리하는 단계로이 과정에서는..

CS 2025.02.10

내 코드가 느린 이유 - 최적화에 대한 고찰

숙련된 게임 개발자는 타겟 플랫폼에 성능을 최적화 하는 작업이 개발 사이클 전체에 걸쳐 진행된다.고사양 PC에서는 원활할 수 있지만, 저사양 모바일 플랫폼도 타겟팅 한다면 문제가 달라질 수 있다. 풍부한 환경 디테일, 스케일, 메카닉, 동작, 물리 와같은 많은 기능을 요구하지만,그로인해 특정 구간, 프레임 중 눈에 띄는 성능 저하가 발생될 수 있다. 대부분의 프레젝트에서의 문제는 렌더링과 관련이 있다.너무 큰 텍스쳐, 복잡한 메시, 비용이 큰 쉐이더, 배칭, 컬링, LOD 를 효율적으로 활용하지 못했을 경우이며특별한 게임을 만들기 위해 작성한 C# 코드가 프레임당 CPU 시간을 지나치게 소모하고 있을 수 도 있다. 그렇다면 내 코드가 느린 이유를 따져보자  1. 가비지 컬렉션에 의해 발생되는 오버헤드와 ..

C# 2025.02.10

Unity Job System

Job System 은 멀티 스레딩을 쉽게 활용할 수 있게 도와주는 유니티의 기능기존의 C# Thread 나 Task 를 직접 사용하지 않고도 성능을 최적화 하며 멀티코어 CPU를 효과적으로 활용할 수 있다. 기존 C# 멀티 스레딩의 문제점1. Thread, Task를 직접 사용하면 RaceCondition, Deadlock 등의 문제가 발생될 수 있음2. 유니티는 기본적으로 싱글 스레드에서 동작하기에, 직접 멀티 스레딩을 활용할 경우 충돌 발생 가능성이 있음 잡 시스템의 장점 - 멀티코어 CPU를 자동으로 활용 - 데이터 중심 처리방식 - 자동 스레드 관리 - 안전한 동기화

Unity 2025.02.10

멀티스레딩 Multi-Threading

멀티스레딩은 하나의 프로세스에서 여러개의 작업 단위(Thread)를 동시에 실행하는 기술 Thread스레드는 프로그램(프로세스) 내에서 실행되는 작업 단위를 의미 - 하나의 프로세스는 기본적으로 하나의 메인 스레드를 가짐 - 멀티 스레딩을 사용하면 여러 개의 스레드를 생성해 병렬 작업을 처리할 수 있음 멀티 스레딩이 필요한 이유 1. 작업속도 향상 : 여러 작업을 동시에 실행해 성능을 향상시킬 수 있음   - 물리연산, AI, UI업데이트를 각 다른 스레드에서 처리해 더 부드러운 동작을 진행  2.CPU 사용률 최적화 : 현대 CPU는 여러 코어를 가지고 있으며 멀티 스레딩을 활용하면   이 여러개의 코어를 활용하므로 성능을 극대화 할 수 있음  멀티 스레딩의 주의점 1. Race Condition   ..

FixedUpdate , Update , LateUpdate

유니티에서 FixedUpdate, Update, LateUpdate 는 각기 다른 실행 주기를 가진 콜백 함수다. FixedUpdate고정된 시간 간격 (기본적으로 0.02초, Time.fixedDeltaTime 값) 에 따라 실행물리 연산에 적합하며, Rigidbody를 이용한 움직임을 처리할 때 활용물리연산이 필요한 경우에만 호출 될 수도 있고, 프레임 딜레이가 길어질 경우 한프레임 내 여러번 호출될 수도 있음 Update매 프레임마다 한번 호출 ( 60FPS => 0.016초 주기로 실행 )프레임 속도, 성능에 따라 실행 간격이 달라질 수 있음유저의 입력처리, 애니메이션 트리거, UI 업데이트 등에 사용프레임 속도에 따라 실행 간격이 달라지므로 Time.deltaTime을 활용해 보완LateUpda..

Unity 2025.02.08