Worldbuilder: A basic multiplayer world.

Developed by: Gavin Baker*
CPE 471
Winter 2015

Project Overview

The final project I developed for CPE 471 was a simple multiplayer world where users could move around and interact with other players. The original idea was a world that would allow multiple people to construct a world together by placing blocks. These blocks would be built both vertically and horizontally to create interesting structures in a similiar method to minecraft. This inital idea would require a tcp message server to keep track of the player's state as well as the state of the world. The progress I made toward this goal for my final project involved completion of the Server/Client tcp communication framework and creating the heirarchical models of the in-game characters. These characters held a state consisting of their global coordinates, yaw (angle of direction they are facing) and the angle of all rotating body parts. This state was updated to the server about 60 times a second and would then be combined with all the user states into a list that would represent the state of the game. This state would then be propagated to all clients every 30ms which synchronizes all the clients so players have the same movement from every player's perspective. While the world state was not implemented fully, the message passing framework is setup such that the world's state could be passed successfully once it was implemented. The player states are fully functional and additional animations could be added with simple modifications to the stored state of players.

Graphical Features

-Mouse Control of camera pitch and yaw (linked to x,z direction in-game character faced)
-14 part Heiarchical "Superhero" Model
-loading multiple obj files for a single heirarchical model -Player Animation: wave(3 rotations per arm), walking (1 rotation per leg), spinning of person (1 rotation based off mouse control)
-3rd person camera
-Phong shading of character model

General Features

-Multiple Players: TCP client and server
-Full screen gameplay
-Invisible mouse
-smooth player world movements

Keyboard Controls

W = Move Forward
S = Move Backward
A = Strafe left (disabled for demo)
D = Strafe right (disabled for demo)
Z = Toggle shading model and ground color (phong = red; gouraud = grey) X = Wave at friends!
Mouse = pitch/yaw of person/camera
Esc = exit all clients

Instructions for Running Gavin Baker's CPE 471 Final Project Demo

1) Download the executable

2) Open a terminal

3) Enter the command: "cd Download"

4) Enter the command: "./Worldbuilder username hostname 5555"

5) Enjoy the game!

Full Compilation Instruction

1) Download full code
2) Extract the folder to "/destination_folder/"
3) Open a terminal connection
4) Navigate to server folder => Enter Command: "cd /destination_folder/Worldbuilder/serv/"
5) Compile the server => Enter Command: "make"
6) Start the server => Enter Command: "./server 5555"
7) Open a second terminal connection
8) Navigate to the app directory => Enter Command: "cd /destination_folder/Worldbuilder/"
9) Create a makefile => Enter Command: "cmake ./"
10) Compile the Worldbuilder app => Enter Command: "make"
11) Start the client => Enter command: "./Worldbuilder username server_ip_address 5555"
12) Enjoy the game! *Press Esc key to exit

Gameplay Image: "Two players, one waving"

*Some code borrowed with permission from Zoe Wood (from labs)