
이 글의 목적
테트리스 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줄 — 폴더를 펼친 뒤 파일을 누르면 코드를 불러옵니다.
프로젝트 루트
llm_macro_client.py
코드를 불러오는 중입니다…
llm_reward_wrapper.py
코드를 불러오는 중입니다…
llm_teacher.py
코드를 불러오는 중입니다…
local_tetris_env.py
코드를 불러오는 중입니다…
macro_planning_env.py
코드를 불러오는 중입니다…
moe_macro_policy.py
코드를 불러오는 중입니다…
project.md
코드를 불러오는 중입니다…
qt_rl_client.py
코드를 불러오는 중입니다…
requirements.txt
코드를 불러오는 중입니다…
simple_tetris_env.py
코드를 불러오는 중입니다…
train_qt_live.py
코드를 불러오는 중입니다…
train_tetris_rl.py
코드를 불러오는 중입니다…
vlm_macro_client.py
코드를 불러오는 중입니다…
vlm_teacher.py
코드를 불러오는 중입니다…
config/
config/__init__.py
코드를 불러오는 중입니다…
config/rl_config.py
코드를 불러오는 중입니다…
tetris/
tetris/CMakeLists.txt
코드를 불러오는 중입니다…
tetris/src/main_window.cpp
코드를 불러오는 중입니다…
tetris/src/main_window.h
코드를 불러오는 중입니다…
tetris/src/main.cpp
코드를 불러오는 중입니다…
tetris/src/tetris_c_api.cpp
코드를 불러오는 중입니다…
tetris/src/tetris_engine.cpp
코드를 불러오는 중입니다…
tetris/src/tetris_engine.h
코드를 불러오는 중입니다…
tetris/src/tetris_widget.cpp
코드를 불러오는 중입니다…
tetris/src/tetris_widget.h
코드를 불러오는 중입니다…
COMMENTS · CHAPTER 06
전체 소스 코드와 사용한 모델 댓글 0
아직 댓글이 없습니다. 읽다가 궁금한 점이나 보탤 내용을 남겨 주세요.
댓글을 등록하려면 구글로 시작하기를 눌러 닉네임과 메일 주소를 등록해 주세요.
구글로 시작하기