Merhaba TurkMMO ;
Paylaşacağım sistem, Dev'den Roti isimli arkadaşımızın yazdığı ve bir çoğunuzun seveceğini düşündüğüm Transparan Mob sistemi.
Görsel ;
Paylaşacağım sistem, Dev'den Roti isimli arkadaşımızın yazdığı ve bir çoğunuzun seveceğini düşündüğüm Transparan Mob sistemi.
Görsel ;
Nasıl Çalışır ?
Transparan olarak belirlediğiniz moblar minimapte gözükmez, oyuncu belirli bir mesafe yanına yaklaşınca görünür olur ayrıca bu mesafeyi de ayarlayabilirsiniz.Gerekli notları ekleyeceğiniz kodların yanına comment satırı olarak düştüm, kolay gelsin.
Linkler ;
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
C++ ile Metin2 Transparan ve Görünmez Mob Sistemi
Metin2 özel sunucularında oyun deneyimini artırmak için geliştirilen sistemlerden biri olan transparan ve görünmez mob sistemi, oyuncuların stratejik olarak düşmanları takip edebilmesini veya kaçınabilmesini sağlar. Bu yazıda, C++ kullanarak Metin2 üzerinde nasıl görünmez ve transparan bir mob sistemi geliştirilebileceğini detaylıca ele alacağız.
Transparan ve Görünmez Mob Nedir?
Transparan mob, belirli bir şeffaflık seviyesiyle oyunda görünen fakat tamamen gizli olmayan moblardır. Görünmez mob ise adından da anlaşılacağı gibi tamamen gözle görülmeden haritada hareket edebilen, ancak oyuncu veya karakterler tarafından algılanabilen yapılardır. Bu sistem genellikle PvP sunucularında, boss savaşlarında veya özel görev sistemlerinde kullanılır.
Sistem Mimarisi ve Geliştirme Aşaması[/COORD]
Geliştirme sırasında C++ dilinin güçlü yönlerinden yararlanarak oyun motorunun rendering katmanında değişiklikler yapmamız gerekebilir. Öncelikle mob nesnesi oluşturulurken bu nesneye özel bir rendering modu atanmalıdır. Bu işlem genellikle entity sınıfında yapılır.
Kod Örneği: Görünmezlik Ayarı
Kod:
void CMob::SetInvisible(bool bInvisible)[BR][/BR]{[BR][/BR] if (bInvisible)[BR][/BR] {[BR][/BR] m_bIsVisible = false;[BR][/BR] m_pEntity->SetAlpha(0.0f); // Tamamen transparan[BR][/BR] }[BR][/BR] else[BR][/BR] {[BR][/BR] m_bIsVisible = true;[BR][/BR] m_pEntity->SetAlpha(1.0f); // Normal görünürlük[BR][/BR] }[BR][/BR]}
Transparanlık Seviyesi Ayarı
Transparan moblar için alpha değeri 0.0f ile 1.0f arasında ayarlanabilir. Bu değer ne kadar düşükse, mob o kadar transparan olur. Örneğin 0.3f gibi bir değer, mobun %30 görünürlüğe sahip olmasını sağlar.
Olası Hatalar ve Çözümler
Görünmezlik aktifken, mobun hâlâ fiziksel olarak etkileşimde kalması önemlidir. Bu yüzden sadece render edilme durumu değiştirilmelidir, collision engelleri devre dışı bırakılmamalıdır. Aksi halde, görünmeyen bir mobun vurulamaması gibi hatalar oluşabilir.
Sunucu Tarafı ve Client Etkileşimi
Client tarafında render edilme durumu değiştirilirken, sunucu tarafında bu bilgi tutulmalı ve senkronize edilmelidir. Bu sayede her oyuncu için farklı görünürlük ayarları yapılabileceği gibi, belirli yetkilere göre bu durumlar açılıp kapatılabilmektedir.
Avantajları
- Stratejik savaş sistemleri için idealdir.
- Görsel efekt olarak dikkat çeker.
- Oyunculara daha dinamik bir deneyim sunar.
Sonuç
C++ tabanlı bir görünmezlik ve transparan mob sistemi, Metin2 özel sunucularında oyuncuların dikkatini çekecek ve oyun içi deneyimi zenginleştirecek etkileyici bir özelliktir. Doğru uygulandığında hem estetik hem de stratejik açıdan büyük avantajlar sağlar. Bu tarz sistemlerin geliştirilmesi için detaylı C++ bilgisi ve oyun motoru yapısına hakimiyet şarttır.
Transparent and Invisible Mob System with C++
One of the systems developed to enhance the gaming experience in Metin2 private servers is the transparent and invisible mob system, allowing players to strategically track or avoid enemies. In this article, we will detail how to develop an invisible and transparent mob system on Metin2 using C++.
What is a Transparent and Invisible Mob?
A transparent mob is one that appears in the game with a certain level of transparency but is not completely hidden. An invisible mob, as the name suggests, can move around the map completely unseen but still be detected by players or characters. This system is commonly used in PvP servers, boss fights, or special quest systems.
System Architecture and Development Phase
During development, leveraging the strengths of the C++ language, modifications may need to be made to the rendering layer of the game engine. First, when creating a mob object, a specific rendering mode should be assigned to it. This process typically occurs within the entity class.
Code Example: Visibility Setting
Kod:
void CMob::SetInvisible(bool bInvisible)[BR][/BR]{[BR][/BR] if (bInvisible)[BR][/BR] {[BR][/BR] m_bIsVisible = false;[BR][/BR] m_pEntity->SetAlpha(0.0f); // Fully transparent[BR][/BR] }[BR][/BR] else[BR][/BR] {[BR][/BR] m_bIsVisible = true;[BR][/BR] m_pEntity->SetAlpha(1.0f); // Normal visibility[BR][/BR] }[BR][/BR]}
Setting Transparency Level
For transparent mobs, the alpha value can be adjusted between 0.0f and 1.0f. The lower the value, the more transparent the mob becomes. For instance, a value like 0.3f results in 30% visibility of the mob.
Possible Errors and Solutions
While invisibility is active, the mob must still physically interact. Therefore, only the rendering state should be changed, not the collision barriers. Otherwise, issues such as an invisible mob becoming unattackable might occur.
Server-Side and Client Interaction
While changing the rendering state on the client side, this information must be stored and synchronized on the server side. This allows for different visibility settings per player and enables toggling based on permissions.
Advantages
- Ideal for strategic combat systems.
- Visually appealing effect.
- Offers a more dynamic experience to players.
Conclusion
A C++-based invisibility and transparent mob system is an impressive feature in Metin2 private servers that captures players' attention and enriches the in-game experience. When implemented correctly, it offers significant advantages both aesthetically and strategically. Developing such systems requires detailed knowledge of C++ and familiarity with the game engine architecture.
