[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: cleanup patch / design rules
From: |
Ingo Ruhnke |
Subject: |
Re: cleanup patch / design rules |
Date: |
24 Aug 2002 20:05:41 +0200 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 |
Kenneth Gangstoe <address@hidden> writes:
> Are you running more ticks than screen refreshes? Are you running
> various things at various ticks? If the logic code ticks higher than
> screen refresh, do you interpolate gamedata in any way?
Pingus has a very simple integer based[1] game logic. The code of a
walking pingu looks something like this:
void
Pingu::update()
{
if (pixel_free(x, y))
{
x += 1;
} else {
reverse_direction()
}
}
Which means that it run both update() and screen refreshes syncron at
the same rate (refreshes every 30 milisec). However on slower
computers it might be possible to skip every second frame to reduce
the number of time consuming screen refreshes. Interpolation isn't
done and can't be easily done, due to the interger nature of the
engine (a pingu can't stand 'between' two pixels).
All this works relativly well, since Pingus is actually quite simple,
but for a game that needs a physic engine or something like that (like
Feuerkraft) you most likly want to use variable ticks. In Feuerkraft
it works like this:
void
Feuerkraft::update(float delta)
{
pos += direction * delta;
}
And I have (or want to have, havn't touched the code for a while) a
mainloop like:
while (1)
{
float total_delta = get_passed_time();
world.draw();
for (float i = total_delta; i > 0; i -= tick_rate)
world.update (tick_rate);
}
as opposed to just:
while (1)
{
float total_delta = get_passed_time();
world.draw();
world.update (total_delta);
}
Which means the game runs at a fixed tick_rate, but could run at a
variable one, the only difference is in the main-loop, not in the rest
of the game code. The advantage is that one doesn't have to care about
unnatural large delta-times, which could make the engine go wild. By
adjusting the tick_rate one could freely change the game speed if
necessary. The fixed tickrate assures also that the game always
behaves the same, on both and slow computers.
--
WWW: http://pingus.seul.org/~grumbel/
Games: http://pingus.seul.org/~grumbel/gamedesigns/
JabberID: address@hidden
ICQ: 59461927
Re: cleanup patch / design rules, David Philippi, 2002/08/25