개발 JOB소리

개발 JOB소리

  • 분류 전체보기
    • 포트폴리오
    • 게임개발
    • 백준
    • C++공부하기
    • 개발잡소리
    • 수학
    • 개발 기록
    • 팀 프로젝트 후기
    • Shader_HLSL
    • Shader_유니티 쉐이더 그래프
  • 홈
  • 태그
  • 방명록
RSS 피드
로그인
로그아웃 글쓰기 관리

개발 JOB소리

컨텐츠 검색

태그

Vector c# string vertex 객체지향 개발 유니티 클라이언트보안 dod 쉐이더 수학 게임클라이언트 자료구조 solid Unity STAC 쉐이더그래프 stack 개발일지 EDGE

최근글

댓글

공지사항

아카이브

분류 전체보기(51)

  • [ 게임 개발 ] Unity - 명명백백한 최적화의 왕 Burst Compiler

    버스트 컴파일러가 무엇일까?버스트 컴파일러는 Unity 엔진에서 사용하는 고도로 최적화된 네이트브 코드를 생성하는 컴파일러이다.주로 Unity의 C# Job System과 함께 사용되어, CPU, 집약적인 코드의 성능을 크게 향상하는데 목적이 있다.예를 들어서 Data Oriented Design 활용 중에 ECS 패턴으로 대규모 시뮬레이터를 을 구현한다고 했을 때.물리 로직은 굉장히 간소화되고 가볍게 돌아가야 한다. 이러한 성능이 중요한 작업을 메인스레드에서 분리하고멀티 코어 CPU를 효율적으로 활용하여 랙 없이 부드러운 게임 경험을 제공할 수 있다. (멘트 좀 광고 같구먼) 어떻게 이것이 가능하냐.버스트 컴파일러는 Unity의 C#코드(정확히는 고성능 C#(HPC#)이라고 불리는 C#의 특정 부분집합..

    2025.12.09
  • [ 게임 개발 ] 내가 보려고 만든 Unity - Android Debug Bridge 연결 및 활용 (Window환경)

    게임 모바일 빌드하고 테스트할 때 어떻게 함?빌드해서 apk 드라이브 올린 다음에 다운로드하여서 하기?그냥 빌드 안 해버리고 Unity Remote?다 말해봤더니 사수님이 다 아마추어적인 방법이라고개발자 다운 방법을 보여주겠다면서 Adb라는 기능을 멋지게 가르쳐주셨다. 생각이상의 신세계였기에 신기했고 편해서 정리해보려 한다. (필자가 윈도우 유저라 Window로만 정리할 거다 수고용 하하하하 근데 생각을 해보니 Mac쓰는데 안드로이드 폰 테스트를 하려고? 어림도 없지ㅋㅋ) 일단은 게임개발 블로그이기 때문에,대충 정의부터 설명하고 유니티 빌드 디버깅을 어떻게 하는지에 대해 다룰 거다. Adb가 머임? 안드로이드 디버그 브리지 (Android Debug Bridge).줄여서 Adb라고 부른다. 안드로이드 ..

    2025.12.08
  • [ 개발 잡소리 ] 렌더링 최적화 - 면접 질문 : " DrawCall이 뭔가요? "

    아 드로우콜은 말이죠.DrawCall에 대해 알아보자 # 정의와 목적꽤 직관적인 이름을 가지고 있다. Draw + Call, 그리는 명령이다.드로우 콜은 CPU가 GPU에게 렌더링 명령을 내리는 하나의 호출, 명령 단위를 의미한다.만약 맵에 오브젝트가 3개 있으면 3개의 드로우콜이 일어나는 것이다. 게임 개발을 함에 있어서 맵과 레벨에 수많은 오브젝트들이 배치되는데.단순 개별 오브젝트만이 아니라 메테리얼 마다도 DrawCall이 발생하기 때문에 이들의 수가 많아지면CPU의 오버헤드가 커지고 성능저하로 이어진다. 그렇다면 이런 DrawCall이 나쁜 게 아니라 꼭 필요한 놈인데. 어떻게 최적화할 수 있을까? # DrawCall 최적화 (렌더링 최적화)# Batching가장 대표적인 DrawCall 최적화..

    2025.12.08
  • [ 게임 개발 ] 클라이언트 보안 - 코드 난독화 / 바이너리 보호

    유니티로 만든 게임을 하다 보면 드는 의문점들이 있다.그중에서 유니티로 개발된 게임이 유독 모드와 확장을 많고 다양하게 지원하는 이유가 무엇일까?그것은 유니티의 빌드 스크립팅 백엔드와 관련이 있다. 유니티는 Mono라는 스크립팅 백엔드를 사용하여 코드를 컴파일한다.Mono는 Unity가 C# 스크립트를 실행하기 위해 사용하는. Net Framework의 오픈소스 구현체이다.Unity는 C#스크립트를 빌드하면 IL형태로 컴파일하고 이를 Mono런타임이 JIT(Just-In-Time) 컴파일하여 실행한다.JIT기반이라 빠른 iteration으로 수정 → Play → 테스트 속도가 빠르다는 장점을 가지고있다. 하지만 여기서 컴파일 형태가 IL형태라는 것이 문제인데.IL이 남게 되면 해커 또는 모더가 ILSpy..

    2025.11.19
  • [ 게임 개발 ] 클라이언트 보안 - 클라이언트는 항상 뚫린다

    게임하면서 핵을 만나본 적 있는가?게임에는 규칙이 있고, 정해진 로직을 통해 철저히 계산된 움직임으로합법적인 플레이를 해야 모두가 게임을 즐겁고 평화롭게 즐길 수 있다. 하지만 핵을 만나게 되면 그런 평화는 사라진다. 게임은 불합리해지고 일방적으로 뚜드려 맞기만 할 것이다. 뭐 게임하다가 핵 만나서 화나서 쓰는 글은 아니고, 최근 회사를 다니면서 게임 개발에 보안을 신경 써야 한다는 사실을 새삼 깨닫고 있다.문제는 핵만이 아니라 게임을 리버스 엔지니어링 하여 해적판 같은 무단 사용 및 배포가 일어나는 것이 문제이다. 여태까지는 개발하면서 내 클라이언트 패키지로 된 코드뭉탱이 게임이어떻게 털리든 상관없었고 그냥 깃 워크플로우도 그냥 오픈소스비슷하게 개발하고 있어서 깃허브 네트워크 암호화나이런 것에 대한 ..

    2025.11.18
  • [ 개발 잡소리 ] 캐시 히트/미스 (Cache HIT MISS)

    캐시 히트인지 뭔지 를 설명하기 위해서는 우선 캐시(Cache)가 무엇인지 알아야 하는데.........바로 알아보자.........................# 캐시 메모리가 뭐임????? (EAZY 난이도 설명)가장 간단한 예시로는 작업 표시줄을 예시로 들 수 있다.작업 표시줄은 최근에 사용했거나 자주 사용하는 프로그램을 하단 바에 띄울 수 있게 하는 기능이다. 하지만 최근에 사용한적도 없고 자주 쓰지 않아서 컴 어딘가에는 있는데 그걸 켜고 싶으면 어떻게 함??어쩌긴 어째. 검색을 해야한다.그럼 이제 일시적으로 작업 표시줄에 추가되고 나중에 프로그램을 끄면 빠진다. 이때 이 작업표시줄을 캐시 메모리라고 볼 수 있다.# 캐시 메모리가 뭐임22????? (진짜)우리 컴퓨터는 여러 하드웨어들로 이루어져 ..

    2025.11.13
  • [ 개발잡소리 ] bool + int 는 총 몇 바이트? - Memory Alignment

    .." 페른, Struct 에 bool과 int 멤버변수를 선언하면 이 멤버변수 필드는 총 몇의 메모리를 차지하는지 알고 있니? " " 당연히 1Byte + 4Byte니까 5Byte 아닙니꺼? "" 틀렸단다." 메모리 패딩과 정렬에 대해 알아보자. # 정의 & 이론(딱히 정의랄게 없어서 거의 이론중심) CPU가 메모리 접근을 빠르게 하기 위해서 각 필드들을 특정 정렬 바운더리에 맞추어 배치한다.이 작업을 정렬(Alignment)라고 하고. 그 결과로 생길 수 있는 빈 공간을 패딩(Padding)이라고 한다. 아래와 같은 코드가 있다고 치자public struct TestStruct{ public byte a; // 1 byte public int b; // 4 bytes publi..

    2025.09.30
  • [ 게임 개발 ] Unity 런타임 리소스 로드(Resources, AssetBundle, Addressables)

    부제 : Resources를 쓰면 안 되는 이유# 서론런타임 리소스 로드(Runtime Resource Load)가 뭘까?뭐 말 그대로 프로그램 실행 중에(Runtime)에 리소스를 로드하겠다는 뜻이다. 그런데 런타임에서 에셋을 로드할 필요가 있을까?유니티 같으면"컴포넌트에서 직렬화해서 딸깍 끼워 넣으면 굳이 동적으로 에셋을 로드할 필요 없는 거 아님??"이런 궁금증을 해결하는 게 최종 목표라고 볼 수 있다. 유니티에는 이를 자체적으로 지원해 주는 기능 세 가지가 있다.Resources, AssetBundle, Addressables이 이에 해당한다.이들에 대해 설명하면서 런타임 리소스 로드에 대해 알아보자.Resources란?▶ 참고자료 : [Unity공식 문서 : 런타임 리소스 로드]# 정의Resou..

    2025.09.17
  • [ 개발 잡소리 ] 데이터 지향적 설계 Data-Oriented Design(DOD)

    DOD가 뭘까?DOD는 Data-Oriented Design. 데이터 지향적 설계라는 프로그래밍 패러다임의 일종이다. 바로 알아보자 # 정의전통적인 객체 지향적 설계(OOP)와 달리,데이터가 실제로 어떻게 메모리에 배치되고 접근되는가에 집중하는 설계 패러다임이다.즉, 데이터의 구조와 접근 패턴을 CPU와 메모리 계층 구조등에 최적화하는 방식이다. # 목적 / DOD의 아이디어 1. CPU 캐시 친화적 구조를 가진다.현대의 CPU의 연산속도는 충분히 빠르지만. 일반적으로 객체지향(OOP) 프로그래밍을 하는 경우,객체들을 생성하고 이들을 메모리의 새로운 위치에 할당하는데. 이러한 경우 이 객체가 배열처럼 연속된 지정된 위치에 있는 것이 아니라 메모리 어딘가에 흩어져서 존재한다. 따라서 이런 객체들을 다루..

    2025.09.12
이전
1 2 3 4 ··· 6
다음
vcsHB GitHub vcsHB Portfolio
© 2018 TISTORY. All rights reserved.

티스토리툴바