Komponent oyun mühərriki dizaynı

Oyun mühərrikinin dizaynına baxdım (xüsusilə 2d oyun mühərriklərinə yönəldilər, eyni zamanda 3D oyunlar üçün tətbiq olundu) və mən bunu necə etmək barədə bəzi məlumatlarla maraqlanıram. Bir çox mühərrik hazırda dərin obyektlərin ənənəvi hiyerarşiyasından çox komponent dizaynına keçid olduğunu eşitdim.

Bu layihələrin tez-tez həyata keçirildiyi barədə məlumatlarla yaxşı əlaqələr bilirsinizmi? Sizin hiyerarşinizin təkamülünü gördüm, lakin daha ətraflı məlumatı tapa bilməmişəm (əksəriyyəti deyirlər: "Hiyerarxiyadan deyil, komponentləri istifadə edin", amma iki modeli arasında düşüncəmə keçmək üçün bir neçə səy göstərdiyini gördüm) .

Bağlantılar və ətraflı cavablar burada seçim olmasına baxmayaraq, yaxşı əlaqə və ya bu barədə məlumatlar təqdir olunacaq və hətta kitablar olacaqdır.

325
14 дек. a_m0d tərəfindən təyin 14 Dek . 2009-12-14 17:33 '09 da 17:33 'da 2009-12-14 17:33
@ 8 cavab

2013-01-07 yeniləmə . Reaktiv proqramlaşdırma üçün əla yanaşma ilə oyun mühərriki əsasında olan komponentlərin yaxşı birləşməsini görmək istəyirsinizsə, V-Play Engine-ə baxın . QTs QML əmlakının məcburi funksionallığı çox yaxşı birləşdirir.

Universitetimizin oyunlarında bəzi CBSE tədqiqatları etdik və il ərzində bəzi materiallar topladım:

Oyun ədəbiyyatında CBSE:

  • Oyun Mühərriki Memarlıq
  • Game Proqramlaşdırma Daşları 4: Managin Oyun Sistemi.
  • Gems 5 Game Proqramlaşdırma: Komponent əsaslı obyektlərin idarə edilməsi
  • Game Software Gems 5: Ümumi Komponentlər Kitabxanası
  • Oyun proqramı Daşlar 6: Sistem oyun obyektləri
  • Obyektə Yönələn Oyun İnkişafı
  • Architektur des Kerns Game-Engine e-Engine və Implementierung mit Java (Alman dili)

C # əsaslı oyun motorunun çox yaxşı və təmiz nümunəsi Elephant oyun infrastrukturudur .

Həqiqətən nə komponentləri oxunduğunu bilmək istəyirsinizsə: Komponent proqram inkişaf! Bir komponenti aşağıdakı kimi müəyyənləşdirirlər:

Bir proqram komponenti bir komponent modelinə uyğun olan və kompozisiya standartlarına uyğun şəkildə dəyişiklik edilmədən müstəqil yerləşdirilə və tərtib edilə bilən bir proqram elementidir.

Komponent modeli xüsusi qarşılıqlı və layout standartlarını müəyyənləşdirir. Komponent modelinin həyata keçirilməsi modelə uyğun komponentlərin icrasını dəstəkləmək üçün lazım olan proqram təminatı elementlərinin xüsusi dəstidir.

Proqram komponentinin infrastrukturu bu komponentlər və interfeyslərdən istifadə etmiş bir proqram sisteminin və ya alt sistemin yaxşı müəyyən edilmiş performans xüsusiyyətlərini təmin etməsini təmin etmək üçün nəzərdə tutulmuş birbaşa əlaqəli proqram komponentləri kompleksidir.

Oyunlarda CBSE ilə 2 illik təcrübə keçirdikdən sonra , mənim fikrimcə , obyektə yönələn proqramlaşdırma yalnız bir ölü son idi. Komponentlərinizin necə kiçik və daha kiçik olmasını seyr edərkən xəbərdarlıqlarımı xatırlayın və daha çox funksiyalı funksiyalara aid bir çox faydasız yüklü komponentlərə yığın. Funksiyalı reaktiv proqramlaşdırma istifadə edin. Həm də mənim yeni blog yazıma baxın (bu məni yazarkən bu məsələyə gətirib çıxardı :)) o Niyə FRP arxitekturası oyununun tərkib hissəsindən keçirdim ?

Oyunlarda CBSE:

CBSE oyunlarında veb əlaqələr (müvafiqliyi ilə sıralanır):

316
16 авг. Gerold Meisinger tərəfindən verilmiş cavab 16 Avqust. 2010-08-16 20:30 '10 saat 20:30 'da 2010-08-16 20:30' da

Görünür, bu məsələ ilə bağlı məlumat yoxdur. Mən bu yaxınlarda bu sistemi həyata keçirmişəm və həqiqətən çox yaxşı olan detalları izah edən həqiqətən yaxşı GDC Powerpoint tapdım. Bu sənəd buradadır: Oyunun obyektlərinin mimarisinin nəzəriyyəsi və təcrübəsi

border=0

Bu Powerpoint ilə yanaşı, bəzi yaxşı resurslarmüxtəlif bloglar var . PurplePwny yaxşı bir müzakirə və bəzi digər qaynaqlara aiddir. Ugly Baby Studios komponentlərin bir-biri ilə qarşılıqlı təsirini bir az müzakirə edir. Uğurlar!

9
14 дек. Cavab Noah Callaway tərəfindən verilir 14 Dekabr. 2009-12-14 23:15 '09 at 11:15 PM 2009-12-14 23:15

Oyun mühərrikinin inkişafı üçün tam bir təlimat olmasına baxmayaraq, bu səhifənin oyunlar üçün komponentin arxitekturasının istifadəsi ilə bağlı bəzi yaxşı detallar və nümunələr olduğu aşkar edilmişdir.

7
13 июля '10 в 2:56 2010-07-13 02:56 cavab a_m0d 13 iyul 'da 2:56' də verildi 2010-07-13 02:56

Bu açıq mənbə və http://codeplex.com/elephant ünvanından əldə edilə bilər

Bəziləri gpg6-kodunun bir nümunə göstərdi, onu burada tapa bilərsiniz: http://www.unseen-academy.de/componentSystem.html

və ya burada: http://www.mcshaffry.com/GameCode/thread.php?threadid=732

hesab edir

5
02 апр. Cavab RubyDeveloper verilir 02 Apr. 2010-04-02 16:25 '10 at 4:25 PM 2010-04-02 16:25

Oyunun inkişafı üçün bu son semestrimi öyrəndim və tətbiq etdim. Ümid edirik ki, bu nümunə kodu bunu necə edə biləcəyinizi doğru istiqamətdə göstərə bilər.

 class Entity { public: Entity(const unsigned int id, const std::string enttype); ~Entity(); //Component Interface const Component* GetComponent(const std::string family) const; void SetComponent(Component* newComp); void RemoveComponent(const std::string family); void ClearComponents(); //Property Interface bool HasProperty(const std::string propName) const; template<class T> T GetPropertyDataPtr(const std::string propName); template<class T> const T GetPropertyDataPtr(const std::string propName) const; //Entity Interface const unsigned int GetID() const; void Update(float dt); private: void RemoveProperty(const std::string propName); void ClearProperties(); template<class T> void AddProperty(const std::string propName); template<class T> Property<T>* GetProperty(const std::string propName); template<class T> const Property<T>* GetProperty(const std::string propName) const; unsigned int m_Id; std::map<const string, IProperty*> m_Properties; std::map<const string, Component*> m_Components; }; 

Komponentlər davranışları müəyyən edir və xüsusiyyətləri ilə işləyir. Properties bütün komponentlər arasında referansla paylanır və pulsuz yenilikləri alır. Mesajlaşma üçün heç bir yer yoxdur. Hər hansı bir sualınız varsa, ən yaxşı cavab verəcəyəm.

4
06 сент. cavab verildi Macuzza 06 sentyabr. 2010-09-06 01:59 '10 at 1:59 2010-09-06 01:59

Mən hazırda GameDev.net-də bir çox (MANY) mövzuya bu dəqiq mövzu öyrənirəm və oyun üçün inkişaf edəcəyim üçün yaxşı namizədlər olmaq üçün aşağıdakı iki həll yolunu tapdum:

4
17 июля '10 в 15:39 2010-07-17 15:39 cavab iyul ayının 17-də saat 10: 00-da 15 : 39-da veriləcək

Bu kontekstdə mənim üçün komponentlər digər komponentlərlə eyni vaxtda işləyə biləcək iş şəraitinin ayrı-ayrı hissələri kimi səslənir. Bu motivasiya varsa, baxa bilərsiniz

1
14 дек. Cavab Hassan Syed tərəfindən 14 dekabrda verilir. 2009-12-14 17:41 '09 at 17:41 'da 2009-12-14 17:41

Maraqlı bir sənət əsəri ...

Sürətli bir google ovu tapdım və heç bir şey tapmadım, ancaq bəzi şərhləri nəzərdən keçirə bilərsiniz - bir çox insanlar komponentlərin sadə nümayişi üçün getmiş kimi görünürlər, bəzilərinə ilham üçün baxa bilərsiniz:

http://www.unseen-academy.de/componentSystem.html
http://www.mcshaffry.com/GameCode/thread.php?threadid=732
http://www.codeplex.com/Wikipage?ProjectName=elephant

Bundan əlavə, şərhlərin özləri də belə bir sistemin necə kodlaşdıracağına dair kifayət qədər ətraflı bir mübahisəyə sahibdirlər.

1
14 дек. Justin cavab 14 dec. 2009-12-14 17:53 '09 da 17:53 'da 2009-12-14 17:53