Otokontrollü bir CG portali için sistem taslağı

Cüneyt Özdaş 19.11.2002

Amaç

Türkiyede ve Dünyada yayında olan 3D içerikli forumların birçoğunda zamanla ve üye sayısı atrttıkça karşılaşılan bozulma ve sürtüşmelerin, admin ve moderatörlerin zamanını almadan önlenebileceği, kendi kendisini düzeltme eğiliminde olan bir forum/haber portal’ı yapısının oluşturulması.

Bu metin bahsi geçen sistemi oluşturmak için gereken yapının henüz netleştirilmemiş  taslağını içermektedir.

Giriş

Sistem, yapıya bir ilk hız verilerek, daha sonra sistemin verilen bu ilk hız yönünde kendi kendisini moderate etmesi esasına dayalıdır. Bunun için maxungerground.com, experts-exchange.com ve FRP oyunları baz alınmıştır.

Özellikle Türkiye’deki  3D içerikli portallerin karşılaştığı en büyük sorun, 3D ile ilgilenen çok sayıda genç amatörün, sahip oldukları boş vakitlerini de kullanarak portalde baskın hale gelerek istenilen kalite seviyesini aşağıya çekmesi ve düşen kalite ile daha tecrübeli ve profesyönel insanların portalden uzaklaşmasıdır. Ayrıca sıkça karşılaşılan kişisel sürtüşmeler de kaliteyi düşüren etkenler arasındadır. Dünya genelindeki  benzer sitelerde, bu sektörde çalışan insanların görece olarak fazla olması nedeniyle durum biraz daha farklıdır.

Sistemin kalbini her kişiye ve her mesaja verilecek olan puanlar oluşturur. Sistemde kişiler yaptıkları işlere göre puan kazanacak veya kaybedecektir. Yapılan bazı işler puana otomatik olarak yansıyacak, fakat mesaj içeriği gibi otomatik bir şekilde takip edilemeyecek şeyler diğer üyeler tarafından oylanarak kişiye/mesaja puan kazandıracak yada kaybettirecektir. Oylamada yüksek puanlı üyelerin oyları daha ağırlıklı olacaktır.

Yukarıda bahsedilen ilk hız ise sistem ilk kurulduğunda konularında uzman olan insanlara daha yüksek puanlar ve dolayısıyla daha yüksek oy ağırlığı verilerek sağlanacaktır. Böylece forumda yazılım alış verişi gibi konuların, bu konuları konuşmak isteyen çok sayıdaki insan tarafından popüler hale getirilmesi önlenebilecektir.

Sistem ilk kurulduğunda mümkün olduğunca çok profesyönel üye sisteme davet edilecek ve hepsine belirlenmiş “aynı” yüksek puan verilecektir. Bu aşamada ne kadar çok kişi olursa sistem kararlılığı o kadar iyi olacaktır.

Sistemde, yüksek puanlı ilk üyelerin oyları ile yükselen diğer üyeler otomatik olarak daha aktif rol ve daha çok yetki alacağı için, zamanla yetkiler dağılacak ve yük sadece birkaç kişinin omzuna değil, aktif olmayı tercih eden ve siteye kaliteli içerik sağlamış olan insanlar arasında paylaşılacaktır.

Bu sistemin yönlendirilmiş demokrasi tarzı bir yapıyı sağlaması hedeflenmiştir. Hem az sayıdaki adminin sonsuz yetkisinden, hem de çoğunluk diktatörlüğü denilebilecek çok sayıdaki insanın yanlış davranışından kaynaklanacak sorunları çözeceği öngörülmektedir. Sistemin çalışma ilkeleri net şekilde tanımlanacağı ve herkes tarafından bilineceği için itiraz hakkı ve tartışmalar olmayacaktır.

Burada karşılaşıabilecek bir problem sistemdeki yetkilerin 2 (veya daha fazla) grup üye arasında dağılması ve bu grupların sürtüşmesi olabilir. Böyle bir durumda sistem oylar arasındaki uyumu gözleyerek aşırı zıt görüşlerin hakim olduğu durumları fark edebilecektir. Bu konumda alınacak tedbirler düşünülebilir

Genel Yapı

Üyelik ve Erişim

Portalin birçok kısmı üye olunmadan da okunabilecek ve takip edilebilecektir. Portala isteyen herkes üye olabilir. Üyelik sırasında bazı bilgileri doldurması extra puan kazandırabilir (web sitesi vermişse veya ismini yazmışsa vb.).

Portalin bazı kısımları sadece belli bir puanın üstündeki insanlara açık olacak. Bunu belki en yüsek puanlı “n” kişi olarak da ayarlayabiliriz. Üçüncü bir yöntem ise buraya girmeye hak kazanan insanların daha sona puanları düşse bile bu bölümlere erişimlerinin devam etmesi olabilir. Bu konu daha detaylandırılmalı.

Puanların belirlenmesi

Puanlamada kullanılacak sistem daha çok tecrübe+katkı karşılığı yetki ve hak verilmesi esasına dayalı olacak. Puanların belirlenmesi için daha önceden belirlenmiş alanlara hangi üyelerin girmesi isteniyorsa ona göre bir formul çıkartılacak. Bu sistem ilk kurulurken net bir şekilde belirlenebilecek bir konu değil, zamanla oturacak bir yapı. Ancak daha önceki tecrübelerden yararlanarak belirli kriterler kullanılabilir.

Örnek olarak yeni üye olanların sitemi tam anlamadan gelişi güzel mesaj atmaları daha önce karşılaşılan bir sorundur. Bunu önlemek için üyelere login oldukları her gün için 1 puan verilir ve örneğin 15 puanın altında puana sahip olanlar mesaj atamazlar. Böylece mesajların sistemi en az 15 gündür tanıyan kişiler tarafından atılması kısmen garanti edilir.

Bir başka sorun ise boş vakti olan insanların çok sayıda gereksiz mesaj atmasıdır. Bunu önlemek için ise her mesaja bir maliyet verilebilir. Bu maliyet de yine istenilen mesaj sıklığı ile orantılı olarak hesaplanabilir. Örneğin eğer başka faydası henüz görülmemiş insanların en sık haftada bir mesaj atması isteniyorsa atılan her mesaj için 7 puan düşülebilir.

Mesajların maliyetinin olması üyeleri mesaj yazmamaya itebilir, bu kısmen istenen bir şeydir fakat bu aynı zamanda sistemde devinim olmasını da önleyebilir. Ancak puan kazanmak için üyelerin mesaj yazmaları ve mesajlarına iyi oylar alması gerekir. Aksi takdirde günlük login sayesinde gelecek az miktardaki puan üyenin diğer özelliklere ulaşmasını çok geciktirecektir. Elindeki para ile akılcı yatırım yapma zorunluğu gibi bu üyeleri puan toplayacak (dolayısıyla yararlı olacak) şeyler yapmaya yönlendirecektir.

Sistem genelinde karmaşık bir puanlama sistemi gerekmekle birlikte bu tip temel kıstaslar ile oturtulmuş bir puan tablosu, zaman içerisinde de düzeltilerek ideal bir sistem çıkartılabilir.

Oylama

Yukarıda kabaca tanımlanan otomatik punalamaya ek olarak üyeler diğer üyeler ve mesajlara oy verebilecek ve bu yolla mesajlar ve üyeler puan kazanıp kaybedecektir. Oylama belirli bir puanı aşmış tüm üyeler tarafından yapılabilecek ancak yüksek puanlı üyelerin oyları daha etkin olacaktır. Her oyun bir maliyeti olacaktır. Özellikle (-) oyların maliyeti daha yüksek olabilir. Ancak oy maliyetleri üyeleri oy vermekten uzaklaştırmayacak şekilde olmalıdır.

Her üyenin ve mesajın kazandığı ve kaybettiği puanlar ayrı şekilde tutulacak ancak yetkileri ve oy ağırıkları “net” puanları üzerinden hesaplanacaktır.

Sistemin monarşi sorununu çözmesi ilkesi gereği en yüksek puanlı kişinin tek başına bir mesaj yada kişiyi silmesi mümkün olmayacaktır. Bir üye yada mesajın puanını 0 yada altına indirmek için en yüksek puanlı “n” kişinin (yada daha az puanlı daha fazla kişinin oyu gerekecektir. Oylamada kullanılacak puanlar bu esastan yola çıkılarak belirlenecektir. Burada kullanılabilecek bir yöntem herhangi bir oylama bir üyeye pozitif hanesindeki puanların 1/n’inden fazlasını ekleyip çıkartmamasıdır. Ayrıca oylama sırasında oylayan ile oylanan’ın puanları oranları baz alınabilir. Yani 1000 puanlı bir kullanıcının oyu 500 puanlı bir kullacıya daha az etki ederken 100 puanlı bir kullanıcıya daha çok etki edebilir. Mesajlar için de aynı şekilde; post eden ve oylayan üyelerin puan oranları baz alınabilir. Ve mesajın silinmesi için en az “n” tane yüksek puanlı kişiden (-) puan gelmesi gerekecektir.

Her üye bir mesajı sadece bir kere oylayabilecektir. Üyelerin diğer üyeleri oylaması ise belirli zaman aralıklarında mümkün olacaktır. Böylelikle karşılıklı sürtüşmeler sonucunda kişilerin birbirlerinin puanlarını törpülemesinin önüne geçilecektir.

Daha önce de belirtildiği gibi “tartışmalı” kişi ve konular da + ve – oyların dengesine bakılarak belirlenebilir. Bu kişi ve mesajlar bir süreliğine otomatik olarak forumdan uzaklaştırılabilir.

Soru / Cevap

Bir sinerji oluşturmak açısından portalde soru ve cevap sistemi kurulacaktır. Sorulan her soru, soruyu soran üyeden bir miktar puan düşürecektir. Yine yeni üyelerin ne sıklıkta soru sorabilecekleri kıstasına göre bu puan belirlenebilir. Belirli bir puanın üstündeki herkes sorulara cevap verebilir. Soruyu soran kişi verilen cevaplardan birisini beğenirse o cevabı onaylar ve soru yeni cevaplara kapanır. Onaylanan her cevap, cevabı yazan üyeye ek puan  kazandıracaktır. Bu sistem amaca yönelik ve gereksiz uzamayan soru/cevap yazışmalarını desteklerken aynı zamanda insanları cevaplamaya teşvik edecektir.

Ancak gerek soru gerekse cevaplar, diğer tüm mesajlarda olduğu gibi oylamaya açık olacak ve oylama hakkı olan tüm üyeler tarafından oylanabilecektir. Bu nedenle sorun çıkartabilecek, saçma yada gereksiz soru ve cevaplar otomatik oalrak sistemden silindiği gibi yazan üyelere de puan kaybettirecektir.

Yetkiler

Genel olarak yetkiler şöyle listelenebilir. Bu liste gereksinimlere göre değişebilir.

·        Haber eklemek

·        Soru sormak

·        Galeriye çalışma eklemek         

·        Soru cevaplamak

·        Forum konularına ve haberlere yorum eklemek

·        Konuları oylamak

·        Üyeleri oylamak

·        Diğer üyelere kapalı olan VIP alanına login olmak

Portal Yönetimi

Asıl amac administrator’süz bir site kurmak olduğu için kişi yada mesajlara müdahale eden admin yada moderatörler olmayacaktır. Ancak puanlama katsayılarının belirlenmesi, sitenin belirli bölümlerinin açılıp kapatılması yada sitede değişiklikler yapılması işlemlerini gerçekleştirecek bir operatör gerekmektedir. Tartışmaya izin vermemesi açısından bu görevi üstlenen üyenin puan verme yetkisi olmayacaktır. Bu üyenin mesajlarının yada kendisinin oylamaya açık olması yada olmaması konusu henüz belirlenmemiştir.

Portalde sadece operatörün girebileceği bir dizi sayfa ile parametre değişiklikleri yapılabilecektir. Her parametre değişikliğinde operatör değişikliğin nedenini bu iş için ayrılmış alana girmelidir. Yeni parameterler geçerlik kazanırken eski parametreler de bu açıklama ile birlikte database’de tutulur. Böylece gerektiğinde bunlar incelenerek hangi parametrelerin nasıl etki ettiği anlışabilir.

Anket

Zaman içerisinde sistemin bazı aksaklıkları veya tasarım hataları çıkabilir. Bu durumda izlenecek yol gerekirse tüm üyelere sorularak belirlenebilir. Bu amaç için açılacak ankete yine belirli bir puanın üstünde puana sahip olan her üye katılabilir. Ancak yine genel sistem yapısı gereği yüksek puanlı üyelerin oyları daha etkili olacaktır.


Taslak Puanlama

Değişkenler

·        Pup(i): i nolu üyenin positif puanı (kazançlar – harcamalar)

·        Pun(i):  i nolu üyenin negatif puanı (cezalar)

·        Pu(i): i nolu üyenin net puanı

·        Nu(i): i nolu üyenin toplam post sayısı;

·        Ph(i): i nolu haberin net puanı

·        Pg(i): i nolu galerinin net puanı

·        Ps(i): i nolu sorunun net puanı

·        Pc(i): i nolu cevabın net puanı

·        Py(i): i nolu yorumun net puanı

·        SonPuanLogin(i): i nolu üyenin puan kazandıran son login tarihi

·        Pgun: login olunan her gün için verilen puan

·        Ehab: haber eklemek için gereken min puan (soru puan eşiği)

·        Thab : yeni bir üyenin kaç günde bir haber ekleyebileceği

·        Phab: haber ekleme fiyatı (puan).

·        Esor: soru sormak için gereken min puan (soru puan eşiği)

·        Tsor : yeni bir üyenin kaç günde bir soru sorabileceği

·        Psor: soru soran üyeden kesilşecek puan

·        Egal: galeriye çalışma eklemek için gereken min puan (galeri puan eşiği)

·        Tgal: yeni bir üyenin kaç günde bir çalışma ekleyebileceği

·        Pgal: galeriye çalışma eklemenin puan olarak fiyatı

·        Ecev: soru cevaplamak için gereken min puan

·        Pcev: cevap yazma fiyatı

·        Sor_uye: Soru soran üyenin puanının kaçta kaçının soru ödülüne ekleneceği

·        Cev_sor: onaylı cevabın kac soruluk odul kazandıracağı

·        Eyor: yorum yapmak ve foruma konu eklemek için gereken min puan

·        Pyor: yorum fiyatı (puan)

·        Kon_uye: Konulara ( mesaj, soru, cevap veya galerilere) verilecek oyların, üyenin puanına yansıma oranı

·        Ekoy: konu oylamak için gereken min puan

·        Pkoy: konu oylama fiyatı (puan)

·        Euoy: uye oylamak için gereken min puan

·        Puoy: uye oylama fiyatı

·        Tuoy: bir üyenin başka bir üyeyi ne sıklıkta oylayabileceği

·        Duoy(i,j): i nolu üyenin j nolu üyeyi oyladığı son tarih

·        NegOy: negatif oyların maliyetinin pozitif oyların maliyetine oranı

·        Evip: vip alanina login olabilmek icin gereken min puan

·        Neban = eşit puandaki üyelerden kaç tanesin bir araya gelerek aynı puandaki bir başka kişiyi banlayabileceği

·        Nmban = max puanlı kaç üyenin en düşük puanlı bir üyeyi banlayabileceği

·        Uye_Uye = uye oylaması sırasında oylayan üye ile oylanan üyelerin puanları oranının oylanan üye puanına etkisi

·        OyMax = verilebilecek max oy (-OyMax ... OyMax aralığı)

 

Asıl değerler

·        Pgun = 1

·        Ehab = 10

·        Thab = 7

·        Esor = 7

·        Tsor = 4

·        Egal = 10

·        Tgal = 5

·        Ecev = 15

·        Cev_Sor = 2

·        Sor_Uye: 0.02

·        Eyor = 100

·        Pyor = 10

·        Ekoy = 150

·        Pkoy = 2

·        Euoy = 250

·        Puoy = 4

·        Evip = 1000

·        Kon_uye = 0.3

·        NegOy = 4

·        Neban = 7

·        Nmban = 3

·        OyMax = 5

·        Tuoy = 5

 

Türetilmiş değerler

·        P(i) = Ppos(i) – Pneg(i)

·        Phab = Thab / Pgun

·        Psor = Tsor / Pgun

·        Pgal = Tgal / Pgal

·        Pcev = Psor / Cev_Sor

·        Uye_uye = 1/ Neban

·         

İşlemler

Aşağıda bazı işlemler için kullanıcak hesaplamaların pseudocode şeklinde algoritmaları vardır.

Kayıt:

i: kayıt olan üyenin numarası

Ppos(i) =0
Pneg(i) =0

Login:

i: login olan üyenin numarası

if (SonPuanLogin(i) <> Today) Pup(i)+= Pgun

Haber Eklemek:

i: haber ekleyen üyenin numarası
j: haber numarası

If(Pu(i) > Ehab && Pup(i)>Phab)

{

       Haberi aktivate et

       Ph(j) = Pu(i)

       Pup(i) -= Phab

}

Soru Sormak:

i: soru soran üyenin numarası
j: sorulan sorunun numarası

If(Pu(i) > Esor && Pup(i)>Psor)

{

       Soruyu aktivate et

       Ps(j) = Pu(i)

       Pup(i) -= Psor

}

Galeriye Çalışma Eklemek

i: çalışma ekleyen üyenin numarası
j: eklenen çalışmanın numarası

If(Pu(i) > Egal && Pup(i)>Pgal)

{

       Çalışmayı aktivate et
       Pg(j) = Pu(i)

       Pup(i) -= Pgal

}

Soru Cevaplamak

i: Cevap yazan üyenin numarası
j: eklenen cevabın numarası

If(Pu(i) > Ecev && Pup(i)>Pcev)

{

       Cevabı aktiavate et

Pc(j) = Pu(i)
       Ppos(i) -= Pcev

}

Soru soran üyenin cevaplardan birisini onaylaması

i: onaylanan cevabı yazan üyenin numarası
j: sorunun numarası

Pup(i) += Sor_Uye * Ps(j) + Psor * Cev_sor + PCev

Yorum Eklemek

i: yorum ekleyen üyenin numarası
j: eklenen yorumun numarası

If(Pu(i) > Eyor && Pup (i)>Pyor)

{

       Yorumu aktivate et

       Py(j) = Pu(i)

       Ppos(i) -= Pyor

}

 

Konu (yorum / soru / cevap / haber / galeri) oylamak

i: oylayan uye numarası
j: oylanan konunun numarası
k: oylanan konunun sahibi olan üyenin numarası
o: verilen oy (-OyMax ... OyMax aralığında)
xx: konu tipine göre y,s,c,h,g

If(Pu(i) > Ekoy && Pup (i)>Pkoy)

{

       if( i nolu üye j noluyu konuyu daha önce oylamadı)

{

oy = (o/OyMax) * Uye_uye * (Pu(i) / Pxx(j))

              if ( Pxx(j) / abs(oy) > Nmban)

{     

if o < 0

oy = - Pxx(j) / Nmban

                     else

oy = Pxx(j) / Nmban

              }

Pxx(j) += oy

if (Pxx(j) <= 0)

              j nolu konuyu kaldır

 

if o < 0

{

Pun(k) += (Kon_uye * oy)/Nu(k)

Pup(i) -= NegOy * Pkoy

}

              else

              {

Pup(k) += (Kon_uye * oy)/Nu(k)

Pup(i) -= Pkoy

}

 

}

}

 

Uye oylamak

i: oylayan uye numarası
j: oylanan üye numarası
o: verilen oy (-OyMax ... OyMax aralığında)

If(Pu(i) > Euoy && Pup(i)>Puoy && Pu(j) > 0)

{

       if(Today - Duoy(i,j) >= Tuoy)

       {

oy = (o/OyMax) * Uye_uye * (Pu(i) / Pu(j))

              if ( Pu(j) / abs(oy) > Nmban)

{     

if o < 0

oy = - Pu(j) / Nmban

                     else

oy = Pu(j) / Nmban

              }

if o < 0

{

Pun(j) += oy

Pup(i) -= NegOy * Puoy

}

              else

              {

Pup(j) += oy

Pup(i) -= Puoy

}

 

Duoy(i,j) = Today

       }

}