프로그래머 전체 직군 중에서 게임은 15%, 나머지는 85% 정도. 작다. 그나마 한국이니까 이정도로 큰거.
언어는 C#, C++을 쓰고,
소스 컨트롤은 svn, perforce를 쓴다.
개발 환경은 visual studio에 대부분 윈도우 데스크톱을 사용한다.
다른 곳은 Linux, mac, git을 사용한다. 사용하는 기술이 동떨어져 있기 때문에 왔다갔다 하기 쉽지 않다.
넥슨, 크래프톤, NC, 스마게 등과 비교할 때
네카라쿠배당토 등등의 초봉이 더 높다.
글로벌로 가면 비교가 안된다.
게임회사라고 해봐야 라이엇, 블쟈, EA, 닌텐도, 프롬 이 정도일텐데
M7라 불리는 대기업들과 비교하면 연봉은 몇 배가 차이날 수도.
미국 명문대 박사급만 가긴 하지만, openAI는 초봉이 10억이라고...
즉, 게임 업계의 처우가 좋은 건 아니다.
단, 엔터 쪽에선 원탑. 매출은 밀릴지 몰라도 영업이익이 좋기 때문.
팀을 짜서 '출시'가 되는게 10%,
성공을 하는 건 3%
-> 100개 중 3개만이 성공
그래서 라이브 팀에 가서 패치를 하는 사람들이 다수
팀 분해도 다수. 이후엔 이직, 전배, 희망퇴직 등을 당한다.
노동법이 바뀌긴 해서 예전만큼 심하지는 않다고 하지만.
크래프톤 같은 경우엔 후보 선수 느낌의 챌린저실이라는 곳이 있어서
팀에 면접 보거나 프로젝트를 준비해서 팀을 꾸린다던가 한다고 함. 확실치 않음.
즉, 안정적인 직군이 아니다.
심지어 게임 출시해서 성공하더라도 유효기간이 있다.
타 직군은 서비스가 성장하면서 그때 마다의 역할이 남아 있을텐데,
흥행이 오래가기 쉽지도 않다.
그리고 한 게임 너무 오래 담당하면 지루하고 지치기도 함.
그리고 한국은 특히나 레거시(이전 게임 레퍼나 코드 기반 얘기하신듯?) 없이 바닥에서 새로 개발하는 경우가 많음.
그래도 게임 좋아하면 게임 개발 해야지..
개발자들 평균에 비하면 안좋다는 거지
직업 자체로만 보면 나쁘지 않다.
게임 엔진과 관련된 기술
게임 플레이와 관련 없는 Meta 요소는 Web이 좀 쓰이기도 함. React, Node, Nest 등... 물론 게임 프로그래머는 아니긴 함. 그냥 웹 프로그래머도 게임 회사 근무가 가능하다 정도.
Cloud와 DevOps같은 직군들도 필요함.
Core 요소는 서버를 c++로 짠다던가 하는 영역.
CG를 알려면 빛의 속성(굴절, 반사 등)을 알아야 함.
Math, Physics를 알려면 너무 방대하기 때문에 여기부터 시작하면 안되고, 공부하다 모르는거 나오면 체리피킹 하는 식으로.
틀리거나 Outdated한 정보일수도. 찾아보셈.
포폴 인원은 적어야 좋다.
이 모든 것들을 다 알 수 없기 때문에 적당히 찍먹한다는 마인드.
중요한 거 안 중요한거 조사해서 영리하게 공부.
c++ 어렵다. feature도 많고 어려운 문법도 많고.
적당히 찍먹하고 엔진 공부하다 이해 안되면 그때 공부.
게임 만들 때 기술이 중요하진 않음.
포폴의 완성도를 높이기 위해 최선을 다하면 됨.
unreal 5에서 Gameplay ability system을 공부하면 좋다는 의견도 있다더라. 동의는 안 하지만.
게임 프로그래머는 기본적으로 회사에서 원하는 거라면 뭐든지 시키면 해야할 수 있어야 함.
감을 도저히 못 잡고 있다가 컴퍼스에 있는 유형을 봤더니 정렬.
유형 보니까 감이 바로 옴.
LeetCode는 틀린 답을 알려주니까 자꾸 ad hoc적으로 생각하게 된다.
심지어 그거 예외 처리 해줬다고 통과되는게 아니라서 끝도 없이 예외 처리만 넣어줌.
케이스를 통과시키는데 집착하지 말고 로직을 생각하자.
봐줄만은 해졌지만 아직 부족하다.
이쯤하고 다른 풀이 보는게 나을듯.
class Solution:
def hIndex(self, citations: List[int]) -> int:
citations = sorted(citations, reverse = True)
for i in range(len(citations)):
if citations[i] <= i:
return i
return len(citations)
제일 빠른 풀이.
기본 로직 : 인용 횟수(인덱스+1)가 논문 개수보다 작아지는 순간의 인덱스 반환 (다음으로 갔을 때 반환하므로 +1 자동 연산됨)
끝까지 가는 경우 : 논문 전체의 개수가 cnt라고 할 때, 논문들이 전부 cnt보다 인용 많이 됨.
대충 이해는 했는데 꼭 역순으로 정렬해놔야 되는건가? 순회만 역순으로 하면 되는거 아님?
class Solution:
def hIndex(self, citations: List[int]) -> int:
citations.sort()
for i in range(len(citations)-1, -1, -1):
if citations[i] <= len(citations)-i-1:
return len(citations) - i-1
return len(citations)
역순으로 하니까 역시 통과는 했는데 시간이 느림.
제일 빠른 풀이였다고 한거 다시 돌려보니까 이것보다도 느림.
리트코드 시간은 믿을만한게 못 되는듯.
그냥 서버 컨디션 따라 달라지는듯?
+) 이거 내가 원래 제출했던 코드에서 cnt만 i를 이용해서 생략시킨거라고 볼 수도 있음.