Saya telah mempelajari sedikit kode sumber DOOM. Saya akan memberitahu Anda bagaimana hal itu dilakukan di sana.
D_DoomMain berisi semua fungsi buka / simpan / muat, serta banyak hal lainnya. Seperti yang tertulis di awal file,
// DESCRIPTION:
// DOOM main program (D_DoomMain) and game loop (D_DoomLoop),
// plus functions to determine game mode (shareware, registered),
// parse command line parameters, configure game parameters (turbo),
// and call the startup functions.
Pada dasarnya, seluruh file penuh M_CheckParm
s dari awal hingga selesai. Terdiri dari apa itu D_DoomLoop. Ini satu lingkaran besar (panjang sekitar 1000-2000 baris).
Karena pertanyaan Anda adalah 'Bagaimana saya bisa menulis?' Saya hanya akan menempelkan beberapa bit kode yang merujuk ke gamesave, dari D_DoomMain:
di sini adalah pernyataan di mana barang-barang itu digunakan, pada akhir dari loop.
p = M_CheckParm ("-loadgame");
if (p && p < myargc-1)
{
if (M_CheckParm("-cdrom"))
sprintf(file, "c:\\doomdata\\"SAVEGAMENAME"%c.dsg",myargv[p+1][0]);
else
sprintf(file, SAVEGAMENAME"%c.dsg",myargv[p+1][0]);
G_LoadGame (file);
}
if ( gameaction != ga_loadgame )
{
if (autostart || netgame)
G_InitNew (startskill, startepisode, startmap);
else
D_StartTitle (); // start up intro loop
}
D_DoomLoop (); // never returns
Inilah fungsi yang mengakses string, yang Anda temukan tersebar di seluruh kode:
void M_ReadSaveStrings(void)
{
int handle;
int count;
int i;
char name[256];
for (i = 0;i < load_end;i++)
{
if (M_CheckParm("-cdrom"))
sprintf(name,"c:\\doomdata\\"SAVEGAMENAME"%d.dsg",i);
else
sprintf(name,SAVEGAMENAME"%d.dsg",i);
handle = open (name, O_RDONLY | 0, 0666);
if (handle == -1)
{
strcpy(&savegamestrings[i][0],EMPTYSTRING);
LoadMenu[i].status = 0;
continue;
}
count = read (handle, &savegamestrings[i], SAVESTRINGSIZE);
close (handle);
LoadMenu[i].status = 1;
}
}
Anda juga punya file bernama p_savegame.c dengan hal-hal yang akan menyimpan semua data terkait pengguna (senjata apa yang Anda punya, di mana Anda berada di level mana, dll).
Dan akhirnya Anda punya file yang memuat data savegame ke dalam skenario gim, bisa dibilang yang paling kompleks dari semuanya, karena itu juga memuat semua yang lain. Yang itu disebut p_setup.c, dan terletak di direktori yang sama.
Ini bekerja dengan baik bagi saya untuk cat
semua ini menjadi buffer teks dan pipe
teks ke sendmail
alamat email saya sendiri. Dengan begitu saya bisa membacanya pada saat-saat aneh pada hari itu, dan menggunakan 'temukan' ketika saya ingin mencari hal-hal seperti 'bagaimana DOOM memuat permainan'. Kode ini dikomentari dengan baik.