Aefnet Rank Sistemi

Aefnet Rank Sistemi

Merhaba. Projedeki amaç; Red Alert 2 ve Yuri oyunlarının online olarak oynanmasını sağladığımız platformda oynanan, 1vs1 ve Ranked Match kategorisindeki oyunları yakalamak ve bu oyunları online web ortamında görüntülenmesini sağlamak, ek olarak oynayan oyuncularla ilgili istatistikleri tutarak her oyuncuya rütbe ve rozetler tanımlayan bir uygulama geliştirmektir.

Proje görsellerine geçmeden önce çalışma mantığından bahsetmek istiyorum. Oyun normalde kendi içerisinde ve ya yardımcı bir kaç program ile çevirimiçi olarak oynanabilmektedir. Her oyun oynandığında oyuna ait istatistikler şifreli bir algoritma ile saklanmakta ve okunabilmektedir.

Proje 5 ana aşamadan oluştmaktadır. Bunlar;

 
  1. Şifreli oyun verisinin sunucuya transfer edilmesi.
  2. Şifrelerin çözülüp hazırlanması.
  3. Verilerin parçalanması.
  4. Puanlama, sıralama, rütbe ve rozetlerin hesaplanması ve depolanmaya hazırlanması.
  5. Verilere web sitesinden erişilmesi.

1-) Dosya Transferi


İlk aşama; Projenin kaynak konumuda oyun istemcilerinden gelen verilerin kontrollü bir şekilde depolanması sağlanmalı. Bu aşamada birden fazla kullanıcı aynı anda, bir oyuna ait oyunculardan aynı dosyaların gelmesi ve ya olası bir oyun içinde geçersiz oyun verisinin sunucuya gönderilmesi gibi olası hataların engellenmesini burada sağladım. Fakat oyun dosyaları şifreli olduğu için tam güvenlik sağlayamıyoruz. Burdaki asıl olay oyun verilerinin sunucuya aktarılması oldu.

2-) Şifrelerin Çözülmesi

İkinci aşama; Burada güvenli ve doğru şekilde taşınan şifreli dosyaların şifresi çözülüyor. Çözülen dosyalar sistemde kayıtlı ise farklı bir klasöre, kayıtlı değilse kayıt etmek için tanımadığım konuma taşınıyor. İşlem burada bitiyor. İlk iki aşama birbiriyle ilişkili ve art arda gerçekleşiyor.
3-) Verilerin Parçalanması

Üçüncü aşama; Kayıt için hazır oladan dataları alıp tarıyoruz.Bu veriler içinde bir çok değişken ve değer bulunmakta ve tamamı oyun için hazırlanmış bir kodlama içeryor. Bunlar 3-6 harf, sayı ve ya kısa kelimelerden şeklinde tanımlı halde. Bu verilerin hangisinin ne anlama geldiği ve nereye gideceği. Gibi işlemler bu aşamada hazırlanıyor. Gerekli sınıf ve methodlar ile ilişklendirilen veriler. Hesaplamalar için hazır hale getiriliyor.
4-) Hesaplamalar ve Depolama

Dördüncü aşama; Gerekli hesaplamalar için hazır olan verileri mevcut controller'lar içinde gerekli işlemlerden geçirdikten sonra kayıt işlemleri gerçekleşiyor. Bu kısım projenin asıl çekirdek bölümünü oluşturuyor. Tüm anlamsız verileri alıp.Anlayabileceğimiz şekilde database üzerinden tablolara kayıt ediyor. Bu aşamada maç verilerinden hangilerine ne kadar puan verilecek. Hangi oyuncu ne kadar puan alacak ? Oyuncu rütbesi güncellenmeli mi ? Macın oynandıgı harita sistemde mevcut mu gibi bir çok kontrol burada yapılıyor.
Not : Olası aynı verilerin gelme durumunu da daha engeledğimiz için problemleri aşama aşama çözmüş daha guvenilir bir yapıya getirmiş oluyorum. 
5-) Verilere Erişim

Son aşama; En son işlem ise database'de kayıtlı olan tüm bilgilere erişilmesini sağlamak geliyor. Bununla birlikte. Kullanıcı için anlamsız gelen verilerin görsellerle birlikte daha anlaşılır ve okunaklı bir hale getirmiş ve dinamik olarak erişilmesini sağlamış olduk.

Yukarıda anlatmış olduğum aşamalar içerisinde ilk 4 bölüm otomatik olarak güncellenmekte ve çalışmaktadır. Son bölüm ise isteklere verilen cevaplardan ibarettir. Bu sistemi geliştirirken benzeri olan bir sistemden ilham aldım. Kaynak kodlarından; Şifrelerin çözülmesi hariç tamamını kendim geliştirdim, tasarladım.

Sistem içinde projenin otomatik çalışan kısımların yani sürekli olarak aktif olan kısımların sesini dinlemek. Programı anlamak için ufak bir log sistemi ekledim. Bu sayede program içinde dosya okuma ve transfer işlemlerini, mac ve oyuncularla ilgili verilerin işlenmesinde olası hataları çok daha hızlı ve kolay şekilde kontrol edebiliyorum.

Ek olarak sistemde rahat güncellemeler yapabilmek için, RankSystem, RozetSystem,PointSystem, LogSystem, MapSystem gibi tüm işlemleri birbirinden ayrı ve nerdeyse bağımsız şekilde çalışmaktadır. Tema kısmı ise bu aşamada fazla geliştirilmedi ve Sürekli geliştirmeye, güncellemeye açık şekilde bıraktım. Bu bahsettiğim sistemler hakkında ufak bilgiler vereceğim.

1-) Rütbe Sistemi (Rank)
Oyuncuların kazandıkları maçlardan elde ettikleri puanlara göre derecelendirme verme sistemidir. Database üzerinden kontrol edilmekte. Yeni rank eklenebilmekte, mevcut rank pasife alınabilmektedir. Rankların puanlama işlemlerinin PointSystem adında bir sınıf belirlemektedir.
2-) Rozet Sistemi (Rozet)
Oyuncuların zaman içerisinde elde ettikleri ek rozetleri kontrol eder.Maç sayısına göre ve ya tanımlanan özel şartların sağlanması durumumda otomatik olarak tanımlanır.Her veri yüklenmesinde kontrollerini sağlar. Gerekli durumlarda verileri işler ve günceller. Aynı şekilde yeni rozetler tanımlanabilir.
3-) Punalma Sistemi (Point)
Oyuncuların aldıkları puanları ve ya kaybettikleri puanların hesaplamanmasını kontrol eden sınıftır. Bir maç verisi sisteme düştüğünde otomatik olarak alacağı puani hesaplar. Hesaplarken askeri bilgiler, ekonomik durum ve oyun sonucu verilerini kontrol eder. Buna göre puanlama yapar. Geliştirilmesi gerektiğini düşünüyorum. Göreceli bir puanlama sistemi hakkında düşüncelerim var.
4-) Kayıt Defteri Sistemi (Log)
Olası hata sorun ve ya problemleri daha iyi anlamak ve daha hızlı çözmek için proje içinde log sistemi tanımladım. Zaman ve olay hakkında bilgileri Log.txt şeklinde sistem içinde kaydetmektedir. Problem hata ve ya olası bir durumda buradan kontroller sağlanmakta ve projenin davranışlarını takip etmey amaçladım.
5-) Harita Sistemi (Map)
Proje içinde dahil edilecek haritaların kontrollerini sağlayan bir sınıf. Burada oyunlar içinde oynana haritaların kısıtlanmasını kontrollerini ve web ortamında gösterilmesiyle ilşkili işleri düzenliyor. Böylelikle istenilen haritalarda oynanan oyunların sistem tarafından kontrol edilip edilmemesini sağlıyor.

Şu an aktif olarak beta sürümüne aşaığdaki adreslerden ulaşablirsiniz Sürekli gelitşirmeyi düşündüğüm ve istediğim bir proje. Makaleyi okuduğunuz için teşekkür ederim!
Bu projeyi aktif olarak şu adresten inceleyebilirsiniz.

Anasayfa: http://ranked.redalert02.com/

Tüm Oyunlar: http://ranked.redalert02.com/tumoyunlar

Bir Oyun: http://ranked.redalert02.com/oyun/17

Makaleyi buradan beğenebilirsiniz.

Yorumlar (1)

  • Misafir

    cRaZy_BoY

    2023-08-15 17:13:45

    baya iyi yaaw

    Sil

Yorum Yap