# Changelog - Free Tennis

## New in 0.4.8

- Easier compilation: gtkglarea is not needed to compile the game anymore. If you were unable to compile because of an error "unbound value GlGtk.region_of_raw", try again. Similarly, if the precompiled executable does not run because you are missing the library "libgtkgl-2.0", try again.

  More informations: now your lablgtk2 does not need to be compiled with gtkglarea anymore. Only Debian and Ubuntu seemed to be doing that.

## New in 0.4.7

- Fixed bug: the slow-motion keys had stopped working since version 0.4.5.

## New in 0.4.6

- AI:

  Fixed major bug: when winning a passing shot, computer would believe he had won two balls, and would update his tactics accordingly. On the log run, he would wrongly prefer not to take the net.

  Fixed minor bug: when human wins with a volee and computer is close to the net, computer would wrongly believe he had lost a ball taking the net, and update tactics.

## New in 0.4.5

- fixed major bug that prevented the game to work on fast computers (player would not serve).

- AI: the computer is now more forgiving under net.

- gameplay: tuned player speeds. There was too big a difference between the speed of Mats and that of Pete.

## New in 0.4.4

- Gameplay tuning:

  players are now slower. Therefore, shots which are close to the line pay more; in addition, it is now reasonably easy to place a killing diagonal (previously it wasn't). Overall, this makes the game more realistic;

  increased the vertical sprint speed;

  decreased parabola visibility;

  tuned bounce speed on all surfaces;

  made dropshots and drop volleys easier;

- AI tuning:

  better logic in choosing between "approaching attack" and "attack with power shot";

  better logic choosing a volee: computer now plays an approaching volee when he is far from the net;

  computer now approaches the net with a slower shot, in order to have more time to reach the net;

  computer tries to get closer to the net than it did before, in order to play a stronger volee;

  computer's passing shot is not so low and precise as it was before;

  several other improvements.

- Fixed bug in AI: when your service went out, computer would believe to have won a ball by not attacking, and would update his tactic accordingly.

## New in 0.4.3

- Fixed crash. When smashing particularly close to the net, computer would sometimes be unable to find a feasible shot.

- Control gameplay: new logic to prevent dropshot from being too easy.

## New in 0.4.2

- Like 0.4.1, except that the bug is really fixed.

- AI: the computer-driven player uses more sprint to get back to center.

## New in 0.4.1

- Fixed major bug: when playing a volley with a very low impact point, or very close to the net, your initial shot would appear too long and impossible to put in. Happened especially with Ivan.

## New in 0.4

- Major gameplay: placing an unreachable dropshot is not so easy anymore. If you make your parabola hit the ground too vertically, you are likely to hit net.

- Major graphics: computer now moves towards the ball even when he knows he can't reach it, or when it is going out. This way you don't know you won the point until the very last moment. This increases realism and was a requested feature.

- Major AI: computer now sprints to get back to center when he is very decentered horizontally. This affects gameplay, because moving the computer with a short diagonal and then place a killing down-the-line is not so easy anymore.

- Fixed rare crash: do a very short dropshot (backspin) which dies close to the net, and the computer would not find a candidate impact point.

- Fixed rare crash (human player unable to create a suitable initial aim).

- You now get a visual feedback on fault (not just a sound).

- AI: the computer player would favour a volee close to the net even though he did not want to take the net at that time, and he was close to the baseline.

- AI tuning (Pete's interlocutory shot)

## New in 0.3.15

* Fixed crash (the human player was unable to find a good initial
trajectory on forwards strech shot).
* AI - Fixed bug. The computer-driven player was updating his tactics
only in those games when he was serving.
* AI: ivan, on the clay, was doing interlocutory shots that were too
short and not rewarding on that surface.

## New in 0.3.14

* major AI: computer now learns whether it is best to take the net or
to stay back. Affects gameplay.
* gameplay tuning: computer is more forgiving in passingshot; computer
covers the diagonal more when at net; decreased running speed of
mats; improved Pete's logic in choosing the shot;
* gameplay: sometimes the (linux) kernel would halt the game for a few
milliseconds (e.g. when swapping memory). Then, when the game would
resume, the ball would travel too much in a single frame, making it
impossible to reach. This is now fixed with a new algo for
calculating the amount of time passed since the last frame.
* AI: changed logic with which _human_ players choose the impact
point. High impacts are preferred. This implies your passing shots
will be faster (since your impact is higher, your shot will be more
straight and therefore more powerful).
* crash fixed: sometimes the game would crash on volee, especially
with ivan. (the reason was that the default trajectory was too
vertical).
* control logic: if you increase the shot height (right mouse button),
and the resulting shot happens to be too vertical, then the shot
length is increased as well. This makes lob more difficult and more
realistic.
* bug fixed. Sometimes the initial shot was stuck, i.e. impossible to
change.
* sound engine improved. If -nosound is given, there is no attempt to
initialize the sound system. This might (and might not) allow those
people who have trouble with the sound driver to play.
* improvement for distro packagers: you can now customize the location
of the graphics and sfx dir by editing the first two lines of
freetennis.ml
* changed default surface to cement: on the clay, newbies may find it
too difficult to place a killing shot.

## New in 0.3.7

* major bug fixed: sometimes, especially on volleys, the initial aim
would be impossible to change. This is now fixed.
* major bug fixed: in two player mode, after starting the game once,
the server would refuse to start again unless you change the port or
wait a minute.
* gameplay: tuned various attibutes (running speed of Pete, player
speed under net, bounces on the grass, computer passingShot skill,
computer sprint speed...)
* graphics: the court lines and net ribbon are drawn with a less
saturated color. More realism.
* AI: improvements in choosing the shot
* gameplay: slightly improved the mouse input logic: players who are
weak at net have more trouble managing powerful passing shots. More
realistic.
* tuned fps calculation, so that the game is now smoother at high
refresh rates.
* bug fixed: the human player was able to respond to service with a
volley.

## New in 0.3.5

* gameplay: it is now possible to finetune the camera height with the
keys I and K.
* new camera algorithm. The camera is steadier and oscillates
less. Also, the camera gets lower when you take the net. Finally,
there is a more clever logic to determine whether the player covers
the net and should therefore be transparent.
* bug fixed: in 2d mode, on the client, the player below would appear
behind the net ribbon (wrong drawing order).
* fixed minor bug in event management which caused slight delays in
the response.
* bug fixed: the extent to which you can alter the running speed
during sprint was dependent on frame rate.
* gameplay: lob is not so easy anymore.
* AI: the computer-driven player does not do smashes that are
unrealistically weak anymore.
* the string "too late" does not overlap the score anymore.

## New in 0.3

* major bug fixed: on slow computers, the game was totally unplayable
because mouse input would be ignored for aiming (though not for
moving).
* major bug fixed: in 2player mode, sometimes the game would hang or
crash at startup; the player would not start serving.
* major crash fixed when diving unnecessarily;
* major gameplay: drop volley was too easy, by just pulling the mouse
backwards. Intuitively, in real tennis, if the opponent's shot is
very powerful, it is difficult to do a drop volley. But it wasn't
difficult in Free Tennis.
This is now solved as follows: I introduced a "minimal shot power"
that depends on the speed of the opponent's shot. The power of your
volleys should not be less than this minimal power. If you try to
shorten the shot so that the power becomes less than the minimal
power, the height over the net is decreaased, and the ball is likely
to hit net.
* major gameplay: dive is now reasonably easy to execute. It does not
hit the net by default, but is like any other volley (except you
have to press D to execute it). This is now acceptable because doing
drop volley is not so easy anymore (see above).
* major gameplay: by just pulling backwards on a groundstroke, it was
too easy to turn it into a dropshot that bounces backwards, and is
therefore unreachable. This is not so easy anymore (increased the
minimum distance of the bounce from the net).
* major gameplay: tuned difficulty of passing shots and volleys;
passing was too difficult. Fine-tuned some player skills as
well. Players now have different speeds at net and back, in order to
better simulate their skills and height.
* major gameplay - camera logic: sometimes, when you were decentered
horizontally, you were unable to see the court corner and therefore
could not aim properly. This is now fixed.
* major gameplay: sprinting in the right direction is now easier: you
can slightly alter the running direction _during_ the sprint.
* bug fixed: in two player mode, the client player was unable to aim
service properly (the mouse response was flipped - left went right
and viceversa).
* crash fixed when doing dropshot that bounces backwards.
* AI: when taking the net, the computer was covering too much the
diagonal, and too little the downtheline.
* AI: on passing shot, the computer now aims close to the line even if
the skill level is low. (Passing shot makes no sense if not close to
the line.)
* AI: the computer was doing some very long shots even in low
difficulty setting.
* gameplay: in realistic mode, tuned the parabola visibility.
* AI: attackers have a better attacking logic: now they can choose
to attack with a power shot (as opposed to an approaching shot).

## New in 0.2

* compilation: made Makefile portable. If you had problems compiling
Free Tennis, please give it another try.
* gameplay: fixed bug where mouse sensitivity would depend on refresh
rate, making the player too slow or too fast at some refresh
rates. If your player was too slow or too fast, try again.
* fixed crash: the game would crash when entering tiebreak.
* score: games are now displayed on the screen (previously, only
points were).
* AI, gameplay: improved the logic to decide the shot
* AI: the computer now aims service;
* gameplay: there is a new sprint system: when you press X, the
current mouse direction is locked, and the player starts
sprinting. As long as you keep X pressed, the player keeps sprinting
in that direction, regardlessly of mouse movements. When you depress
X, sprinting ends.
* graphics: the available sprint energy is now displayed in a vertical
yellow bar.
* score: fixed bug: on 7-5, the set would not finish.
* graphics: the clay court has a better texture. the previous one was
too light.
* fixed bug in hotspot calculation. Some animation frames would have
wrong position, resulting in jerky animation.
* graphics: more player animations (the players run instead of sliding)
* renamed command line options: -p0name to -p0 and -p1name to -p1.
* fixed crash: sometimes the players attempted to hit a ball below the
ground, and the game would crash. Thanks to Tuukka Hastrup for the
report.
* gameplay: volees were unrealistically powerful
* gameplay: in realistic mode, the parabola was invisible for volleys.
* learnability: displaying a hint to press either F or G to grab the
mouse input.

## 0.1

This is the first release.