Dev Log/Algorithm 5

[Qt/QML] QML Canvas로 동적 펜타곤(레이더 차트) 스탯 UI 구현하기 (feat. 농구 선수 능력치)

안녕하세요! 오늘은 동적 펜타곤(오각형) 스탯 UI에 대해서 구현해 보겠습니다.농구 선수나 축구 선수의 능력치를 비교할 때, 혹은 게임 캐릭터의 스탯을 보여줄 때 가장 직관적이고 멋진 UI가 바로 이 '레이더 차트(Radar Chart)' 형태의 오각형 그래프입니다.오늘은 C++로 선수의 스탯 데이터를 관리하고, QML의 Canvas 객체를 이용해 오각형 그래프를 직접 그리는 방법을 알아보겠습니다. 값이 바뀔 때마다 스무스하게 애니메이션되는 효과까지 넣어볼 예정입니다! (MinGW + Qt6 환경 기준)🏀 1. C++ 백엔드: 선수 스탯 데이터 모델링먼저 선수의 스탯을 담을 C++ 클래스를 만듭니다. QML에서 스탯 값을 읽고 쓸 수 있으며, 값이 바뀔 때 애니메이션을 적용하기 위해 Q_PROPERTY..

Dev Log/Algorithm 2026.03.09

[Qt/QML] 양자역학을 빌려온 마법의 맵 생성기: Wave Function Collapse (파동 함수 붕괴) 알고리즘

안녕하세요! 지난번 Boids 군집 알고리즘에 이어, 오늘은 인디 게임 개발(절차적 맵 생성)에서 가장 핫한 알고리즘 중 하나인 Wave Function Collapse (이하 WFC) 알고리즘을 Qt C++와 QML로 구현해 보겠습니다.WFC는 이름부터 굉장히 멋집니다. 양자역학의 '관측하기 전까지는 여러 상태가 중첩되어 있다가, 관측하는 순간 하나의 상태로 확정(붕괴)된다'는 개념을 차용했습니다. 쉽게 말해 초고급 스도쿠를 푸는 방식과 똑같습니다.오늘은 가장 기본적인 타일 매칭(바다, 모래사장, 육지)을 예제로, 타일이 하나씩 결정되면서 멋진 지도가 자동으로 생성되는 과정을 QML로 시각화해 보겠습니다! (MinGW + Qt6 환경 기준)🌊 WFC의 3가지 핵심 단계빈 그리드(Grid)의 모든 칸은..

Dev Log/Algorithm 2026.03.06

[Qt/QML] Boids 알고리즘으로 새떼(Flocking) 시뮬레이션 구현하기

안녕하세요! 오늘은 C++과 QML을 활용해서 시각적으로 아주 재미있는 알고리즘을 구현해 보겠습니다. 바로 Boids(보이드) 알고리즘입니다.게임이나 영화에서 수백 마리의 새떼나 물고기 떼가 리더 없이도 서로 부딪히지 않고 무리 지어 이동하는 모습을 본 적 있으신가요? 1986년 크레이그 레이놀즈(Craig Reynolds)가 고안한 이 알고리즘은 단 3가지의 간단한 규칙만으로 이러한 군집(Flocking) 행동을 완벽하게 시뮬레이션합니다.오늘은 로직은 Qt C++로 빠르게 연산하고, 렌더링은 QML을 이용해 부드럽게 시각화하는 방법을 알아보겠습니다. (MinGW + Qt 환경 기준)🦅 Boids의 3가지 핵심 규칙Boids 알고리즘의 각 개체(Boid)는 주변에 있는 다른 개체들을 관찰하고 다음 3가..

Dev Log/Algorithm 2026.03.04

[DevLog] 100만 개 데이터를 0.01초 만에? C++로 구현하는 초고속 기수 정렬(Radix Sort)

2026.01.29 - [Dev Log/Algorithm] - [알고리즘] 코딩 테스트가 아니라, '성능'을 위해 알아야 할 필수 알고리즘 [알고리즘] 코딩 테스트가 아니라, '성능'을 위해 알아야 할 필수 알고리즘들어가며: 코딩 테스트 그 이상의 '생존' 기술많은 개발자가 취업용 코딩 테스트를 통과하면 알고리즘 공부를 멈춥니다. 하지만 실무, 특히 제가 경험했던 3D 지도(Map) 렌더링처럼 대용량 데이터moonithm.tistory.com 1. 도입: 왜 다시 정렬인가?우리는 보통 C++에서 정렬이 필요할 때 std::sort를 떠올립니다. 퀵 정렬(Quick Sort) 기반인 이 함수는 \(O(N \log N)\) 이라는 훌륭한 성능을 보여주지만, 실시간 렌더링의 세계에서는 이조차 느릴 때가 있습니..

Dev Log/Algorithm 2026.01.30

[알고리즘] 코딩 테스트가 아니라, '성능'을 위해 알아야 할 필수 알고리즘

들어가며: 코딩 테스트 그 이상의 '생존' 기술많은 개발자가 취업용 코딩 테스트를 통과하면 알고리즘 공부를 멈춥니다. 하지만 실무, 특히 제가 경험했던 3D 지도(Map) 렌더링처럼 대용량 데이터를 다루는 분야에서 알고리즘은 곧 '생존'입니다.알고리즘 하나 차이로 지도 로딩 속도가 1초에서 0.1초로 줄어들고, 프레임(FPS)이 10에서 60으로 바뀝니다. 오늘은 제가 고성능 렌더링 엔진을 개발하며 뼈저리게 느꼈던, 실무 필수 알고리즘 5가지를 정리해 봅니다.시간 복잡도 (Big-O): 성능을 예측하는 눈구체적인 코드보다 중요한 것이 "데이터가 늘어날 때 얼마나 느려지는가?"를 예측하는 감각입니다.1. 해시 테이블 (Hash Table): O(1)의 마법데이터를 찾을 때 리스트를 처음부터 끝까지 뒤지는(..

Dev Log/Algorithm 2026.01.29