전체 분류
왜 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.03.03오랜만에 게임잼으로 알만툴 개인작을 냈다. 역시 제한된 기간을 줘야 뭐가 나오는 것 같다. 약 2주 동안 정말 출근한 것처럼 열심히 했다. 털털썩썩... 이번에 이렇게까지 열심히 한 이유는 왜냐, 나는 퇴사했으니까! 퇴사 후 약 6개월간의 게임 개발 기간을 가지기로 했다. 이번 게임잼은 내 스케줄링 능력 체크와 개발 능력 인지에 대한 감을 잡기 위해 참여했다. 하고 싶은 걸 다 하는 대신에, 나는 어디까지 할 수 있을 것인가? 실제로 감이 잡혔고, 6개월 동안 게임을 개발하는 데 많은 도움이 될 것 같다. 스케줄링 2주 동안 만들 수 있는 게임 규모 설정과 일정 관리를 위해 Notion과 Trello를 사용했다. 나는 뽀모도로 타이머를 애용하는 편인데, 25분을 일하고 5분을 쉬는 루틴으로 구성되어 있다..
[암살 말고 암선행] 일러스트
[암살 말고 암선행] 일러스트
2024.03.03
암살 말고 암선행 (2024)
암살 말고 암선행 (2024)
2024.03.02목격자만 없으면 선행이라니, 암살 대신 암선행을 해야 한다는 게 무슨 소리야? 아무것도 모른 채 태어난 마왕의 환생. 세상을 파괴한 것에 대한 속죄를 해야 한다! 들키지 않고 선행하자! 안녕하세요, 더블즈비(Doublsb)입니다. 본 게임은 2024 1치킨 알만툴 게임잼 참여작입니다. 게임잼의 주제는 속죄입니다. 플레이타임은 30분 내외이며, 엔딩은 1개입니다. 게임의 목표 달성을 위해 여러 회차를 진행하시는 것을 추천합니다! 제작자 닉네임을 표기하는 것으로 플레이 영상 공개 및 스트리밍을 허용하고 있습니다. 제작자 닉네임으로 Doublsb, 또는 더블즈비를 표기해 주세요. 오랜만입니다. 3년만에 알만툴 개인작을 냈네요. 그 동안 이것저것 하면서 개발 실력이 많이 좋아졌습니다. 그 동안 야근도 많았지만요..
[알쓸유잡 : 모바일 최적화] 영상 정리하기
[알쓸유잡 : 모바일 최적화] 영상 정리하기
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에는 적용되지 않는다. 뭘 어떻게 성능 개선을 한..
변화
변화
2023.11.09다시 추운 계절이 돌아오기 시작했다. 내가 덤덤한 것인지, 아니면 교통 수단이 지나치게 따뜻했던 것인지는 몰라도 큰 변화는 아니었다. 모두와 공통적으로 말할 수 있는 스몰 토크 소재가 하나 늘었을 뿐이다. 하지만 작은 변화라고 해서 아주 반기지 않는 것은 아니었다. 겨울의 서늘한 공기와 냄새를 좋아하기 때문이다. 어딘가 미묘하게 우울한 날씨는 걸음과 함께 마음을 달래기 좋았다. 이 꼬인 심성과 취향은 죽을 때까지 유지되는 건지, 그저 이마를 친다. 그렇지만 계절이 바뀐다는 것을 인지한다는 건 여유가 생겼다는 말과도 같다. 아니면 주가 되어야 할 부분에 관심을 두지 않고 있다는 뜻이거나. 둘 다 반가운 결과는 아니다. 지금 게으르다는 뜻이니까. 버릇처럼 수많은 일들을 벌이고 수습하는 수확의 때가 왔다. 이..
3매치 구조 회고 (4) : 효율적으로 힌트 찾기
3매치 구조 회고 (4) : 효율적으로 힌트 찾기
2023.09.25현재 회사에서 설계하고 유지보수한 3매치 코드는 이미 검증되었지만, 과거의 자신을 돌아보는 것이 늘 그렇듯 다시 읽어보면 구데기인 부분이 너무 많다. 그래서 이 시리즈는 과거의 설계를 돌아보며 더 확장성있는 코드를 고민해보는 글이 되겠다. 조건 1. 일정 시간동안 유저가 조작을 하지 않을 경우, 힌트를 보여 줄 것. 2. 이 때, 우선순위가 높은 힌트를 먼저 보여주어야 함. 3. 유저가 조작을 하기 전까지 랜덤한 힌트를 돌아가면서 보여주어야 함. 3-1) 3x1 이상의 우선순위 매치가 있을 경우, 그 매치들만 돌아가면서 보여 준다. 3-2) 일반 매치만 힌트 대상일 경우, 일반 매치만 돌아가면서 보여 준다. 과거의 나 1. 왼쪽 아래에서부터 위/오른쪽 방향으로 스왑한 결과의 매치를 조사한다. 1-1) 같..
3매치 구조 회고 (3) : 효율적으로 매치하기
3매치 구조 회고 (3) : 효율적으로 매치하기
2023.09.19현재 회사에서 설계하고 유지보수한 3매치 코드는 이미 검증되었지만, 과거의 자신을 돌아보는 것이 늘 그렇듯 다시 읽어보면 구데기인 부분이 너무 많다. 그래서 이 시리즈는 과거의 설계를 돌아보며 더 확장성있는 코드를 고민해보는 글이 되겠다. 으엄... 이번 글은 확장 관련 얘기는 없지만 말이다. 조건 1. 연속된 블록의 개수에 따라 다른 결과물을 만들어낼 것 과거의 나 1. BFS(너비 우선 탐색)으로 연속된 블록들을 모두 리스트로 가져온다. 2. 리스트의 블록들을 순회하면서 그 블록 기준으로 연속된 가로/세로 개수를 구한다. 3. 개수 조건에 들어맞는 매치를 수행한다. class ConnectInfo { List slots; //중복해서 계산하는 일이 없도록 캐싱함 Dictionary horizontal..
3매치 구조 회고 (2) : 타겟팅 로직
3매치 구조 회고 (2) : 타겟팅 로직
2023.09.18현재 회사에서 설계하고 유지보수한 3매치 코드는 이미 검증되었지만, 과거의 자신을 돌아보는 것이 늘 그렇듯 다시 읽어보면 구데기인 부분이 너무 많다. 그래서 이 시리즈는 과거의 설계를 돌아보며 더 확장성있는 코드를 고민해보는 글이 되겠다. 조건 블록을 4개 이상 매치하면 특수 블록이 만들어지는 모습은 이제는 흔한 장면이 되었다. 그 중에서도 똑똑하게 미션을 깰 수 있도록 도와주는 유도 미사일, 혹은 부메랑을 개발해야 했다. 1. 게임 목표에 있는 장애물을 우선적으로 타겟으로 할 것 2. 도중에 타겟이 된 블록이 파괴되거나 식별할 수 없게 되면 다른 타겟을 찾을 것 3. 장애물을 파괴하는 것이 목적이 아닌 경우도 있음 과거의 나 3매치를 만들면서 가장 공수를 많이 들인 부분이 타겟팅 로직이 아닐까 싶다. ..
3매치 구조 회고 (1) : 슬롯과 블록
3매치 구조 회고 (1) : 슬롯과 블록
2023.09.15현재 회사에서 설계하고 유지보수한 3매치 코드는 이미 검증되었지만, 과거의 자신을 돌아보는 것이 늘 그렇듯 다시 읽어보면 구데기인 부분이 너무 많다. 그래서 이 시리즈는 과거의 설계를 돌아보며 더 확장성있는 코드를 고민해보는 글이 되겠다. 조건 처음 입사했을 때, 새 3매치 프로젝트의 주요 사양에는 네 가지가 있었다. 1. 두 칸 이상의 크기를 가진 블록 기존 블록이 1x1이라면, 2x2 이상이나 5x1 등으로 이루어진 블록들을 만들 수 있어야 한다. 심지어 어떤 장애물 블록은 실시간으로 크기가 변경될 수도 있다. 2. 블록 위에 블록이 있을 수 있다 상자 블록이 있다고 하면, 그 블록을 가리는 꿀 블록이 있을 수도 있다. 이런 경우 꿀 블록이 사라질 때까지 상자 블록을 찾을 수 없다. (특수 블록의 대..
마음 챙김
마음 챙김
2023.09.10구름이 포근한 솜사탕처럼 하늘을 거닐고, 시리고 푸르른 바다 위로 느릿느릿 춤춰요. 천천히 움직이는 한 폭의 그림이 거대한 네모 프레임 안에 담겨 있어요. 아이는 그 프레임 앞에 턱을 괴고 한없이, 한없이 바라봐요. 그 느린 작품의 무엇이 즐겁길래 그리 오래 들여다볼 수 있는 걸까요. 어떻게 가던 길을 멈추고 창문 너머에 시선을 둘 수 있는 걸까요. 내 시선은 언제나 그 창문 너머가 아닌 아이에게 있어요. 나는 그 작품들을 즐기지 못하거든요. 돌아볼 여유가 없다는 건 핑계고, 그냥 재미가 없는걸요. 그치만 다들 아이가 부럽다고 말해요. 나도 그렇고요. 나는 오히려 아이가 창문 밖을 들여다보는 것에 압도되고 있었어요. "마음 챙김이라는 방법이 있어요. 명상의 한 방법인데요, 생각하지 않고 오감으로만 느끼는..