반응형

요즘 Go의 Ebiten을 조금씩 보고 있다.

아직 Go 언어가 익숙하지는 않지만 조금씩 기능을 추가해가면서 공부해보려고 한다.

 

일단 가장 기본적인 기능으로 텍스트 출력을 해보고 싶었다. (FPS 출력;;)

그래서 무료 라이센스의 TTF 파일을 우선 찾았고 이 파일을 어떻게 사용할까 찾아보았다.

ebiten에서 텍스트를 사용하는 기능은 지원하고 있어서 TTF를 읽어서 font.Face를 만들어내기만 하면 되었다.

 

TTF를 읽기 위해서 freetype 패키지를 설치하였다.

go get github.com/golang/freetype

 

그리고 아래와 같이 파일 경로를 통해서 파일을 읽고 해당 파일을 바이트로 변경하고 truetype으로 파싱해서 font.Face를 생성하는 함수를 만들었다. 나는 utils 패키지를 만들어서 ttfLoader.go 파일로 빼놓았다.

 

func Load_TTF(fontPath string) font.Face {
	f, err := ebitenutil.OpenFile(fontPath)
	if err != nil {
		log.Fatal(err)
	}
	defer f.Close()

	b, err := ioutil.ReadAll(f)
	if err != nil {
		log.Fatal(err)
	}

	tt, err := truetype.Parse(b)
	if err != nil {
		log.Fatal(err)
	}

	const dpi = 72
	return truetype.NewFace(tt, &truetype.Options{
		Size:    24,
		DPI:     dpi,
		Hinting: font.HintingFull,
	})
}

 

update 함수에서 ebiten.CurrentFPS() 를 이용하여 현재 FPS를 얻어내 문자열을 만들었고

draw 함수에서 text.Draw()로 텍스트를 출력해보았다.

 

이렇게 조금 조금씩 코드를 추가해나가면서 간단한 게임 엔진을 만들어보려고 하는데

간단히 정리할 수 있는 내용이 있다면 블로그에 올리도록 하겠다.

반응형

'프로그래밍 > Go' 카테고리의 다른 글

Go - Asesprite json 파일 읽기  (0) 2022.05.01
Go 언어 환경설정 간단 정리(IDE - VS Code)  (0) 2022.03.19
Posted by msparkms
,