Game Development

XNA การใช้ฟังก์ชั่น Save และ Load ของ Game โดย Storage Function

สมมุติว่าถ้าหากเราอยากสร้างเกมแล้วมี การ Save และ Load เพื่อระบุว่าการเล่นเกมของเรานั้นถึงจุดไหน คล้ายๆ Check Point ของแต่ละด่าน XNA Framework นั้นมีชุดคลาสตัวนึง นั่นคือ Namespace ที่มีชื่อว่า Microsoft.Xna.Framework.Storage ใช้ในการอ่าน และ เขียนไฟล์ที่เก็บข้อมูลผู้ใช้งานผู้เล่นเกม การทำงานของ คลาสของระบบ จัดเก็บทุกสิ่งในระบบตั้งแต่ชื่อผู้เล่น, เลขเครื่อง Xbox, บันทึกไปถึง Player ของคลาสตัวละคร

สิ่งที่  Storage จะกระทำคือ

 

  • Storage Devices
  • Storage Locations

เมื่อคุณเขียนโปรแกรม Game โดย XNA Framework โดยทั่วไปเวลาคอมไพล์แล้ว ระบบจะอ่านไฟล์ จากสองที่และทำการเก้บข้อมูล สองอย่างคือ
1. เก็บชื่อของระบบที่ถูกประมวลผล ปฏิบัติการ (Operation) โดยจะเก็บรายละเอียดทั่วๆไปของ Resource ได้แก่พวก shaders, meshes, textures, และ อื่น ๆ
2. เก็บข้อมูลผู้ใช้ที่เล่นเกม

ทั้งสองที่ นี้จะถูกเก็บเข้าสู่ XNA Framework ในชั้น Layer ของ Storage Container โดยระบบ Resource ผ่าน TitleLocation ที่มีเส้นทางระบุการเข้าถึง resource
ไปยังตำแหน่งของชื่อ คลาส ชื่อ Object และ ชื่อแฟ้มข้อมูลที่ สนับสนุน เพื่อใช้ในการเรียกโหลด ในรูปแบบการกู้คืน

StorageContainer จะทำการเข้าถึงอุปกรณ์ Device และ ระบบผ่าน OpenContainer ซึ่งเป็นคำสั่งในการเข้าถึงระบบผ่าน System.IO และจะทำการคัดลอก หรือ ลบไฟล์ Save Load
ก็สามารถใช้ StorageContainer.Path ในการชี้และนำทางไปให้ถึง resource ในเวลาอันสั้น

คำสั่งเบื้องต้นในการ Save Game คือต้องสร้างไฟล์หนึ่งขึ้นมา
Creating a File เพื่อส้างไฟล์บันทึกเกม และจัดเก็บในไฟล์นี้

ทำการ Call โดยวิธี  Guide.BeginShowStorageDeviceSelector method  ทำการับ Index ของอุปกรณ์ที่เครื่องผู้ใช้
เปิด StorageContainer บนเครื่องอุปกรณ์ แล้วส่งค่าชื่อของคุณ(ผู้ใช้, ID, User ผู้ใช้)

private static void DoCreate(StorageDevice device)
{
// Open a storage container.
StorageContainer container =
device.OpenContainer("StorageDemo");

// Add the container path to our file name.
string filename = Path.Combine(container.Path, "demobinary.sav");

// Create a new file.
if (!File.Exists(filename))
{
FileStream file = File.Create(filename);
file.Close();
}
// Dispose the container, to commit the data.
container.Dispose();
}

เท่านี้ครับก็เป็นอันเสร็จในการสร้างไฟล์
ตอนต่อไปเป็นการเรียก Load ไฟล์นะครับ

Asst. Prof. Banyapon Poolsawas

อาจารย์ประจำสาขาวิชาการออกแบบเชิงโต้ตอบ และการพัฒนาเกม วิทยาลัยครีเอทีฟดีไซน์ & เอ็นเตอร์เทนเมนต์เทคโนโลยี มหาวิทยาลัยธุรกิจบัณฑิตย์ ผู้ก่อตั้ง บริษัท Daydev Co., Ltd, (เดย์เดฟ จำกัด)

Related Articles

Leave a Reply

Back to top button

Adblock Detected

เราตรวจพบว่าคุณใช้ Adblock บนบราวเซอร์ของคุณ,กรุณาปิดระบบ Adblock ก่อนเข้าอ่าน Content ของเรานะครับ, ถือว่าช่วยเหลือกัน