Portfolio Project: Multiplayer Augmented Reality application demonstrating advanced networking, real-time synchronization, and cross-platform mobile development
A production-ready XR application enabling multiple users to collaboratively interact with AR objects in shared physical space. Built with Unity, C#, Photon Networking (PUN 2), and AR Foundation, this project showcases expertise in real-time multiplayer systems, augmented reality development, and mobile application architecture.
- Real-Time Multiplayer Networking: Implemented room-based architecture using Photon Unity Networking 2 (PUN 2) for seamless multi-user collaboration
- AR Object Synchronization: Developed synchronized object manipulation system allowing users to create, move, rotate, and scale 3D objects with real-time updates across all connected clients
- Cross-Platform AR Development: Built for Android devices using Unity's AR Foundation and ARCore
- Scalable Architecture: Designed modular C# codebase following Unity best practices for maintainability and extensibility
- State Management: Implemented custom room properties and player state synchronization using Photon's callback system
- Unity 2020.3 - Game engine and XR framework
- C# / .NET - Primary programming language for all application logic
- Photon Unity Networking 2 (PUN 2) - Real-time multiplayer networking framework
- AR Foundation / ARCore - Augmented reality platform for Android
- Mixed Reality Toolkit (MRTK) - UI/UX framework for XR applications
- Real-time networked multiplayer systems
- Client-server architecture and synchronization
- Object-oriented programming and design patterns
- Mobile AR development and optimization
- Unity scene management and lifecycle
- Network state management and custom properties
- Cross-platform mobile deployment (Android APK builds)
Originally developed as a capstone project in partnership with SphereGen (mixed reality consultancy), this application was designed to explore the intersection of augmented reality and real-time networking. The project demonstrates practical implementation of enterprise-grade multiplayer AR experiences.
- Host/Join System: Create or join multiplayer AR rooms with unique room IDs
- Real-Time Object Manipulation: Instantiate and manipulate 3D AR objects visible to all users
- Synchronized Transforms: Position, rotation, and scale updates propagated across all clients
- Player Management: Handle multiple concurrent users with proper connection/disconnection handling
- Implemented using Photon PUN 2 for reliable real-time communication
- Custom room creation system with auto-generated unique room IDs
- Master client architecture for authoritative game state
- Automatic scene synchronization across all connected clients
- Custom properties system for shared room state
- ARCore integration for Android device tracking and plane detection
- Camera-relative object spawning for intuitive AR placement
- Real-time transform synchronization using PhotonView components
- Optimized for mobile performance with efficient networking protocols
Key Components:
├── Launcher.cs → Connection management and room operations
├── RoomManager.cs → Room lifecycle and player callbacks
├── ObjectManager.cs → AR object instantiation and management
└── PlayerNameInputField → User identification and preferences
- Android device with ARCore support
- Camera permissions enabled
- Download the latest APK from Releases
- Install on ARCore-compatible Android device
- Grant camera permissions when prompted
Host Mode: Create a new multiplayer session
- Enter your name
- Tap "Host" to create a room
- Share the generated Room ID with others
Join Mode: Connect to an existing session
- Enter your name
- Input the Room ID provided by host
- Tap "Join" to connect
Once connected, tap to place and manipulate 3D objects in AR space—all changes are synchronized in real-time across all connected users.
| Technology | Purpose | Version |
|---|---|---|
| Unity | Game engine and AR platform | 2020.3.10f1 |
| Photon Unity Networking 2 (PUN 2) | Real-time multiplayer framework | Latest |
| Mixed Reality Toolkit (MRTK) | XR UI/UX components | 2.7.2 |
| AR Foundation | Cross-platform AR abstraction | 4.1.7 |
| ARCore XR Plugin | Android AR implementation | 4.1.7 |
| TextMesh Pro | Advanced text rendering | 3.0.6 |
Developers:
- Carter Clements - @JavaPhish
- Mitchell Moscovics - @mmoscovics
Mentor:
- Eric Wilson - Mixed Reality Developer at SphereGen
Partnership: This project was developed in collaboration with SphereGen, a mixed reality consultancy, who provided concept development, technical mentorship, and industry best practices guidance throughout the development cycle.
This project demonstrates proficiency in:
- ✅ C# / .NET Development - Clean, maintainable object-oriented code
- ✅ Real-Time Networking - Multiplayer synchronization and state management
- ✅ Mobile Development - Android deployment with performance optimization
- ✅ Augmented Reality - ARCore integration and spatial computing
- ✅ Unity Engine - Scene management, prefab systems, and component architecture
- ✅ Problem Solving - Handling network latency, state synchronization, and cross-platform compatibility
- ✅ Collaboration - Worked with industry mentor and partner organization
- ✅ Version Control - Git workflow and collaborative development
Current Version: v1.0 (MVP)
This MVP implementation includes:
- ✅ Functional room host/join system
- ✅ Real-time object creation and manipulation
- ✅ Multi-user synchronization
- ✅ Android deployment pipeline
Future Enhancement Opportunities:
- Persistent object anchoring (with alternative to deprecated Azure Spatial Anchors)
- Advanced gesture controls and interactions
- Voice chat integration
- iOS platform support
- Enhanced UI/UX with more MRTK components
- Performance optimizations for larger rooms
This is a portfolio project demonstrating technical capabilities in XR development and real-time networking.
Note: This project previously utilized Azure Spatial Anchors for persistent world anchoring, which has been deprecated by Microsoft. The current implementation focuses on session-based multiplayer AR without persistent anchors.
