게임 엔진 개발기 #1

0편에서 말했 듯, 게임 엔진 개발에 가장 중요한게 프로젝트의 구조인 것 같습니다. 그래서 이번에는 구조를 좀 정해볼려고 하는데 결국은 언리얼의 모듈 방식이 가장 좋은 것 같습니다. 그래서 언리얼 방식으로 Target.cs 랑 Module.cs 을 분석해서 프로젝트를 구성하는 기능을 구현해봤습니다. 유틸리티 프로젝트 (a.k.a Framework Utility Tool) 유틸리티 프로젝트를 만들기 직전 고민했던 것 중 하나가 프로젝트를 UHT처럼 C#으로 […]

게임 엔진 개발기 #0

게임 엔진을 만드는 것은 이번이 처음도 아닙니다. 그리고 마지막도 아닐 것 입니다. 처음에는 분명 다른 목적이 있었던 것 같은데 이제는 게임 엔진 개발이 목적이 되어버린 게임 엔진 개발기 시즌 N호 출발합니다. 목표 일단 최고 목표는 게임을 만들 수 있는 정도가 되야 합니다. 그러기위해서는 다양한 것들이 필요하지만 기본적으로 렌더링 엔진이 필요한 것 같습니다. 그리고 오브젝트 관리랑 […]

유니티 포톤 최적화 #1

1. 피직스 최적화 엔티티에 피직스를 넣으면 소환될 때 모든 피직스를 한번은 계산하려는 경향이 있는 것으로 보입니다. 분명 주변에 아무 피직스도 없는 엔티티임에도 불구하고 랙이 걸립니다. 왜지 2. 메모리 할당 최적화 프로파일링을 해보면 생각보다 메모리할당 부분에서 시간을 차지하는 것을 확인할 수 있습니다. 대표적으로 Dictionary, List, unsafe 등인데 Dictionary에서 enum을 사용하면 무조건 GC.Alloc이 발생해 시간을 잡아먹습니다. 확인결과 […]

서버에서 호스트 문제

개요 유니티로 로컬 서버 연결을 하고 있었는데, 에디터에서는 연결이 잘 되는데, il2cpp 로 빌드를 하면 연결이 안되는 문제가 발생했습니다. 왜지 원인 로그를 찍어보니, 유니티에서는 연결을 사설 ip로 시도하고, li2cpp로 빌드된 출력물에서는 127.0.0.1 주소로 시도해서 발생한 문제인거 같은데, 서버를 사설 ip로 실행되게 만들어 놨기 때문입니다. 왜지 해결 로컬 서버에 연결할 때는 Dns.GetHostName()을 사용해서 host를 받도록 하니까 […]

aws에 EBS 마운트하기

맨날 ESB로 적은 EBS 마운트 AWS에서 EBS를 마운트하는 과정에서 발생한 문제를 해결한 경험을 공유합니다. 맨붕 1. 진단 – df로 확인 lsblk 확인 EBS를 연결하고 df 명령어로 확인했을 때는 아무 것도 나오지 않았습니다. 그러나 lsblk 명령어로 확인하니 디스크가 표시되었습니다. 맨붕 2. 볼륨 초기화 근데 확인해보니 xfs가 아니여서 다시 ext4로 했습니다. 3. label 이름 설정 /etc/fstab 파일에 […]

Nuget 패키지 설치/업데이트하다 생긴 일

NuGet 패키지를 설치하려다가 https://api.nuget.org/v3/index.json에 접속이 안 되는 문제가 발생했습니다. 이 글에서는 제가 이 문제를 해결했던 과정을 공유하려고 합니다. 개요 어느날 Nuget 패키지를 설치하려고 패키지 매니저를 통해서 검색을 했는데 https://api.nuget.org/v3/index.json 에 접속을 할 수 없다는 에러 메시지가 발생했습니다. 문제 해결 1. Nuget 초기화 첫 번째로 시도했던 것은 인터넷에서 흔히 찾을 수 있는 해결 방법으로, NuGet 설정 […]

사이트 SSL 갱신하다 생긴 일

오랜만에 사이트 SSL을 갱신하려다 명령어를 잘못 입력해서 사이트가 잠시 먹통이 되었습니다 a2ensite Apache2 웹 서버에서 a2ensite는 사이트 설정 파일을 활성화하는 명령어입니다. 이 명령어는 Apache2의 sites-available 디렉토리에 있는 가상 호스트 설정 파일을 sites-enabled 디렉토리로 심볼릭 링크를 생성하여 사이트를 활성화시킵니다. 예를 들어, example.com.conf라는 가상 호스트 설정 파일이 sites-available 디렉토리에 있다면, 다음과 같이 a2ensite 명령어를 사용하여 해당 사이트를 […]

유니티 Localization Font 문제

개요 이번에 저희 게임을 글로벌 서비스로 출시했는데, 특정 디바이스에서 글자가 사각형으로 보이는 문제가 계속 발생했습니다. 원인 정확한 원인을 알기는 어려웠지만, 공통적으로 메모리가 부족한 디바이스에서 이런 현상이 나타났습니다. 테스트에서 현상이 나타났던 디바이스들의 공통점이 메모리가 2BG였고, 모든 언어를 하나의 큰 텍스처(8k x 8k)에 담아두었는데, 메모리가 부족한 디바이스에서는 이 텍스처를 제대로 로드하지 못하는 것 같았습니다. 그래서 언어별로 텍스처를 […]

UAM 올림피아드 프로젝트 후기 #2

이전에 작성했던 UAM 올림피아드 프로젝트 발표를 했고 결과가 드디어 나왔습니다. 자그마치 한서대학교 태안 비행장 캠퍼스로 가서 발표까지 하고 왔죠. 물론 아침 11시까지 오라는 어림없는 일정에도 아침 일찍 차를 끌고 도착했습니다. 발표 저랑 디자이너 분은 발표를 진행하지 않았고, 실제로 보고서랑 발표ppt를 작성하신 분들이 중점적으로 발표했죠. 일단 발표 자체도 좋았습니다. 내용도 좋았고 나중에 보니까 PPT랑 보고서 점수 […]

node.js 서버에서 캐싱으로 최적화 진행하기

개요 이번에 진행했던 프로젝트에서 서버 쪽을 담당해서 개발을 진행했습니다. 그렇게 개발을 진행하다보니 런칭 전에 서버에 얼만큼 투자를 할지 결정해야 하는 시기가 도달했고, 현재 시스템 상 얼마 만큼의 동접을 버틸 수 있는지 체크를 하기로 결정했습니다. 부하 테스트 부하 테스트는 K6로 진행하기로 결정했습니다. k6는 JavaScript 기반으로, Node.js 와의 호환성이 뛰어나며, 도시 접속자수 테스트를 수행하기 편리한 도구로 보였습니다. […]