본문 바로가기

All145

게임 제작을 위한 시작해요 언리얼 1주차 게임 제작의 시작 언리얼 엔진 에디터 소개 - 기본 UI 언리얼 엔진 에디터는 여러 개의 창으로 이루어져 있다. 뷰 포트 언리얼 엔진을 처음 켰을 때 왼쪽에 가장 크게 차지하고 있는 부분. 레벨이라하는 게임 공간을 제작하는 작업 공간. 실제적인 게임 콘텐츠 제작을 담당함. 레벨 우리가 흔히 게임에서 스테이지라고 부르는 것. (게임 제작 용어로 레벨이라고 부른다) 언리얼 엔진에서 레벨은 액터라고 불리는 단위 물체들로 구성되어 있다. 뷰 포트에서 마우스를 클릭해서 레벨에 설치된 액터들을 선택할 수 있다. 선택할 때 마다 오른쪽에 있는 아웃라이너에서 액터 위의 선택 표시가 변경된다. 아웃라이너 뷰 포트 왼쪽에 위치. 레벨과 레벨에 속한 전체적인 액터들의 목록을 관리하는 곳. 디테일 아웃라이너 하단에 위치. 선.. 2022. 8. 14.
게임 프로그래밍 패턴 5장 ~ 7장 (22. 05. 17) Chapter5. 프로토타입 💡 원형이 되는prototypical 인스턴스를 사용하여 생성할 객체의 종류를 명시하고, 이렇게 만든 견본을 복사해서 새로운 객체를 생성합니다. 프로토타입 디자인 패턴 같은 핵앤슬래시 게임을 만든다고 해보자. 몬스터들은 영웅을 잡아먹기 위해 떼지어 다닌다. 몬스터는 ‘스포너spawner’를 통해 게임 레벨에 등장하며, 몬스터 종류마다 스포너가 따로 있다. 게임에 나오는 몬스터마다 Ghost, Demon, Sorcerer 같은 클래스를 만들어보자. class Monster { // 기타 등등.. }; class Ghost : public Monster {}; class Demon : public Monster {}; class Sorcerer : public Monster {}.. 2022. 6. 19.
게임 프로그래밍 패턴 3장, 4장 (22. 05. 09) Chapter3. 경량 어떠한 판타지 게임에서는 거대한 숲을 보여주는 장면이 있다. 이러한 숲을 그리기 위해서는 수천 그루가 넘는 나무마다 각각 수천 폴리곤의 형태로 표현해야 한다. 메모리가 충분하다해도, 이러한 숲을 그리기 위해서는 전체 데이터를 CPU에서 GPU로 버스를 통해 전달해야 한다. 나무마다 필요한 데이터는 아래와 같다. 줄기, 가지, 잎의 형태를 나타내는 폴리곤 메시 나무 껍질과 잎사귀 텍스처 숲에서의 위치와 방향 각각의 나무가 다르게 보이도록 크기와 음영 같은 값을 조절할 수 있는 매개변수 class Tree { private: Mesh mesh_; Texture bark_; Vector position_; double height_; double thickness_; Color bark.. 2022. 6. 12.
게임 프로그래밍 패턴 1장, 2장 (22. 04. 26) 지식, 정보, 처리능력 ⇒ 코드리딩 시 사용. 지식 (Long Term Memory) → 익히면 된다. 정보 (Short Term Memory) → 한계가 있다. 보통 한 번에 12개의 정보까지만 저장할 수 있다고 한다. 처리능력 → 지식과 정보를 활용한 처리 능력. 왜 구조가 필요한가? 얼마나 쉽게 변경할 수 있는가 = 구조가 좋다는 증거이다. Component Pattern (디커플링 패턴) 양쪽 코드 중 한쪽이 없으면 다른 한 쪽을 이해할 수 없을 때를 커플링된 상태라고 한다. 디커플링이 된다는 것은 이해해야하는 양, 신경써야할 양을 줄이는 것과 같다. 코드의 유연성 ≠ 최적화 단순함 = 최소한의 코드로 원하는 목표를 이룰 수 있는 것 커맨드(명령) 패턴 → 객체나 함수에 위임 메멘토 패턴 → 현재.. 2022. 5. 1.
Image Load Library (Glide vs Picasso vs Fresco) feat. Image Caching 안드로이드에서 유명한 이미지 로드 라이브러리들은 대표적으로 Google의 Glide, Square의 Picasso, Facebook의 Fresco가 있다. 일단 이 이미지 로드 라이브러리를 비교해보기에 앞서, 안드로이드의 이미지 캐싱에 대해 알아보자! 이미지 캐싱은 왜 필요한가? 특정 URL 이미지를 매번 로드하는 것은 비효율적인 일이기 때문이다. 한번 로드된 이미지를 캐싱하여 사용하게 되면 '이미지 트래픽에 대한 비용 절감'과 'UX적인 속도 향상'이 일어나게 된다. Glide Google 라이브러리. 장점 : 속도가 빠르다. 사용법이 간편하다. 캐시를 위해 적은 양의 메모리를 사용한다. gif, 애니메이션 default처리 등 다양한 부가 기능이 필요할 때 사용한다. 안드로이드 공식에서 추천하는 라이.. 2021. 11. 3.
Stateless와 Stateful 이전에 NDC2021에서 서버 아키텍쳐 뜯어먹기!에서 나온 stateful 서버와 stateless 서버에 대해 얘기해보려 한다. 간단히 쿠키런에 stateful한 서버를 구현하기 위한 방식들에 대해 설명해주셨다. Stateless 서버 서버가 유저의 상태를 저장하고 있지 않는다. 필요할 경우 매번 DB 혹은 캐시에서 불러와서 요청을 처리한다. Stateful 서버 서버가 유저의 상태를 저장하고 있는다. 유저의 요청은 서버에 저장된 상태를 바탕으로 처리된다. Stateless 서버와 Stateful 서버의 구분은 다소 모호한 부분이 있기 때문에 이때에 발표에서는 위와 같은 발표로 두 서버를 정의하고 발표가 진행되었다. Stateful이란? 클라이언트와 서버 관계에서 서버가 클라이언트의 상태를 보존하는 것.. 2021. 8. 26.
2021 이직 후기 어쩌다보니 새로운 회사로, 그리고 직군을 옮기게 되었다. 계속 해보고 싶었던 일이었지만 모두가 '그건 별로야'라고 하는 말들에 그냥 음, 그런가. 하고 살다가 그래도 결국 해보고 싶다는 마음 하나로 결정을 내려버렸다. 주변의 소중한 사람들의 많은 조언과 걱정이 있었기에 가능했던 일인 것같고, 앞으로도 더 열심히 앞으로 가봐야지 싶다 :) 21.06.21 이 글을 공개할 때는 내가 정말로 성공적으로 이직을 했을 때였으면 하는 마음에, 현재 회사에서 수습기간이 끝난 지금 글을 공개한다. 정말로 어쩌다보니, 였던 것이 컸다. (..) 지인들은 때로 말리기도 했고, 아직은 괜찮다며 오히려 더 해보라는 말도 해주었다. 새로운 곳에서 새로운 일을 하게 되다보니 더 배울 것도 많고 아직은 생소한 점도 많지만. 이직 .. 2021. 6. 21.
로드밸런싱 면접 질문으로 이런 류의 질문을 꽤 들어봤을 것이다. (특히나 이커머스 계열의 회사이거나 서버 직무라면) "안정적인 인프라를 만들기 위해서는 어떻게 해야할까요?" "블랙프라이데이와 같은 많은 트래픽이 예상되는 상황에서 미리 대처할 수 있는 방법은 무엇이 있을까요?" 그냥 로드밸런서를 사용해서, 서버를 계층화하여 부하를 분산시킨다. 와 같은 심플한 대답을 하다가, 최근에 본 다대다 면접에서 어플리케이션 / 서버 파트별로 꽤 상세하게 대답한 다른 면접자를 보면서 한 번 되짚어볼 필요가 있다고 생각해서 주제를 선정하게 되었다. 기본적으로 많은 트래픽이 발생한 경우 서버에서 대처하는 방법은 크게 2가지이다. 스케일 업(Scale Up): 서버에 CPU나 RAM 등을 추가하여 서버의 하드웨어 스펙을 향상시키는 방.. 2021. 6. 10.
컴퓨터 비전 스터디 7주차 : 21.05.23 1. 에지 검출의 기초 물체의 경계에서는 명암값에 급격한 변화가 일어난다. 그에 비해 물체 내부나 배경 영역은 변화가 없거나 있어도 작은 변화만 발생한다. 이것이 바로 에지 검출edge detection의 핵심 토대이다. 에지 : 영상의 명암, 컬러, 또는 텍스처와 같은 특성이 급격히 변화하는 지점 모든 에지 검출 알고리즘은 변화를 측정하고 변화량이 큰 곳을 에지로 취하는 원리를 따른다. 1. 디지털 영상의 미분 수학에서 변화를 측정하는 기초 이론은 미분이다. 하지만 컴퓨터 비전이 다루는 디지털 영상은 연속 공간이 아닌, 이산 공간에서 정의된다. 따라서 이산 공간에서 도함수를 근사화하는 방법이 필요하다. Δx를 얼마로 할 것인지가 핵심인데, 이산 공간에서 가장 작은 단위는 1이므로 Δx = 1이라고 가정.. 2021. 5. 24.
컴퓨터 비전 스터디 6주차 : 21.05.09 Chapter 2 연습문제 1. 명암 단계가 [0, 9]이고 크기가 5 X 5인 영상 (1) 히스토그램을 구하시오. h = (1, 3, 4, 6, 5, 1, 1, 3, 1) h(l) = (0.04, 0.12, 0.16, 0.24, 0.2, 0.04, 0.04, 0.12, 0.04) (2) 히스토그램 평활화를 위한 매핑 표를 구하시오. c(l) = (0.04, 0.16, 0.32, 0.56, 0.76, 0.8, 0.84, 0.96, 1) = 누적 히스토그램 (3) 평활화된 영상을 제시하시오. out(l) = (0.36, 1.44, 2.88, 5.04, 6.84, 7.2, 7.56, 8.64, 9) 1 1 3 3 3 0 1 5 7 5 3 5 8 9 5 7 7 9 9 9 5 7 7 7 5 2. 연결요소 번호 .. 2021. 5. 22.