유니티에서'니아·오토매틱 기어'를 만드는 의체 시스템의 기능

13121 단어 NCMBmBaasUnity

'NieR:Automata'재밌어요.


PS4/Steam에서 호평 발매 중인'니얄 오토매틱'은 흥미롭다.독특한 세계관과 케론미, 게임 시스템과 게임 세계의 경계선의 애매함, 그리고 9S 소스귀여움.
이 게임에 등장하는 온라인 시스템이 특징이 있기 때문에 유니티의 자체 제작 게임을 사용해도 같은 일을 할 수 없다고 생각해 하게 됐다.

특징적인'의체 시스템'


닐 오토매틱스는 온라인 기능으로'의체 시스템'이 있다.
http://dengekionline.com/elem/000/001/471/1471850/
게임 중 주인공의 2B가 죽으면 그 시신은'의체'로 지도에 남는다.
재도전할 때 그 의체를 회수하는 일은 잃어버린 조항을 다시 얻을 수 있지만, 지도의 다른 유저의 의체도 분산되어 있다.온라인 시스템에서 다른 유저가 사망한 위치가 동시에 표시됩니다.
다른 유저의 의체를 조사하면'의체 보고서'로 그 사람이 남긴 정보를 열람할 수 있다.
그리고 그 유저를 동료로 데려갈 수 있어요.(파트너가 되지 않아도 아이템을 회수할 수 있습니다)
다른 유저와 쉽게 연결되는 특징이 있는 온라인 시스템이라고 할 수 있다.

Unity로 비슷한 시스템을 자체 제작했습니다.


작년 여름(2016년 8월)에 나는 이런 시위 게임을 했다.
신작 완성#동게부-Ichijo(@Takaaki Ichijo)pic.twitter.com/fElkRylpY7
2016년 8월 12일.


비디오:
슬라이드: https://www.youtube.com/watch?v=VeVGiGeSvLY
  • 굽어보기 액션 게임
  • 유저는 검사
  • 적에게 공격을 받으면 무덤을 짓는다
  • 묘지에 정보와 마법 효과 남기기
  • 무덤은 인터넷에서 다른 유저에게 공유
  • 다른 유저의 묘지를 보고 소식을 읽으면 마법 효과
  • 획득
    ...대체로 다르냐!
    그래서 이번 퍼레이드의 실시를 토대로 약간의'니스'의식의 물건을 만들어 보려고 한다.
    서버 측면 설치는 위 프레젠테이션과 마찬가지로 가상 클라우드 모바일 백엔드(이하 NCMB)를 사용합니다.

    네프 클라우드 모바일 백은 무엇입니까?


    'Neft Crowd mobile backend'(이하 NCMB)는 mBaaS라는 앱 개발 서비스다.
    이번에 자세한 설명은 생략했지만 유닛을 포함한 앱 개발에서는
  • 서버에 데이터 저장
  • 서버에서 데이터 읽기
  • 이런 기능들은 죽을 때까지 간단하게 실현할 수 있는 서비스다.게임 응용(전면)에 대한 설치 지식만 알면 온라인 시스템을 구성할 수 있다.iOS/Android/PC/Mac에서 실행되며 VR도 사용할 수 있습니다.
    문자열 등의 데이터 외에도 이미지, 사운드 등의 파일을 저장, 읽을 수 있다.

    만든 데모 게임


    먼저 원시적인 전방향 사격을 만들었다.
    파란색은 자신의 기계다.wasd나 방향키로 이동하고 마우스로 순서를 올리며 마우스를 누르면 사격할 수 있다.
    빨간 게 다가오니까 쓰러뜨려.부딪히면 즉사한다.
    https://speakerdeck.com/ncmb/unity-plus-ncmbdezuo-ru-kasutamusutezifalseonraingong-you-sisutemu
    소스 및 실행 파일:
    비디오: https://github.com/NCMBMania/NAModoki
    니스처럼 자신이 죽으면 인터넷에 그 위치를 저장해 다른 사람이 참조할 수 있도록 한다.
    '의체 시스템'은 완전히 그것과 맞기 때문에 이번 시연 게임에서'죽은 친구 회수 기능'으로 다른 유저들은 친구라고 불린다.

    초기 설정


    Unity를 시작하고 프로젝트에서 가져옵니다https://youtu.be/irc9I4GZ-cs.
    자세한 내용은 빠른 시동을 보십시오.계좌를 취득하고 API 키를 받아 지정된 게임Object를 만들어 작성하면 된다.
    NCMB SDK for Unity
    편집기에서 소스를 시도하려면 직접 API 키를 가져와 장면에 배치해야 합니다.
    이번 시연 게임은'코어 씬'에서 NCMB의 통신 관련 등 게임에 상주해온 학급을 총결산했다.
    이 장면은 전체 게임을 관리하는 각본이다.cs가 구성되었습니다.장면 Core를 연 상태에서 편집에서 재생 버튼을 누르면 제목 화면이 로드됩니다.

    이름 및 메시지 설정


    이 프레젠테이션 게임은 제목 화면에 이름을 입력합니다.비어 있는 상태는 UnKnown입니다.
    http://mb.cloud.nifty.com/doc/current/introduction/quickstart_unity.html
    그런 다음 정보를 입력합니다.'닐'과 마찬가지로 세 가지 선택식으로 정보를 조립한다.

    이름과 정보는 잠시 코어입니다.cs에 저장합니다.

    적에게 패하여 죽다



    피격 시 방금 설정한 자신의 이름과 메시지, 그리고 사망한 위치를 NCMB에 전송한다.
    코드는 다음과 같습니다.
        public void SaveFriendDataToNCMB(Vector3 position)
        {
            NCMBObject ncmbObject = new NCMBObject("FriendData");
    
            // オブジェクトに値を設定//
            ncmbObject["Name"] = PlayerName;
            ncmbObject["Message"] = Message;
            ncmbObject["Position"] = position.ToDoubleArray();
    
            // データストアへの登録//
            ncmbObject.SaveAsync();
        }
    
    
    게임 진행을 담당하는 스크립트에서 SaveFriendDataTonCMB를 호출합니다.매개 변수는 유저가 사망할 때의 좌표입니다.
    미리 저장된 PlayerName, Message와 함께 NCMB의 데이터 저장소에 저장됩니다.
    데이터 저장소에 저장할 때 NCMBObject 클래스를 만들고 값을 설정하며 Save Async로 실행합니다.
    NCMB의 관리 화면에서 저장된 데이터를 확인할 수 있습니다.

    지도에 죽은 친구를 배치하다


    그리고 저장된 데이터를 불러와서 지도에 대상으로 놓으세요.
        public void FetchFriendDataFromNCMB(UnityAction<List<FriendData>> callback)
        {
            NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject>("FriendData");
    
            query.OrderByDescending("createDate");
            query.Limit = 20;
    
            query.FindAsync((List<NCMBObject> childObjList, NCMBException error) =>
            {
                if (error != null)
                {
                    //エラー処理
                }
                else
                {
                    //成功時の処理
                    List<FriendData> friendDataList = new List<FriendData>();
    
                    foreach (NCMBObject obj in childObjList)
                    {
                        string name = (string)obj["Name"];
                        string message = (string)obj["Message"];
                        ArrayList doubleArrayPosition = (ArrayList)obj["Position"];
                        Vector3 position = doubleArrayPosition.ToVector3();
                        friendDataList.Add(new FriendData(name, message, position));
                    }
    
                    callback(friendDataList);
                }
            });
        }
    
    
    NCMB의 데이터 저장소에서 수치를 얻기 위해 조회를 만들고 있습니다.위 코드의
    query.OrderByDescending("createDate");
    
    날짜별 내림차순 정렬
    query.Limit = 20;
    
    최대 20개를 얻었다.
    통신 결과는 NCMBObject 목록으로 가져올 수 있기 때문에foreach 또는 Linq를 통해 내용을 검색할 수 있습니다.
    이번에는 반 프렌드데이터에 이름, 정보, 좌표를 모았다.
    이 처리는 시간축이 있기 때문에 호출로 다음 처리를 맡깁니다.그리고 얻은 데이터에 따라 지도상에서 게임 대상을 생성한다.

    지도상에서 이렇게 배치되어 있다.유저가 이걸 만지면...

    화면 위에 이름과 정보를 표시합니다.
    또 부활한 친구는 항공기로 플레이어에게 붙여 사격량이 배로 늘어난다.

    친구는 최대 네 명까지 데리고 갈 수 있다.
    이 밖에도 파트너로 선택할지 아이템으로 선택할지 시간적으로 사라지면 더욱 실천할 수 있다.

    요즘 이런 온라인 요소가 유행이에요.


    닐 자동 기어의 의체 시스템 외에도 이런 온라인 시스템을 가진 게임이 많다.
  • 악마혼의 환영, 혈흔
  • 《인왕》의 혈도총
  • 의 Trenger Hanging
  • 종합하면 흔적을 남기고 같은 지도의 같은 위치에서 다른 유저가 볼 수 있는 시스템이다.
    그나저나 처음 소개된 검사들의 행진도'악마의 혼'에 경의를 표했다.미안합니다.
    이런 시스템이 있으면'다 같이 노는 느낌'이 들고, 게임에 랜덤 요소가 들어가기 때문에 변화가 있어도 좋다.
    조금 있으면 핸드폰 게임에 영향을 끼칠 수도 있죠?내 생각엔
    여러분은 반드시 온라인 시스템에 가입하여 독특한 게임을 만들어 보세요.

    좋은 웹페이지 즐겨찾기