- Mesaj
- 69
- Çözümler
- 4
- Beğeni
- 131
- Puan
- 724
- Ticaret Puanı
- 0
Forumdaki bazı arkadaşların fileslarinin gelistirilme surecini adim adim paylastigini gorunce, fikir hosuma giti ben de yapmak istedim benzer bir şey. Yaklasik 3 hafta once falan basladigim, oldukca iddiali ve farkli olacagini dusundugum bir tane files projem var. Bu konu uzerinde belirli araliklar ekledigim sistemlerden, karsiladigim zorluluklardan, cozemedigim problemlerden bahsedecegim. Hem files gelistirmek nasil bir sey insanlar gorsun hem de files uzerine insanlarin goruslerini, fikirlerini almak istedim. Aslinda files projesine basladigim gibi acmak istiyordum bu konuyu fakat araya baska seyler girdigi ve tum dikkatimi files'i gelistirmeye verdigim icin vakit bulamadim. Files icin suan icin bir adi yok. Altyapi olarak da Fliege Files V2.0 kullaniyorum.
Sıfırdan Yazılan Sistemler
-Yenilenmiş Envanter Ekranı
-K Envanter
-Genişletilmiş Simya Envanteri
-Mitsi Simya Set Bonusu
-Hızlı Ayırma
-Hızlı Birleştirme
-Toplu Sandık Açımı
-Yeni Damage Fonksiyonu
-Item Swap
Eklenen Sistemler
-Kuşak Sistemi
-Mitsi Simya Sistemi
-Silah Kostüm Sistemi
-Element Sistemi
-Element Tılsımı Sistemi
-Offical Character Select
-Mob Target Info
Eklenen Özellikler
-ItemName Renewal
-Hızlı Refine
-Yerden Hızlı Item Toplama
-Para Limiti Kaldırıldı
-Item Limiti Kaldırıldı
-Item Highlight
-Binek donus hizi degistirildi
-Moblar ile olan collision kaldirildi
-Metinlerin mob spawnlamasini acip kapatmak icin CONFIG'e ayar eklendi
BÖLÜM 1
Yenilenmiş Envanter Ekranı
Uzun zaman uzerinde calistigim ve daha sonra internette yayinladigim bir Reworked Character Window projem vardi. Aslinda bu projede sadece karakter ekraniyla kalmayip oyunun genel olarak tum UI'sini degistirmeyi dusunuyordum. Eger bir files piyasadaki benzerlerinden farkli oldugunu iddia ediyorsa bunu kanitlamanin en iyi yollarindan birinin UI tasarimi oldugunu dusunuyordum. Cunku oyuncunun birebir en cok vakit ayiracagi, gorecegi seyler bu arayuzler oluyor. Fakat bu yeni tasarimlarin hepsi oyunun genel art stiline uygun bir sekilde tasarlanacakti. Saltanat gibi fileslarda yeni karakter, envanter tasarimlarina sahipti fakat tasarimlarin hepsi genel Metin2 stiline uygun bir sekilde tasarlanmamisti. Bu yuzden de goze hic guzel gelmiyordu.
Beni en cok rahatsiz eden ve cok gecmiste kaldigini dusundugum tasarim karakter ekrani tasarimiydi. (Zaten benim o projeye baslamamdan 2-3 hafta sonra Yohara guncellemesiyle birlikte Webzen'de karakter ekraninda degisiklige gitti. Boyle dusunen demek ki tek ben degilmisim.) Karakter ekraninda degisiklige gitmeyi karar verdikten sonra kendime bir tasarim bulmak zorundaydim. (Kendim UI tasarimcisi olmadigim icin) Bunun icin diger MMORPG ve RPG oyunlarina bakip oralardan ilham almaya karar verdim. WoW'daki gibi bir karakter ekranin Metin2'de de guzel durabilecegi aklima geldi. RenderTarget sistemi sayesinde de bir UI uzerinde kolaylik 3D bir objeyi renderlayabilirdim. WoW'daki ekipman seti sistemine benzer bir sistem sayesinde oyuncular hizli bir sekilde farkli ekipman setleri arasinda gecis yapabilecekti. Details diger fileslardaki gibi farkli bir pencerede olmak yerine ayni WoW'daki gibi ayni karakter penceresiyle ayni pencere icinde olacakti.
Uzun ugraslar sonrasi sistemi tamamladiktan sonra fark ettigim bazi problem oldu. Birincisi yeni tasarladigim karakter ekrani cok buyuktu. Nedense Metin2 oyuncularin cogu dusuk cozunurlukte oynamayi tercih ediyorlar. Dusuk cozunurlukte oynayan bir cok oyuncu icin bu karakter ekrani oldukca buyuk kaliyor neredeyse ekranin yarisini kapliyordu. Ikinci buyuk problem ise ekipmanlarin giyildigi slotlarin envanter penceresinden alinip karakter penceresine aktarilmasiydi. Ekipman slotlarinin envanter penceresinde bulunmasi oyuncularin oldukca alistigi bir yontemdi.
Yukarida saydigim tum bu sepeblerden dolayi karakter penceresinde biraz degisiklik yapip, envanter penceresi olarak kullanmaya karar verdim. Bu sefer dikkat ettigim seylerin en basinda tasarimi yeterince buyuk yapmamak boylelikle dusuk cozunurluklerde oynayan oyuncularinda rahatlikla kullanabilmesini saglamakti. Yeni tasarladigim karakter penceresini envanter olarak kullanmam yeni bir karakter penceresi tasarlamam gerek demekti, fakat tum bu sistemleri yaparken ki ogrendigim seyler, edindigim tecrubeyle bunun beni cok zorlamayacagini dusundum.
Yeni bir envanter ekrani tasarlayabilmem icin yine bir yerlerden ilham almam gerekiyordu. Karakter ekranini tasarlarken WoW'u ornek almistim, envanter ekranini tasarlarkende Diablo 3'un envanter tasarimini ornek aldim.
Her ne kadar elimden geldigi kadar kucuk yapmaya calissam da genislik olarak normal envanter ekraninin yaklasik 1.5-2 kati oldu. Yukseklik olarak ise neredeyse aynilar. Normal envanter ekranina gore en buyuk avantaji her sayfa da daha fazla envanter slotunun bulunmasi ve envanter sayfa sayisinin 10'a cikmis olmasi oldu. Bunun yaninda ekipman slotlarini envanter ekraniyla ayni pencerenin icine alarak da oyuncularin alismis oldugu bir tasarim yaratilmis oldu. VIT, STR gibi attributelar da ayni Diablo 3'deki tasarimdaki gibi ekipman slotlarinin yanina alindi. Boylelikle HP, Damage, Attack Speed gibi onemli degerlere bakmak icin oyuncunun karakter ekranini acmasinin onune gecilmis oldu.
10'lu envanter sisteminin calismasi icin game source tarafinda epey bir degisiklik yapmam gerekti. Bir cok degiskenin tipini BYTE'dan WORD'e ayni zamanda bazi packet'larin nasil islendigiyle ilgili bazi seyleri de degistirmem gerekti. Tum bu uzun ugraslar sonucu ortaya cikan isten gayet memnun oldugumu soyleyebilirim. Eger herhangi bir elestiriniz, oneriniz varsa lutfen yazin.
K Envanter
Su son bir kac yildir her serverda gordugumuz, olmayan server da neredeyse kimsenin oynamadigi bir sistem var. O da K Envanter. Aslinda oldukca onemli bir sistem. Metin2 bazen yuzlerce farkli item'in envanterinizde oldugu, hepsinin farkli bir ise yaradigi bir oyun. Bu itemleri kullanis veya baska cesitli ozelliklerine gore ayirmak oyuncularin hayatini oldukca kolaylastiran bir sey.
Internette biraz arastirma sonucu bazi farkli K envanter implementasyonlari buldum. Her biri eninde sonunda ayni isleve sahip olsa da arka planda nasil calistiklari da benim icin onemliydi. Hic biri tam olarak beni tatmin etmedigi icin kendim sifirdan bir K envanter sistemi yazdim.
Yukarida dedigim gibi eninde sonunda cikan urune baktiginiz zaman benim yazdigimla digerleri arasinda cok bir fark yok fakat arka planda bazi seyler daha temiz, daha duzgun bir sekilde kodlandi. Kendi yazmis oldugum hizli ayirma ve hizli birlestirme gibi sistemlerle de entegre bir sekilde calisiyor.
Bölüm 2
Bir onceki bolumun uzerinden 2 haftanin uzerinde bir zaman gecti. Bu sure zarfinda dogrusunu soylemek gerekirse istedigim kadar ilerleme kaydedemedim. Ilerleyen zamanlarda okul ve baska seylerle mesgul olacagim icin gelistirme surecinin biraz yavaslayacagini tahmin ediyorum. Fakat ne kadar az olursa olsun her hafta belli bir suremi files'i gelistirmeye harcamaya ozen gosterecegim. Neyse girisi daha fazla uzatmadan son iki haftanin raporunu vereyim:
Yapılanlar:
-Gaya Sistemi
-ShopExRenewal
-Tooltip'e yeni eklentiler
-Yavastan dungeon ve quest yazimina giris
-Onceden eklenen sistemlerden kaynaklanan bazi hatalarin fixleri
Bu sekilde listelendigi zaman aslinda cok da bir sey yapmamis gibi gozukebilir fakat ozellike gaya sistemini istedigim sekilde eklemek yaklasik bir hafta mi aldi. Normalde uzerinde hic bir degisiklik yapmak zorunda olmadigim zaman ne kadar buyuk olursa olsun bir sistemi eklemek en fazla 2 gunu mu aliyor. Fakat forumlarda paylasilan gaya sistemlerinin hepsi TR tipi. Ben ise files daki gaya sisteminin daha farkli ve ise yarar olmasini istiyordum. Gaya marketinin belli zamanlarda yenilenmesi gibi ozellikleri kaldirmak, her zaman ayni itemlerin ayni fiyatta satilmasini, ayni zaman da da birden fazla sayfa olmasini istiyordum. Tum bu degisiklikleri yapmak icin sistemin nasil calistigini epey iyi anlamak gerekiyordu. Yaklasik 1 haftalik bir ugras sonucu sistemi istedigim hale getirebildim. Dogrunu soylemek gerekirse tum bunlarla ugrasmaya gerek kalmadan, direkt olarak ShopExRenewal sistemi sayesinde gaya'yi oyuna bir item olarak ekleyip, gaya markette satilan itemleri bir shop'a ekleyerek de istedigim sonuca ulasabilirdim buyuk ihtimal ama dogru yolunun bu oldugunu dusunerek bu sekil de yapmayi tercih ettim. Fakat benim gibi sistemi bu sekilde eklemek isteyen arkadaslarin aklina bulunsun bu yontem.
Bir baska yeni eklenti de tooltip'e ekledigim yardimci yazi ve gorseller oldu. Hizli birlestirme, hizli sandik acma olsun bu tur islemlerin hangi tus kombinasyolariyla yapildigi bilgisini oyuncuya bir sekilde vermek gerekiyor. Ben de bunun icin cogu files'da gorulebilecek benzer yontemi sectim. Dogrusunu soylemek gerekirse arka plan da sistemi ekledigim hali cok hosuma gitmedi. Kodun cok daha moduler bir sekilde yazilabileceginin farkindaydim fakat hem python bilgimin cok da iyi olmamasi hem de cok fazla zaman harcamamak istememden dolayi uzerinde cok fazla durmadim.
Bitmeyen Problemler
Galiba birisi benden herhangi bir yazilimi gelistirme surecini tek cumle de ozetlememi isterse(bu yazilim bir files olabilir, sifirdan yapilmis bir oyun olabilir, bir websitesi olabilir) "Problem cozmek." der gecerim herhalde. Gelistirilen bu yazilim bir oyun, ozellikle de bir mmorpg olunca karsilasan problemler de bir o kadar buyuk, bazen sacma, bazen tamamen sizden kaynakli bazense 20 yil once koreli bir abinin buyuk ihtimal sarhosken yazdigi kod olabiliyor. Kaynagi ne olursa olsun bu problemler genellikle cozmesi epey zaman alan, zamandan daha onemli de insanin motivasyonunu dusuren seyler oluyor. Bazen saatlerinizi bir sistemi eklerken kucuk bir yeri unuttugunuz veya bir harfi kucuk yazdiginiz icin harciyabiliyorsunuz.
Ben de files'i gelistirirken tahmin edebileceginiz gibi bir suru hatayla karsilasiyorum gunluk. Bu hatalarin cogu da benim sifirdan kendi yazdigim sistemlerden veya dolayli olarak bu sistemlerin etkiledigi baska sistemlerden kaynakli oluyor. Bu hatalari tespit etmesi ve bulmasi cok zor oluyor cunku internete yazip daha once ayni hatayla karsilasan baskalari olmus mu, olmussa nasil cozmus diye bakamiyorum. Bu yazi da da karsilastigim bazi sorunlardan ve bazi ilginc seylerden bahsetmek istiyorum:
Bahsedecegim ilk sorun aslinda epey bir zamandir birlikte yasadigim, sebebi hakkinda hic bir fikrimin olmadigi bir sorun. Bu sorun o kadar sacma o kadar ilginc bir sorun ki cani ne zaman isterse o zaman ortaya cikiyor. Neyin sebep olduguna dair ise neredeyse hic bir fikrim yok. Sorun aslinda oldukca basit ch1'i kapatmak istedigim zaman core veriyor. stop.sh scriptini cagirdigim zaman auth ve diger core'lar basarili bir sekilde kapaniyor, fakat ch1 core veriyor.
Syserr herhangi bir log dusmuyor, syslog ise genel de surada kaliyor. Genel de diyorum cunku yanlis hatirlamiyorsam bir kac kere farkli yerler de durdugu da olmustu log dosyasinin.
Hatanin sebebi cok buyuk character_manager class'i destroy edilirken tum maplarin uzerinden geciyor ve her map'in icerisindeki karakterleri teker teker yok ediyor. Tahminim bu islem olurken olmayan bir karakteri yok etmeye calisiyor o da programi cokertiyor. Bu sorun o kadar gicik bir sorun ki bazen 1 hafta boyunca, veya saatlerce acik biraktiginiz bir zaman basiniza gelmezsken 2 dakikaligina actiginiz kisa bir oturum da basiniza gelebiliyor. Hatayi tekrar uretemedigim icin de gdb kullanarak debug etme sansim hic olmadi. Ilerleyen zamanlarda core'u her zaman gdb ile calistirmayi boylece cokerse eger sorunun kaynagini ogrenmeyi planliyorum.
Karsilastigim bir baska hata ise catacomb'un 3.kata isinlanirken bulundugum channel'in core vermesi. Bu problem de bazen olup bazen olmayan sebebini anlayamadigim problemlerden bir tanesi. gdb ile debug ettigim zaman sorunun kaynagini pek de anlayamadim cunku source icerisinde hic bir yere isaret etmiyordu hata. Core vermeden 3.kata attigi zamansa bazen aradan 5-10 saniye gectikten sonra dungeon disina atiyor sebebini anlamadigim bir sekilde.
Bunun disinda RegenEditor kullanarak catacomb mapini acmaya calistigim zaman program crash veriyor. Diger hic bir mapte olmuyor sadece catacomb mapinde oluyor. RegenEditor degisik surumleriyle acmayi denedim, baska fileslarin catacomb dosyalariyla acmaya calistim ama nafile. Catacomb konusunda cok dertliyim.
Genel olarak quest ve dungeon konusunda isim pek de yaver gitmiyor. Cok sacma sapan hatalarla karsilasiyorum. Zaten zindanlari epey bir degistirme, offical hallerine gore daha da kolaylastirma gibi bir planim vardi. Simdi ise hepsini sifirdan yazmayi planliyorum. Cunku internette buldugum questlerin neredeyse hepsinde bir problem oluyor. Bu problemeri cozmek icin harcayacagim zaman neredeyse sifirdan yazsaydim harcayacagim zamana esit olmaya basladi.
Mesela seytan kulesinin 4.katinda ilk basta bir tane metni kesiyorsunuz. Daha sonra ise 6-7 tane metin arasindan dogru metni bulmaya calisiyorsunuz. Benim kullandigim ilk questte 4.kattaki ilk metni kestikten sonra spawnlanan 6-7 metinden hep iki tane spawnlaniyordu. Neden oluyor diye bakarken su asagida resmini biraktigim kod su sekilde olunca 8016 vnumlu mob kesildigi zaman asagidaki kill eventi sebebini anlamadigim bir sekilde iki kere cagiriliyor:
Iki kod arasinda nasil bir fark var hic bilmiyorum ama su son 4-5 gundur boyle sorunlari cozmekle ugrasiyorum. Son zamanlarda ugrastigim genellike quest ve zindanlar uzerine olan bu hatalar biraz motivasyonumu dusurdu dogrusunu soylemek gerekirse. Bilmiyorum quest yazma konusunda yeni oldugum icin mi boyle hatalarla karsilasiyorum. Altyapi olarak kullandigim files'a ait kafamda ciddi soru isaretleri var. Bakalim gelecek neler gosterecek. Okudugunuz icin tesekkurler!
Sıfırdan Yazılan Sistemler
-Yenilenmiş Envanter Ekranı
-K Envanter
-Genişletilmiş Simya Envanteri
-Mitsi Simya Set Bonusu
-Hızlı Ayırma
-Hızlı Birleştirme
-Toplu Sandık Açımı
-Yeni Damage Fonksiyonu
-Item Swap
Eklenen Sistemler
-Kuşak Sistemi
-Mitsi Simya Sistemi
-Silah Kostüm Sistemi
-Element Sistemi
-Element Tılsımı Sistemi
-Offical Character Select
-Mob Target Info
Eklenen Özellikler
-ItemName Renewal
-Hızlı Refine
-Yerden Hızlı Item Toplama
-Para Limiti Kaldırıldı
-Item Limiti Kaldırıldı
-Item Highlight
-Binek donus hizi degistirildi
-Moblar ile olan collision kaldirildi
-Metinlerin mob spawnlamasini acip kapatmak icin CONFIG'e ayar eklendi
BÖLÜM 1
Yenilenmiş Envanter Ekranı
Uzun zaman uzerinde calistigim ve daha sonra internette yayinladigim bir Reworked Character Window projem vardi. Aslinda bu projede sadece karakter ekraniyla kalmayip oyunun genel olarak tum UI'sini degistirmeyi dusunuyordum. Eger bir files piyasadaki benzerlerinden farkli oldugunu iddia ediyorsa bunu kanitlamanin en iyi yollarindan birinin UI tasarimi oldugunu dusunuyordum. Cunku oyuncunun birebir en cok vakit ayiracagi, gorecegi seyler bu arayuzler oluyor. Fakat bu yeni tasarimlarin hepsi oyunun genel art stiline uygun bir sekilde tasarlanacakti. Saltanat gibi fileslarda yeni karakter, envanter tasarimlarina sahipti fakat tasarimlarin hepsi genel Metin2 stiline uygun bir sekilde tasarlanmamisti. Bu yuzden de goze hic guzel gelmiyordu.
Beni en cok rahatsiz eden ve cok gecmiste kaldigini dusundugum tasarim karakter ekrani tasarimiydi. (Zaten benim o projeye baslamamdan 2-3 hafta sonra Yohara guncellemesiyle birlikte Webzen'de karakter ekraninda degisiklige gitti. Boyle dusunen demek ki tek ben degilmisim.) Karakter ekraninda degisiklige gitmeyi karar verdikten sonra kendime bir tasarim bulmak zorundaydim. (Kendim UI tasarimcisi olmadigim icin) Bunun icin diger MMORPG ve RPG oyunlarina bakip oralardan ilham almaya karar verdim. WoW'daki gibi bir karakter ekranin Metin2'de de guzel durabilecegi aklima geldi. RenderTarget sistemi sayesinde de bir UI uzerinde kolaylik 3D bir objeyi renderlayabilirdim. WoW'daki ekipman seti sistemine benzer bir sistem sayesinde oyuncular hizli bir sekilde farkli ekipman setleri arasinda gecis yapabilecekti. Details diger fileslardaki gibi farkli bir pencerede olmak yerine ayni WoW'daki gibi ayni karakter penceresiyle ayni pencere icinde olacakti.
Uzun ugraslar sonrasi sistemi tamamladiktan sonra fark ettigim bazi problem oldu. Birincisi yeni tasarladigim karakter ekrani cok buyuktu. Nedense Metin2 oyuncularin cogu dusuk cozunurlukte oynamayi tercih ediyorlar. Dusuk cozunurlukte oynayan bir cok oyuncu icin bu karakter ekrani oldukca buyuk kaliyor neredeyse ekranin yarisini kapliyordu. Ikinci buyuk problem ise ekipmanlarin giyildigi slotlarin envanter penceresinden alinip karakter penceresine aktarilmasiydi. Ekipman slotlarinin envanter penceresinde bulunmasi oyuncularin oldukca alistigi bir yontemdi.
Yukarida saydigim tum bu sepeblerden dolayi karakter penceresinde biraz degisiklik yapip, envanter penceresi olarak kullanmaya karar verdim. Bu sefer dikkat ettigim seylerin en basinda tasarimi yeterince buyuk yapmamak boylelikle dusuk cozunurluklerde oynayan oyuncularinda rahatlikla kullanabilmesini saglamakti. Yeni tasarladigim karakter penceresini envanter olarak kullanmam yeni bir karakter penceresi tasarlamam gerek demekti, fakat tum bu sistemleri yaparken ki ogrendigim seyler, edindigim tecrubeyle bunun beni cok zorlamayacagini dusundum.
Yeni bir envanter ekrani tasarlayabilmem icin yine bir yerlerden ilham almam gerekiyordu. Karakter ekranini tasarlarken WoW'u ornek almistim, envanter ekranini tasarlarkende Diablo 3'un envanter tasarimini ornek aldim.
Her ne kadar elimden geldigi kadar kucuk yapmaya calissam da genislik olarak normal envanter ekraninin yaklasik 1.5-2 kati oldu. Yukseklik olarak ise neredeyse aynilar. Normal envanter ekranina gore en buyuk avantaji her sayfa da daha fazla envanter slotunun bulunmasi ve envanter sayfa sayisinin 10'a cikmis olmasi oldu. Bunun yaninda ekipman slotlarini envanter ekraniyla ayni pencerenin icine alarak da oyuncularin alismis oldugu bir tasarim yaratilmis oldu. VIT, STR gibi attributelar da ayni Diablo 3'deki tasarimdaki gibi ekipman slotlarinin yanina alindi. Boylelikle HP, Damage, Attack Speed gibi onemli degerlere bakmak icin oyuncunun karakter ekranini acmasinin onune gecilmis oldu.
10'lu envanter sisteminin calismasi icin game source tarafinda epey bir degisiklik yapmam gerekti. Bir cok degiskenin tipini BYTE'dan WORD'e ayni zamanda bazi packet'larin nasil islendigiyle ilgili bazi seyleri de degistirmem gerekti. Tum bu uzun ugraslar sonucu ortaya cikan isten gayet memnun oldugumu soyleyebilirim. Eger herhangi bir elestiriniz, oneriniz varsa lutfen yazin.
K Envanter
Su son bir kac yildir her serverda gordugumuz, olmayan server da neredeyse kimsenin oynamadigi bir sistem var. O da K Envanter. Aslinda oldukca onemli bir sistem. Metin2 bazen yuzlerce farkli item'in envanterinizde oldugu, hepsinin farkli bir ise yaradigi bir oyun. Bu itemleri kullanis veya baska cesitli ozelliklerine gore ayirmak oyuncularin hayatini oldukca kolaylastiran bir sey.
Internette biraz arastirma sonucu bazi farkli K envanter implementasyonlari buldum. Her biri eninde sonunda ayni isleve sahip olsa da arka planda nasil calistiklari da benim icin onemliydi. Hic biri tam olarak beni tatmin etmedigi icin kendim sifirdan bir K envanter sistemi yazdim.
Yukarida dedigim gibi eninde sonunda cikan urune baktiginiz zaman benim yazdigimla digerleri arasinda cok bir fark yok fakat arka planda bazi seyler daha temiz, daha duzgun bir sekilde kodlandi. Kendi yazmis oldugum hizli ayirma ve hizli birlestirme gibi sistemlerle de entegre bir sekilde calisiyor.
Bölüm 2
Bir onceki bolumun uzerinden 2 haftanin uzerinde bir zaman gecti. Bu sure zarfinda dogrusunu soylemek gerekirse istedigim kadar ilerleme kaydedemedim. Ilerleyen zamanlarda okul ve baska seylerle mesgul olacagim icin gelistirme surecinin biraz yavaslayacagini tahmin ediyorum. Fakat ne kadar az olursa olsun her hafta belli bir suremi files'i gelistirmeye harcamaya ozen gosterecegim. Neyse girisi daha fazla uzatmadan son iki haftanin raporunu vereyim:
Yapılanlar:
-Gaya Sistemi
-ShopExRenewal
-Tooltip'e yeni eklentiler
-Yavastan dungeon ve quest yazimina giris
-Onceden eklenen sistemlerden kaynaklanan bazi hatalarin fixleri
Bu sekilde listelendigi zaman aslinda cok da bir sey yapmamis gibi gozukebilir fakat ozellike gaya sistemini istedigim sekilde eklemek yaklasik bir hafta mi aldi. Normalde uzerinde hic bir degisiklik yapmak zorunda olmadigim zaman ne kadar buyuk olursa olsun bir sistemi eklemek en fazla 2 gunu mu aliyor. Fakat forumlarda paylasilan gaya sistemlerinin hepsi TR tipi. Ben ise files daki gaya sisteminin daha farkli ve ise yarar olmasini istiyordum. Gaya marketinin belli zamanlarda yenilenmesi gibi ozellikleri kaldirmak, her zaman ayni itemlerin ayni fiyatta satilmasini, ayni zaman da da birden fazla sayfa olmasini istiyordum. Tum bu degisiklikleri yapmak icin sistemin nasil calistigini epey iyi anlamak gerekiyordu. Yaklasik 1 haftalik bir ugras sonucu sistemi istedigim hale getirebildim. Dogrunu soylemek gerekirse tum bunlarla ugrasmaya gerek kalmadan, direkt olarak ShopExRenewal sistemi sayesinde gaya'yi oyuna bir item olarak ekleyip, gaya markette satilan itemleri bir shop'a ekleyerek de istedigim sonuca ulasabilirdim buyuk ihtimal ama dogru yolunun bu oldugunu dusunerek bu sekil de yapmayi tercih ettim. Fakat benim gibi sistemi bu sekilde eklemek isteyen arkadaslarin aklina bulunsun bu yontem.
Linkleri görebilmek için
giriş yap veya kayıt ol.
Bir baska yeni eklenti de tooltip'e ekledigim yardimci yazi ve gorseller oldu. Hizli birlestirme, hizli sandik acma olsun bu tur islemlerin hangi tus kombinasyolariyla yapildigi bilgisini oyuncuya bir sekilde vermek gerekiyor. Ben de bunun icin cogu files'da gorulebilecek benzer yontemi sectim. Dogrusunu soylemek gerekirse arka plan da sistemi ekledigim hali cok hosuma gitmedi. Kodun cok daha moduler bir sekilde yazilabileceginin farkindaydim fakat hem python bilgimin cok da iyi olmamasi hem de cok fazla zaman harcamamak istememden dolayi uzerinde cok fazla durmadim.
Bitmeyen Problemler
Galiba birisi benden herhangi bir yazilimi gelistirme surecini tek cumle de ozetlememi isterse(bu yazilim bir files olabilir, sifirdan yapilmis bir oyun olabilir, bir websitesi olabilir) "Problem cozmek." der gecerim herhalde. Gelistirilen bu yazilim bir oyun, ozellikle de bir mmorpg olunca karsilasan problemler de bir o kadar buyuk, bazen sacma, bazen tamamen sizden kaynakli bazense 20 yil once koreli bir abinin buyuk ihtimal sarhosken yazdigi kod olabiliyor. Kaynagi ne olursa olsun bu problemler genellikle cozmesi epey zaman alan, zamandan daha onemli de insanin motivasyonunu dusuren seyler oluyor. Bazen saatlerinizi bir sistemi eklerken kucuk bir yeri unuttugunuz veya bir harfi kucuk yazdiginiz icin harciyabiliyorsunuz.
Ben de files'i gelistirirken tahmin edebileceginiz gibi bir suru hatayla karsilasiyorum gunluk. Bu hatalarin cogu da benim sifirdan kendi yazdigim sistemlerden veya dolayli olarak bu sistemlerin etkiledigi baska sistemlerden kaynakli oluyor. Bu hatalari tespit etmesi ve bulmasi cok zor oluyor cunku internete yazip daha once ayni hatayla karsilasan baskalari olmus mu, olmussa nasil cozmus diye bakamiyorum. Bu yazi da da karsilastigim bazi sorunlardan ve bazi ilginc seylerden bahsetmek istiyorum:
Bahsedecegim ilk sorun aslinda epey bir zamandir birlikte yasadigim, sebebi hakkinda hic bir fikrimin olmadigi bir sorun. Bu sorun o kadar sacma o kadar ilginc bir sorun ki cani ne zaman isterse o zaman ortaya cikiyor. Neyin sebep olduguna dair ise neredeyse hic bir fikrim yok. Sorun aslinda oldukca basit ch1'i kapatmak istedigim zaman core veriyor. stop.sh scriptini cagirdigim zaman auth ve diger core'lar basarili bir sekilde kapaniyor, fakat ch1 core veriyor.
Syserr herhangi bir log dusmuyor, syslog ise genel de surada kaliyor. Genel de diyorum cunku yanlis hatirlamiyorsam bir kac kere farkli yerler de durdugu da olmustu log dosyasinin.
Hatanin sebebi cok buyuk character_manager class'i destroy edilirken tum maplarin uzerinden geciyor ve her map'in icerisindeki karakterleri teker teker yok ediyor. Tahminim bu islem olurken olmayan bir karakteri yok etmeye calisiyor o da programi cokertiyor. Bu sorun o kadar gicik bir sorun ki bazen 1 hafta boyunca, veya saatlerce acik biraktiginiz bir zaman basiniza gelmezsken 2 dakikaligina actiginiz kisa bir oturum da basiniza gelebiliyor. Hatayi tekrar uretemedigim icin de gdb kullanarak debug etme sansim hic olmadi. Ilerleyen zamanlarda core'u her zaman gdb ile calistirmayi boylece cokerse eger sorunun kaynagini ogrenmeyi planliyorum.
Karsilastigim bir baska hata ise catacomb'un 3.kata isinlanirken bulundugum channel'in core vermesi. Bu problem de bazen olup bazen olmayan sebebini anlayamadigim problemlerden bir tanesi. gdb ile debug ettigim zaman sorunun kaynagini pek de anlayamadim cunku source icerisinde hic bir yere isaret etmiyordu hata. Core vermeden 3.kata attigi zamansa bazen aradan 5-10 saniye gectikten sonra dungeon disina atiyor sebebini anlamadigim bir sekilde.
Bunun disinda RegenEditor kullanarak catacomb mapini acmaya calistigim zaman program crash veriyor. Diger hic bir mapte olmuyor sadece catacomb mapinde oluyor. RegenEditor degisik surumleriyle acmayi denedim, baska fileslarin catacomb dosyalariyla acmaya calistim ama nafile. Catacomb konusunda cok dertliyim.
Genel olarak quest ve dungeon konusunda isim pek de yaver gitmiyor. Cok sacma sapan hatalarla karsilasiyorum. Zaten zindanlari epey bir degistirme, offical hallerine gore daha da kolaylastirma gibi bir planim vardi. Simdi ise hepsini sifirdan yazmayi planliyorum. Cunku internette buldugum questlerin neredeyse hepsinde bir problem oluyor. Bu problemeri cozmek icin harcayacagim zaman neredeyse sifirdan yazsaydim harcayacagim zamana esit olmaya basladi.
Mesela seytan kulesinin 4.katinda ilk basta bir tane metni kesiyorsunuz. Daha sonra ise 6-7 tane metin arasindan dogru metni bulmaya calisiyorsunuz. Benim kullandigim ilk questte 4.kattaki ilk metni kestikten sonra spawnlanan 6-7 metinden hep iki tane spawnlaniyordu. Neden oluyor diye bakarken su asagida resmini biraktigim kod su sekilde olunca 8016 vnumlu mob kesildigi zaman asagidaki kill eventi sebebini anlamadigim bir sekilde iki kere cagiriliyor:
Hata verin hali:
when kill with npc.get_race() == 8016 begin
Iki kod arasinda nasil bir fark var hic bilmiyorum ama su son 4-5 gundur boyle sorunlari cozmekle ugrasiyorum. Son zamanlarda ugrastigim genellike quest ve zindanlar uzerine olan bu hatalar biraz motivasyonumu dusurdu dogrusunu soylemek gerekirse. Bilmiyorum quest yazma konusunda yeni oldugum icin mi boyle hatalarla karsilasiyorum. Altyapi olarak kullandigim files'a ait kafamda ciddi soru isaretleri var. Bakalim gelecek neler gosterecek. Okudugunuz icin tesekkurler!
Son düzenleme: