Unity3D + MongoDB + MSSQL + SignalR และ technology อีกหลายๆตัวนำมาใช้ทำเกมส์ออนไลน์ร่วมกันได้อย่างลงตัว
1. Unity3D - ให้ความสามารถในการทำงานแบบ 2D UI ด้วยการทำจาก 3D ได้ลื่นไหล และคงความสวยงามของภาพได้ดีมากๆ
2. MongoDB - สามารถช่วยในการเก็บข้อมูลเป็นแสนๆ records และ query กลับออกมาได้เร็วอย่างไม่มีปัญหา เมื่อนำมาใช้เก็บ logs ที่ข้อมูลไม่สำคัญแต่ปริมาณเยอะจะช่วยได้ดีมากๆ โดยเฉพาะการทำ reports ต่างๆที่ต้องการ filters จำนวนมากๆ
3. MSSQL - ยังคงใช้เป็นแหล่งเก็บข้อมูลหลักๆที่จำเป็นและช่วยให้การทำระบบด้วย .NET C# ง่ายและมีประสิทธิภาพมาก และสามารถใช้ควบคู่ไปกับ MongoDB ใช้อย่างสะดวก แต่ต้องพิจารณาไว้เก็บข้อมูลสำคัญและไม่มากไว้ใน MSSQL เท่านั้น เพื่อให้ performance ยังคงเร็วตามปกติ
4. SignalR - ยังคงเป็นตัวหลักในการส่งข้อมูลและกระจายข้อมูลแบบ Realtime ได้ดีและเร็วมากๆ เหมาะสำหรับการรอรับข้อมูลที่ต้องการความเร็วสูงและไม่หนัก server
5. Web API - ใช้ในการส่ง request ที่ง่ายและสะดวกสำหรับ client และสามารถทำการ test หรือแม้แต่ทำ automated test และ load test ได้ง่ายและสะดวกมากๆ เหมาะกับการใช้กับ SignalR เพื่อช่วยแบ่งเบาภาระและทำงานคนละหน้าที่กัน
6. Automated Test - ยังไม่มี tool ที่สามารถ test ตัว mobile app ได้ดีหรือโดยตรง ทำให้ยังต้องทำการ test ทางอื่นไปก่อน ด้วยการยิงไป test ที่ API ทุกตัวแทน แต่ก็ถือว่ายังพอจะรู้ได้ว่าส่วนไหนของ mobile app จะพังบ้างจาก API ที่ไม่ผ่าน Automated Test
7. Load Test - มี tool ดีๆอยู่หลายตัวให้นำมาใช้ทดสอบ performance และ concurrent ยิ่งสามารถทดสอบได้หนักเท่าไหร่ก็จะรู้ได้ทันทีว่าสเปคของ server ที่ใช้อยู่ไหวรึป่าว และรองรับ users ได้แค่ไหน และ database ช้าลงไปมากแค่ไหนเมื่อมีข้อมูลมากๆ
8. Token - ยังจำเป็นต้องใช้และต้องมี และต้องจำกัดระยะเวลาให้สั้น และควรจะให้ใช้ได้แค่ทีละ 1 token ต่อ user เท่านั้น จากนั้นจำเป็นต้องตัด session เก่าทิ้งให้หมด เพื่อความปลอดภัยของระบบและของ users เอง ทุกครั้งที่ API ได้รับ request จะต้องเช็ค token และ expire ก่อนเสมอ ห้ามทำ action ต่างๆก่อนเช็คโดยเด็ดขาด
แชร์ประสบการณ์ให้เพื่อนๆไอทีด้วยกันไว้อ่าน เพราะกว่าที่จะหา solution ที่เหมาะสมในการทำ mobile app ที่เป็น online game ที่ดี เร็ว และ ปลอดภัยได้ จำเป็นต้องทิ้ง solution ที่ทำมา 2 เดือนเต็มและมาเริ่มทำกันใหม่