안녕하세요 Part3 1강에 적혀있는 레포지토리에서 1강 기본 프로젝트 샘플 커밋에서 빌드와 엔진까진 작동이되는데 플레이 버튼을 누르면 아래의 에러가 발생하고있습니다 ㅠㅜ.. Could not find the skeleton for Anim Blueprint 'ABP_ABCharacter' Would you like to choose a new one?
- 학습 범위를 넘어서는 개인적인 문의나 기타 회사 정책 및 운영에 대한 문의는 답변하지 않습니다. - 서로 예의를 지키며 존중하는 문화를 만들어가요. 패킷트레이서 다운로드 사이트가 오늘부터 내일까지 다운타임 기간이라 다운로드가 안됩니다 ㅋㅋㅋㅋㅋ 가는날이 장날이라고 ㅜㅜㅜㅜ 흑흑
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
안녕하세요 루키스님 소켓프로그래밍 입분 20분 초반대에 빌드하셔서 실행하시면 서버와 클라이언트가 잘 실행되서 연결되지만 제 환경에서는 Debug\ServerCore.lib 파일을 열수 없다 오류가 나옵니다. ServerCore를 먼저 빌드 후 해봐도 그렇고 루키스님께서 올려주신 파일을 다운받아 순차적으로 빌드해도 동일한 증상이 나타나는데 무슨 문제인지 알 수 있을까요?
안녕하세요, 현재 인턴신분으로 공부하다가 궁금한 점이 있어서 질문을 드립니다. 제가 있는 회사같은 경우 개개인의 사원에게 시트릭스 하이퍼 바이저 기술을 통해 사내 외부 망을 구성하였습니다. 그런데, 공부를 하다가 AWS 환경에서 동일 구성을 하려면 어떻게 해야하는지 문득 궁금해져 질문을 드립니다. 사원 한 명당 각각 다른 컴퓨터 환경을 만들어 주려면 개개인마다 EC2 인스턴스를 주어야 하는지요..? 아니면 질문을 다시 드리자면, 클라우드 환경인 AWS로 새로 구축한다고 했을 시 사원들에게 컴퓨터 환경은 어떻게 제공해야 하나요?
bool SocketUtils::SetTcpNoDelay(SOCKET socket, bool flag) { return SetSockOpt(socket, IPPROTO_TCP, TCP_NODELAY, flag); } 로 코드를 고쳐주어야 할 것 같습니다. (SOL_SOCKET -> IPPROTO_TCP SOL_SOCKET, TCP_NODELAY로 인자를 넣어주면 SO_DEBUG 옵션을 대신 설정해주게 됩니다. 현재 기준으로 마지막 코드까지 오타가 수정되어 있지 않으니 혹시 실제로 서버를 사용하실 분들은 해당 코드를 수정하여 사용하시는걸 권장드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요 강의에서 PUT메소드는 해당 리소스의 위치를 알고있다고 하셨는데요 그러면 PATCH와 DELETE는 해당 리소스의 위치를 모르나요? 모르면 안되는게 그래야 부분 변경할 수 있고 삭제할 수 있으니까요 궁금해서 질문드립니다!!
bReplicatedHasBegunPlay 속성이 변경 됐을때 실행된다 하셨는데요.. 그러면 이미 게임이 시작된 상태에서 클라이언트가 접속시 클라이언트는 복제된 이미시작된 게임스테이트의 상태를보고 bReplicatedHasBegunPlay속성을 변경 시켜주는건가요..? bReplicatedHasBegunPlay속성을 변경 시키는 타이밍이 언제 인가요??
안녕하십니까. 질문 남기기 앞서 강의 정말 잘 보고 있다고 말씀 드리고 싶습니다. 제가 궁금한 부분은 10번 강의에서 공격에 맞았을 때 검증(Validation) 하는 부분입니다. bool AABCharacterPlayer::ServerRPCNotifyHit_Validate(const FHitResult& HitResult, float HitCheckTime) { return (HitCheckTime - LastAttackStartTime) > AcceptMinCheckTime; } 공격 시작 타이밍과 몽타주에 배치한 트리거 함수 간의 간격을 검증하기 위한 것으로 이해했습니다. 검증 코드에서 LastAttackStartTime이란 변수가 쓰였고, LastAttackStartTime이란 변수가 아래 코드의 ServerRPCAttack에서 인자로 받은 AttackStartTime 변수로 세팅되는 것을 확인했습니다. void AABCharacterPlayer::ServerRPCAttack_Implementation(float AttackStartTime) { AB_LOG(LogABNetwork, Log, TEXT("%s"), TEXT("Begin")); bCanAttack = false; OnRep_CanAttack(); AttackTimeDifference = GetWorld()->GetTimeSeconds() - AttackStartTime; AB_LOG(LogABNetwork, Log, TEXT("LagTime : %f"), AttackTimeDifference); AttackTimeDifference = FMath::Clamp(AttackTimeDifference, 0.0f, AttackTime - 0.01f); FTimerHandle Handle; GetWorld()->GetTimerManager().SetTimer(Handle, FTimerDelegate::CreateLambda([&] { bCanAttack = true; OnRep_CanAttack(); } ), AttackTime - AttackTimeDifference, false, -1.0f); LastAttackStartTime = AttackStartTime; PlayAttackAnimation(); //MulticastRPCAttack(); for (APlayerController* PlayerController : TActorRange<APlayerController>(GetWorld())) { if (PlayerController && GetController() != PlayerController) { if(!PlayerController->IsLocalController()) { AABCharacterPlayer* OtherPlayer = Cast<AABCharacterPlayer>(PlayerController->GetPawn()); if (OtherPlayer) { OtherPlayer->ClientRPCPlayAnimation(this); } } } } } LastAttackStartTime은 서버의 변수이고 그렇기 때문에 여러 클라이언트가 동시에 공격을 한다면 LastAttackStartTime이 덮어 씌워질 수 있다고 생각하는데 그렇게 되면 검증하는 부분에서 문제가 생길 수도 있다고 생각합니다. 질문 : 여러 클라이언트가 동시에 공격 시 LastAttackStartTime이 덮어 씌워지는 것이 맞는가?
강의 잘 보고 있습니다. 하나하나 다 따라해봤는데 전 강의 까지는 문제가 없었지만 이상하게 이번강의 따라해보니 유니티와 서버의 연결은 잘된듯 한데 유저가 2명 이상이면 Disconnect를 호출하더군요 이유를 찾아보니까 OnRecvCompleted에서 첫 if문에 있는 args.BytesTransferred 가 계속 0인데 이는 서버측이든 클라측이든 0으로 되어있었습니다. 혹시 코드가 잘못된지 확인해봐도 모르겠어서 강사님께서 올려주신 코드로 서버와 클라를 연결 시켜봐도 똑같이 BytesTransferred가 0이어서 문제가 생기는데 왜 이러는지 알 수 있을까요?? 기기에 따라 다른가요
4분 전후로... 스위치에 맥 주소 table이 있을 때,pc4가 pc1로 파일을 보낼 때 맥주소는 앞에 연결된 허브의 주소를 가지고 있는거 아닌가요??어떻게 1번인지 알고 바로 보내나요??이런 이유로, 1,2번 pc 로는 스위치가 바로 콕찝에 보낼 수 없는게 아닌가 긍금합니다.
안녕하세요. DB별 응답속도가 궁금합니다. Aurora, RDS는 밀리 초 단위 응답이 불가능하다고 알고 있는데요. 평균 응답시간이 어느 정도 될지 여쭤봅니다. 다른 것들은 아래와 같이 정리했는데, 이 2개는 찾아봐도 잘 안나오네요. DynamoDB Accelerator (DAX): 마이크로 초 ElastiCache: 1밀리초 미만 Dynamo DB: 10밀리초 미만 Aurora RDS보다 3~5배 빠름 RDS 밀리초 단위 처리 불가
안녕하세요 루키스님! 강의 잘 듣고 있습니다. 세션과 소켓의 관계에 대해 궁금한게 생겼습니다. 비유로 인해 오해가 생길까 지웠습니다. Connector를 쓰기 전 까지는 더미 클라이언트에 세션을 쓰지 않아 서버와 클라이언트가 서버에서 발급한 세션을 통해 정보를 공유한다고 생각했습니다. 마치 실 전화기 처럼 말이죠. 클라 (소켓) ---------------세션--------------(소켓) 서버 근데, 커넥터라는 개념이 들어오고 다시 흐름을 살펴보니 서버도 서버의 세션을 사용하고, 클라도 클라의 세션을 사용하니 위의 비유와는 잘 맞지 않아 다시 생각해봤는데 이해한 바가 맞는지 봐주셨으면 합니다. 소켓 : 유심칩 세션 : 스마트폰(abstract 를 구현해서 어떻게 행동할지 정의했기 때문에 클라는 클라 전용 스마트폰, 서버는 서버 전용 스마트 폰을 가지고 있다.) 클라 (소켓 + 세션) ------------------- 서버(소켓 + 세션)
제가 이해한것이 맞는지 확인하고 싶어 질문을 남기게 되었습니다. Event는 Signal, Non-Signal 상태를 WaitForSingleObject(handle, INFINITE)를 통해 대기합니다. 여기서 INFINITE로 무한정 대기를 통해 불필요한 컨텍스트 스위치가 일어나지 않게 됩니다. 하지만 그만큼 자원(메모리? CPU? )의 손해가 일어나기에 생겨난 것이 Conditional Variable입니다. Conditional Variable cv.notify_one();를 통해 대기하고 있던 Thread를 실행합니다. Conditional Variable는 메모리에 Thread를 Wait 시키지 않고 대기 시키다가 cv.notify_one();를 통해 실행하는 것이고 Event는 Thread를 메모리에 WaitForSingleObject(handle, INFINITE)를 통해 대기시켰다가 SetEvent(handle);를 통해 실행시킨 점이 차이라고 이해하면 될지 여쭙고 싶습니다.
안녕하세요 지난 강의 '패킷직렬화 #1' 부터 현재강의에서 buffsOffset을 사용하는데 이 변수가 존재해야 하는 이유를 모르겠습니다. sizeof(PKT_S_TEST)를 이용하면 되는게 아닌지 자꾸 의문이 들어서요. sizeof(PKT_S_TEST)를 이용해서는 안되는 경우가 있어서 buffsOffset을 사용하는 걸까요?