|
|
|
Welcome to GaNeF
GaNeF is a framework meant for gamedevelopers who want to network enable their games. It is designed to be used in a server-client topology, but can most likely be used in other setups. The framework is licensed under MPL1.1, hence you can use this framework in any project, even closed source. As long as you publish back any improvements you make to the framework. If you use this framework we would appreciate if you told us about it, so we could add a link on our "Projects using GaNeF"-page.
Have Fun,
GaNeF Crew
Changes/Improvements
- 2006.02.05: Due to a difference in Common-C++ and ptypes: ptypes client-UDP socket class ipmessage cannot handle to listen to address [*], hence it MUST send before receiving. We have changed the connection-establishment to NOT start the receiving thread untill the sender has sent the initial handshake packet.
- 2006.01.25: Changed from Common-C++ to ptypes (for threads, sockets, etc.). This was done because ptypes has a more compliant license and the semaphores and mutexes can do things like wait(millis) where you can interrupt a thread, but it can wake up by it self too. This will improve our Pending Ack List, because we don't need to wake up too early.
Wish list/TODO
- Keeping the connection alive by sending heart-beats should NOT be done by keepAlive(...), because this makes requirements to the user about how often she should call this method. It should be moved the the sending thread, hence the waiting on the queue should be timed so that if no element arrives, the sender sends a heartbeat packet instead.
- All the places we use mutexes, we should consider using rwlocks.
- All mutex-protected incrementors should maybe use pincrement for better performance, and more readable code.
- Check that reconnection works. That is, make sure we can terminate the connection to the server, and establish a new one (all states should be reverted back to just before connection is established). And make sure no thread leave mutexes and such locked.
The following projects use the GaNeF framework.
|
Copyright © Lars Langer & Emanuel Greisen |