The answer to your first question is Yes, most likely they will perform at different speeds. Your game is probably going to have times when it needs to process a bunch of information, and it might slow down. If you don't take into factor the amount of time elapsed between frames, faster CPUs and GPUs will make the game perform faster. For example, if you program a game on a CPU or GPU that struggles, and then someone else plays it on a very fast CPU and GPU, the game could be too fast (and unbeatable) for them. Also, if a really weak CPU or GPU plays you game, and only gets 20-30fps, the game will run at half speed, unless the amount of time elapsed is taken into consideration.
To answer your second question, I would multiple everything that is dependent on time by the elapsed time. (As @SteveH pointed out, you can use either gameTime.ElapsedGameTime.TotalMilliseconds
or gameTime.ElapsedGameTime.Totalseconds
, whichever fits your needs better) So:
public void Update(GameTime gameTime)
{
float elapsed = (float)gameTime.ElapsedGameTime.TotalMilliseconds;
position_ += change_position_amount_ * elapsed;
scale_ += change_scale_amount_ * elapsed;
color_ *= fade_amount_ * elapsed;
}
So in summary, you should take the elapsed time into consideration if you want a game with a consistent speed.
As a side note, gameTime.ElaspedTime.TotalMilliseconds
, usually doesn't return the exact time. If you wanted to be very exact use gameTime.ElapsedRealTime.TotalMilliseconds
(XNA 3.1 or earlier) or use a timespan or stopwatch. HTH