Ramasse des Armes par Terre et Tire sur tes Copains Online
Personal projects | | Links: Try it | Source

Overview
Type : School, Group project(3)
Technology : Java, KryoNet
Project
During a Summer School project, we developed a multiplayer game reminiscent of Wolfenstein. Leveraging a foundational game engine constructed during a Java course, our team expanded upon it by integrating weaponry, textures, and multiplayer functionality.
Within the game, players engage in combat, utilizing various weapons to eliminate opponents while collecting ammunition and medipacks. Each successful takedown contributes points to the scoreboard, ultimately determining the winner based on the highest kill count at the end of the match.
The game engine was crafted from the ground up, employing basic 2D box collision for physics and utilizing raycasting for rendering— a technique reminiscent of early FPS games like Wolfenstein 3D and Doom. For in-depth insights into this method, Lode’s Computer Graphics Tutorial on raycasting offers valuable information here. However, due to the absence of hardware acceleration, rendering speed is limited and tied to the window size, as every pixel is drawn by the CPU.
To enable multiplayer functionality, we utilized the Kryonet API. This facilitated the creation of a client/server architecture employing both TCP and UDP connections, enabling serialization. Our approach follows authoritative servers and ‘dumb’ clients principles, where the client relays its position every 20 milliseconds, and the server decides the outcome of shots and hits.
Regarding map creation, we adopted a PNG parser technique. Maps are designed using standard image manipulation software, with each pixel’s color defining specific elements on the map, such as walls, ammo crates, spawn points, and textures.
The program consists of both client and server components, requiring both to be on the same local network for successful connection.