Python으로 2차원 게임 환경을 구현하여 강화학습을 실험하기

http://projectlog.ferranfabregas.info/python-box-2d-pygame-demo-bumper-cars/


1. Pygame : 파이썬 게임 엔진, rendering을 담당한다.(필요에 따라 pygame 대신 opencv나 pyglet등으로 대체 가능)

sudo pip install pygame


2. PyBox2D : 파이썬 게임 물리 엔진

swig 최신 버전 설치 : http://www.linuxfromscratch.org/blfs/view/7.6/general/swig.html

sudo apt-get install libpcre3 libpcre3-dev
wget https://downloads.sourceforge.net/project/swig/swig/swig-3.0.11/swig-3.0.11.tar.gz?r=http%3A%2F%2Fwww.swig.org%2Fdownload.html&ts=1484544509&use_mirror=jaist -O swig.tar.gz
tar xvzf swig.tar.gz
cd swig
./configure --prefix=/usr && make

pybox2d설치 : https://github.com/pybox2d/pybox2d/blob/master/INSTALL.md 에서 Building from source: Linux 참조

git clone https://github.com/pybox2d/pybox2d
cd pybox2d
sudo python setup.py build
sudo python setup.py install
(RAND_LIMIT_swigconstant 에러가 뜨면, swig를 최신 버전으로 설치한다음, pybox2d관련된걸 전부 삭제하고나서 pybox2d를 다시 설치해야함.
즉 pip uninstall box2d-py 이랑 pip uninstall Box2D 둘다 삭제해야하고나서, 위의 python setup.py install로 pybox2d를 다시 설치 -> https://github.com/openai/gym/issues/100)



3. 코딩

- PyBox2D 메뉴얼 :
https://github.com/pybox2d/pybox2d/wiki/manual

- PyGame + PyBox2D의 좋은 예제 :
http://devnauts.tistory.com/3



- 모니터가 없는 환경에서 rendering 없이 pygame 실행하기
import os
os.environ["SDL_VIDEODRIVER"] = "dummy"
https://pygame.org/wiki/HeadlessNoWindowsNeeded?parent=


by 곽동현 이스텔리앙 2017.01.16 14:07