How lucaspef/pangya-mulligan works
PangYa Mulligan is a fan-maintained golf game rebuilt as a C++ client and C# server. The principal user flow is playing through the client, which connects to server-hosted login and game services; the server handles multiplayer rooms and player state. Supporting branches include course editing and caddie/model editing tools. The sampled files show room dispatch and management, but not the full login, gameplay, persistence, or client startup paths, so those links are limited to documented or directly referenced relationships.
Main entry points: Program.cs Server host · GameHandler.Room.cs Room handler · projectg PangYa client · Player.cs Player state
Components 19
Game client
- PangYa client
client/src/projectg - Item storage
client/src/projectg/itemstorage.cpp - Shot preview control
client/src/projectg/jp/trajectorypreviewcontroller.cpp - Shot preview actor
client/src/projectg
Game server
- Server host
server/src/Pangya.Server/Program.cs - Login protocol
server/src/Pangya.Protocol.JP983/Login - Game protocol
server/src/Pangya.Protocol.KR645/Game - Messenger protocol
server/src/Pangya.Protocol.KR645/Messenger - Room handler
server/src/Pangya.Protocol.KR645/Game/GameHandler.Room.cs
Game services
- Player service
server/src/Pangya.Domain/Players/PlayerService.cs - Player state
server/src/Pangya.Domain/Players/Player.cs - Room manager
server/src/Pangya.Domain/Rooms/RoomManager.cs - Room state
server/src/Pangya.Domain/Rooms/Room.cs - Guild repository
server/src/Pangya.Data/GuildRepository.cs
Other components
- Player
- Course files
- Puppet files
Connections 16
- Player → PangYa client: plays through
README.md - PangYa client → Server host: connects to
- Server host → Login protocol: starts services
server/src/Pangya.Server/Program.cs - Server host → Game protocol: starts services
server/src/Pangya.Server/Program.cs - Server host → Messenger protocol: starts services
server/src/Pangya.Server/Program.cs - Server host → Player service: configures
server/src/Pangya.Server/Program.cs - Game protocol → Room handler: dispatches to
server/src/Pangya.Protocol.KR645/Game/GameHandler.Room.cs - Room handler → Room manager: joins rooms
server/src/Pangya.Protocol.KR645/Game/GameHandler.Room.cs - Room manager → Room state: creates and updates
server/src/Pangya.Domain/Rooms/RoomManager.cs - Room handler → Player state: uses player
server/src/Pangya.Protocol.KR645/Game/GameHandler.Room.cs - Player service → Player state: loads player
- Guild repository → Player state: references guild data
- Item storage → PangYa client: serves inventory UI
client/src/projectg/itemstorage.cpp - Shot preview control → Shot preview actor: sends preview messages
client/src/projectg/jp/trajectorypreviewcontroller.cpp - FairwayED → Course files: edits and exports
tools/fairwayed/src/main.cpp - CaddieRig → Puppet files: edits puppets