Similar Characters Online Game
1 month | Solo Project | Completed
A real-time multiplayer experience featuring room-based matchmaking, ranking, duel mode, and live chat. Socket-based real-time systems, player data management, multi-round scoring logic, and delivering engaging interactive gameplay.
Contact to build a similar gameProject Overview
This is the project where I designed and implemented a real-time two-player multiplayer game using socket-based communication. The system supports room creation and matchmaking, real-time chat, player authentication, ranking, and friend management, delivering a smooth and interactive gameplay experience.
The duel mode introduces multi-round logic, timed turns, score accumulation, and fairness rules (including draw requests and timeout handling). These features showcase my capability to implement structured game mechanics and ensure consistent synchronization between two opponents in real-time.
In addition, I implemented persistent storage for player information and statistics, along with instant updates for chat and ranking. This required careful handling of game state, network events, and database consistency.
By working end-to-end on this project, I gained hands-on experience in socket programming (TCP), state synchronization, and multi-threaded server logic. The focus was primarily on building reliable real-time functionality and ensuring smooth gameplay flow, which highlights my technical expertise in developing interactive systems.
Key Features
- Room System
- Realtime Duel Mode (2 players)
- Memory Challenge Gameplay
- Scoring System
- Draw Mechanics
- Player Data Storage
- Leaderboard
- Realtime Chat & Socials
- Login/Logout & Account Management
Challenges & Solutions
Challenge: Realtime sync
Synchronizing character sequences and player responses in real-time to ensure both opponents see the same sequence and results consistently over sockets.
Solution: Implemented a server-authoritative design where the server generates sequences, broadcasts them, and validates player inputs. This prevents desyncs and ensures fair scoring by processing all results centrally before sending outcomes back to clients.
Challenge: Scoring system
Designing the scoring system to handle partial matches, streak bonuses, and draw negotiations while keeping rules fair and transparent.
Solution: Built a flexible point-calculation module that checks characters sequentially, awards points by match length, tracks consecutive failures for forced draws, and integrates optional draw requests with both players’ confirmation.
Challenge: Timer management
Managing turn timers and ensuring players can’t exploit delays or timeouts during duels.
Solution: Developed a countdown timer on the server side with strict limits: 10s to memorize, 60s to respond. Late or missing responses automatically result in losses or draws, enforced by server logic to eliminate client-side cheating.
Challenge: Room system
Implementing a reliable room system to ensure correct matchmaking and isolate data flow between different player duels.
Solution: Built a socket-based lobby where players can create or join rooms. Each room is uniquely identified and maintains its own state, ensuring that only two players are paired together, with clean session management to prevent cross-room data leaks.
Challenge: UI feedback
Keeping the UI minimal yet responsive, providing instant feedback after each round without overwhelming the player.
Solution: Implemented a simple Swing-based interface with dynamic text fields and result labels. Each round’s outcome is displayed immediately, while the sequence area auto-refreshes for the next challenge.
Project Highlights
Realtime Duel Mode: Built a synchronous two-player battle system where moves, results, and timers are updated instantly using custom TCP socket communication.
Custom Room System: Implemented a socket-based lobby where players can create, join, or quickly match into rooms, forming the foundation for real-time duels.
Memory-based Scoring System: Implemented core game logic that generates sequences, validates guesses, tracks streaks, and awards points dynamically across 10 competitive rounds.
Draw Negotiation Mechanic: Designed a strategic draw system where players can request and accept ties, adding depth to gameplay and decision-making under pressure.
Persistent Player Data: Developed storage and tracking for match history, player scores, and performance stats, supporting long-term progress and fair play.
Time-Limited Round System: Added countdowns for memory and input phases, ensuring balanced pacing and real challenge in every match.
Project Info
Category: Game 2D Application
My Role: Game Developer
Duration: 1 month
Team Size: Solo Project
Technologies: Java Swing, Realtime (TCP Socket), MySql
Core Implementations: Realtime Socket Communication, Room & Matchmaking System, Memory Challenge Game Logic, Scoring & Match Flow Control, Player Data Management, Leaderboard & Ranking System, Account System, Realtime Chat & Social Features, Simple UI for Gameplay
Game Rules:
- Memory Phase: The server displays a character sequence for 10 seconds. After 5 seconds, a new sequence will be prepared for the next round.
- Input Phase: Each player has 60 seconds to enter the memorized sequence. The system checks how many characters are correct starting from the first character.
- Scoring: Points are awarded based on the number of correct characters and the difficulty (sequence length). If both players fail to guess correctly for 5 consecutive rounds, the match ends in a draw (each receives 0.5 points).
- Draw Option: A player may request a draw during a round. If the opponent agrees, the current round is skipped with no points awarded.
- Match End: Each match consists of 10 rounds. The player with the higher score wins. If tied, both players can start a new match. Completing a full 10-round match adds 1 match point to the player’s record.
Quick Stats: Dev Time: 1 month, Type: Multiplayer Memory Game, Players: 2 (Realtime Duel), Networking: Custom TCP Socket, Rounds: 10 per Match, Features: 10+ Core Systems, Built By: 100% Solo