Pertanyaan saya adalah ini:
Bagaimana seseorang menyimpan data konteks global, yaitu. informasi data dunia, waktu dunia saat ini, dll dalam sistem komponen entitas?
Saya berpikir untuk bekerja membangun game simulasi dunia terbuka gaya Dwarf Fortress di C ++. Saya telah membangun mesin game gaya komponen entitas hanya untuk bersenang-senang, dan saya saat ini sedang mencoba mencari tahu bagaimana saya akan bekerja di semua fitur yang saya inginkan. Selain permainan standar (rendering, fisika, data komponen khusus entitas, dll), saya juga ingin memiliki beberapa data kontekstual global yang dapat diakses oleh semua sistem yang relevan (yaitu, data dunia seperti tahun apa sekarang ini. , apakah pemanasan global sedang terjadi, Segala hal yang relevan dengan simulasi dunia). Saya awalnya berpikir untuk membuat komponen "dunia", tetapi ini sepertinya tidak ada gunanya dan sulit jika banyak sistem yang berbeda membutuhkan akses ke data "global" yang logis ini.
Apakah masuk akal untuk memiliki komponen "dunia" atau haruskah saya menyimpan data ini dengan cara lain?
Saya juga berpikir untuk membuat data ini menjadi global, sehingga memberikan akses ke sistem apa pun yang ingin menggunakannya; sepertinya pelanggaran prinsip entitas-komponen pada umumnya, dan mungkin berantakan karena alasan lain, tapi saya pikir itu mungkin benar-benar berhasil.
Hal lain yang saya pikirkan adalah menanamkan data konteks dunia yang relevan secara langsung ke dalam sistem itu sendiri. Sebagai contoh, jika saya memiliki AgeSystem
"umur" semua entitas yang memiliki getsWeakerAsTimePasses
komponen atau yang lainnya, maka mungkin sistem ini dapat menyimpan data waktu yang relevan untuk dunia secara langsung sebagai data anggota yang akan digunakan untuk menghitung perjalanan waktu dan berapa banyak untuk menua dan melemahkan orang, dll. Pilihan ketiga ini adalah yang paling tidak saya sukai, tetapi sesuatu telah terjadi pada saya dalam brainstorming.
Adakah yang bisa menyarankan?