Different game speed

Working on runner. Gameplay is similar to Geometry Dash.
Character stands in place and just jumping.

I’m testing game on two devices: lg optimus 2x and googel nexus 5.
Main problem is that game is about 30% slower on better device - google nexus 5.

Moving platform script:

public class MoveRoadBlock : MonoBehaviour {

	void Start () {

		transform.gameObject.name = transform.gameObject.name.Replace("(Clone)", "");

	}

	void FixedUpdate () {

		transform.Translate(-0.09f, 0f, 0f * Time.fixedDeltaTime);

	}

}

Jumping script:

public class Jump : MonoBehaviour {

	float speed = 300.0f;

	float jumpSpeed = 44.65f;

	float gravity = 50.0f;

	bool grounded;

	float param = 1.976f;

	int frameRate = 40;

bool jump;

	public void Start () {

		Time.captureFramerate = frameRate;

		Screen.sleepTimeout = SleepTimeout.NeverSleep;

		rigidbody.constraints = RigidbodyConstraints.FreezePositionX;

		rigidbody.constraints = RigidbodyConstraints.FreezePositionZ;

		rigidbody.freezeRotation = true;

		grounded = false;

		jump = false;

	}

void OnCollisionStay() {

		grounded = true;

	}

	void OnTriggerStay(Collider other) {

		if (other.tag == "NoJump")

			grounded = false;

	}

	public void FixedUpdate () {

		Vector3 dir = Vector3.zero;

		foreach (Touch touch in Input.touches)

 {

        	if (touch.phase == TouchPhase.Began) {

				Debug.LogWarning("touch_began");

				jump = true;

			}

			if (touch.phase == TouchPhase.Ended) {

				jump = false;

			}

		}

		if (jump) {

			if (grounded) {

					dir.y = jumpSpeed;

					grounded = false;

			}

		}

		dir.y -= gravity * Time.fixedDeltaTime;

		dir *= Time.fixedDeltaTime * param;

		rigidbody.AddForce(dir * speed);

	}

}

How to make it the same on all devices?

There is one problem here. Your code is:

transform.Translate(-0.09f, 0f, 0f * Time.fixedDeltaTime);

You are not scaling the ‘x’ movement (the only one that produces any movement) by fixedDeltaTime. At a minimum you want is:

transform.Translate(speed * Time.fixedDeltaTime, 0f, 0f);

‘speed’ will need to be around -5.5.

But I really suggest this movement code be moved into Update() instead of being in FixedUpdate().

transform.Translate(speed * Time.deltaTime, 0f, 0f);

I made some tests and it look’s like a problem is this line:

Time.captureFramerate = frameRate;

If I delete this - game speed become the same like on remote, but I have new problem - player sometimes don’t jump or jumps after removal of finger.