Skip to content

Latest commit

 

History

History
177 lines (131 loc) · 6.62 KB

README.md

File metadata and controls

177 lines (131 loc) · 6.62 KB
fps-microgame-urs

fps-microgame-urs



  • 이 Repository는 Unity fps-microgameEggcation-URS의 성능 비교를 위해 만들어 졌습니다.
  • 상단의 Unity 교육용 프로젝트에 Unity Render Streaming를 적용했습니다.
  • 이에 Input System이 새롭게 교체되어 하단과 같이 수동으로 프로젝트 코드를 바꾸어 주었습니다.

Migrate to new input system

Summary

  • Input.GetButtonDown Input.GetKeyDownButtonControl.wasPressedThisFrame

  • Input.GetButtonUp Input.GetKeyUpButtonControl.wasReleasedThisFrame

  • Input.GetButton Input.GetKeyButtonControl.isPressed

  • (KeyBoard)Input.GetAxisRawKeyControl.isPressed

  • (Mouse X)Input.GetAxisRawMouse.current.delta.x.ReadUnprocessedValue() / 20

  • (Mouse Y)Input.GetAxisRawMouse.current.delta.y.ReadUnprocessedValue() / -20

가이드에 맞춰 변경한 경우

  • Input.GetButtonDown Input.GetKeyDown

    Input.GetButtonDown(MAPPED_KEY_STRING); // OLD
    Input.GetKeyDown(KEY_STRING); // OLD
    
    ((KeyControl)Keyboard.current[KEY_STRING]).wasPressedThisFrame; // NEW
    // KeyControl이 ButtonControl을 상속받음
    
    // other examples
    Keyboard.current.spaceKey.wasPressedThisFrame; // by Keyboard property
    Keyboard.current[Key.Space].wasPressedThisFrame; // by Key Enum
    ((KeyControl)Keyboard.current["space"]).wasPressedThisFrame; // by string
  • Input.GetButtonUP Input.GetKeyUP

    Input.GetButtonUp(MAPPED_KEY_STRING); // OLD
    Input.GetKeyUp(KEY_STRING); // OLD
    
    ((KeyControl)Keyboard.current[KEY_STRING]).wasReleasedThisFrame; // NEW
    • Key가 떼어질 때 true
  • Input.GetButton Input.GetKey

    Input.GetButton("Fire"); // OLD
    Input.GetKey(KeyCode.Mouse0); // OLD
    
    Mouse.current.leftButton.isPressed; // NEW
    • Key가 눌러진 상태면 true
    • KeyCode Enum : returns integer

가이드의 도움을 받지 못한 경우

  • Not directly applicable. You can use access any InputControl<>.ReadUnprocessedValue() to read unprocessed values from any control.

  • 위와 같은 식으로 가이드도 1대1 치환을 못하는 경우가 있었다.

  • Input.GetAxisRaw

    • Keyboard 입력의 경우

      // Case 1
      Input.GetAxisRaw("Vertical") != 0; // OLD
      
      Keyboard.current.wKey.isPressed
      	|| Keyboard.current.sKey.isPressed; // NEW
      
      // Case 2
      Input.GetAxisRaw("Horizental"); // OLD
      
      getAxisRawKeyboard("Horizental"); // NEW
      • 키보드 입력 상에서의 Input.GetAxisRaw 는 WASD 입력에 따라 1.0, 0.0, -1.0을 반환하는 단순한 동작을 한다.

      • 이에 간단한 조건절 이나, 해당 값들을 반환하는 간단한 함수(getAxisRawKeyboard )를 만들어준다.

      • getAxisRawKeyboard

        protected float getAxisRawKeyboard(string axis){
                if(axis == GameConstants.k_AxisNameHorizontal){
                    return getAxisRawHorizental();
                }
                else if(axis == GameConstants.k_AxisNameVertical){
                    return getAxisRawVertical();
                }
                else{
                    return 0.0f;
                }
            }
        protected float getAxisRawHorizental(){
            if(Keyboard.current.dKey.isPressed){
                return 1.0f;
            }
            else if(Keyboard.current.aKey.isPressed){
                return -1.0f;
            }
            else{
                return 0.0f;
            }
        }
        protected float getAxisRawVertical(){
            if(Keyboard.current.wKey.isPressed){
                return 1.0f;
            }
            else if(Keyboard.current.sKey.isPressed){
                return -1.0f;
            }
            else{
                return 0.0f;
            }
        }
    • Mouse 입력의 경우

      float i = Input.GetAxisRaw(MOUSE_AXIS); // OLD
      
      float i = 0.0f; // NEW
      if(MOUSE_AXIS == "Mouse X"){
          i = Mouse.current.delta.x.ReadUnprocessedValue() / 20;
      }
      else if(MOUSE_AXIS == "Mouse Y"){
          i = Mouse.current.delta.y.ReadUnprocessedValue() / -20;
      }
      else{
          i = 0.0f;
      }
      • MOUSE_AXIS : “Mouse X” 혹은 “Mouse Y”입니다.
      • 가이드에 언급된 ReadUnprocessedValue 값과 Input.GetAxisRaw 값이 20배 차이가 나는 것을 콘솔 출력으로 확인하여(수직방향의 경우 -20) 대체했습니다.

결과

  • 웹에서의 동작을 성공적으로 확인

성능 측정

  • Eggcation-URS와 비교한 bitrate 값 측정
  • 컴퓨터 환경: MacOS 12.5, Chrome 105.0.5195.127
  • 네트워크 환경: 외부 네트워크– 47Mbps