File Release Notes and Changelog
Release Name: 1.4.0
Notes:
Changes:
-------------------------------------------------
Version 1.4.0 (January 24, 2005)
-------------------------------------------------
This version introduces minor API changes that break existing code.
Please read all of the "API CHANGE:" change items below to bring
your ZIG v1.3.2 code up-to-date with more ease.
This version of the library requires(*) HawkNL version 1.7 beta 1 or
greater to work properly. Get the updated library sources (includes
the MSVC project files that build everything) at:
http://www.hawksoft.com/hawknl/
(*)NOTE: actually, the older HawkNL 1.68 MIGHT work just fine, but
this has not been thoroughly tested. feedback on this is welcome!
- NEW OPTIONAL DEPENDENCY REMOVAL: you can remove the dependency of
the ZIG library to the Pthreads library by uncommenting the line:
#define ZIG_NO_PTHREADS
on header file ziglib/include/zig/zigdefs.h and recompiling ZIG.
this will make ZIG use the threading support offered by
HawkNL version 1.7 beta 1, so ZIG will only depend on HawkNL and
not on Pthreads.
ADVANTAGES: you don't need Pthreads to build ZIG and you can get
rid of Pthreads altogether if building for Windows (because
HawkNL compiles to native "Windows threads" when built on Windows)
DISADVANTAGES: thread priorities on ZIG will no longer work (that
is, all of ZIG's internal threads will be assigned the default system
priority), because HawkNL's threads API (hawkthreads.h) does not
have thread priority adjustment functions.
- API CHANGE: the zigserver_c::client_connected(...) callback has now
two parameters. one is new, which is a copy of the "buffer_c &custom" client
connect data that is first passed to the zigserver_c::accept_client(...)
callback. Now you don't have to "save" that buffer in some intermediary
structure between the accept_client() and client_connected() zigserver
callbacks.
---> to bring your existing code up to date, just change your
"client_connected()" callback to take an additional " buffer_c &custom "
parameter (see zigserver.h and the sources for the "minigame" example game
in zig/minigame/gameserver.cpp)
- API CHANGE: if you use "object serialization", you MUST update
your code because the method "write" in class serializable_c:
virtual void serializable_c::write(buffer_c &out)
is changed for "const" object support:
virtual void serializable_c::write(buffer_c &out) const
and derived methods need the "const". If not, the compiler will complain,
or worse, will say nothing about it and let your code use the "default"
serialization for writing and "custom" serialization for reading,
resulting in a mess!
This change only affects code that uses the "object serialization" support
and is thus extending the class serializable_c.
---> see the "object serialization" example code that is commented out on
zig/minigame/main.ccp
This change adds const-correctness to class serializable_c. Now you can
write const objects to buffer_c, e.g.:
const Object obj(init); //"Object" derives from serializable_c
//...
buf.putObject(obj);
Patch by Milan Mimica.
- new API: zigclient_c::set_connect_timeout(int t); which lets the game
client configure the amount of time (t, in seconds) that it will keep
trying to connect to the server. previously, a default value of 4 seconds
was hard-coded into the library.
- compressed packets that are found to be bigger than the original are
discarded and the original is sent instead. Patch by Milan Mimica.
- fixed two rounding-error related bugs in the client ping estimation code.
Thanks Milan Mimica for isolating the bugs and providing a fix.
- fixed client "ping time" estimation code which was broken for the
"threaded" mode of the library ("blocking" mode). the code has also
been improved to work better in the presence of high client latency.