The most interesting parts of this project were the networking and the AI. The networking was done server based where the only thing the clients did over the network was send their inputs. This allowed the server to create a game-state and send information about the game-state to all the clients. Part of the reason I went with this architecture was because of the spider AI. In order to keep the state of the AI synced across all client computers it was easiest to have the AI ran on one machine and sent to the rest. I also had done only peer-to-peer in the past and was interested in exploring this networking architecture.
The spider AI in this project was also interesting to work on. The spiders start by wandering until they either see or hear something. Once they detect a player they will chase after him. If they get within a certain range they will perform a jump attack on the player. If the player runs too far away the spider will investigate the last known position of the player and then keep wandering. The spiders detection radius is in the shape of the leaf, being longest directly in-front of the spider. This allowed for the most realistic sight detection. The spiders can also hear when the gun is fired or a glass bottle is thrown. Once they hear one of these actions they investigate the area where the sound came from. This allows players to use sounds to their advantage to avoid the spiders.