Hola:
Puedes hacer lo que te venga mejor, siempre que lo organices bien y en función de las ganas de trabajar que tengas.
Una solución es tenerlo todo junto, en un único proyecto con un único main(). Un parámetro al arrancar indicará al main() si debe empezar a instanciar clases del cliente o del servidor. Por ejemplo
// Para que arranque como cliente, hay que pasarle la direccion IP o nombre del servidor
java -jar MiJarTodoJunto.jar direccion_del_servidor
// si no se le pasa nada, arranca como servidor.
java -jar MiJarTodoJunto.jar
Esta solución puede ser buena si el cliente y el servidor comparten mucho código y hay poco código específico de cada uno de ellos.
Otra solución es tener dos proyectos, cada uno con su main(). Uno para el cliente y otro para el servidor. Esta solución puede ser buena si el cliente y el servidor tienen código muy distinto.
La tercera solución, posiblemente la más elegante y menos chapucera, pero que como siempre, es la que da mas trabajo, consiste en tener tres proyectos. Uno de ellos no lleva main() y sólo contiene aquellas clases que son comunes para el cliente y el servidor, sería como una librería. Los otros dos proyectos sería el cliente y el servidor, cada uno con su main() y con aquellas clases que son específicas de ellos.
Por ejemplo, puede que las clases que representen cosas del juego -personajes, tablero, etc- vayan en el primer proyecto por ser comunes tanto a cliente como servidor. La interface de usuario iría sólo en el cliente. Un algoritmo para que el ordenador piense o controle el juego iría sólo en el servidor.
Esta solución es la mejor puesto que evita repetir código de las clases comunes -tanto en cliente como servidor- y luego sólo distribuyes a los clientes o al servidor exactamente lo que necesitan, sin tener que cargar con nada más.
Se bueno.