게임회사 생활 중간 점검 - 2

Kim Ju Young·2023년 1월 1일
0

회고록

목록 보기
9/13
post-thumbnail

시작하며

썸네일은 요즘 재밌게 본 이세계 삼촌의 츤데레 엘프가 점령헀다 (...)

이제 어느새 게임회사 6개월 차에 다가서고 있다. 게임 서버는 유니크한 기술을 찾아 해매던 내게 아주 최적이었으며 최고의 직업 만족도와 함께 회사를 다니고 있다.

심심할 때 운영툴을 다룬다하며 웹을 만지면 그것만한 재미가 없었다.

무엇을 배웠나?

C++ 게임 서버

C++ 게임 서버 자체가 많은 기술을 요구한다는 걸 깨달았다. C++ 을 구세대 산물로 부르는 사람도 있지만, 언리얼 엔진에서도 쓰이고 있고 서버 측에서도 IOCP 가 존재하는 이상 사라지기는 힘들다는 느낌을 받았다.

현존하는 최고 성능 서버를 누가 마다할 수 있겠는가? 이는 Overlapped IO 를 배우고 IOCP 를 접한 신입 개발자가 느낀 점이었다.

Modern C++

또, 이런 옛날부터 유행했던 IOCP가 아닌 C++ 17~20 의 모던 C++ 을 배우니 느낌이 많이 달랐다.

Codenuri Ecourse

기본적으로 C++ auto 가 지니는 type deduction(타입 추론), 새롭게 도입되는 shared_ptr 이나 unique_ptr 같은 스마트 포인터, 얕, 깊은 복사에 대한 이해와 동시에 std::string 을 사용하는 이유를 알게되면 모던 C++을 많이 이해했다고 볼 수 있을 것 같다.

특히 lvalue, ravlue 와 동시에 이어지는 move 생성자, &&, 퍼펙트 포워딩은 신기한 개념이었다. 흥미가 많이 갈 수 있는 부분이니 관심있는 사람은 한번 보면 좋을 것 같다.

현재 C와 C++ 98 등에서보다 모던이 좋아진 걸 느끼는 건 포인터를 쓸 필요가 없다는 것이다.

포인터는 위험하다

현재까지 온 결과 포인터를 사용하는 까닭은 라이브러리들이 포인터로 관리됐기 때문이기도 하고,

포인터는 상당히 위험하지만 편리하기 때문에 사용한다.

윈도우 시스템에 대한 이해

어셈블리에 대한 이해, 윈도우 시스템 프로그래밍에 대한 이해가 깊어졌다.
Visual studio 에서 .asm 확장자를 가지고 어셈블리 실행파일을 만들 수 있다는 것도 신기했는데 C언어 자체에서도 삽입해 쓸 수 있다는 것에 놀랐다.

해당 실행은 github에도 올려놨다. .asm 파일 실행

결론

기존 C++ 포인터를 이용한 기능들에서 테스트할 때 터진걸 한번 본 적 있었다. 2년전 시니어 분이 개발하시고 방치된 코드였는데 잘못된 포인터를 찔러 프로그램이 해당 반복문을 돌 때마다 터졌다.

C 방식 코딩은 현재는 위험한 방식인 것 같다고 많이 느꼈다. 참조자 방식의 Reference 가 좀 더 버그 찾기가 수월하다.

아주아주 재밌는 하루들을 보내고 있다.

profile
호호선생

0개의 댓글