묻고 답해요
148만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
코드 관련한 몇 가지 질문입니다!
안녕하세요.서버 쪽에 HandleSkill() 함수를 보면 스킬 사용이 문제 없다면 주석에 info.PosInfo.State = EntityState.Skill 코드가 있는데요. 지금 시점에서는 사용되지 않는 코드인 것 같은데 나중에 사용될까요? 당연히 지금 로직에서는 없어도 동작에 지장이 없습니다.클라이언트의 PlayerController.cs에서 CoStartPunch() 함수를 호출할 때 쿨타임을 위해(?) CheckUpdateFlag()를 호출하는데 이게 기본적으로 이동 패킷이라서 지금 로직에서는 없어도 되는 코드로 보입니다. 강의에서 설명해주신 기능에 실제로 이 코드가 필요한 게 맞는지 궁금합니다쿨타임 관련해서 클라/서버 둘 다 처리해야 한다고 말씀하셨는데 작성된 코드를 보면 클라에서만 코루틴을 사용해서 처리하신 것 같습니다. 서버에서는 시간 관련한 로직이 없으니까요.감사합니다.
-
해결됨두고두고 써먹는 유니티 비동기 프로그래밍
강의 사운드가 너무 작습니다.
강의 감사히 잘 듣고 있습니다.다만 강의 사운드가 너무 작다 보니시스템 사운드 제차를 많이 키워서 듣고 있습니다.그러다 보니 다른 알람 같은게 오면 무척 소리가 커서 강의듣다가 깜짝깜짝 놀라게 되네요.그리고 소리 자체도 조금 울림이 있어서 이어폰으로 들으면피로감이 좀 있습니다. ㅠ_ㅠ 조금 수고스러우시겠지만 영상 편집 프로그램에서 사운드 분리 하셔서 증폭 시키고 울림이나 이런거 좀 조정해서 강의다시 업데이트 하시면 좋을거 같아서 건의 드려 봅니다.감사합니다.
-
미해결유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
안녕하세요 구글로그인 SDK 적용하고 빌드문제가있어 질문드립니다.
영상처럼구글 SDK 를 적용하고 MinimumAPI Api23targetApiLevel 34로 선택하고빌드를진행하면 이렇게 오류가뜨는데 어떻게 해결할까요..어제 부터 계속 구글링하며 찾고있는데 못찾아서.. 질문드립니다.. Starting a Gradle Daemon, 1 incompatible and 4 stopped Daemons could not be reused, use --status for details> Configure project :launcherWARNING:The option setting 'android.bundle.enableUncompressedNativeLibs=false' is deprecated.The current default is 'true'.It will be removed in version 8.0 of the Android Gradle plugin.You can add the following to your build.gradle instead:android {packagingOptions {jniLibs {useLegacyPackaging = true}}}WARNING:We recommend using a newer Android Gradle plugin to use compileSdk = 34This Android Gradle plugin (7.1.2) was tested up to compileSdk = 32This warning can be suppressed by addingandroid.suppressUnsupportedCompileSdk=34to this project's gradle.propertiesThe build will continue, but you are strongly encouraged to update your project touse a newer Android Gradle Plugin that has been tested with compileSdk = 34> Task :unityLibrary:FirebaseApp.androidlib:preBuild UP-TO-DATE> Task :unityLibrary:preBuild UP-TO-DATE> Task :unityLibrary:preReleaseBuild UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:preReleaseBuild UP-TO-DATE> Task :unityLibrary:packageReleaseRenderscript NO-SOURCE> Task :unityLibrary:FirebaseApp.androidlib:packageReleaseRenderscript NO-SOURCE> Task :unityLibrary:FirebaseApp.androidlib:compileReleaseRenderscript NO-SOURCE> Task :unityLibrary:compileReleaseRenderscript NO-SOURCE> Task :unityLibrary:generateReleaseResValues UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:generateReleaseResValues UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:generateReleaseResources UP-TO-DATE> Task :unityLibrary:generateReleaseResources UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:packageReleaseResources UP-TO-DATE> Task :unityLibrary:packageReleaseResources UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:extractDeepLinksRelease UP-TO-DATE> Task :unityLibrary:extractDeepLinksRelease UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:processReleaseManifest UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:compileReleaseLibraryResources UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:compileReleaseAidl NO-SOURCE> Task :launcher:preBuild UP-TO-DATE> Task :launcher:preReleaseBuild UP-TO-DATE> Task :launcher:compileReleaseRenderscript NO-SOURCE> Task :launcher:generateReleaseResValues UP-TO-DATE> Task :launcher:generateReleaseResources UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:generateReleaseBuildConfig UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:javaPreCompileRelease UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:writeReleaseAarMetadata UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:mergeReleaseShaders UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:compileReleaseShaders NO-SOURCE> Task :unityLibrary:FirebaseApp.androidlib:generateReleaseAssets UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:packageReleaseAssets UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:processReleaseJavaRes NO-SOURCE> Task :unityLibrary:FirebaseApp.androidlib:bundleLibResRelease NO-SOURCE> Task :unityLibrary:FirebaseApp.androidlib:mergeReleaseJniLibFolders UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:mergeReleaseNativeLibs NO-SOURCE> Task :unityLibrary:compileReleaseLibraryResources UP-TO-DATE> Task :unityLibrary:compileReleaseAidl NO-SOURCE> Task :unityLibrary:generateReleaseBuildConfig UP-TO-DATE> Task :unityLibrary:javaPreCompileRelease UP-TO-DATE> Task :unityLibrary:writeReleaseAarMetadata UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:copyReleaseJniLibsProjectOnly UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:prepareReleaseArtProfile UP-TO-DATE> Task :unityLibrary:mergeReleaseShaders UP-TO-DATE> Task :unityLibrary:compileReleaseShaders NO-SOURCE> Task :unityLibrary:generateReleaseAssets UP-TO-DATE> Task :launcher:mergeReleaseResources UP-TO-DATE> Task :launcher:createReleaseCompatibleScreenManifests UP-TO-DATE> Task :launcher:extractDeepLinksRelease UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:parseReleaseLocalResources> Task :unityLibrary:parseReleaseLocalResources> Task :unityLibrary:FirebaseApp.androidlib:generateReleaseRFile> Task :unityLibrary:processReleaseManifest> Task :launcher:checkReleaseDuplicateClasses UP-TO-DATE> Task :launcher:compileReleaseAidl NO-SOURCE> Task :launcher:generateReleaseBuildConfig UP-TO-DATE> Task :launcher:javaPreCompileRelease UP-TO-DATE> Task :launcher:checkReleaseAarMetadata UP-TO-DATE> Task :launcher:mergeReleaseShaders UP-TO-DATE> Task :launcher:compileReleaseShaders NO-SOURCE> Task :launcher:generateReleaseAssets UP-TO-DATE> Task :launcher:processReleaseJavaRes NO-SOURCE> Task :launcher:mergeReleaseJniLibFolders UP-TO-DATE> Task :launcher:collectReleaseDependencies UP-TO-DATE> Task :launcher:configureReleaseDependencies UP-TO-DATE> Task :launcher:parseReleaseIntegrityConfig UP-TO-DATE> Task :launcher:writeReleaseAppMetadata UP-TO-DATE> Task :launcher:validateSigningRelease UP-TO-DATE> Task :unityLibrary:packageReleaseAssets> Task :unityLibrary:FirebaseApp.androidlib:compileReleaseJavaWithJavac> Task :unityLibrary:FirebaseApp.androidlib:bundleLibCompileToJarRelease UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:bundleLibRuntimeToJarRelease UP-TO-DATE> Task :launcher:processReleaseMainManifest> Task :launcher:processReleaseManifest UP-TO-DATE> Task :launcher:processApplicationManifestReleaseForBundle UP-TO-DATE> Task :launcher:bundleReleaseResources UP-TO-DATE> Task :launcher:processReleaseManifestForPackage UP-TO-DATE> Task :launcher:mergeReleaseAssets> Task :unityLibrary:processReleaseJavaRes UP-TO-DATE> Task :unityLibrary:bundleLibResRelease UP-TO-DATE> Task :unityLibrary:mergeReleaseJniLibFolders UP-TO-DATE> Task :unityLibrary:mergeReleaseNativeLibs UP-TO-DATE> Task :unityLibrary:copyReleaseJniLibsProjectOnly UP-TO-DATE> Task :unityLibrary:prepareReleaseArtProfile UP-TO-DATE> Task :launcher:mergeReleaseJavaResource UP-TO-DATE> Task :launcher:mergeReleaseNativeLibs UP-TO-DATE> Task :launcher:stripReleaseDebugSymbols UP-TO-DATE> Task :launcher:mergeReleaseArtProfile UP-TO-DATE> Task :unityLibrary:generateReleaseRFile> Task :launcher:extractReleaseNativeSymbolTables UP-TO-DATE> Task :unityLibrary:compileReleaseJavaWithJavac UP-TO-DATE> Task :launcher:processReleaseResources UP-TO-DATE> Task :unityLibrary:bundleLibRuntimeToJarRelease UP-TO-DATE> Task :unityLibrary:bundleLibCompileToJarRelease UP-TO-DATE> Task :launcher:compileReleaseJavaWithJavac UP-TO-DATE> Task :launcher:dexBuilderRelease UP-TO-DATE> Task :launcher:desugarReleaseFileDependencies> Task :launcher:mergeExtDexRelease UP-TO-DATE> Task :launcher:mergeDexRelease FAILEDDeprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.See https://docs.gradle.org/7.6/userguide/command_line_interface.html#sec:command_line_warnings71 actionable tasks: 11 executed, 60 up-to-dateUnityEditor.BuildPipeline:BuildPlayer (UnityEditor.BuildPlayerOptions)BuildManager:StartAOSBuild () (at Assets/02.Scripts/Editor/BuildManager.cs:89)
-
해결됨[Unity6] 나만의 서바이벌 게임 만들기
폰트에 따라 번집니다.
안녕하세요위에는 liberationsans bold는 괜찮은데,아래 notosanskr-bold, maplestory bold 폰트를 쓰면 번집니다. 폰트에 따라 번지는 건지 궁금합니다.
-
해결됨Unity 6 Shader Graph 입문과 활용
Fresnel을 활용하면 DissolveEffect에 경계선을 만들수 있을까요
타들어서 사라지는것을 구현하려고 하는데Fresnel을 활용하면 테두리를 만들수는 있다 까지는 알겠는데 그 테두리 부분만 빛나게 하려면 어떻게 해야하나요
-
해결됨유니티 쿼터뷰2D 실시간 턴제 스타일 게임 만들기
플레이어기본공격2 노말어택문의
코드 오류없이 작성했는데, 공격버튼이 적용이 되지 않습니다.코드는 동영상이랑 몇번을 비교해서봤지만 잘못된 부분이 보이지 않기 때문에 오류없이 작성했다고 생각합니다. 버튼 이벤트 영역에 함수연결 설정도 해줬습니다. 그런데 실행을 해보면 공격버튼이 적용이 되지 않습니다.버튼을 누르면 pause에 걸린것처럼 일시정지된 상태로 진행이 안됩니다... 씬 종료버튼이나 에디터의 X 버튼을 눌러도 반응이 없고, 작업관리자에서 유니티를 종료시켜줘야 합니다.다른분의 질문중에도 비슷한 내용이 있고, 답변의 내용을 보면 전체프로젝트를 올려줄테니 코드를 비교 확인해보라고 답변을 달아주신걸 확인해서 올려놓으신 파일을 다운 받아봤는데 (파일명 kfantasy10.gz ) , 압축을 플어보면 유니티 프로젝트 형태(Assetk projectsetting, package, )로 있는게 아니라 이름모를 폴더만 수십개 있고, 그 폴더내용안에를 확인해봐도 스크립트 파일은 없고 이미지 파일밖에 없어서 코드를 비교해서 볼 수도 없습니다. .gz이 확장자는 잘 몰라서 확인해보니 7.zip이나, 리눅스에서 열수 있다고 해서 7zip도 사용해보고 git을 사용해서도 압축을 풀어봤는데 역시 동일하게 이미지파일만 있는 파일만 나옵니다. 가능하시면 전체프로젝트 파일을 zip 파일 형태로 다시 올려주셨으면 합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
재귀적 락 허용 질문있습니다.
재귀적 락 허용을 하고 WriteLock을 잡은상태에서 ReadLock을 잡을수 있으면 한 쓰레드가 WriteLock을 수정을 하고있는데 다른 쓰레드가 ReadLock을 잡아서 읽어오면 최신상태가 아닌 값을 읽어오지 않나요 ?? 만약 그렇다면 왜 그렇게 하나요 ??
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
버튼의 이름이 바뀌었을때
만약 팀원이 실수로 버튼의 이름을 바꿔버리면 Bind가 실패할텐데이런 부분은 팀원 말을 미리하는 것 밖에 가능한 해결법이 없을까요?
-
해결됨유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
LogViewer 설치 시 Warning 로그
GamePackageManager의 LogVIewer설치 시 Pt1에서 사용했던 Pub-sub Messenger와의 충돌이 생기는 것인지 경고 로그가 뜨는데 무시해도 괜찮은건지 궁금합니다."SendMessage cannot be called during Awake, CheckConsistency, or OnValidate (UICanvas: OnRectTransformDimensionsChange)" 추가로 Project Settings의 Player탭을 누를 때마다 두개의 경고 로그가 뜨는데 이것도 상관없는건가요?"Errors during XML parse:""Additionally, the fallback loader failed to parse the XML."
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
안녕하세요. SetDamage() null 오류
SetDamage부분에서 계소 null이 나는데요. 어떤 부분을 확인해야 할까요? NullReferenceException: Object reference not set to an instance of an objectHero.SetDamage () (at Assets/02.Scripts/Player/Hero.cs:170)Bullet.Update () (at Assets/02.Scripts/Player/Bullet.cs:34)
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
Render Texture 관련 문의 강의와 다르게나와요.
아무리 강의를 돌려봐도 강의영상 3:17에는 위와 같은 느낌이었는데 강의영상 4:31 영상 렌더 텍스쳐 적용 후부터 이미지가 써클의 모양이랑 크기가 달라 보이는게 이해가 안됩니다... 부모 오브젝트부터 초 단위로 끊어서 봤었는데 보여지는 써클 사이즈가 도저히 이해가 안됩니다.
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
안녕하세요 일시정지부분
Time.timeScale = 0 으로 하는건 추천하지 않다고 하셨는데..그렇다면 강사님이 작성하신 GameManager.Instance.Paused = true;LevelManager.Instance.ToggleCharacterPause();는 어떻게 작성했는지가 궁금한데 공유는 불가능한부분일까요??
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
3d 프로젝트 이동 동기화 관련
안녕하세요 루키스님.. 강의 잘 보고 있습니다.. ㅠm2 프로젝트 강의 거의 다 듣고 저만의 rpg를 만들기 위해 m2 프로젝트의 프레임워크만을 사용하고 3d isometric view로 리니지 같은 게임을 만드는 도중에 도저히 답이 안나와서 c#과 유니티로 만드는 mmorpg 강의 들을 때 만들어둔 프로젝트에 저만의 프레임워크를 수정 및 추가하는 방법으로 강의를 듣고 있습니다.현재 저의 프로젝트는 강의처럼 2d가 아닌 3d로 구성되어 있고 movepacket에 vector3 형식의 posinfo를 넘겨주고 있습니다.근데 동기화 테스트를 하면 나 자신의 캐릭터는 잘 움직이는데 반대편 클라이언트에서는 제 캐릭터가 움직이는게 보이지 않아서 디버깅만 5시간째 하고 있는데 도저히 감이 안와서 도움 요청드리려고 합니다.. 프로젝트좀 봐주시면 안될까요?서버 코드는 혹시나 싶어서 루키스님의 코드 전체를 붙여넣기 해서 다시 빌드까지 해봤지만 똑같네요.. 참고로 명령프롬프트에 c_move 좌표는 정상적으로 잘 찍힙니다.
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
인앱 결제 환불 처리
안녕하세요. 좋은 강의 감사드립니다.인앱결재같은 강의를 통해 서비스도 할 수 있겠다는 자신감을 얻었습니다.그리고 서비스 중에 발생하는 환불처리에 대한 내용도 있었으면 참 좋겠다는 생각이 들어글 남깁니다
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
카테고리의 응용에 대하여 여쭤보고싶습니다.
앞선 강의의 퀘스트 시스템을 현재강의의 identifiedObject를 합쳤고 stat, skill, effect 와 같은 윈도우에서 각각의 카테고리를 만들고 넣어준 다음에 만약 모종의 사유로 이름이 같은 카테고리가 없으면 X버튼 좌측에 추가적인 버튼을 생성시키고 그버튼을 누르면 해당 카테고리를 들어가게 개조를 가했는데 이게 괜찮을까요?내부 폴더를 대규모로 정리하다 보니까 파일의 경로가 틀어져서 Resources.Load들이 다 망가지게되어서 경로 의존성이 너무 높아져서 안정성이 낮아지는건지 여쭤보고 싶습니다.
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
패링형 스킬에 대해 여쭤보고싶습니다
롤에 피오라 W, 이터널 리턴의 니키 W의 스킬들은 각각 가드 성공의 트리거가 하드CC기, 데미지가 트리거가 되는데 이 트리거가 되는 시간을 만들기 위해서는 이펙트를 이용한 버프를 활용하기에는 InActionState에 추가적인 수정이 필요한것같아 모듈식 개발의 취지에 맞질 않다고 생각합니다.추가적인 스킬 스테이트 머신을 만들고 InGuardingState와 같은 예시로 신규 스테이트를 만든 후에 해당 스테이트에서 공격한 대상, 받은 공격의 종류, CC기의 유무를 받게하고 이를 통해서 추가적인 애니메이션과 이펙트를 발동하게 하려고 하는데 이런식의 구조가 모듈식 개발의 적합할까요?
-
해결됨유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
구매 환불 처리 과정
좋은 강의 감사드립니다.인앱같은 경우 강의내용을 통해 서비스의 자신감을 얻었습니다.하지만 서비스 중에 발생하는 환불처리에 대한 내용도 있었으면 참 좋겠다는 생각이 들어글 남깁니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
몬스터 AI관련해서 질문드립니다
안녕하세요몬스터AI를 디테일하게 제작하다 의문이 들어서 질문드립니다.다른 상용화된 3D 게임에서 보면 몬스터가 플레이어에게 접근할 때 앞에 다른 몬스터들이 있으면 그를 무시하지 않고 피해서 돌아서 가는데요 이것은 raycast를 여러방향으로 쏴서 주변 몬스터를 체크해 피해가도록 구현을 하는 걸까요? 아니면 다른 방식이 있을까요?아니면 그냥 겹쳐도 상관없이 구현하는 경우도 있다고 하는데 기획에 따라서 다르겠지만 요즘은 어떤식으로 구현할까요??
-
해결됨두고두고 써먹는 유니티 비동기 프로그래밍
Unity6에서 DoTweend 과 UniTask를 같이 사용시 나는 에러에 대한 해결 방법 입니다.
질문은 아니고 Unity6에서 DoTweend 과 UniTask를 같이 사용시'TweenerCore<float, float, FloatOptions>' does not contain a definition for 'ToUniTask' and the best extension method overload 'CancellationTokenExtensions.ToUniTask(CancellationToken)' requires a receiver of type 'CancellationToken'같은 에러 메세지를 만나게 됩니다.DOTween의 Tween 객체를 직접 await 할 수 없기 때문에 발생하는 문제라고 합니다.이 문제를 해결하기 위해서는 DOTween의 Tween을 UniTask로 변환해주는 확장 메서드를 사용해야 합니다. ToUniTask() 확장 메서드를 사용하면 된다고 합니다.예시로 다음과 같이 하면 됩니다. 우선 Edit > Project Settings 에서Scripting Define Symbols에다음과 같은 같은 문구를 추가 합니다."UNITASK_DOTWEEN_SUPPORT"테스트 해본 바로는 위에 문구 추가까지만 해도 에러는 사라지는거 같습니다. 그래도 확실히 하기 위해 아래와 같이 UniTask 안에서 트윈 호출시 알래와 같이 작성 합니다.//에러가 나는 트윈 호출 위치애서 DOTween 메서드 호출 뒤에 .ToUniTask() await image.DOColor(Color.red, 0.5f).ToUniTask();
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
파트 7 스트레스 테스트 질문 드립니다.
안녕하세요 루키스님? 토이 프로젝트 개요파트 7을 기반으로 3D 환경에서 Zone없이 위치 동기화 정도로 간단한 게임을 만들어 포트폴리오 만들려고 합니다.유니티에서 3D캡슐을 플레이어라고 하고, Move패킷에 목표 좌표 찍어서 transform.position 변경시키면서 스르륵 이동하는 방식으로 데드레커닝 비슷하게 흉내 내고 있습니다. 문제 - 스트레스 테스트얼추 위치 동기화를 마치고 스트레스 테스트를 하고 있는데, 파트4 마지막 스트레스 테스트에서 더미 500명은 거뜬했었는데, 제가 파트7 기반으로 한 프로젝트는 더미 100명부터 버벅거리더라구요. 문제 분석 - 왜 파트4는 더미 500까지 버텼는데 제거는 100명도?뭐가 다른가 곰곰히 뜯어보니, 파트4에서는 패킷 모아보내기를 통해 500명이 초당 4번, 총 2000번 정도를 처리하는 반면, (Send만 세었다고 하면)제 프로젝트는 패킷 모아보내기가 안되는지 100명이 초당 4번, 총 40000번(브로드캐스트 400 * 100명) 정도 코스트가 발생하는게 원인이라고 짐작하고 있습니다.더해서 파트7의 마지막도 패킷 Send도 찍어보니, O(N^2)인 것을 확인하여 질문 드리게 되었습니다. (플레이어 4명이 입장 시키고 한명 움직이면 초당 약 10번, 4명이니까 40번 발생하는 것을 확인). 질문 드립니다.Q1. 파트 4의 패킷 모아보내기는 더미클라이언트들이 같은 프로젝트 안의 공동 큐를 사용해 Send 됐기 때문에 가능했던 부분으로 이해되는데 맞을까요?Q2. 파트7을 기반으로 했다면 100명도 버거운게 맞을까요?Q3. Q2이 맞다면 500명의 부하를 버틸 수 있게 할 수 있는 조언 주실 수 있을까요? 더미 클라 500이 아닌, 실제 500명이 붙었을 때를 가정하고 싶습니다. 패킷을 이렇게 모아보내면 된다.. 등의 아이디어 레벨로라도 조언을 기대하고 있습니다. 물론 파트9에서 존단위 처리 등의 더 상위기법을 알려주시지만, 파트7의 범위 내에서 500명의 스트레스 테스트도 가능하게 하고 싶습니다. 나름 분석하고 질문 드리고 있는데 그냥 제가 뭐 잘못 건드려서 100명도 렉걸리는거 같아서 질문하면서 좀 민망하네요..ㅎㅎ 답변 미리 감사합니다! 회사를 골라 가는 사람으로 성장하겠습니다.