
I've been doing some Android programming, trying to get a feel for what an Android app would look like when structured as a main screen, some set-up screens, and a main gameplay screen (which then wants to go back to the main screen). I've fought a bit with the built-in Android layout views. They seem to be missing some capabilities that would be really useful.

I recently have answered several questions about how to structure a networking library such that it can be easy to use for users of the library and/or when expanding the game you're writing. Here are some thoughts on that. (Code examples in C++)
Networking generally ends up needing to do three things:
1) Mirror state updates from one object to another.
2) Request remote services ("RPC").

Here's a general illustration of how a networked game server works. While the animation is somewhat fast, you can just fix your eyes on a particular spot and read the explanation text as it shows up.
There are parental controls in Windows Vista that can prevent a restricted account from using a computer at times you specify. However, if you let your kids have admin accounts (because they keep needing to run programs that need admin for compatibility reasons, say), then this won't work.
Also, Windows XP does not have any feature to limit use to certain times of day.

#include "etwork/etwork.h" #include "etwork/buffer.h" #include "etwork/errors.h" #include "etwork/notify.h" #include "etwork/marshal.h" #include <assert.h> #include <stdio.h> #include <string> #include <math.h> #if defined( NDEBUG ) #pragma warning( disable: 4101 ) // unreferenced local variable #endif void TestEtworkCreate() { EtworkSettings es;

A simple command-line program that exercises parts of the Etwork API and asserts if something fails. Think of it as an API acceptance test.

#if !defined( etwork_sockimpl_h ) #define etwork_sockimpl_h #include "etwork/etwork.h" #include "etwork/locker.h" #include "etwork/buffer.h" #include "etwork/timer.h" #include "etwork/errors.h" #include "etwork/notify.h" #if defined( WIN32 ) #include <windows.h> #endif #include <stdio.h> // for _snprintf #include <math.h> #include <string> #include <map>

#include "sockimpl.h" using namespace etwork; using namespace etwork::impl; SocketManager::SocketManager() { listening_ = INVALID_SOCKET; maxNumSocks_ = FD_SETSIZE; numSocks_ = 0; maxSock_ = 0; allSet_ = (fd_set *)::operator new( sizeof(fd_set) ); FD_ZERO( allSet_ ); readSet_ = (fd_set *)::operator new( sizeof(fd_set) ); FD_ZERO( readSet_ );

#include <assert.h> #include <string> #include <math.h> #include <map> #include "etwork/marshal.h" namespace marshaller { inline std::string operator+( std::string const & left, int right ) { char buf[24]; sprintf( buf, "%d", right ); return left + std::string( buf ); } inline std::string operator+( std::string const & left, size_t right ) { char buf[24];

#include "sockimpl.h" #include <stdarg.h> using namespace etwork; using namespace etwork::impl; #if !defined( NDEBUG ) bool etwork::impl::gDebugging = true; #else bool etwork::impl::gDebugging = false; #endif bool etwork::impl::wsOpen = false; Lock etwork::impl::gethostLock; //!< gethostbyname is not thread safe IErrorNotify * etwork::impl::gErrorNotify;