[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
안녕하세요 강의를 들으면서 메이플스토리 모작 2d 포폴을 만들고 있습니다. 상태 변화에 따른 처리 로직을 만들던 중 한 가지 질문드립니다. void Player ::OnComponentBeginOverlap 땅과 충돌 했을때 SetState( PlayerState :: MoveGround ) 로 바꿔주어서 중력 작용을 받지 않게하고 void Player ::OnComponentEndOverlap 땅과 충돌이 끝났으면 SetState( PlayerState :: GroundFall ) 로 바꿔주면서 중력 작용을 받게 하는 충돌 처리 로직이 - 충돌 했을때 밀어주는 방법을 사용하여 플레이어 상태가 GroundFall <-> MoveGround 상태를 계속 왔다 갔다 하면서 동작을 하게 됩니다. 땅과 떨어졌을때 계속 중력을 받아야 하는건 맞는 상태인 것 같은데 플레이어의 상태가 계속 변화하는 문제가 생기게 됩니다. -> 땅과 떨어 졌을때는 GroundFall 상태로만 되고 땅과 붙었을때는 MoveGround 상태로만 동작이 되었으면 합니다. State 패턴 강의에서 슈퍼마리오 예제를 하시다. 아름다운 방법을 찾으셨다고 말씀 하셨는데 어떠한 방법으로 해결 하셨는지 알 수 있을까요?
안녕하세요, 섹션5 7번 문제 알리바바와 40인의 도둑 설명 중에, 오른쪽 또는 아래쪽으로만 간다고 말씀하셨는데, 만약 돌다리가 아래와 같이 주어지면, 7*7 행렬에, 0 index 부터 시작한다고 했을 때, 1 9 9 9 1 1 1 1 1 1 1 9 9 1 9 9 9 9 9 9 1 9 9 9 9 9 9 1 9 9 9 9 9 9 1 9 9 9 9 9 9 1 9 9 9 9 9 9 1 이 경우에는 (0,0)->(1,0)->(1,1)->(1,2)->(1,3)->(1,4)-> (위로 이동)->(0,4) ->(0,5)->(0,6)->... 이렇게 해서 위로 이동하는 경우가 있어야 최소 비용으로 갈 수있는 것 아닌가요?....
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
안녕하세요. Rookiss님! 게임 서버 개발자에 도전해보고 싶어서 Rookiss님 강의를 수강하게 되었습니다! 그래서 서버 개발을 위주로 공부하고 싶은데 C++ 언리얼 과정 중에 있는 게임수학과 DirectX12 강의를 스킵하고 진행해도 다른 강의 진행에 문제가 없을지 서버 개발자로 취업하는데 문제가 없을지 질문드립니다!
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
안녕하세요 강의를 들으며 공부하면서 메이플스토리를 모작으로 포토폴리오 만들고 있습니다. 강의에서는 타일맵 형식으로 충돌을 체크 하였는데 미세한 움직임을 구현하기 위해서는 타일맵 형식 보다는 충돌 레이어 (boxcollider)와 같은 충돌 방식이 더 좋은 방법이 될려나요? 타일맵 형식은 셀 단위로 이동을 하다 보니 미세한 움직임은 불가능해 보여서 질문드립니다. 서버와 클라이언트를 연동하는 것을 고려 했을때 타일맵과 충돌 레이어 두 가지 방식 중 어느 것이 더 좋은 방법이 될까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 7.9강을 듣고 의문이 들었던점은 포인터는 메모리를 새로 할당받는다는 단점이 있기때문에 참조를 사용했는데 함수를 매개변수로 활용하고싶을때 함수포인터가 아닌 참조를 사용할수도있나요?
i 는 1부터 시작해서 n까지 누적합을 구하는공식은 이해가됐는데그 이후에 for(int i=k; i<n; i++){ret = max(ret, psum[i] - psum[i - k]; 이부분에 대해서 그림으로 그려보려고 해도 잘 이해가 되지 않습니다..개념 강의를 참고해도 쉽지않네요혹시 이부분에 대해서 그림으로 설명 부탁드려도 될까요 -학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
http://boj.kr/253158ae77474d9d831ca2fbb09b171e 강의 앞부분만 살짝보고 조합으로 푸는 방법을 생각해서 풀어봤습니다. 답은 예제도 통과못하는 오답입니다. 제가 궁금한 점은 현재처럼 출력을 하면 빠르게 주르륵 나오게 되는데 for (int i = sy; i < n; i++) { for (int j = sx+1; j <m; j++) { if (lab[i][j] != 0) continue; //cout << "in fors"; v.push_back(make_pair(i, j)); wall(i, j, v); v.pop_back(); } //여기서 sx = -1을 하면 너무 오래걸립니다 ㅠㅠ } 해당 부분에서 문제의 1번 예시를 적용하자면 (0,1) / (0,2) / (0,6) 다음 찾아져야 할 조합은 (0,1) / (0,2) / (1,0) 인데 로직 상 sx보다 큰 값이 x에 들어가져서 (0,1) / (0,2) / (1,3)으로 들어갑니다. 이것을 해결하기 위해서 sx = -1을 해당 주석 위치에 넣었지만 그렇게 하게 되면 답은 나오나 너무 오래걸립니다. 혹시 소생 불가능한 코드인지 여쭤봅니다 ㅠㅠ
안녕하세요 🙂 큰돌님! 새로 교안 업그레이드를 해주시면서 getline()에 대한 설명을 읽어보았는데요, getline()의 경우 cin과 달리, '\n'까지 입력받는 것은 이해하였는데, 밑의 출력 예시를 보면 getline()이 입력받은 뒤에 오는 개행문자를 삭제한 것 같은데, 제가 잘못 이해한 것인지 질문드리고 싶습니다! 다른 질문글에 답변 주신 것도 읽어보았는데 잘 이해가 안되어서요ㅜㅜ
public: void Initialize(int iAtt) { /* 같은 클래스 내부에 선언된 함수에서는 private 멤버여도 접근가능 */ //this->iAtt = iAtt; iAtt = iAtt; iDef = 7; iHp = 100; iMp = 100; } =============아래는 메인 함수에서 출력한 코드예여=================== CPlayer Player_class; // 클래스 접근 Player_class.Initialize(10); Player_class.Output(); CPlayer Special_Player; Special_Player.Initialize(100); Special_Player.Output(); 제가 직접 친 거라서 코드 내용은 조금 다른데욥 위 멤버 함수 Initialize 코드에서 this->, (*this)가 생략? 된 거라고 하셨자나요 this->iAtt = iAtt; 이렇게 출력하면 정상 출력이 되는데 iAtt = iAtt; 이 코드로 출력 하면 Player_class랑 Special_Player 둘 다 -858993460 이런 값이 나오더라구요! 이유가?? 멀까요???!!! 근데 멤버 함수에서 받는 파라미터? 인자 이름을 바꾸면 정상 출력이 되긴 해여
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동
안녕하세요, RecvBuffer 관련하여 링버퍼를 사용하시지 않고 다른 방법을 이용하시던데, 강의에서 링버퍼를 별로 안 좋아한다고 얘기를 해주셨는데 이유가 있는지 궁금합니다. 매번 꺼낼때마다 앞쪽에 추가적인 공간이 더 있는지 확인 작업 연산이 더 들어가서 비효율적으로 느껴지긴 하네요..
안녕하세요 선생님, 먼저 답변 감사드립니다. 이 부분에 대해 완벽히 이해했습니다. 다만, 배열 범위 밖의 인덱스를 참조했음에도 컴파일 오류가 발생하지 않았던 이유가 궁금합니다.(Dev C++을 사용하는데, 잘 동작했고 테스트 케이스도 통과했습니다.) 그리고 왜 백준 사이트에서 컴파일 에러가 아닌, 시간 초과로 표시가 되었는지도 궁금합니다. 좋은 강의 늘 감사드립니다!