더블즈비의 기묘한 공방
-
게임회사 리드 개발자 1년차 후기
게임회사 리드 개발자 1년차 후기
2026.02.14어쩌다보니 운과 타이밍이 잘 겹쳐 현재 재직중인 회사에서 리드 개발자로 일하고 있다. 2024년 11월부터 재직했으니 1년 반이 되어가고 있는 셈이다. 처음에는 이렇게나 다양한 업무를 하게 될지 몰랐고, 외부와 교류를 할 때 거창한 칭호로 스스로를 소개해야 해서 부끄럽기도 했었다. 사수가 없어지니까 성장에 대한 불안감도 있었고. 근데 자리가 사람을 만든다는 말이 진짜인 것 같다. 돌아보니 제법 성장했다.그리고 글로 정리하지 않으면 금방 머릿속에서 사라질 것 같다는 기분이 들었다. 당장 글을 쓰도록 하자. 리드 개발자라고 하면 거시적인 코드 설계와 주니어 성장에만 신경쓰면 될 거라고 착각하고 있었다.다만 내가 실제로 겪은 업무는 좀 차이가 있었다. 프로젝트 핸들링하기우선 모든 부서와 직원들의 역량을 파악.. -
Please One More Block 개발 회고
Please One More Block 개발 회고
2025.12.17어떻게 일을 꾸몄나오랜만에 개인 작품을 내고 전시까지 했다. (그렇다곤 하는데 1년에 하나씩은 내는 것 같다) Out of Index 2025, 즉 실험 게임 페스티벌은 3년만에 열렸다. 2019년에 관람객으로 참여했을 때 너무나도 즐겁고 인상 깊었기에, 접수를 받는다는 소식을 듣자마자 득달같이 달려들었다. 개발 동료로는 나를 OOI에 처음 데려가줬던 챠로를 영입했다. 소꿉친구면서도 같이 프로젝트를 한 적이 한 번도 없어서 벼르고 있었는데, 마침 좋은 기회라고 생각했다. 첫 기획 자체는 21년도에 나왔다. 지금과는 비슷해보이면서도 다른 편인 것 같다.다른 사람이 세계의 정보를 넘겨줌(시드 개념)시드의 개념을 넘겨주면서 한마디를 추가로 씀"이 길이 정답이니까 믿어봐라" 같은... 아니면 "엿이나 한번 먹어.. -
Please One More Block 데이터 분석 보고서 (OOI 2025)
Please One More Block 데이터 분석 보고서 (OOI 2025)
2025.12.14이 글은 실험게임 페스티벌인 Out of Index 2025에서 전시한 'Please One More Block'의 데이터 분석 보고서이다.거창하게 제목을 짓긴 했지만, 그렇게 무거운 건 아니다. 그냥 전시 기간 동안에 사람들이 어떤 경향을 가지고 행동했는지 알아보는 것에 가깝다. 개발 후기는 다른 글에서 다루도록 한다 :P 목차1. 이 게임에서 하고 싶었던 것들2. 단순 데이터의 나열3. 자세한 분석4. 주관적 분석 이 게임에서 하고 싶었던 것들https://youtu.be/EKaxyUVq9Gk?si=seb057i_8qzrDEWS Please One More Block은 '타인과 영향을 주고받는 게임'으로 기획되었다.플레이어는 타인에게 자신의 행동이 영향을 줄 것을 예측할 수 있고, 그에 따라 평가를.. -
스크립트, 기획자들에게 어디까지 열어줘야 좋은가
스크립트, 기획자들에게 어디까지 열어줘야 좋은가
2025.08.18이번 회사에서는 좋은 기획자들을 만나서 호의호식(?)하고 있다. JSON, 스크립트 뿐만 아니라 AI 사용에도 능해서 그렇다.기존 개발자가 기획자들이 JSON으로 동작을 짤 수 있도록 토대를 잘 만들어놓은 것도 컸다. 아무튼, 이 상황을 살려서 이번 프로젝트에서는 기획자들이 더 잘 일할 수 있게 만들고 싶었다.그래서 유사 스크립트 구조를 짜서 기획자들에게 배포했다. 이번 글은 그에 대한 회고이다. 로그라이크 덱빌딩 게임이고, 유물 작동 스크립트를 기획자가 짤 수 있게 만든 것이니 참고 바란다. 결론부터결과적으로는 옳고, 어려운 기능이나 연출이 많이 들어가야 하는 부분만 개발자가 손대는 것이 바람직한 것 같다.아래에서 설명하겠지만 스크립트 초보를 위해 Lua를 사용하지 않고 비교적 쉬운 문법을 사용했는데..
-
로컬 LLM을 게임에 넣어보자 #1 : 준비
로컬 LLM을 게임에 넣어보자 #1 : 준비
2025.04.01바야흐로 대 AI 시대이다. 비용과 성능의 사이에서 몸을 비틀며 게임을 만들고 있는 사람들이 많을 거라 생각한다.나는 그 중에서 최적화 빌런답게 비용에 집중해보기로 했다. 돈 한푼 안 들이고 생성형 AI를 사용하는 프로젝트를 만드는 게 목표다. 한계뭘 시작하지도 않았는데 한계부터 제시한다.사실 Llama나 Deepseek 등 저사양 로컬 모델을 일정 기간 사용해봤는데, 완벽한 성능을 기대하는 것은 어려웠다. 한글이 깨지기도 하고, 할루시네이션도 많이 뱉고... 맥락을 제대로 읽지도 못하는 경우가 많았다. (허깅페이스에서 한국어 파인튜닝 모델을 사용했다)또한 로컬 모델은 컴퓨터 사양에 따라 생성 속도가 달라지는 결정적인 문제점을 가지고 있었다.일단 이번 프로젝트는 문제점이 해결될만한지 각을 보는 정도로만.. -
[C#] 구조체의 get/set을 조심하자
[C#] 구조체의 get/set을 조심하자
2024.06.04잠깐 생각해보면 당연하고 별 거 아닌데, 아무 생각 없이 쓰다가 디버깅때문에 고통받았다. 보통 외부에서 참조는 할 수 있지만 내부에서만 변경하고 싶은 객체를 만들 때, get/set을 쓰는 게 일반적이다. 예시로 단순히 int 변수를 가진 somethingClass 객체를 만든다고 해 보자.public static somethingClass A { get; private set; } public static void Main(string[] args) { A = new somethingClass(0); A.count++; Console.WriteLine(A.count); //Output is 1 } public class somethingClass { public int count; public some.. -
왜 partial Enum은 없는 걸까?
왜 partial Enum은 없는 걸까?
2024.03.21왜 partial Enum을 쓰려고 했는가 최근 개인 프로젝트에서 partial class를 자주 활용하는 방식으로 개발하고 있다. 파일 하나에 클래스의 모든 멤버나 메서드를 정의하지 않고, 다른 파일에 나눠서 적을 수 있어서 확장성이 높은 방법이라고 생각한다. 이런 방식을 자주 쓰다 보니 아래와 같은 경우가 생겼다. public static partial class ModifierUtil { public const int StatMaxPenaltyId = 3; public static void AddStatPenalty(this ModifierStorage storage, int value) { storage.Add(new ModifierSomething(StatMaxPenaltyId, value));.. -
[알쓸유잡 : 모바일 최적화] 영상 정리하기
[알쓸유잡 : 모바일 최적화] 영상 정리하기
2024.01.20이번 포스팅은 유니티 공부를 할 때 항상 신세를 지고 있는 알쓸유잡 콘텐츠를 공부하고 기록해보는 글이 되겠다. 특히나 이번 영상은 최적화였기 때문에, 프로파일러 안의 숫자를 하나라도 더 줄이면 쾌감을 느끼는 편인 나는 어쩔 수 없이 글을 쓸 수밖에 없었다. 음... 변태같은 소리는 뒤로 하고 본론으로 들어가자. 소개 https://www.youtube.com/live/-IrpQzZi_p8?si=tz7lyopfIHhbdPyX https://blog.unity.com/engine-platform/updated-2022-lts-best-practice-guides Updated 2022 LTS Best Practice Guides for optimizing games | Unity Blog Each guide.. -
URP는 Built-In과 뭐가 다른가? (1) : SRP Batcher
URP는 Built-In과 뭐가 다른가? (1) : SRP Batcher
2023.12.17최근 Unity 2022 LTS 버전을 사용해보면서 URP도 겸사겸사 사용해보게 되었다. 대체 Built-In과 뭐가 다른가 싶어서 유니티 공식 문서를 받아 공부해보고 있는데, 정리가 필요하다고 느꼈다. 다만 이론적인 것 말고, 실무에서 무엇이 달랐는지 하나씩 정리해보려 한다. SRP Batcher가 뭔지 요약해서 알려달라 간단하게 말하면, 같은 쉐이더를 쓰는 오브젝트를 그릴 때 렌더링 성능을 개선해주는 녀석이다. '같은 머티리얼을 쓰면 Draw Call이 하나'라는 게 '같은 쉐이더를 쓰면 SetPass Call이 하나'가 된 것이다. 즉, 같은 쉐이더를 쓰는 것만 신경쓰면 성능 개선을 이뤄낼 수 있는 개꿀 기능이라는 것이다. 다만, 파티클 시스템과 UI에는 적용되지 않는다. 뭘 어떻게 성능 개선을 한..