본문 바로가기
일기장 겸 뻘소리

오늘자 일기 및 기록(내가 공부하는 방법2, VS단축키들, C++생김새)

by 개발의 묘미(GaeMyo) 2022. 9. 20.
SMALL

오늘은 밤 10시 반 정도나 되어서야 일어난 것 같아.

본격적으로 작업을 위해 앉은 건 밤 열두 시정도부터였던 것 같아.

 

오늘부터 정말 내가 원하는 이상적인 날씨가 된 것 같아서 기분이 꽤 좋아.

죽을 만큼 추운 게 아닌, 살짝 몸이 저절로 덜덜 떨릴 정도로 추운 이런 날씨가 난 너무 좋아.

덜덜 떨면서 잠도 안 오고 정신도 말짱하고 데스크톱 본체 온도 관리하기도 유리하고 뭔가 내가 제일 좋아하는 작업 환경인 것 같아.

평소에는 본체 온도를 올리기만 하는 뜨거운 공기가 이런 날씨가 되면 되게 따뜻하고 기분 좋거든.

정 못 버틸 정도로 춥다 싶으면 데스크톱 본체 위 팬 쪽에 손을 갖다 대면 겁나 따뜻함ㅋㅋ.

어차피 이런 날씨가 되면 본체 온도는 아예 신경 꺼줘도 무관할 정도로 높이 올라가는 일은 거의 없으니 이럴 때만 느낄 수 있는 뜨거운 바람에 대한 감사함 ㅋㅋ.

 

지금은 벌써 20220920 새벽 3시 23분이지만 내 C++경력은 이제까지 코드 세네 줄 정도 따라 쳐본 게 다이기에 오늘은 플레이어나 AI 캐릭터 상태와 능력치에 대한 여러 부분들을 C++로 한번 찍먹 해볼 생각이야.

 

뭐부터 해야 할지도 막막하고 모르겠지만 이것저것 찾아보다 보면 남는 게 있겠지.

 

일단 이런저런 스크립트들만 쳐다보다 보니 그냥 외계어에 괄호도 있고 화살표->이런 식으로 생긴 것도 있고 A::B 이런 식으로 생긴 것도 있고 신기하게 생긴 생김새가 되게 많은 것 같아.

 

아래 사진은 Visual Studio에서 자주 사용하는 단축키 정리본이야.

출처 : https://zuyo.tistory.com/880

근데 F5가 빌드가 아니고 디버그 모드 실행이 맞나? 흠..

그래도 Visual Studio 설치 이틀 차인 내가 뭘 알겠어 ㅋㅋㅋ하다가 틀리거나 좀 다른 부분이 있으면 내가 따로 정리하지 뭐.

 

 

뭐 C++스크립트도 두세 달쯤 전 한창 시노부 만들 때 자바나 자스, 트위스트 처음 공부할 때처럼 뭔가 보일 때까지 계~~~ 속 찬찬히 쳐다보고 있다 보면 감이 오겠지.

 

이상하게도 나는 학원이나 학교만 가면 남들보다 훨씬 학습능력이 뒤떨어지는 것 같아.

대신 공식문서든 자료든 다 필요 없이 완성본 스크립트들이나 많은 데이터만 줘도 하루 종일 그 스크립트만 쳐다보다 보면 뭔가 하나씩 찍어지더라고.

 

예를 들어, 아래 사진 같은 스크립트(국적도 모를 어느 유튜버분의 외계어? C++? 도중 발췌)로 가정했을 때 C++ 자체를 아예 모른다고 하더라도 한 40초? 만 차근차근 쳐다보기만 해도 충분히 시도해볼 수 있는 유추들이 많이 있어.

(오지게 다 틀릴 수도 있지만 그냥 방식만 봐줘 ㅋㅋㅋ)

 

void 액터 하위 내 캐릭터

(맨 앞 A 붙어있길래 찍은 거임 + MyCharacter는 이게 공식적인 클래스? 변수? 이런 것들의 이름일 가능성은 적으니 사용자가 명명한 것 같아)

 

::

(사실 :: 이 문자는 정말 도통 모르겠지만 그냥 뭐 저 문자를 기준으로 왼쪽에 쓰여있는 대상에게 오른쪽에 쓰여있는 대상의 허용된 함수? 변수? 기능? 아무튼 그런 기타 등등을 사용하게 허락? 바인딩? 부여? 해준다는 뜻이 아닐까)

 

Dash()

(결론적으로 만들어지게 되는 놈인 이 아이의 이름인 듯 + ()는 함수라는 뜻 아닐까)

 

저 아래의 {} 안에는 기능 같은 것들에 대한 내용이 들어가는 것 같음.

 

FCollisionResponseParams ResponseParams; 이것도 진짜 ㅋㅋ 도통 모르겠지만 직역한 뜻과 위치와 생김새로 봤을 땐 그냥 F는 파인드? 찾아주는 건가 싶기도 하고 Collision이 들어가 있으니 충돌에 대한 뭐 응답의 파라미터? 에 대한 기능 안의 ResponseParams의 기능?을 먼저 비어있는 그릇처럼 불러와서 선언만 해 준 게 아닐까.

(기초도 없고 프로그래밍 자체를 할 줄 모르니 사실 선언이니 함수니 클래스니 뭐 이런 것도 뜻도 모르고 지껄이는 거니 틀리더라도 너그럽게 넘어가 주길 ㅎㅎ) 

 

그 아래의 두 줄도 마찬가지로 비슷한 것 같고 네 번째 줄의 SpawnParams.SpawnCollisionHandlingOverride 어쩌고 저쩌고 길게 쓰여있는 저놈은 바로 위의 SpawnParams를 불러와준 직후 불러온 이 아이 안에 있는 기능인 SpawnCollisionHandling 어쩌고 저쩌고에 관련된 직접적인 기능을 뽑아서 =을 기준으로 오른쪽에 있는 대상을 넣어준 것 같이 보여.

 

const 부분부터는 드디어 JS 할 때 전역 변수? 상수항?으로 썼던 const가 나와서 정말 다행이야ㅠㅠ.

FVector은 아마 벡터 값 유형인 StartTrace라는 변수? 에 GetMesh()를 실행시켜서 나온 값인 이아니고 ㅋㅋ 그전에 ->이 화살표같이 생긴 애가 있으니 GetMesh()는 GetSocketLocation() 즉, 매쉬에 부착된 Socket? 의 위치를 받아온 놈이다~라는 말인 것 같고 그 부착된 소켓은 저 겟 소켓 로케이션의 괄호 안에 있는 인자(?)인 FName("아마도 소켓 이름이 들어온 듯")으로 소켓 이름을 찾아서 일치하는 소켓을 가져온 다음 그게 바로 겟 매쉬의 결과이다~ 가 되면서 그 자체가 이제 왼쪽의 const FVector StartTrace라는 놈이 되시겠다~라는 뜻의 코드인 것 같아.

 

근데 그 바로 아래의 FRotator은 왜 앞에 const가 없는 걸까.

const가 있었다면 아~ 쟤도 변수인가? 할 수 있었을 텐데.

아니면 혹시 어떤 당장은 알 수 없는 이유로 생략된 걸까? 패스.

아무튼 위가 매쉬의 소켓 위치였고 FRotator은 현재 회전과 관련된 정보를 위와 똑같은 방법으로 뽑아와서 할당? 해 준 것 같아. 자세히 보면 위에는 GetSocketLocation인데 아래는 비슷하게 보여도 Location이 Rotation이거든.

 

그걸 기반으로 이제 마지막 줄의 FVector의 EndTrace에 맨 처음의 StartTrace에서 구해온 값에다가 그 아래 회전에 대한 정보를 벡터 값으로 더해서 float형식의 1000이라는 숫자를 곱한 게 아닐까 싶어.

1000.0f도 생김새가 낯이 익은걸 보니 정수형은 그냥 써도 소수는 저런 식으로 붙여서 써주는 것 같더라고.

 

물론 아직은 const도 제대로 아직 모르고 저기 나온 모든 변수와 문법과 이상한 기호들과 함수와 클래스와 뭐 열거체? 구조체? 뭔지도 모르겠지만 일단 그런 아이들이 죄다 생소하지만 누구나 저 영어를 있는 그대로만 읽어본다 하더라도 이 정도는 다들 유추할 수 있는 정도니까 나는 항상 이런 식으로 공부를 하는 것 같아.

 

글로 쓰려다 보니 엄청나게 길어져서 그렇지 실제로 저 코드를 보고 저기까지의 생각에 도달하는 건 한.. 35초 정도? 이 정도밖에 안 걸리니까 하루 종일 저런 코드만 쳐다보고 있다 보면 내가 한 유추들에 대한 실험도 조금조금씩 해보기도 하고(비슷한 구조로 나도 코드를 짜 보고 돌아가는 상태에서 궁금했던 모든 부분들을 하나하나 바꿔가며 실험해 보면 됨) 부분 부분적으로는 자료도 찾아보기도 하고 그러다 보면 프로그래밍 언어는 딱 일주일 정도만 쳐다만 보고 있어도 그나마 내가 실험해본 부분들은 되게 숨 쉬듯이 잘 써먹을 수 있게 되더라고.

 

대신 이런 방법으로 공부를 하게 되면 되게 뭔가 학교나 학원에서 전문적으로 기초 용어부터 배우는 게 아니다 보니 상당 부분들을 착각하고 있는 채로 넘어가게 될 수도 있고 무엇보다 비슷한 분야의 타인과 이야기를 나눌 때 다들 전문 용어로 설명하는데 난 누구보다 잘 이해하고 활용하고 잘 짜고 잘 써먹을 자신이 있지만 어떨 땐 아예 사람들이 하는 얘기 자체가 내가 가장 잘 알고 있는 이 부분에 대한 얘기라는 것조차도 모를 때도 있고 ㅋㅋㅋ내가 직접 내 코드를 설명하는 데에 있어서도 많은 어려움이 생기긴 하는 것 같아 ㅋㅋ.

 

난 명칭이나 호칭이나 이름 같은 부분들은 진짜 외오려야 머리에 남지가 않더라고 ㅠ..

차라리 너 이런 기능 만들어본 적 있냐 라거나 너 이런 이런 부분 할 수 있을 것 같니 라는 질문이 훨씬 편하고 좋은 것 같아.

뭔가 나는 내가 목숨 걸고 꼭 알아내거나 이해해야만 하는 부분에 대해서는 나라는 사람 자체가 본능적으로 용어보다는 언제든 당장 필요한 상황이 닥쳤을 때, 뼈에, 뇌에 각인될 정도로의 숨 쉬듯 활용할 수 있는 느낌의 정말 현실적이고 바로바로 나오는 감각적인? 개념으로만 공부를 하게 되는 것 같아.

이게 좋은 방법인 건지는 아직 나도 잘 모르겠어.

 

아무튼 용어야 내가 이해한 내용을 바탕으로 뒤늦게라도 억지로나마 갖다 붙여서 하기 싫은 암기 하면 되는 거니까.

 

하지만 항상 하게 되는 생각이 기업의 궁극적 목표는 수익 창출이고 나도 그 부분은 크게 다르진 않기에(돈이 있어야 더 새롭고 신기한 두근거려 미칠 것 같은 미지의 경험들을 더 많이 할 수 있음) 수익에 직결되는 결과물을 내는 데에 있어선 이 이상의 부분들은 아직까진 필요하지 않은 것 같아.

 

물론 어느 기업에 내가 소속되거나(취직이든 외주던) 하는 여러 예외상황이 닥친다면 그 상황조차 순식간에 적응해서 바뀌면 되는 거니 문제없다 생각해. 

 

말이 너무 길어졌네.

당장은 C++ 스크립트에 스스로 코드 한 줄도 추가할 수 없는, 손도 못 대고 있는 실정이긴 하지만 빠른 시일 내에 멋지게 C++을 자유자재로 갖고 노는 단계까지 올라갈 생각이야.

(네 다음 C++ 코드 경력 9줄 + 그마저도 남의 코드 따라 쳐 본 게 다이신 분)

 

가끔씩 일기 쓰며 이런 부분들을 주절주절 쓰는 것도 나쁘진 않다고 생각하지만 언제까지고 이렇게 입으로만 나불댈 순 없으니 바로 내가 방금까지 뱉은 모든 말들을 스스로 증명하러 가야겠어 ㅋㅋ.

참 어려워 보이면서도 외계어 같아 보여서 막막하기만 하지만 이 부분을 챙기면 얻는 부분들이 너무도 달콤해 보여서 목숨 걸고 하지 않을 수가 없는 부분인 것 같아 ㅋㅋㅋ.

 

추가적으로 당장 해보고 싶은 것들도 되게 많고 언제까지나 이거 하나에만 시간 계속 내어줄 순 없으니 최단시간을 목표로 달리는 게 항상 내 병렬 목표야. 

 

날 죽이지(포기시키지) 못한다면 죽는 건 언제나 그랬듯 내가 물고 늘어진 대상이 되겠지.(개오글)

그럼 이만 C++의 가시투성이 불바다에 날 던져버리러 가겠음.

 

 

++새벽05:46분 추가.

오 ㅋㅋㅋㅋ드래그해서 마우스 갖다대거나 하면 그 대상의 국적?출처?ㅋㅋㅋ아무튼 대상과 관련된 정보들이 나옴..!

문득 든 생각인데, 게임개발자로 취직하게 된다면 돈까지 받아가면서 이런 무궁무진하고 신기하고 내 상상력과 역량에 따라 모든걸 다 구현할 수 있는, 심지어 일(업무)이라는 핑계로 무료 자기역량 테스트에 무료 숙제들까지 내주는 환경에서 살 수 있을 것 같아서 되게 탐나는것 같아.

 

 

 

 

++오후03시32분 잠들기 직전 추가.

방금까지 쭉 Visual Studio2019에서 2022로 바꿨다가(속도 세배가량 빠르더라?) 결국 Rider이라는 정말 좋아보이는 프로그램을 추천받았는데 차근차근 찾아보니까 언리얼 전용 버전까지 있고 진짜 되게 좋아보이더라.

 

그래서 유료긴 해도 결국 설치했는데 정말 진짜.. Visual Studio2022가 속도는 좀 더 빠른것 같지만 VS에서 나던 오류들의 4분의 3이 말끔히 정리되고 VS보다 훨씬 똑똑한 프로그램인것 같다는 느낌이 들었어.

 

VSCode는 헤더파일이랑 소스파일조차 서로서로 못찾아서 난리였는데다가 경로도 건드리지도 않았는데도 불구하고 매번 오류나고 확장이든 뭐든 죄다 직접 일일히 빡세게 조정 안하면 아예 못써줄 정도였고 VS같은 경우는 VSCode보다 8배정도 훨씬 괜찮은 느낌은 들었지만(실제로 VSCode에서 나던 오류가 그대로 같은 스크립트를 들고왔는데 VS에선 10분의1로 오류가 줄어듬) 그리고 속도도 라이더보다 약간 빠른것 같긴 하지만 오늘 선택하게된 라이더는 언리얼엔진 전용 라이더여서 그런지 속도도 VS못지않게 빠르고 무엇보다 언리얼엔진 스크립트에 굉장히 특화되어있다는 느낌을 많이 받았어.

아래 사진에서처럼 자료형까지 순식간에 파악해서 연결하고 띄워주는데다가 

 

심지어 띄워놓은 스크립트가 언리얼엔진 에디터에서 몇 개의 참조가 있는지도 아래 사진처럼 보여주는게 진짜 신기해 ㅋㅋ.

 

 

아무튼 너무 졸리니 뭐 좀 먹고 바로 좀 자야겠어.

반응형
SMALL