API Serveur¶
Classes principales du serveur R-Type.
Architecture¶
classDiagram
class Application {
-RoomManager roomManager_
-TcpServer tcpServer_
-UdpServer udpServer_
+run()
+shutdown()
}
class RoomManager {
-map~RoomId, Room~ rooms_
+createRoom(name) RoomId
+joinRoom(roomId, client)
+leaveRoom(roomId, clientId)
+getRoom(roomId) Room*
}
class Room {
-RoomId id_
-string name_
-GameWorld world_
-vector~ClientSession*~ clients_
+tick()
+broadcast(packet)
}
class ClientSession {
-PlayerId id_
-TcpConnection tcp_
-UdpEndpoint udp_
+send(packet)
+onPacket(packet)
}
class GameWorld {
-vector~Player~ players_
-vector~Enemy~ enemies_
-vector~Missile~ missiles_
+tick()
+processInput(playerId, input)
+getSnapshot() GameSnapshot
}
Application --> RoomManager
RoomManager --> Room
Room --> ClientSession
Room --> GameWorld
Flux Principal¶
sequenceDiagram
participant Main
participant App as Application
participant RM as RoomManager
participant Room
participant GW as GameWorld
Main->>App: run()
App->>App: initServers()
loop Game Loop
App->>RM: tick()
RM->>Room: tick() (pour chaque room)
Room->>GW: tick()
GW->>GW: processInputs()
GW->>GW: updatePhysics()
GW->>GW: checkCollisions()
GW-->>Room: snapshot
Room->>Room: broadcast(snapshot)
end
Classes¶
Application
Point d'entrée serveur
RoomManager
Gestion des salons
ClientSession
Session client
GameWorld
Monde de jeu