이 글의 목적

테트리스 AI에 쓴 소스 코드를 공개합니다. 파일을 펼칠 때만 코드를 불러옵니다.

사용한 모델

  • stable-baselines3 DQN: 저수준 7행동 모델(30만, 37만 스텝)과 매크로 40행동 모델(30만 스텝). 모델 파일은 싣지 않았습니다.
  • Qwen2.5-3B-Instruct GGUF q4_k_m(llama-cpp-python): 글자 판 심판, 후보 번호 고르기
  • Qwen2.5-VL-3B-Instruct(transformers): 그림 판 심판, 자리 직접 고르기

폴더 구성

  • tetris: C++ 엔진(tetris_engine), C API(tetris_c_api), Qt6 화면과 TCP 서버(main_window, tetris_widget), CMake
  • local_tetris_env.py: ctypes로 엔진을 감싼 gymnasium 환경
  • simple_tetris_env.py: 엔진을 빌드하지 않았을 때 쓰는 순수 파이썬 환경. 관측과 행동 형식이 달라 모델을 바꿔 쓸 수 없습니다.
  • macro_planning_env.py: 블록당 한 번 고르는 40개 행동 환경
  • train_tetris_rl.py: 화면 없는 DQN 학습
  • train_qt_live.py: 학습하면서 Qt 화면에 현재 모델을 보여 줍니다. 사람이 둔 판으로 학습하는 모드도 있습니다.
  • qt_rl_client.py: 학습한 모델을 Qt 화면에 붙입니다.
  • llm_teacher.py, vlm_teacher.py, llm_reward_wrapper.py: LLM·VLM 보상 심판
  • vlm_macro_client.py: VLM이 자리를 직접 고르는 클라이언트
  • llm_macro_client.py: 후보 계산과 LLM 번호 고르기
  • moe_macro_policy.py: 규칙 넷을 섞은 후보 선택
  • config/rl_config.py: 학습 설정

빌드 결과, 가상환경, 모델 가중치와 학습한 모델 파일은 제외했습니다.

전체 소스

25개 파일 · 4,969줄 — 폴더를 펼친 뒤 파일을 누르면 코드를 불러옵니다.

프로젝트 루트14개 파일
llm_macro_client.pypython · 894줄 · 33KB

코드를 불러오는 중입니다…

llm_reward_wrapper.pypython · 96줄 · 3KB

코드를 불러오는 중입니다…

llm_teacher.pypython · 128줄 · 4KB

코드를 불러오는 중입니다…

local_tetris_env.pypython · 252줄 · 9KB

코드를 불러오는 중입니다…

macro_planning_env.pypython · 152줄 · 5KB

코드를 불러오는 중입니다…

moe_macro_policy.pypython · 81줄 · 3KB

코드를 불러오는 중입니다…

project.mdmarkdown · 46줄 · 2KB

코드를 불러오는 중입니다…

qt_rl_client.pypython · 148줄 · 5KB

코드를 불러오는 중입니다…

requirements.txttext · 11줄 · 128B

코드를 불러오는 중입니다…

simple_tetris_env.pypython · 154줄 · 6KB

코드를 불러오는 중입니다…

train_qt_live.pypython · 726줄 · 28KB

코드를 불러오는 중입니다…

train_tetris_rl.pypython · 316줄 · 11KB

코드를 불러오는 중입니다…

vlm_macro_client.pypython · 236줄 · 8KB

코드를 불러오는 중입니다…

vlm_teacher.pypython · 179줄 · 6KB

코드를 불러오는 중입니다…

config/2개 파일
config/__init__.pypython · 2줄 · 55B

코드를 불러오는 중입니다…

config/rl_config.pypython · 101줄 · 3KB

코드를 불러오는 중입니다…

tetris/9개 파일
tetris/CMakeLists.txttext · 57줄 · 2KB

코드를 불러오는 중입니다…

tetris/src/main_window.cppc++ · 408줄 · 13KB

코드를 불러오는 중입니다…

tetris/src/main_window.hc++ · 58줄 · 1KB

코드를 불러오는 중입니다…

tetris/src/main.cppc++ · 38줄 · 1KB

코드를 불러오는 중입니다…

tetris/src/tetris_c_api.cppc++ · 167줄 · 6KB

코드를 불러오는 중입니다…

tetris/src/tetris_engine.cppc++ · 446줄 · 13KB

코드를 불러오는 중입니다…

tetris/src/tetris_engine.hc++ · 130줄 · 4KB

코드를 불러오는 중입니다…

tetris/src/tetris_widget.cppc++ · 117줄 · 3KB

코드를 불러오는 중입니다…

tetris/src/tetris_widget.hc++ · 26줄 · 536B

코드를 불러오는 중입니다…