1
🧡 이 글은 게임 개발자 관점에서 작성된 글입니다.

어떤 언어를 배우는게 좋을까?

2021년을 시작하면서 새로운 언어를 배우려고 조사하는 김에 작성하기 시작했다. 아마도, 게임 프로그래머라면 주로 다루던 언어는 C++/C# 등과 같은 C계열의 언어였을텐데, 조금 새로운 바람이 필요한 분들에게 도움이 되길 기대한다.

Python

TIOBE Index For Python

대부분의 프로그래밍 언어 랭킹 사이트에서 파이썬은 압도적으로 높은 순위를 자랑한다. 2021년 1월 현재 PYPL 1위, TOIBE 3위로 랭크되어 있으며, 이제 프로그래머라면 반드시 알아야하는 언어가 되었다. 파이썬은 매우 풍부한 라이브러리를 갖고 있을 뿐만 아니라, AI, ML등에서 적극적으로 사용한다. 또한 웹 서버 개발(Django, Flask)로도 많이 사용된다.

파이썬 하이라이트

  • 오픈소스, 객체지향 언어
  • 크로스플랫폼을 지원
  • 비동기 코딩이 가능하도록 디자인
  • 강력한 라이브러리가 존재
  • 잘 되어 있는 문서화

게임 쪽에서도 파이썬은 잘 활용되고 있다. 대표적인 아트 툴인 Maya/3Ds Max/Blender는 이미 플러그인 API 스크립트로 파이썬을 사용하고, 이펙트/절차적 생성으로 유명한 Houdini 또한 파이썬을 지원하고 있다. 언리얼 엔진은 4.20 버전부터 에디터 스크립팅으로 파이썬을 지원하는 실험 기능이 추가 되었다.

게임에서는 일부 프로젝트에서 파이썬을 적극적으로 사용하는 케이스도 있었다.

게임에서의 실전 사용 케이스

어떻게 시작할까?

  • 슬랙 API를 이용해 봇을 만들어보는 것도 괜찮다.
  • 비공식이지만, Notion API를 이용해 무언가 자동화해보는것도 괜찮다.
  • 괜찮다면 DCC 생산성을 돕는 툴을 만들어 보는것도 좋을 것 같다.

Rust

TIOBE Index for Rust

두번째는 Rust다. 러스트는 현재 많이 사용되고 있지 않지만 꾸준히 사랑받고 있는 언어다. 실제로 스택오버플로우에서 2020년에 제일 사랑받는 언어 1위로 채택되기도 했다. 러스트는 효율성안정성을 중시하는 언어로 시스템 프로그래밍과 관련된 프로젝트들 여러개가 러스트를 기반으로 만들어지고 있다.

러스트 하이라이트

  • 급성장 하는 언어
  • 쉽고 빠른 개발 환경 구축
  • 안전한 문법 제공

러스트는 특히 C++의 대체제로 많이 대두되었는데 이에 대해선 다양한 의견들이 있으나 아마도 가장 크게 이슈가 되었던건 이 기사였을 것이다.

이에 대해서 반박하는 글도 있긴하다. 이 때문인지 Rust를 찾다보면 C++/C에 대한 이야기가 많이 나온다. 안전하고 효율적인 프로그래밍을 배워보고 싶다면 러스트를 배워보는 것이 매력적인 제안이 되지 않을까 싶다.

러스트에서 매우 흥미로운 것이 있는데 바로, Are we xxx Yet? 밈이다. 이는 러스트 프로젝트들을 모은 awesome list라고 생각하면 되는데, 재미있으니 한번 찾아보자. 또한 게임쪽에서 Rust하면 스웨덴에 게임회사 엠바크 스튜디오를 빼놓을 수 없다. AAA급 게임 스튜디오인 엠바크 스튜디오는 EA DICE 출신 게임 개발자들이 창업한 곳이다. 얼마전 넥슨에서 인수했는데 이 곳의 행보는 독특하다. 바로 개발의 메인 언어(Primary Language)로 Rust를 사용한다는 것. 즉, 거의 개발의 대부분을 Rust를 쓴다는 것이다. 이 스튜디오의 게임이 어떻게 출시되느냐의 따라 게임 개발 쪽에서 러스트의 입지나 윤곽이 드러나지 않을까 예상해본다.

게임 개발자를 위한 러스트 유용한 링크

어떻게 시작할까?


Kotlin

TIOBE Index for Kotlin

세번째는 코틀린이다. 앞에 Rust가 C++을 대체하는 후보라면, Kotlin은 Java를 계승한다. 코틀린도 위의 Rust와 같이 모던하면서 간결하고 안전한 프로그래밍을 지향한다. 자바의 JVM을 공유하기 때문에 자바 개발자분들이 특히 환영하는 언어라고 한다. 근데 왠 게임 개발자에게 자바? 라고 생각이 들 수 있는데, 사실 게임 개발자의 대부분이 C++/C#을 다루다보니 자바와 같은 언어와는 대척점에 있고 완전히 다른 세계라고 생각하고 기피하곤 한다. 허나 코틀린은 다르다. C#과 유사한 문법을 가질 뿐만 아니라, 다양한 언어에서 본 문법들을 공유한다. 즉, C++/C#과 Java의 간극을 좁혀주는 중간 다리 역할을 할수도 있다는 것이다.

코틀린 하이라이트

  • 표현력이 높고, 간결
  • Java와 100% 호환
  • 코루틴이 가능
  • 안전한 문법 제공

코틀린의 인기는 이제 급상승 하기 시작했는데, 가장 큰 이유는 역시 안드로이드 진형 때문이다. 구글 안드로이드에서 2017년 공식으로 Java외의 언어로 지원하기 시작했다.

그리고, 2019년 구글 I/O에서 Kotlin이, 모든 안드로이드 API에 First 언어가 될 것이라고 선언했다.

이로 인해, 코틀린은 날개를 달았고, 안드로이드 앱개발자들은 반드시 알아야하는 언어가 되었다. 나는 처음에 코틀린이 뭔가 코볼 같은 느낌이 나서 엄청 오래된 언어인줄 알았다. 허나 안드로이드 앱을 하나 만들어보고, 내 생각이 완전히 달랐음을 느꼈다. 이건 마치 C#과 비슷하며, 동시에 모던하다.

어떻게 시작할까?


왜 새로운 언어를 배워야 할까?

어쩌면, 내가 제시한 3가지 언어는 너무 뻔한 내용이라고 생각할 수 있다. 어쩌면, 아, 이거 다들 배우라는 언어인데 손이 안가 라고 생각 할 수도 있다. 나도 그렇다. 지금도 새로운 언어를 배우라고 하면, 실컷 찾아보고 결국 C#, C++ 을 다시 한다. 허나 여기서 하고 싶은 이야기는 새로운 시각에 대한 것이였다.

새로운 시각

위의 자료들을 조사하고, 직접 배워보면서 얻은 인사이트를 몇가지 공유하고자 한다.

  1. 프로그래밍 언어에 대한 습득 방식의 변화
    처음에 내가 개발언어를 배울때만 해도, 책 or 문서뿐이였다. 하지만 지금은 아니다. 유튜브, 인터렉티브한 문서, 인터렉티브 앱 완성 강의등이 차고 넘친다. 실제로 코틀린으로 간단한 앱 하나를 배우면서 만드는데 3시간이 안걸렸다.

  2. 패러다임의 변화
    언어의 패러다임이 계속 변화한다. 아마도 C++17/20도 이런 패러다임을 따라가기 위한 장치로 보이고, C#의 버전업도 비슷하다. 최근 언어들의 핵심 키워드는 안전성, 동시성, 간결성이다. 안전성은 NullPointerException을 제거하는 것을 의미하고, 동시성은 여러가지 태스크가 동시에 처리 될 수 있는 것, 간결성은 읽기 좋으면서도 짧은 코드화를 의미한다. (이에 대한 자세한 내용은 추후에 다뤄보겠다.)

  3. 생각의 확장
    안드로이드 스튜디오의 앱 개발 방식에서 게임 UI에 대한 영감이 떠오를수도 있고, 풀리지 않았던 문제를 다른 프로그래밍 언어에선 너무나 쉽게 푸는 경우가 있다. 몇년전 Unity에 갑자기 등장했던 UniRx도 Rx 패러다임에서 온 것인데, 이걸 이용하면 게임 개발에서 정말 많은 문제들이 쉽게 풀린다. 예를들면, 콤보 누적할때, 액션이 히트되면 누적되고 n초간 아무도 히트 되지 않으면 초기화 와 같은 문제는 Rx에서 한줄로 해결된다.

그렇다. 패러다임은 더욱 빠르게 변화하고, 배우는 방법은 엄청나게 방대해졌다. 이제 남은건 실행뿐이다. 2021년 1월 각오가 되었을 때 한번 시작해보자.