Wednesday 21 March 2018

Unity3d 무역 시스템


시간 및 프레임 속도 관리.
업데이트 기능을 사용하면 스크립트에서 입력 및 기타 이벤트를 정기적으로 모니터링하고 적절한 조치를 취할 수 있습니다. 예를 들어, вњњforward” 키를 누르면 문자를 이동할 수 있습니다. 이와 같이 시간 기반 액션을 처리 할 때 기억해야 할 중요한 점은 game†™의 프레임 속도가 일정하지 않고 Update 함수 호출 사이의 시간 길이도 얼마되지 않는다는 것입니다.
예를 들어 한 번에 한 프레임 씩 점진적으로 개체를 앞으로 이동시키는 작업을 생각해보십시오. 처음에는 각 프레임을 고정 된 거리만큼 움직일 수 있습니다.
그러나 프레임 시간이 일정하지 않으면 객체가 불규칙한 속도로 움직이는 것처럼 보입니다. 프레임 시간이 10 밀리 초이면 객체는 distancePerFrame만큼 1 초당 100 번 앞으로 이동합니다. 그러나 프레임 시간이 25 밀리 초 (CPU 부하로 인해) 증가하면 초당 40 번 앞으로 이동하므로 거리가 줄어 듭니다. 해결 방법은 Time. deltaTime 속성에서 읽을 수있는 프레임 시간만큼 이동 크기를 조절하는 것입니다.
이제 이동 거리는 distancePerFrame 대신 distancePerSecond로 지정됩니다. framerate가 변화 할 때, 운동 단계의 크기는 그러므로 변화하고 그래서 object†™ s 속도는 일정 할 것이다.
고정 된 시간 경과.
메인 프레임 업데이트와 달리 Unity†™의 물리 시스템은 고정 된 타임 스텝 (timestep)으로 작동하며 이는 시뮬레이션의 정확성과 일관성을 위해 중요합니다. 물리학 업데이트가 시작될 때, Unity는 마지막 물리학 업데이트가 끝난 시간에 고정 된 타임 스텝 값을 추가하여 찰리를 설정합니다. 그런 다음 물리 시스템은 경보가 울릴 때까지 계산을 수행합니다.
시간 관리자에서 고정 된 시간 단계의 크기를 변경할 수 있으며 Time. fixedDeltaTime 속성을 사용하여 스크립트에서 읽을 수 있습니다. timestep 값이 낮을수록 물리 업데이트가 더 자주 발생하고 시뮬레이션은 더 정확하지만 CPU로드가 커지는 단점이 있습니다. 당신은 아마 당신이 물리 엔진에 높은 요구를 두지 않는 한 디폴트 고정 된 타임 스텝을 바꿀 필요가 없습니다.
최대 허용 시간 범위.
고정 된 타임 스텝은 물리적 시뮬레이션을 실시간으로 정확하게 유지하지만, 게임이 물리학을 많이 사용하고 게임 플레이 프레임 속도가 낮아지는 경우 (게임의 많은 수의 개체 때문에) 문제를 일으킬 수 있습니다. 주 프레임 업데이트 처리는 정기적 인 물리 업데이트 사이에 퀴즈 된 퀴즈로 처리되어야하며 많은 처리가 필요한 경우 여러 물리 업데이트가 단일 프레임에서 발생할 수 있습니다. 프레임 시간, 객체의 위치 및 기타 속성이 프레임 시작시 고정되므로 그래픽이 더 자주 업데이트되는 물리와 동기화되지 않을 수 있습니다.
당연히 CPU 사용 가능한 전력은 너무 많지만 Unity는 프레임 처리를 따라 잡기 위해 물리 시간을 효과적으로 줄이는 옵션을 제공합니다. Time Manager의 최대 허용 시간 범위 설정은 주어진 프레임 업데이트 중에 Unity가 물리 처리 및 FixedUpdate 호출을 소비하는 데 소요되는 시간을 제한합니다. 프레임 업데이트가 처리하는 데 허용되는 최대 시간 단계보다 오래 걸리는 경우 물리 엔진이 시간 “을 중지하고 프레임 처리를 따라 잡습니다. 프레임 업데이트가 완료되면 물리가 중지 된 것처럼 시간이 경과하지 않은 것처럼 다시 시작됩니다. 이 결과로 강체는 보통 때처럼 완벽하게 움직이지 않지만 약간 느려집니다. 그러나 물리학 вЂclock†they는 마치 그들이 정상적으로 움직이는 것처럼 그들을 추적 할 것입니다. 물리 시간이 느려지는 것은 대개 눈에 띄지 않으며 게임 플레이 성능에 대한 적절한 균형입니다.
시간 척도.
뷸렛 타임 †such와 같은 특수 효과의 경우 애니메이션 시간과 스크립트 응답이 감소 된 속도로 발생하도록 게임 시간의 경과를 늦추는 것이 때때로 유용합니다. 또한 게임이 일시 중지 된 경우와 같이 게임 시간을 완전히 고정 할 수도 있습니다. Unity에는 게임 시간이 실시간과 비교하여 얼마나 빨리 진행되는지를 제어하는 ​​Time Scale 속성이 있습니다. 눈금이 1.0으로 설정되면 게임 시간이 실시간으로 일치합니다. 값이 2.0이면 게임 플레이가 절반 속도로 느려지 며 2.0의 값은 Unity에서 시간이 두 배나 빠릅니다 (즉, 액션이 빨라집니다). 0 값은 완전히 시간을 뻥튀기로 만듭니다. 시간 스케일 doesn†™ t는 실제로 느린 실행이지만 Time. deltaTime 및 Time. fixedDeltaTime을 통해 Update 및 FixedUpdate 함수에보고 된 시간 단계를 단순히 변경합니다. 업데이트 기능은 게임 시간이 느려지더라도 deltaTime 단계가 각 프레임이 단순히 줄어들 것이라고보고 할 때 평상시보다 자주 호출 될 것입니다. 다른 스크립트 기능은 시간 척도에 영향을받지 않으므로 게임이 일시 중지되면 정상적인 상호 작용으로 GUI를 표시 할 수 있습니다.
시간 관리 프로그램에는 시간 척도를 전역 적으로 설정할 수있는 속성이 있지만 일반적으로 Time. timeScale 속성을 사용하여 스크립트에서 값을 설정하는 것이 더 유용합니다.
프레임 속도 캡처.
시간 관리의 특별한 경우는 게임 플레이를 비디오로 기록하려는 경우입니다. 화면 이미지를 저장하는 작업에는 상당한 시간이 걸리기 때문에 일반적인 게임 플레이 중에이 작업을 시도하면 게임의 일반적인 프레임 속도가 크게 감소합니다. 이것은 doesn†™ t가 게임의 진실한 성과를 반영하는 영상 귀착 될 것이다.
다행스럽게도 Unity는이 문제를 해결할 수있는 Capture Framerate 속성을 제공합니다. 재산 †™ s 가치가 0 이외에 무엇이든에 놓일 때, 게임 시간은 감속되고 구조 갱신은 정확한 일정한 간격으로 발행 될 것이다. 프레임 간격은 1 / Time. captureFramerate와 같으므로 값을 5.0으로 설정하면 업데이트는 5 분의 1 초마다 발생합니다. 효과적으로 프레임 속도에 대한 요구가 줄어들면 스크린 샷을 저장하거나 다른 작업을 수행 할 시간이 업데이트 기능에 있습니다.
이 기술을 사용하여 녹화 된 비디오는 일반적으로 매우 훌륭하게 보이지만 속도가 크게 떨어지면 게임을 재생하기가 어려울 수 있습니다. 테스트 플레이어의 작업을 과도하게 복잡하게하지 않으면 서 충분한 레코딩 시간을 허용하려면 Time. captureFramerate 값을 시험해야 할 수도 있습니다.
이 페이지가 유용 했습니까? 그것에게 등급을주세요 :
이 페이지를 평가 해 주셔서 감사합니다!
여기에 설명 된 내용이 예상대로 작동하지 않습니까? 알려진 문제 일 수 있습니다. issuetracker. unity3d의 Issue Tracker를 확인하십시오.
알려 주셔서 감사합니다! 이 페이지는 귀하의 의견에 따라 검토를 위해 표시되었습니다.

아이템 데이터베이스.
나는 이름, 가격, 무게 등과 같은 모든 변수를 가지고있는 아이템 클래스 (다양한 아이템 타입을위한 자식이 거의 없다)를 가지고있다. 나의 캐릭터의 인벤토리를 위해서 나는 List & lt; Item & gt; . 숲 안의 버섯을 찾아서 집어 내면 버섯 개체가 파괴되고 새 항목이 목록에 추가됩니다.
내 질문은 - 내가 게임에있는 모든 항목에 대해 편집하기 쉬운 데이터베이스를 만드는 가장 쉬운 방법은 무엇인지, 그래서 인벤토리에 새로운 것을 추가해야 할 때마다 이름으로 호출 할 수 있습니다. 나는 한 곳에서 그것을 원한다.
이 질문은 좀 더 명확한 설명을 사용할 수 있습니다. 코드를 통해 쉽게 편집 할 수 있습니까? & quot; 이름으로 전화 걸기 & quot; 란 무엇을 의미합니까? 인벤토리처럼하고 싶다는 뜻입니까? 추가 New ( "버섯"); ?
편집하기 쉽기 때문에 이미 다른 항목을 편집 할 필요없이 다른 항목을 데이터베이스에 추가 할 수 있습니다.
inventory. AddNew ( "버섯"); 좋은 소리.
조립식 또는 프로토 타입 사전 유지.
텍스트 파일에서.
가정 된 텍스트 형식 (Presets. txt)
좋아, 독서 후 나에게 분명하다. (복제 부분을 제외하고 - 내가 왜 프리셋을 사용할 수 없습니까?). 그러나 여전히 데이터베이스를 만드는 방법을 알지 못합니다. 나는 코딩에 익숙하지 않다.
아, 인스턴스 특유의 특성이 포함되지 않은 경우 사전 설정을 사용할 수 있습니다 (읽기 전용 인 경우). 프리셋을 채우는 방법의 예를 들어 코드를 업데이트하겠습니다.
그래서 네가 개별 데이터가 없다면 (즉, 두 개의 사과가 서로 다르지 않다면) 프리셋을 새로운 인스턴스로 복제 / 복사 할 필요가 없습니다.
나는 당신이 파일에 그것을 쓰면서 포맷팅과 같은 간단한 스프레드 시트를 유지하면서이 데이터를 암호화하는 것이 가능한가 궁금하다.
배열에 각 항목 유형의 프리 패브를 드래그하고 필요한 모든 도우미 함수를 해당 클래스에 추가하십시오. 싱글 톤 패턴을 사용하여 액세스하십시오.
상당수의 사용자가있는 경우 사전을 작성해야합니다. & lt; String, Item & gt; 시작할 때.
우선 저는 C # 사람입니다. 그래서 당신이 말한 모든 것을 이해할 수는 없지만, 우리는 똑같은 것에 대해 이야기하지는 않을 것이라고 생각합니다. 나는 아직 모든 객체에 대한 프리 팹을 가지고 있지 않으며, 아이템이 내 아이템 정보를 보유하는 것을 원하지 않는다. GameObject의 이름은 inventory. AddNew (& quot; GO 's Name Here & quot;)를 호출하는 데 사용될 수 있습니다.
나는 스크립트 나 텍스트 파일을 갖고 싶다. 한 곳에서는 모든 변수 이름을 혼자서 작성할 수있다.
나는 그 문제가 무엇인지 완전히 확신하지 못한다. 당신은 이미 당신의 아이템을 담고있는 목록을 가지고있어서 당신의 데이터베이스는 IS입니다. 특정 항목을 찾으려면 List에서 MSDN 설명서를 검색하거나 이와 비슷한 작업을 수행 할 수 있습니다.
목록은 현재 장비의 문자입니다. 석궁이나 당근과 같은 목록에 추가 될 수있는 모든 항목을 보관할 수있는 라이브러리가 필요했습니다. 통계는 모두 포함되어 있습니다.
Unity Answers에 오신 것을 환영합니다.
Unity를 통해 개발에 관해 질문하고 답변하는 가장 좋은 장소.
사용자가 사이트를 탐색 할 수 있도록 사이트 탐색 가이드를 게시했습니다.
Unity Answers의 새로운 사용자 인 경우 자세한 내용은 FAQ를 확인하십시오.
자주 묻는 Unity 질문에 대해서는 Knowledge Base를 확인하십시오.
중재자 인 경우 사회자 가이드 라인 페이지를 참조하십시오.
우리는 UA를 개선하고 있습니다. 변경 사항 목록을 확인하십시오.

시장 스크립트 만들기.
플레이어가 상점에 입장하여 상점 주인에게 메시지를 보내면 플레이어가 구입할 수있는 물건 목록을 제시하도록 시장 스크립트가 필요합니다.
플레이어가 구입할 수있는 아이템은 플레이어의 레벨에 따라 다르므로 플레이어의 레벨 스크립트 상태를 검사하고, 참인 경우 부울을 사용하여 잠금을 해제합니다.
항목을 추가하거나 배열이나 목록 같은 것을 사용하여 속성에서 보도록 설정할 수있는 방법이 필요합니다. 메뉴가 표시되면 GUI Label 또는 이와 유사한 항목에서 잠기지 않은 항목이 표시됩니다.
이 작업을 수행하는 방법에 대한 제안 사항은 무엇입니까?
여기 Unityjava에서 어떻게하는지에 대한 기본 프레임이 있습니다.
var PlayerTalksToShopOwner : 부울 = 거짓; var OpenShopGUI : 부울 = 거짓; var Player : GameObject; var PlayerLevel : int = 0; var CashAmount : int = 0; var BackGroundPos : Vector2 = 새 Vector2 (10,10); var BackGroundSize : Vector2 = 새 Vector2 (10,10); var ShopContentPos : Vector2 = 새 Vector2 (10,10); var ShopContentSize : Vector2 = 새 Vector2 (10,10); var ButtonSize : Vector2 = 새 Vector2 (10,10); var Button1Pos : Vector2 = 새 Vector2 (10,10); var Button2Pos : Vector2 = 새 Vector2 (10,10); var Price1 : int = 100; var Price2 : int = 200; var Price3 : int = 300; var Price4 : int = 400;
그것은 주로 GUI 기반 스크립팅이지만 부분적으로 플레이어 스크립트를 점검하여 자신이 어떤 수준이고 돈이 있는지 확인합니다.
놀랍다. ;) 그래서 당신은 코드를 작성합니다.
예 물론 코드를 쓰지 않으면 프로그램을 전혀 할 수 없을 것입니다. 웹 페이지에서 복사하여 붙여 넣기보다는 직접 작성합니다.
나는 너 같은 프로에게 멍청한 엉덩이처럼 들릴지 모르지만, Expecting :, found ';'이라는 오류가 계속 발생했다. 이 코드 줄에서 발견되었습니다.
& lt; GUI & gt;
어떤 생각이 잘못된거야?
절단 및 붙여 넣기는 FUTURRRRRRRRE로가는 길입니다. 농담이야! CT.
플레이어가 구입할 수있는 아이템은 플레이어의 레벨에 따라 다르므로 플레이어의 레벨 스크립트 상태를 검사하고, 참인 경우 부울을 사용하여 잠금을 해제합니다.
저장소에 항목을 설명하는 클래스를 만들 수 있습니다. 각 항목은 "최소 레벨" 변하기 쉬운. 항목은 사용 중지되었을 때 및 사용하도록 설정된 경우 자체를 렌더링하는 방법을 알아야하며 플레이어가 & gt; 최소 레벨 이상이면 활성화됩니다. 플레이어 정보를 상점으로 전달할 수 있습니다. 플레이어 정보는 각 항목에 대해 플레이어 수준에서 전달됩니다. 나는 GUI 스크립트를 가지고있는 저장소와 저장소 항목 목록을 갖고 있다고 스스로 생각하고있다. 각 상점 항목에는 자체 GUI 항목을 그리는 코드가 들어 있습니다. 그런 식으로 저장소는 배열을 통과 할 때 각 항목을 그리기 만하면됩니다. 이러한 상점 항목은 가격과 같은 유용한 데이터를 가질 수도 있고, 일부 참조 된 스크립트에서 가져온 데이터를 가져올 수도 있습니다.
항목을 클릭하면 & quot;이 항목을 구입했습니다 & quot;라고 말한 플레이어에게 콜백을 보낼 수 있습니다. & quot;이 상품을 구매했지만 충분한 수준이 아니므로 & quot; & quot;이 상품을 구매했지만 출금했습니다. & quot; 함수 OnMarket (evt : MarketEvent)로 구현할 수 있습니다.
항목을 추가하거나 배열이나 목록 같은 것을 사용하여 속성에서 보도록 설정할 수있는 방법이 필요합니다.
자신 만의 에디터 스크립트를 만들고 싶다. OnInspectorGUI를 재정의하면 관리자에 대한 사용자 지정 GUI를 만들고 완전히 제어 할 수 있으므로 훨씬 더 부유 한 의미로 각 항목을 처리 할 수 ​​있습니다. & quot; 상점 항목 세트 & quot;를 설명하는 새 ScriptableObject를 정의 할 수도 있습니다. 상점에서 사용할 수 있습니다. 그렇게하면 상점 키퍼의 항목 세트를 다른 항목 세트로 쉽게 교환 할 수 있습니다. 예를 들어, 보석상은 칼과 축을 팔고 싶지 않거나 다른 지역에서 전력 수준의 무기를 판매 할 수도 있습니다. 스크립팅 가능한 유형의 관리자도 만들 수 있습니다.
어쩌면 플레이어가 어떤 수준인지 확인할 수 있습니다. IF 문을 사용하면 어쩌면 플레이어가 어떤 수준인지 밝혀지면 그 수준에 맞는 특정 GUI를 표시하도록 선택할 수 있습니다. 플레이어의 레벨.
나는 당신이 업데이트 기능 안에서 GUI 기능을 할 수 없기 때문에 작동하는지 여부는 모르겠지만, 당신이 그 일을 할 것이라고 확신합니다!
플레이어가 구입 한 객체의 잠금을 해제하려면 IF 문을 사용하여 구매 한 경우 var를 1로, 그렇지 않은 경우 0으로 var를 설정하고 var가 가진 값을 확인하고 플레이어가 구입 한 gameObject를 활성화 할 수 있습니다 var가 1 인 경우
이 질문에 대한 쉬운 대답은 없습니다. 환경이 어떻게 생겼는지에 대해 분명하지 않기 때문입니다. 이미 항목을 저장했거나 플레이어 또는 상점 키퍼 용 스크립트가 이미 있으며 GUI 시스템을 전혀 수정하지 않았습니까? 당신은 데이터베이스를 사용하고 있습니다. 이 질문에 대한 매우 구체적인 답변을 원한다면 우리가 작업하는 것에 대한 자세한 정보를 제공해야합니다. 당신이 일반적인 방식으로 질문을했기 때문에 나는 일반적인 방식으로 대답 할 것입니다.
먼저 & quot; 항목을 추가하고 관리자에서 볼 수 있도록 설정하는 방법이 필요합니다 & quot;
당신이 언급 한 것처럼이 부분을 달성하는 가장 좋은 방법은 공개 목록입니다. 이 목록을 상점 관리자 스크립트에 넣을 수 있습니다.
개별 아이템을 다루는 가장 좋은 방법은 값, 레벨 및 기타 고유 한 속성과 함께 데이터베이스에 저장하는 것입니다. 이 데이터베이스를 설정하는 것은 다른 시간대의 주제이지만이 토론을 위해 이미 항목과 해당 레벨을 저장하는 방법이 있다고 가정 할 수 있습니다.
다음 부분은 메뉴에 대한 목록을 작성하는 것입니다. 상점 키퍼를 클릭하면 플레이어에게 자신의 레벨에 맞는 기본 세트가 있다고 가정 할 수 있습니다.
이제 우리는 플레이어 레벨을 가지고 목록을 만들 수 있습니다. 공용 목록 listItems에 항목의 이름을 추가합니다 (관리자가 메뉴 항목을 볼 수있게 해줍니다). 마지막으로 GUI에서 목록을 작성하십시오.
Bobadebob에서 코드를 빌려와.
편집 할 수없는 코드 태그 작업을 만들 수 있지만 Bobadebob 게시 된 코드를 사용할 수 있지만 문자열 목록을 foreach 것입니다 및 데이터베이스에있는 것들과 항목을 일치시킵니다.
정말로 솔직한 / 직접적인 대답으로이 질문에 답하고 싶습니다만, 당신에게 더 자세한 정보가 필요합니다. 행운을 빕니다.
Unity Answers에 오신 것을 환영합니다.
Unity를 통해 개발에 관해 질문하고 답변하는 가장 좋은 장소.
사용자가 사이트를 탐색 할 수 있도록 사이트 탐색 가이드를 게시했습니다.
Unity Answers의 새로운 사용자 인 경우 자세한 내용은 FAQ를 확인하십시오.
자주 묻는 Unity 질문에 대해서는 Knowledge Base를 확인하십시오.
중재자 인 경우 사회자 가이드 라인 페이지를 참조하십시오.
우리는 UA를 개선하고 있습니다. 변경 사항 목록을 확인하십시오.

트레일 렌더러.
트레일 렌더러 (Trail Renderer)는 이동하는 장면에서 GameObjects 뒤의 흔적을 만드는 데 사용됩니다.
속성.
트레일 렌더러는 움직이는 GameObject 뒤에 다각형의 흔적을 렌더링합니다. 이것은 움직이는 물체에 강조된 느낌을 주거나 움직이는 물체의 경로 나 위치를 강조 표시하는 데 사용할 수 있습니다. 발사체 뒤의 흔적은 궤적에 시각적 인 명확성을 추가합니다. 비행기의 끝에서 contrails 날개는 실생활에서 일어나는 흔적 효과의 한 예입니다.
Trail Renderer는 연결된 GameObject에서 사용되는 유일한 렌더러 여야합니다. 빈 GameObject를 만들고 유일한 렌더러로 Trail Renderer를 연결하는 것이 가장 좋습니다. 그런 다음 Trail Renderer를 부모가 따라야 할 GameObject로 상위 할 수 있습니다.
트레일 렌더러 구성 요소는 Particle Shader가있는 Material을 사용해야합니다. 머티리얼에 사용되는 텍스처는 사각형 치수 여야합니다 (예 : 256x256 또는 512x512). 트레일은 배열에있는 각 머티리얼에 대해 한 번 렌더링됩니다.
최소 정점 분리.
최소 꼭지점 거리 값은 트레일이 포함 된 오브젝트가 그 트레일의 세그먼트가 고형화되기 전에 이동해야하는 거리를 결정합니다. 0.1과 같은 값이 낮 으면 흔적 세그먼트가 더 자주 생성되어 더 부드러운 산책로가 만들어집니다. 1.5와 같은 값이 높을수록 모양이 고르지 않게됩니다. 낮은 값 / 매끄러운 트레일을 사용할 때는 약간의 성능 트레이드 오프가 있으므로 가장 큰 가능한 값을 사용하여 생성하려고하는 효과를 얻으십시오. 또한 와이드 흔적은 꼭짓점이 매우 가깝고 짧은 거리에서 방향이 크게 바뀌면 시각적 인공물을 나타낼 수 있습니다.
트레일 렌더러에서 파티클 머티리얼을 사용하십시오. 트레일 렌더러는 일련의 프레임에 걸쳐 레이아웃되어야합니다. 그들은 즉시 나타날 수 없습니다. 트레일 렌더러가 회전하여 다른 파티클 시스템과 마찬가지로 얼굴을 카메라 방향으로 표시합니다.
트레일 렌더러 예제 설정.
2017†"05вЂ"31 페이지는 사설 검토로 개정되었습니다.
Unity 2017.1 NewIn20171에 추가 된 속성.
이 페이지가 유용 했습니까? 그것에게 등급을주세요 :
이 페이지를 평가 해 주셔서 감사합니다!
여기에 설명 된 내용이 예상대로 작동하지 않습니까? 알려진 문제 일 수 있습니다. issuetracker. unity3d의 Issue Tracker를 확인하십시오.
알려 주셔서 감사합니다! 이 페이지는 귀하의 의견에 따라 검토를 위해 표시되었습니다.

Unity3d 무역 시스템
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
Unity - 트레이딩 카드 게임 아키텍처.
유니티 (Unity Unity)에서 TCG (트레이딩 카드 게임)를 개발하려고하는데 현재 프로젝트의 아키텍처와 특히 카드 효과에 매달려 있습니다. 웹 개발 배경에서 나오는 모든 논리 및 카드 효과는 서버에 있어야하지만 Unity에 대한 자습서를 거쳐야합니다. 로직이 클라이언트에 있어야한다고 생각하고 간단한 룸 기반 서버를 사용하여 플레이어 동작을 알립니다. 그 맞습니까?
요약하면 - 게임 논리가 있어야하는 곳 (예 : 카드 효과, 라운드 등)은 무엇입니까? 클라이언트 또는 서버에서?
사실 iOS / 드로이드를위한 주요 TCG 중 하나에서 실제로 작업했기 때문에 이것은 경험에서 나온 것입니다. 모든 게임 논리와 규칙이 서버에 있어야합니다. 클라이언트가 게임 결과 등의 진실을 밝혀 내지 못하도록하십시오. 사람들은 서버로 다시 전송 된 데이터를 조작하여 해킹 할 수 있습니다. 그들은 그렇게하기 위해 게임을 디 컴파일 할 필요가 없습니다. 단지 순 트래픽을 스니핑하여 수행 할 수 있습니다.
즉, 클라이언트와 서버 모두에서 중복 된 논리로 끝날 수 있으므로 게임 규칙을 시행하고 항상 서버에 도달하지 않고 결과를 표시 할 수 있습니다. 그러나 서버는 항상 진실의 원천이며 클라이언트는 입력 및 표시 결과를 받아들이기만하면됩니다.
일반적인 흐름은 클라이언트가 새로운 게임을 서버에 요청하는 메시지를 보내는 것입니다. 서버는 각면의 카드와 첫 번째 플레이어의 오프닝 이동으로 응답합니다. 그런 다음 클라이언트는 각 이동을 구문 분석하고 결과를 표시합니다. 카드 객체에는 DrainHealth () 및 BuffAttack ()과 같은 많은 액션에 대한 메서드가있었습니다. 이러한 메서드를 호출하면 입자 효과와 사운드 fx가 카드 스크립트에 첨부 된 것과 같은 것들을 트리거합니다.
그래, 효과가 클라이언트에 있어야한다, 나는 당신의 게임을 기반으로 맞을 것이라고 가정합니까? 그러면 광자를 살펴볼 수 있습니다.
그들은 그들의 API에 관한 좋은 자습서의 전리품을 가지고 있으며 문서화가 잘되어 있습니다 :) 희망은 당신에게 도움이됩니다, 행운을 비네.

No comments:

Post a Comment