|
GENERAL
project description
list of features
group management
group members
list of tasks
project schedule
architecture
screenshots
message board
documentation
STATUS
graphics
networking
sound
physics
input
art
terrain
game design
integration
ASTROLOGY
what is IO?
|
|

-
For
the networking module, basic client/server communication
is completed. Both client and server side module
has InitNetwork(), Send(), Receive() function. These
function will be used by the network module inside
the world manager to perform more advanced opreration
such as adding user to a game, initialize game state,
etc.
- Jeffrey 4/17
-
Client/Server
model was revised to have smart clients. Another
words, the clients will have their own representation
of the environment, and the server will have the
master environment. In this configuration, the clients
will be able to execute events on their own, and
the server will play the role of arbitrary and sanity
checker for the clients.
- Kamil 4/17
-
All
goals were met on the networking front. We started
with simple client/server example application that
incorporated a GUI front end. From this application
we generalized to create another application that
has the ability to send any datatype (ie. a user-defined
class) between the client and server. From a client
initiated action input is taken from the GUI and
sent to the server which then directs the message
to all the clients besides the original sender.
That message is then displayed to the screen of
the client. Essentially, this is a prototype for
the text messaging we intend to integrate into our
game. In the future, we intend to use this same
model to build our final NetworkManager. To do this,
we have to generalize the code some more, specifically
separate the GUI from the domain logic. Also, the
code has to be modified to conform to the agreed
upon interface.
- Tilman 4/17
-
This
week's work started with stripping the GUI codes
out of the sample client application to make the
networking module a stand-alone class. Basically,
the information needed will be passed in from a
driver class rather than accessing a GUI item. It
turned out that stripping codes is rather the easy
part. Instead, most of the time spend on making
the whole things compiled, linked and run. Most
of errors are not due to C++ syntax but rather due
to project settings. For instance, we couldn't initialize
COM at all even after all necessary files are included.
After tried so many ways to overcome it, the solution
turned out to be that we need to define the runtime
system to be NT 4 above otherwise the Visual C++
compiler ignore all references to all COM functions.
Thanks to Kamil for figuring that out. After solving
all these errors, more efforts will be spend on
handling DirectPlay messages. We will test the client
class with the existing simple server program. Once
the client side is done, we will move on to the
server side.
- Jeffrey 4/25
-
Networking
did not live up to the schedule this week. We did
not manage to extract the relevant portions of the
SimpleClientServer example as we had planned. The
code was tightly integrated into the GUI and was
coded specifically for the example application and
not with modularity in mind. Hence, our attempts
to derive an independent network manager were thwarted
by global variables, specific user-defined types
and GUI routines. Our efforts yielded a NetworkClient,
separate from the GUI, however not yet fully functional.
The slow pace of progress was not only due to the
unexpected complexity of the problem but also to
poor management and planning. We waited too long
and had too little manpower dedicated to this all-important
aspect of IO. In response to this a quick search
on the net yielded a set of networking classes that
might prove useful for our purposes. While having
more limited functionality (the code is based directly
on sockets, not DirectPlay) it is significantly
more simple, understandable and already implemented
as a module. We are currently assessing the cost/benefit
trade-off if we were to adopt the new code and cease
development of the old code.
- Tilman,Kamil 4/25
-
Networking is moving nicely this week. Both the
server and client is done and the client is being
intergrated with the event manager. We also fix some
memory leak problem. The task remains is to pass
event over the network. There is a function call
sendMessage(Event e) to send events. Since sending
over entire class is very inefficient use of
bandwidth. We need to pack the essential information
into strings and unpack them when they are received.
Therefore, we need to add pack and unpack functions to
Object, Event and all subclasses. We also modified
our network model slightly. The server now serve as a
broadcasting station and user management tool. And,
it will start up a client app as the master client app
and use this master client as the blue-print to sync
other client apps, as opposed to having having a
client app as a intergal part of the server app. This
reduces the complexity of the project. The entire
networking module should be completed with the next
few days.
- Jeffrey 5/1
-
This
week my goal was to get Networking up.
We switched from using DirectX to using a socket-based
package called NDK. This code base proved to be
much easier to understand and hence we were able
to get a simple server and client running in a few
days. We added the ability for clients to connect/
disconnect from the server and for the server to
keep track of its connected clients. On unexpected
disconnects the server still recognizes the missing
client and frees the proper memory. We added the
ability to send text messages for chatting and enabled
the client and the server to ping each other.
We also slightly changed our client/server model.
Next week we plan to integrate Networking into our
overall world/event model.
I also worked a little bit on overall game design
coding some of the necessary utility classes.
- Tilman 5/1
-
With Craig's and Tilman's help, we got the networking module working and
just in time!!!
Now, Synchronization, Content and Game Dynamics are one my mind! :)
- Tilman/Kamil 5/23
|
|