A backend game server for the Italian card game Pinnacola, built with Elixir and Phoenix Channels. This WebSocket-based server orchestrates multiplayer gameplay for the Pinex Client, a mobile app developed in Unity and C# for iOS and Android.
- Elixir >= 1.16
- PostgreSQL
- Redis
- Bot Client: A pure Elixir bot to play against when no other players are online.
- Game Modes: Supports 1v1 and 2v2 game sessions.
- Real-Time Admin Dashboard: Cached using Redis for efficient monitoring.
- In-App Purchase Shop: Integrated with Google Play Services and Apple Game Center.
- User Authentication: Supports Google Play Services (Android) and Apple Game Center (iOS).
- Rewarded Advertisements: Monetization system for players.
- Rankings: Global and local leaderboards.
- Clone this repository.
- Ensure PostgreSQL and Redis are installed and running.
- Configure the server by updating the
config/config.exsfile with your settings, including Google Play Services and Apple Game Center credentials for user authentication. - In the
config/dev.exsandconfig/prod.exsfiles, configure the path for static assets to specify the location from which user avatars are retrieved. - Run
mix ecto.setupto initialize the PostgreSQL database and apply migrations. - Run
mix testormix coverto execute integration tests. - Start the Phoenix server with
mix phx.server.
The Pinex Server powers the Pinex Client, a cross-platform mobile app built with Unity and C# for iOS and Android. To use the client, this server must be running.
- Ensure proper configuration of Google Play Services and Apple Game Center in
config/config.exsfor authentication and in-app purchases. - The server relies on Phoenix Channels for real-time WebSocket communication with clients.